#pragma implementation using namespace std; #include #include #include #include "TClass.h" #include "htofinocalparcell.h" ClassImp(HTofinoCalParCell) //_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////////////// // HTofinoCalParCell // // HTofinoCalParCell contains slope and offset parameters // for calibration of one pad // ////////////////////////////////////////////////////////////////////// HTofinoCalParCell::HTofinoCalParCell() { reset(); } HTofinoCalParCell::HTofinoCalParCell(Float_t fSlope, Float_t fOffset) { reset(); setParams(fSlope, fOffset); } Int_t HTofinoCalParCell::reset() { //reset of all data m_fTimeChannel = 0.06; m_fResolParam[0] = m_fResolParam[1] = m_fResolParam[2] = 0.0; m_fDistParam[0] = m_fDistParam[1] = m_fDistParam[2] = m_fDistParam[3] = 0.0; m_fCoordPos = 690.; m_fCFDThreshold = 0.; m_fMinLength = 0.; setParams(1.0, 0.0); m_fDeltaSlope=0.; m_fDeltaOffset=0.; m_fADCThreshold=0.; m_fADCPedestal=0.; m_fElossParam[0]=m_fElossParam[1]=m_fElossParam[2]=m_fElossParam[3]=0.; m_nDistParamType=0; return 1; } void HTofinoCalParCell::setParams(Float_t fSlope, Float_t fOffset) { //set slope and offset setSlope(fSlope); setOffset(fOffset); } void HTofinoCalParCell:: setDeltaParams(Float_t fDeltaSlope, Float_t fDeltaOffset) { //set slope and offset setDeltaSlope(fDeltaSlope); setDeltaOffset(fDeltaOffset); } void HTofinoCalParCell::getResolParams(Float_t* resol) { Int_t i; for(i = 0; i < 3; i++) resol[i] = m_fResolParam[i]; } void HTofinoCalParCell::setResolParams(Float_t* resol) { Int_t i; for(i = 0; i < 3; i++) m_fResolParam[i] = resol[i]; } void HTofinoCalParCell::setElossParams(Float_t* eloss) { Int_t i; for(i = 0; i < 4; i++) m_fElossParam[i] = eloss[i]; } void HTofinoCalParCell::setResolParams(Float_t dpar1, Float_t dpar2, Float_t dpar3) { m_fResolParam[0] = dpar1; m_fResolParam[1] = dpar2; m_fResolParam[2] = dpar3; } void HTofinoCalParCell::getDistanceParams(Float_t* dist) { Int_t i; for(i = 0; i < 4; i++) dist[i] = m_fDistParam[i]; } void HTofinoCalParCell::setDistanceParams(Float_t* dist) { Int_t i; for(i = 0; i < 4; i++) m_fDistParam[i] = dist[i]; } void HTofinoCalParCell::getElossParams(Float_t* eloss) { Int_t i; for(i = 0; i < 4; i++) eloss[i] = m_fElossParam[i]; } void HTofinoCalParCell::setDistanceParams(Float_t dpar1, Float_t dpar2, Float_t dpar3, Float_t dpar4) { m_fDistParam[0] = dpar1; m_fDistParam[1] = dpar2; m_fDistParam[2] = dpar3; m_fDistParam[2] = dpar4; } Float_t HTofinoCalParCell::calcDistance(Float_t row) { // return m_fDistParam[0] + row*(m_fDistParam[1]+row*m_fDistParam[2]); //Int_t iType = getDistanceParamsType(); //cout <<"iType = " <> m_fOffset; R__b >> m_fSlope; R__b >> m_fDeltaSlope; R__b >> m_fDeltaOffset; R__b.ReadStaticArray(m_fResolParam); R__b.ReadStaticArray(m_fDistParam); R__b >> m_nDistParamType; R__b >> m_fTimeChannel; R__b >> m_fCoordPos; } if(R__v == 3 ) { TObject::Streamer(R__b); R__b >> m_fOffset; R__b >> m_fSlope; R__b >> m_fDeltaSlope; R__b >> m_fDeltaOffset; R__b.ReadStaticArray(m_fResolParam); R__b.ReadStaticArray(m_fDistParam); R__b >> m_nDistParamType; R__b >> m_fTimeChannel; R__b >> m_fCoordPos; R__b >> m_fCFDThreshold; R__b >> m_fMinLength; } if(R__v == 4 ) { TObject::Streamer(R__b); R__b >> m_fOffset; R__b >> m_fSlope; R__b >> m_fDeltaSlope; R__b >> m_fDeltaOffset; R__b.ReadStaticArray(m_fResolParam); R__b.ReadStaticArray(m_fDistParam); R__b >> m_nDistParamType; R__b >> m_fTimeChannel; R__b >> m_fCoordPos; R__b >> m_fCFDThreshold; R__b >> m_fADCThreshold; R__b >> m_fADCPedestal; R__b.ReadStaticArray(m_fElossParam); R__b >> m_fMinLength; } } else { R__b.WriteVersion(HTofinoCalParCell::IsA()); TObject::Streamer(R__b); R__b << m_fOffset; R__b << m_fSlope; R__b << m_fDeltaSlope; R__b << m_fDeltaOffset; R__b.WriteArray(m_fResolParam, 3); R__b.WriteArray(m_fDistParam, 4); R__b << m_nDistParamType; R__b << m_fTimeChannel; R__b << m_fCoordPos; R__b << m_fCFDThreshold; R__b << m_fADCThreshold; R__b << m_fADCPedestal; R__b.WriteArray(m_fElossParam, 4); R__b << m_fMinLength; } }