/* *==================================================================== * * CBM Level 1 Reconstruction * * Authors: I.Kisel, S.Gorbunov * * e-mail : ikisel@kip.uni-heidelberg.de * *==================================================================== * * CbmL1 header file * *==================================================================== */ #ifndef _CbmL1_h_ #define _CbmL1_h_ #include #include #include "CbmStsPoint.h" #include "CbmTrdPoint.h" #include "CbmStsHit.h" #include "CbmL1MC.h" #include "CbmL1Track.h" #include "CbmL1Vtx.h" #include "CbmL1StsHit.h" #include "CbmL1TrdHit.h" #include #include #include #include #include "TClonesArray.h" #include "TRefArray.h" #include "TParticle.h" #include "TRandom.h" #include "CbmTask.h" #include "CbmRootManager.h" //#include "CbmMagField.h" //#include "CbmConstField.h" #include "CbmDetector.h" #include "CbmMCTrack.h" #include "CbmMCApplication.h" #include "TGeoManager.h" #include "TGeoMatrix.h" #include "TGeoTube.h" #include "TGeoCone.h" #include "TGeoPcon.h" #include "TGeoBBox.h" #include "TH1.h" #include "TH2.h" #include "TProfile.h" #include "TProfile2D.h" using namespace std; class CbmL1 : public CbmTask { public: static CbmL1 *Instance(){ return fInstance; } void SetParContainers(); virtual InitStatus ReInit(); virtual InitStatus Init(); void Exec(Option_t * option); //local copy of measurements arranged vs station/planes vector vStsStrips; vector vStsHits; vector vTrdHits; vector vMCPoints; vector vMCTracks; vector vRTracks; CbmL1Vtx PrimVtx; ~CbmL1(); CbmL1(const char *name, const char *title="Cbm L1 Task"); CbmL1(); TRefArray *GetRef(){return ref;} ClassDef(CbmL1,1); //protected: TRefArray *ref; TClonesArray *listStsPts; // Sts MC points TClonesArray *listTrdPts; // Trd MC points TClonesArray *listStsHits; TClonesArray *listMCTracks ; int FirstTrdStationID; vector > vvtrip; int NStation; int StsHitsStartIndex[100], StsHitsStopIndex[100]; double TRACK_CHI2_CUT; double CATime; TDirectory *histodir; void ReadEvent(); void MCTrackFinder(); void CATrackFinder(); void CAFindTrack( const CbmL1Triplet* ptrip, CbmL1Track& newtrack, CbmL1Track currenttrack ); void TrackFitter( vector &Tracks, CbmL1Vtx *V ); typedef map Mtrartramap; typedef map::iterator MtrartramapIt; Mtrartramap mtrartramap; typedef map Rtramtramap; typedef map::iterator RtramtramapIt; Rtramtramap rtramtramap; void Performance(); void ReadStsHit( CbmL1StsHit *h, int index ); bool ReadMCPoint( CbmL1MCPoint *MC, int iPoint, int iPileUp ); // statistics double stat_fit_time; long int stat_fit_time_ntracks; int stat_vtx_ntracks; private: static CbmL1 *fInstance; }; #endif //_CbmL1_h_