MpdTrackFinderIts.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #ifndef MPD_TRACKFINDERITS_H
  2. #define MPD_TRACKFINDERITS_H
  3. #include "MpdStsHit.h"
  4. #include "FairTask.h"
  5. //#include "TLorentzVector.h"
  6. #include "TH1.h"
  7. #include <map>
  8. //class MpdKalmanStripHit;
  9. class MpdKalmanHit;
  10. class MpdKalmanTrack;
  11. class MpdItsKalmanTrack;
  12. class TClonesArray;
  13. class TVector2;
  14. class MpdTrackFinderIts :public FairTask
  15. {
  16. public:
  17. /** Constructor **/
  18. MpdTrackFinderIts(const char *name="MpdTrackFinderIts", Int_t iVerbose = 1 );
  19. /** Destructor **/
  20. virtual ~MpdTrackFinderIts();
  21. /// * FairTask methods
  22. /** Intialisation at begin of run. To be implemented in the derived class.
  23. *@value Success If not kSUCCESS, task will be set inactive.
  24. **/
  25. InitStatus Init();
  26. /** Reinitialisation.
  27. *@value Success If not kSUCCESS, task will be set inactive.
  28. **/
  29. InitStatus ReInit();
  30. /** Intialise parameter containers.
  31. **/
  32. void SetParContainers();
  33. void Exec(Option_t * option);
  34. /** Action after each event. **/
  35. void Finish();
  36. void Reset();
  37. void FillGeoScheme(); // fill Kalman filter geometry manager
  38. private:
  39. Int_t GetNofHitsInLayer(Int_t lay) { return (Int_t)fhLays->GetCellContent(lay+1,0); }
  40. Int_t GetHitsInLayer(Int_t lay) { return fLayPointers[lay]; } ///< first index of hits in layer
  41. void GetTrackSeeds(Int_t iPass); // build track seeds
  42. void DoTracking(Int_t iPass); // run tracking
  43. void MakeKalmanHits(); // create Kalman hits
  44. Int_t RunKalmanFilterCyl(MpdItsKalmanTrack *track, Int_t layBeg); ///< run Kalman filter - cylindrical
  45. Int_t RunKalmanFilterMod(MpdItsKalmanTrack *track, Int_t layBeg); ///< run Kalman filter - modular
  46. Bool_t NavigateToLayer(Int_t lay, MpdItsKalmanTrack *curTr, MpdItsKalmanTrack *trackBr,
  47. std::map<Int_t,Int_t>& trackBrM); ///< navigate track to layer
  48. Int_t TrackID(MpdKalmanHit *hit); ///< return track ID of the hit
  49. void AddHits(); // add hit objects to tracks
  50. void StoreTracks(); // transfer tracks from fTrackCand to fTracks
  51. void ExcludeHits() { }; // exclude used hits
  52. void Write();
  53. void Writedir2current( TObject *obj );
  54. //TVector2 GetDistance(TpcLheKalmanTrack *track, MpdKalmanStripHit *hit); ///< hit-track distance
  55. TVector2 GetDistance(MpdKalmanTrack *track, MpdKalmanHit *hit); ///< hit-track distance
  56. Int_t fNPass;
  57. TDirectory *fHistoDir;
  58. TH1F *fhNBranches;
  59. TClonesArray *fItsPoints; //! ITS MC points
  60. TClonesArray *fItsHits; //! ITS Hits
  61. TClonesArray *fKHits; //!< array of Kalman hits
  62. TClonesArray *fTpcTracks; //!< array of TPC tracks
  63. TClonesArray *fEctTracks; //!< array of ECT tracks
  64. TClonesArray *fMCTracks; //!< array of MC tracks
  65. //TClonesArray *fSTSTrackMatch;
  66. TClonesArray *fTracks; //! ITS tracks
  67. Int_t *fLayPointers; //!< locations of hits from different layers
  68. TH1F *fhLays; //!< histo with layer hit multiplicities
  69. Double_t fStereoA[2]; //!< stereo angles
  70. Double_t fDz[5]; //!< layer half-lengths in Z
  71. Double_t fZmod[5]; //!< module lengths in Z
  72. Double_t fRad[10]; //!< layer radii (detector layers * 2 sides)
  73. Double_t fPipeR; //!< beam pipe outer radius
  74. Int_t fNladders[10]; //!< numbers of ladders in layers
  75. Int_t fNsectors[10]; //!< numbers of sectors in layers
  76. Int_t fGeo; //!< geometry version
  77. std::map<Double_t,Double_t> fCables[5]; //!< cable length (z1, z2) for layers 1-4
  78. MpdStsHit fHitSts; //!< STS hit - helper for detector numeration
  79. std::map<Int_t,Int_t> fId2Id[10]; //!< STS hit ID to Kalman hit ID for layers 1-4
  80. //FairVertex *fPrimVtx;
  81. //FairStsKFTrackFitter fStsFitter;
  82. private:
  83. // Some constants
  84. static const Double_t fgkChi2Cut; ///< max accepted Chi2 of hit for track
  85. ClassDef(MpdTrackFinderIts,1);
  86. };
  87. #endif