MpdTpcTrackFollow2Sft.h 3.8 KB

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