MpdSftTrackFinderTpc.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef MPD_SFTTRACKFINDERTPC_H
  2. #define MPD_SFTTRACKFINDERTPC_H
  3. //#include "MpdKalmanHitZ.h"
  4. #include "FairTask.h"
  5. //#include "TLorentzVector.h"
  6. #include "TH1.h"
  7. class MpdKalmanHit;
  8. class MpdKalmanTrack;
  9. //class MpdEtofPoint;
  10. class MpdEctKalmanTrack;
  11. class TClonesArray;
  12. class TVector2;
  13. class TArrayI;
  14. class MpdSftTrackFinderTpc :public FairTask
  15. {
  16. public:
  17. /** Constructor **/
  18. MpdSftTrackFinderTpc(const char *name="MpdSftTrackFinderTpc", Int_t iVerbose = 1 );
  19. /** Destructor **/
  20. virtual ~MpdSftTrackFinderTpc();
  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. private:
  38. Int_t GetNofHitsInLayer(Int_t lay) { return (Int_t)fhLays->GetCellContent(lay+1,0); }
  39. Int_t GetHitsInLayer(Int_t lay) { return fLayPointers[lay]; } ///< first index of hits in layer
  40. void GetTrackSeeds(Int_t iPass); // build track seeds
  41. void DoTracking(Int_t iPass); // run tracking
  42. void FollowInTPC(); // follow tracks in TPC
  43. void MakeKalmanHitsSft(); // create Kalman hits for SFT
  44. //Double_t EvalPt(const MpdKalmanHitZ *hit1, const MpdKalmanHitZ *hit2); // evaluate Pt
  45. Double_t EvalPt(MpdKalmanTrack *track, const MpdKalmanHit *hit1, const MpdKalmanHit *hit2); // evaluate Pt
  46. //void EvalCovar(const MpdKalmanHitZ *hitOut, const MpdKalmanHitZ *hitIn,
  47. void EvalCovar(const MpdKalmanHit *hitOut, const MpdKalmanHit *hitIn,
  48. MpdEctKalmanTrack *track); // eval. covariance
  49. Int_t RunKalmanFilter(MpdEctKalmanTrack *track, Int_t layBeg); ///< run Kalman filter
  50. Int_t RunKalmanFilterTPC(MpdEctKalmanTrack *track, Int_t layBeg); ///< run Kalman filter in TPC
  51. void RemoveDoubles(); ///< remove double tracks
  52. Int_t NofCommonHits(MpdEctKalmanTrack* track, MpdEctKalmanTrack* track1); ///< get number of common hits
  53. void AddHits(); // add hit objects to tracks
  54. void SetTrackID(MpdEctKalmanTrack *track); // set track ID from IDs of its hits
  55. void StoreTracks(); // transfer tracks from fTrackCand to fTracks
  56. void ExcludeHits() { }; // exclude used hits
  57. void Write();
  58. void Writedir2current( TObject *obj );
  59. Double_t Proxim(MpdKalmanTrack *track, const MpdKalmanHit *hit); ///< adjust R-Phi coord. for continuity
  60. //TVector2 GetDistance(MpdEctKalmanTrack *track, MpdKalmanHitZ *hit); ///< hit-track distance
  61. TVector2 GetDistance(MpdEctKalmanTrack *track, MpdKalmanHit *hit); ///< hit-track distance
  62. void GoToVertex(); // propagate tracks to vertex
  63. void PassInnerShell(MpdKalmanTrack *track); ///< propagate thru TPC inner shell
  64. void RemoveTpcTracks(); ///< remove TPC tracks which are parts of the combined ones
  65. Int_t fNPass;
  66. TDirectory *fHistoDir;
  67. TH1F *fhNBranches;
  68. TClonesArray *fSftPoints; //! SFT points
  69. TClonesArray *fTpcPoints; //! TPC points
  70. TClonesArray *fTpcHits; //! TPC hits
  71. TClonesArray *fKHits; //!< array of Kalman hits
  72. TClonesArray *fMCTracks; //!< array of MC tracks
  73. //TClonesArray *fSTSTrackMatch;
  74. TClonesArray *fTracks; //! ECT tracks
  75. Int_t *fLayPointers; //!< locations of hits from different layers
  76. TH1F *fhLays; //!< histo with layer hit multiplicities
  77. Int_t fLayMinMax[2][2]; //!< first and last layer numbers for modules at Z > 0 and Z < 0
  78. //FairVertex *fPrimVtx;
  79. private:
  80. // Some constants
  81. static const Double_t fgkChi2Cut; ///< max accepted Chi2 of hit for track
  82. ClassDef(MpdSftTrackFinderTpc,1);
  83. };
  84. #endif