#include "VTrackingData.h" #include "CbmTrack.h" #include "CbmPixelHit.h" #include "CbmStsTrack.h" #include "CbmGlobalTrack.h" #include "CbmHit.h" #include "TClonesArray.h" #include "TVector3.h" #include "VFileManager.h" #include #include using namespace std; VMyTrack::VMyTrack(int tracknum, int stsid) : fHits(),fInfo(""), fInfoShort(""), fStsTrack(NULL), fMuchTrack(NULL), fTrdTrack(NULL), fTofHit(NULL), fTrackNum(tracknum), fStsId(stsid), fMuchId(-1111), fTrdId(-1111), fTofId(-1111) { CbmGlobalTrack* global; int i; int ih; CbmHit* hit; CbmPixelHit* phit; if (fStsId>=0) { fStsTrack=(CbmStsTrack*)fStsTracks->At(stsid); if (fStsTrack==NULL) return; } else { global=(CbmGlobalTrack*)fGlobalTracks->At(fTrackNum); fStsId=global->GetStsTrackIndex(); fMuchId=global->GetMuchTrackIndex(); fTrdId=global->GetTrdTrackIndex(); fTofId=global->GetTofHitIndex(); if (fStsId>=0) fStsTrack=(CbmStsTrack*)fStsTracks->At(fStsId); if (fMuchId>=0) fMuchTrack=(CbmTrack*)fMuchTracks->At(fMuchId); if (fTrdId>=0) fTrdTrack=(CbmTrack*)fTrdTracks->At(fTrdId); if (fTofId>=0) fTofHit=(CbmPixelHit*)fTofHits->At(fTofId); } if (fStsTrack) { if (fMvdHits) { for(i=0;iGetNMvdHits();++i) { ih=fStsTrack->GetMvdHitIndex(i); hit=(CbmHit*)fMvdHits->At(ih); if (!hit) continue; AddHit(VMyHit(hit->GetX(), hit->GetY(), hit->GetZ(), "MVD", "hit")); } } for(i=0;iGetNStsHits();++i) { ih=fStsTrack->GetStsHitIndex(i); hit=(CbmHit*)fStsHits->At(ih); if (!hit) continue; AddHit(VMyHit(hit->GetX(), hit->GetY(), hit->GetZ(), "STS", "hit")); } } if (fMuchTrack) { for(i=0;iGetNofHits();++i) { ih=fMuchTrack->GetHitIndex(i); phit=(CbmPixelHit*)fMuchPixelHits->At(ih); if (!phit) continue; AddHit(VMyHit(phit->GetX(), phit->GetY(), phit->GetZ(), "MUCH", "hit")); } } if (fTrdTrack) { for(i=0;iGetNofHits();++i) { ih=fTrdTrack->GetHitIndex(i); phit=(CbmPixelHit*)fTrdHits->At(ih); if (!phit) continue; AddHit(VMyHit(phit->GetX(), phit->GetY(), phit->GetZ(), "TRD", "hit")); } } if (fTofHit) AddHit(VMyHit(fTofHit->GetX(), fTofHit->GetY(), fTofHit->GetZ(), "TOF", "hit")); fInfo=QString("GlobalTrack: sts=%1, much=%3, trd=%2, tof=%4. ").arg(fStsId).arg(fTrdId).arg(fMuchId).arg(fTofId); } QString VMyTrack::Convert(QString st) const { QString t=""; TVector3 m; // GLOBAL stuff if (st=="Nglobal") {t=QString("%1").arg(fTrackNum);} if (st=="Nsts") {t=QString("%1").arg(fStsId);} if (st=="Nmuch") {t=QString("%1").arg(fMuchId);} if (st=="Ntrd") {t=QString("%1").arg(fTrdId);} if (st=="Ntof") {t=QString("%1").arg(fTofId);} //TOF if (fTofHit) { if (st=="TOF_X") {t=QString("%1").arg(fTofHit->GetX());} if (st=="TOF_Y") {t=QString("%1").arg(fTofHit->GetY());} if (st=="TOF_Z") {t=QString("%1").arg(fTofHit->GetZ());} } //TRD if (fTrdTrack) { if (st=="TRD_Chi2") {t=QString("%1").arg(fTrdTrack->GetChiSq());} if (st=="TRD_NDF") {t=QString("%1").arg(fTrdTrack->GetNDF());} if (st=="TRD_NHits") {t=QString("%1").arg(fTrdTrack->GetNofHits());} if (st=="TRD_PrevId") {t=QString("%1").arg(fTrdTrack->GetPreviousTrackId());} if (st=="TRD_PF_X") {t=QString("%1").arg(fTrdTrack->GetParamFirst()->GetX());} if (st=="TRD_PF_Y") {t=QString("%1").arg(fTrdTrack->GetParamFirst()->GetY());} if (st=="TRD_PF_Z") {t=QString("%1").arg(fTrdTrack->GetParamFirst()->GetZ());} if (st=="TRD_PF_Tx") {t=QString("%1").arg(fTrdTrack->GetParamFirst()->GetTx());} if (st=="TRD_PF_Ty") {t=QString("%1").arg(fTrdTrack->GetParamFirst()->GetTy());} if (st=="TRD_PF_p") {t=QString("%1").arg(1.0/fTrdTrack->GetParamFirst()->GetQp());} if (st=="TRD_PF_P") {t=QString("%1").arg(fabs(1.0/fTrdTrack->GetParamFirst()->GetQp()));} if (st=="TRD_PF_Px") {fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="TRD_PF_Py") {fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="TRD_PF_Pz") {fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="TRD_PF_Pt") {fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="TRD_PF_pz") { fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fTrdTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="TRD_PF_pt") { fTrdTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fTrdTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="TRD_PL_X") {t=QString("%1").arg(fTrdTrack->GetParamLast()->GetX());} if (st=="TRD_PL_Y") {t=QString("%1").arg(fTrdTrack->GetParamLast()->GetY());} if (st=="TRD_PL_Z") {t=QString("%1").arg(fTrdTrack->GetParamLast()->GetZ());} if (st=="TRD_PL_Tx") {t=QString("%1").arg(fTrdTrack->GetParamLast()->GetTx());} if (st=="TRD_PL_Ty") {t=QString("%1").arg(fTrdTrack->GetParamLast()->GetTy());} if (st=="TRD_PL_p") {t=QString("%1").arg(1.0/fTrdTrack->GetParamLast()->GetQp());} if (st=="TRD_PL_P") {t=QString("%1").arg(fabs(1.0/fTrdTrack->GetParamLast()->GetQp()));} if (st=="TRD_PL_Px") {fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="TRD_PL_Py") {fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="TRD_PL_Pz") {fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="TRD_PL_Pt") {fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="TRD_PL_pz") { fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fTrdTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="TRD_PL_pt") { fTrdTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fTrdTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } } //MUCH if (fMuchTrack) { if (st=="MUCH_Chi2") {t=QString("%1").arg(fMuchTrack->GetChiSq());} if (st=="MUCH_NDF") {t=QString("%1").arg(fMuchTrack->GetNDF());} if (st=="MUCH_NHits") {t=QString("%1").arg(fMuchTrack->GetNofHits());} if (st=="MUCH_PrevId") {t=QString("%1").arg(fMuchTrack->GetPreviousTrackId());} if (st=="MUCH_PF_X") {t=QString("%1").arg(fMuchTrack->GetParamFirst()->GetX());} if (st=="MUCH_PF_Y") {t=QString("%1").arg(fMuchTrack->GetParamFirst()->GetY());} if (st=="MUCH_PF_Z") {t=QString("%1").arg(fMuchTrack->GetParamFirst()->GetZ());} if (st=="MUCH_PF_Tx") {t=QString("%1").arg(fMuchTrack->GetParamFirst()->GetTx());} if (st=="MUCH_PF_Ty") {t=QString("%1").arg(fMuchTrack->GetParamFirst()->GetTy());} if (st=="MUCH_PF_p") {t=QString("%1").arg(1.0/fMuchTrack->GetParamFirst()->GetQp());} if (st=="MUCH_PF_P") {t=QString("%1").arg(fabs(1.0/fMuchTrack->GetParamFirst()->GetQp()));} if (st=="MUCH_PF_Px") {fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="MUCH_PF_Py") {fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="MUCH_PF_Pz") {fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="MUCH_PF_Pt") {fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="MUCH_PF_pz") { fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fMuchTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="MUCH_PF_pt") { fMuchTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fMuchTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="MUCH_PL_X") {t=QString("%1").arg(fMuchTrack->GetParamLast()->GetX());} if (st=="MUCH_PL_Y") {t=QString("%1").arg(fMuchTrack->GetParamLast()->GetY());} if (st=="MUCH_PL_Z") {t=QString("%1").arg(fMuchTrack->GetParamLast()->GetZ());} if (st=="MUCH_PL_Tx") {t=QString("%1").arg(fMuchTrack->GetParamLast()->GetTx());} if (st=="MUCH_PL_Ty") {t=QString("%1").arg(fMuchTrack->GetParamLast()->GetTy());} if (st=="MUCH_PL_p") {t=QString("%1").arg(1.0/fMuchTrack->GetParamLast()->GetQp());} if (st=="MUCH_PL_P") {t=QString("%1").arg(fabs(1.0/fMuchTrack->GetParamLast()->GetQp()));} if (st=="MUCH_PL_Px") {fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="MUCH_PL_Py") {fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="MUCH_PL_Pz") {fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="MUCH_PL_Pt") {fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="MUCH_PL_pz") { fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fMuchTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="MUCH_PL_pt") { fMuchTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fMuchTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } } //STS if (fStsTrack) { if (st=="STS_Chi2") {t=QString("%1").arg(fStsTrack->GetChi2());} if (st=="STS_NDF") {t=QString("%1").arg(fStsTrack->GetNDF());} if (st=="STS_Nmvd") {t=QString("%1").arg(fStsTrack->GetNMvdHits());} if (st=="STS_Nsts") {t=QString("%1").arg(fStsTrack->GetNStsHits());} if (st=="STS_PF_X") {t=QString("%1").arg(fStsTrack->GetParamFirst()->GetX());} if (st=="STS_PF_Y") {t=QString("%1").arg(fStsTrack->GetParamFirst()->GetY());} if (st=="STS_PF_Z") {t=QString("%1").arg(fStsTrack->GetParamFirst()->GetZ());} if (st=="STS_PF_Tx") {t=QString("%1").arg(fStsTrack->GetParamFirst()->GetTx());} if (st=="STS_PF_Ty") {t=QString("%1").arg(fStsTrack->GetParamFirst()->GetTy());} if (st=="STS_PF_p") {t=QString("%1").arg(1.0/fStsTrack->GetParamFirst()->GetQp());} if (st=="STS_PF_P") {t=QString("%1").arg(fabs(1.0/fStsTrack->GetParamFirst()->GetQp()));} if (st=="STS_PF_Px") {fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="STS_PF_Py") {fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="STS_PF_Pz") {fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="STS_PF_Pt") {fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="STS_PF_pz") { fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fStsTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="STS_PF_pt") { fStsTrack->GetParamFirst()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fStsTrack->GetParamFirst()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="STS_PL_X") {t=QString("%1").arg(fStsTrack->GetParamLast()->GetX());} if (st=="STS_PL_Y") {t=QString("%1").arg(fStsTrack->GetParamLast()->GetY());} if (st=="STS_PL_Z") {t=QString("%1").arg(fStsTrack->GetParamLast()->GetZ());} if (st=="STS_PL_Tx") {t=QString("%1").arg(fStsTrack->GetParamLast()->GetTx());} if (st=="STS_PL_Ty") {t=QString("%1").arg(fStsTrack->GetParamLast()->GetTy());} if (st=="STS_PL_p") {t=QString("%1").arg(1.0/fStsTrack->GetParamLast()->GetQp());} if (st=="STS_PL_P") {t=QString("%1").arg(fabs(1.0/fStsTrack->GetParamLast()->GetQp()));} if (st=="STS_PL_Px") {fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Px());} if (st=="STS_PL_Py") {fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Py());} if (st=="STS_PL_Pz") {fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz());} if (st=="STS_PL_Pt") {fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt());} if (st=="STS_PL_pz") { fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pz()); if (fStsTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } if (st=="STS_PL_pt") { fStsTrack->GetParamLast()->Momentum(m); t=QString("%1").arg(m.Pt()); if (fStsTrack->GetParamLast()->GetQp()<0) t="-"+t; else t="+"+t; } } if (t.isEmpty()) return st; return t; } QString VMyTrack::Parse(QString st) const { int i; int verb=0; int n=st.size(); QChar ch; QString out=""; QString buffer=""; for(i=0;i=QChar('a')&&ch<=QChar('z'))||(ch>=QChar('A')&&ch<=QChar('Z'))||(ch>=QChar('0')&&ch<=QChar('9'))||ch==QChar('_')) buffer+=ch; else { if (buffer.isEmpty()==false) { out+=Convert(buffer); buffer=""; } out+=ch; } } out+=Convert(buffer); return out; } //TODO: this is agly! void VMyTrack::AssosiateHits(std::vector &hitlist) { unsigned int i; unsigned int j; for(j=0;jgetArray("GlobalTrack"); fMvdHits=fm->getArray("MvdHit"); fStsHits=fm->getArray("StsHit"); fStsTracks=fm->getArray("StsTrack"); fMuchPixelHits=fm->getArray("MuchPixelHit"); fMuchTracks=fm->getArray("MuchTrack"); fTrdHits=fm->getArray("TrdHit"); fTrdTracks=fm->getArray("TrdTrack"); fTofHits=fm->getArray("TofHit"); }