#include "base/CbmLitTrack.h" #include "CbmTrkHit.h" #include using std::cout; using std::endl; using std::map; // ----- Default constructor ------------------------------------------- CbmLitTrack::CbmLitTrack() { fPidHypo = 0; fFlag = 0; fNDF = 0; fChi2 = 0.; } // ------------------------------------------------------------------------- // ----- Destructor ---------------------------------------------------- CbmLitTrack::~CbmLitTrack() { fHitMap.clear(); } // ------------------------------------------------------------------------- // ----- Public method AddHit --------------------------------------- void CbmLitTrack::AddHit(Int_t hitIndex, const CbmTrkHit* hit) { fHitMap[hit->GetZ()] = hitIndex; fpHitMap[hitIndex] = hit; } // ------------------------------------------------------------------------- // ----- Public method Print ------------------------------------------- void CbmLitTrack::Print() { cout << " Number of attached hits : " << fHits.GetSize() << endl; fParamFirst.Print(); cout << " Chi2: " << fChi2 << ", Quality flag " << fFlag << endl; } // ------------------------------------------------------------------------- // ----- Public method SortHits ---------------------------------------- void CbmLitTrack::SortHits() { Int_t index=0; map::iterator it; fHits.Reset(); fHits.Set(fHitMap.size()); index = 0; for (it = fHitMap.begin(); it != fHitMap.end(); it++) { fHits[index] = it->second; index++; } } // ------------------------------------------------------------------------- void CbmLitTrack::MapFromSts(CbmStsTrack* track) { //SetPidHypo(track->GetPidHypo()); SetFlag(track->GetFlag()); SetChi2(track->GetChi2()); SetNDF(track->GetNDF()); SetParamFirst(track->GetParamFirst()); SetParamLast(track->GetParamLast()); } void CbmLitTrack::MapFromMuch(CbmMuchTrack* track) { //SetPidHypo(track->GetPidHypo()); SetFlag(track->GetFlag()); SetChi2(track->GetChi2()); SetNDF(track->GetNDF()); SetParamFirst(track->GetMuchTrack()); SetParamLast(track->GetMuchTrack()); SetPreviousTrackId(track->GetStsTrackID()); } void CbmLitTrack::MapFromTrd(CbmTrdTrack* track) { //SetPidHypo(track->GetPidHypo()); SetFlag(track->GetFlag()); SetChi2(track->GetChi2()); SetNDF(track->GetNDF()); SetParamFirst(track->GetParamFirst()); SetParamLast(track->GetParamLast()); SetPreviousTrackId(track->GetStsTrackIndex()); } CbmStsTrack CbmLitTrack::MapToSts() { CbmStsTrack track; //TODO return track; } CbmMuchTrack CbmLitTrack::MapToMuch() { CbmMuchTrack track; for (int iHit = 0; iHit < GetNofHits(); iHit++) { track.AddHitIndex(GetHitIndex(iHit)); } track.SetNMissedHits(0); track.SetNMissedStations(0); track.SetChi2(GetChi2()); track.SetNDF(GetNDF()); track.SetStsTrackID(GetPreviousTrackId()); track.SetMuchTrack(&fParamLast); track.SetFlag(GetFlag()); return track; } CbmTrdTrack CbmLitTrack::MapToTrd() { CbmTrdTrack track; for (int iHit = 0; iHit < GetNofHits(); iHit++) { CbmTrdHit* hit = (CbmTrdHit*)fpHitMap[GetHitIndex(iHit)]; track.AddHit(GetHitIndex(iHit), hit); } track.SortHits(); track.SetPidHypo(GetPidHypo()); track.SetParamFirst(*((CbmTrackParam*)GetParamFirst())); track.SetParamLast(*((CbmTrackParam*)GetParamLast())); track.SetFlag(GetFlag()); track.SetChi2(GetChi2()); track.SetNDF(GetNDF()); track.SetStsTrackIndex(GetPreviousTrackId()); return track; } ClassImp(CbmLitTrack)