MpdEctTrackFinderTofTpc.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #ifndef MPD_ECTTRACKFINDERTOFTPC_H
  2. #define MPD_ECTTRACKFINDERTOFTPC_H
  3. //#include "MpdKalmanHitZ.h"
  4. #include "FairTask.h"
  5. //#include "FairStsKFTrackFitter.h"
  6. //#include "TLorentzVector.h"
  7. #include "TH1.h"
  8. class MpdKalmanHitZ;
  9. class MpdKalmanHit;
  10. class MpdKalmanTrack;
  11. class MpdEtofPoint;
  12. class TpcLheHit;
  13. class MpdEctKalmanTrack;
  14. class TClonesArray;
  15. class TVector2;
  16. class MpdEctTrackFinderTofTpc :public FairTask
  17. {
  18. public:
  19. /** Constructor **/
  20. MpdEctTrackFinderTofTpc(const char *name="MpdEctTrackFinderTofTpc", Int_t iVerbose = 1 );
  21. /** Destructor **/
  22. virtual ~MpdEctTrackFinderTofTpc();
  23. /// * FairTask methods
  24. /** Intialisation at begin of run. To be implemented in the derived class.
  25. *@value Success If not kSUCCESS, task will be set inactive.
  26. **/
  27. InitStatus Init();
  28. /** Reinitialisation.
  29. *@value Success If not kSUCCESS, task will be set inactive.
  30. **/
  31. InitStatus ReInit();
  32. /** Intialise parameter containers.
  33. **/
  34. void SetParContainers();
  35. void Exec(Option_t * option);
  36. /** Action after each event. **/
  37. void Finish();
  38. void Reset();
  39. private:
  40. Int_t GetNofHitsInLayer(Int_t lay) { return (Int_t)fhLays->GetCellContent(lay+1,0); }
  41. Int_t GetHitsInLayer(Int_t lay) { return fLayPointers[lay]; } ///< first index of hits in layer
  42. void GetTrackSeeds(Int_t iPass); // build track seeds
  43. void DoTracking(Int_t iPass); // run tracking
  44. void MakeKalmanHits(); // create Kalman hits
  45. void GetTpcPoints(); // get TPC points near max Z
  46. void EvalParams(const MpdEtofPoint *tof, const TpcLheHit *tpc, MpdEctKalmanTrack *track); // evaluate params
  47. void EvalCovar(const MpdEtofPoint *tof, const TpcLheHit *tpc, MpdEctKalmanTrack *track); // eval. covariance
  48. Int_t RunKalmanFilter(MpdEctKalmanTrack *track, Int_t layBeg); ///< run Kalman filter
  49. void RemoveDoubles(); ///< remove double tracks
  50. Int_t NofCommonHits(MpdEctKalmanTrack* track, MpdEctKalmanTrack* track1); ///< get number of common hits
  51. void AddHits(); // add hit objects to tracks
  52. void SetTrackID(MpdEctKalmanTrack *track); // set track ID from IDs of its hits
  53. void StoreTracks(); // transfer tracks from fTrackCand to fTracks
  54. void ExcludeHits() { }; // exclude used hits
  55. void Write();
  56. void Writedir2current( TObject *obj );
  57. Double_t Proxim(Double_t phi0, Double_t phi); // adjust angle for continuity
  58. Double_t Proxim(MpdKalmanTrack *track, const MpdKalmanHit *hit); ///< adjust R-Phi coord. for continuity
  59. TVector2 GetDistance(MpdEctKalmanTrack *track, MpdKalmanHitZ *hit); ///< hit-track distance
  60. Int_t fNPass;
  61. TDirectory *fHistoDir;
  62. TH1F *fhNBranches;
  63. TClonesArray *fTpcHits; //! TPC hits
  64. TClonesArray *fEctHits; //! ECT hits
  65. TClonesArray *fTofHits; //! TOF hits
  66. TClonesArray *fKHits; //!< array of Kalman hits
  67. TClonesArray *fTpcTracks; //!< array of TPC tracks
  68. TClonesArray *fMCTracks; //!< array of MC tracks
  69. //TClonesArray *fSTSTrackMatch;
  70. TClonesArray *fTracks; //! ECT tracks
  71. Int_t *fLayPointers; //!< locations of hits from different layers
  72. TH1F *fhLays; //!< histo with layer hit multiplicities
  73. TObjArray *fTPC; //! TPC point near Zmax
  74. //FairVertex *fPrimVtx;
  75. //FairStsKFTrackFitter fStsFitter;
  76. private:
  77. // Some constants
  78. static const Double_t fgkChi2Cut; ///< max accepted Chi2 of hit for track
  79. ClassDef(MpdEctTrackFinderTofTpc,1);
  80. };
  81. #endif