/* *==================================================================== * * CBM Level 1 Reconstruction * * Authors: I.Kisel, S.Gorbunov * * e-mail : ikisel@kip.uni-heidelberg.de * *==================================================================== * * L1 Monte Carlo information * *==================================================================== */ #ifndef CbmL1MCTrack_H #define CbmL1MCTrack_H //#include "L1AlgoInputMCData.h" #include "PerformanceConstants.h" #include "CbmL1MCPoint.h" #include "L1StsHit.h" #include using std::vector; class CbmL1Track; class CbmL1StsHit; class CbmL1HitStore; class CbmL1MCTrack { public: double mass, q, p, x, y, z, px, py, pz, time; int ID, mother_ID, pdg; vector Points; // indices of pints in L1::vMCPoints vector StsHits; // indices of hits in algo->vStsHits or L1::vStsHits CbmL1MCTrack(){}; CbmL1MCTrack(int _ID):ID(_ID){}; // CbmL1MCTrack(double mass, double q, TVector3 vr, TLorentzVector vp, int ID, int mother_ID, int pdg); // CbmL1MCTrack(TmpMCPoints &mcPoint, TVector3 vr, TLorentzVector vp, int ID, int mother_ID); bool IsPrimary(){return mother_ID < 0;}; bool IsReconstructable(){return isReconstructable;}; bool IsAdditional() const {return isAdditional; } int NStations() const {return nStations;}; int NMCStations() const {return nMCStations;}; int NMCContStations() const {return nMCContStations;}; void Init(); void AddRecoTrack(CbmL1Track* rTr){rTracks.push_back(rTr);} vector< CbmL1Track* >& GetRecoTracks(){ return rTracks;} int GetNClones(){ return rTracks.size() - 1;} bool IsReconstructed(){ return rTracks.size(); } void AddTouchTrack(CbmL1Track* tTr){tTracks.push_back(tTr);} bool IsDisturbed(){ return tTracks.size(); } friend class Performance; friend class L1AlgoInputMCData; int nMCContStations; // number of consecutive stations with mcPoints int nHitContStations; // number of consecutive stations with hits int maxNStaMC; // max number of mcPoints on station int maxNSensorMC; // max number of mcPoints with same z int maxNStaHits; // max number of hits on station int nStations; // number of stations with hits int nMCStations; // number of stations with MCPoints bool isReconstructable; bool isAdditional; // is not reconstructable, but stil interesting void CalculateMCCont(const vector& vMCPoints); void CalculateHitCont(const vector& vMCPoints); void CalculateMaxNStaHits(const vector< CbmL1HitStore >& vHitStore); void CalculateMaxNStaMC(const vector& vMCPoints); void CalculateIsReconstructable( vector& vMCPoints, vector< L1StsHit >& vStsHits, vector< unsigned char >& vSFlag, vector< CbmL1HitStore >& vHitStore); private: // next members filled and used in Performance vector< CbmL1Track* > rTracks; // array of assosiated recoTracks vector< CbmL1Track* > tTracks; // array of recoTracks wich aren't assosiated with this mcTrack, but use some hits from it. }; #endif