/** @file CbmTofTracklet.cxx ** @author nh ** @date 17.05.2015 ** **/ #include "CbmTofTracklet.h" #include "CbmTofHit.h" #include "Rtypes.h" // for Double_t, Double32_t, Int_t, etc #include "TMatrixFSymfwd.h" // for TMatrixFSym #include #include "FairLogger.h" using std::cout; using std::endl; CbmTofTracklet::CbmTofTracklet() : TObject(), fGlbTrack(-1), fTrackLength(0.), fPidHypo(-1), fDistance(0.), fTime(0.), fTt(0.), fT0(0.), fChiSq(0.), fNDF(0), fTrackPar(), fParamFirst(), fParamLast(), fTofHit(0,-1), fTofDet(), fMatChi(), fpHit() { } CbmTofTracklet::~CbmTofTracklet() { } /* CbmTofTracklet::CbmTofTracklet(const CbmTofTracklet &fSource) : TObject(), //CbmTrack(), fGlbTrack(-1), fTrackLength(0.), fPidHypo(-1), fDistance(0.), fTime(0.), fTt(0.), fT0(0.), fChiSq(0.), fNDF(0), fTrackPar(), fParamFirst(), fParamLast(), fTofHit(0,-1), fTofDet(), fMatChi(), fpHit() { } CbmTofTracklet& CbmTofTracklet::operator=(const CbmTofTracklet &fSource){ // do something ! return *this; } */ void CbmTofTracklet::SetParamLast(const CbmTofTrackletParam* par){ fParamLast.SetX( par->GetX() ); fParamLast.SetY( par->GetY() ); fParamLast.SetZ( par->GetZ() ); fParamLast.SetTx( par->GetTx() ); fParamLast.SetTy( par->GetTy() ); fParamLast.SetQp( par->GetQp() ); for(int i=0, k=0;i<3;i++) for(int j=0; j<=i; j++,k++) fParamLast.SetCovariance(i,j,par->GetCovariance(k)); } void CbmTofTracklet::GetFairTrackParamLast(){ fTrackPar.SetX( fParamLast.GetX() ); fTrackPar.SetY( fParamLast.GetY() ); fTrackPar.SetZ( fParamLast.GetZ() ); fTrackPar.SetTx( fParamLast.GetTx() ); fTrackPar.SetTy( fParamLast.GetTy() ); fTrackPar.SetQp( fParamLast.GetQp() ); for(int i=0, k=0;i<3;i++) for(int j=0; j<=i; j++,k++) fTrackPar.SetCovariance(k,fParamLast.GetCovariance(i,j)); } Double_t CbmTofTracklet::GetMatChi2(Int_t iSm){ for (UInt_t iHit=0; iHit2) UpdateTt(); // update Tt first for (UInt_t iHit=0; iHitToString()<0) { // exlude fake hits dT0 += fpHit[iHit]->GetTime() - fTt*fpHit[iHit]->GetR(); nValidHits++; } } dT0 /= nValidHits; fT0=dT0; //cout << Form(" -D- CbmTofTracklet::GetT0: Trkl size %d, validHits %3.0f, Tt = %6.2f dT0 = %6.2f",fTofHit.size(),nValidHits,fTt,dT0)<0 ) // exclude faked hits for (UInt_t iHH=iHL+1; iHH0) { // exclude faked hits dTt+=(fpHit[iHH]->GetTime()-fpHit[iHL]->GetTime())/(fpHit[iHH]->GetR()-fpHit[iHL]->GetR()); iNt++; } } } if (iNt==0) { cout << "-W- CbmTofTracklet::GetTt: No valid hit pair "<GetTime() - fTt*(fpHit[iHit]->GetR()-pHit->GetR()); Nref++; } if(Nref == 0) { cout << "-E- CbmTofTracklet::GetTdif: SmType "<GetTime()-dTref; // cout << "-D- CbmTofTracklet::GetTdif: iSt "<< iSt<<" SmType "<GetX(); fP[1]=fpHit[n]->GetY(); fP[2]=fpHit[n]->GetZ(); fP[3]=fpHit[n]->GetTime(); // cout <GetZ()); fP[1]=GetFitY(fpHit[n]->GetZ()); fP[2]=fpHit[n]->GetZ(); fP[3]=fpHit[n]->GetTime(); /* cout <GetX(),fP[1],fpHit[n]->GetY(),fP[2],fP[3]) << endl; */ return fP; } Double_t CbmTofTracklet::GetFitX(Double_t dZ){ return fTrackPar.GetX() + fTrackPar.GetTx()*(dZ-fTrackPar.GetZ()); } Double_t CbmTofTracklet::GetFitY(Double_t dZ){ return fTrackPar.GetY() + fTrackPar.GetTy()*(dZ-fTrackPar.GetZ()); } Double_t CbmTofTracklet::GetFitT(Double_t dR){ return GetT0() + fTt*dR; } ClassImp(CbmTofTracklet)