TpcLheTrackFinder.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #ifndef LHE_TRACK_FINDER_H
  2. #define LHE_TRACK_FINDER_H
  3. // *************************************************************************
  4. // Author: Oleg Rogachevsky e-mail: rogach@sunhe.jinr.ru
  5. //
  6. // track finder with conformal mapping
  7. //
  8. // Created: 1-07-07
  9. // Modified:
  10. //
  11. // *************************************************************************
  12. #include "TObject.h"
  13. #include "TObjArray.h"
  14. #include "TArrayI.h"
  15. #include "TBenchmark.h"
  16. #include "Riostream.h"
  17. #include "FairTask.h"
  18. #include "TpcLheHit.h"
  19. #include "TpcLheCMPoint.h"
  20. #include "TpcLheCMTrack.h"
  21. #include "TpcLheTrackCuts.h"
  22. #include "TpcLheSegments.h"
  23. #include "TpcLheTrackFitter.h"
  24. #include "lhe.h"
  25. class TpcLheTrackFinder : public FairTask {
  26. protected:
  27. enum Momentum {HIGH, INTERMED, LOW};
  28. TpcLheTrackFitter *fFitter;
  29. TpcLhePoint *fVertex; // pointer to the vertex
  30. TClonesArray *fCMHits; // Array of hits transformed with conformal mapping
  31. TObjArray *fCMTracks; // Array of tracks
  32. TpcLheSegments *fSegment; //
  33. TObjArray *fSegments; // segments with hits
  34. TClonesArray *fLheHits; // Array of event's hits
  35. TClonesArray *fGeantTracks; // Array of geant tracks
  36. TClonesArray *fFoundTracks; // Array of found tracks
  37. TString fOption; // options for operation
  38. TBenchmark *fBench; // benchmark object (just for run-time measurements)
  39. Float_t mTime; // total time consumption
  40. // Cuts
  41. TpcLheTrackCuts* fTrackCuts; // cuts for tracks
  42. public:
  43. TpcLheTrackFinder(); //
  44. TpcLheTrackFinder(const char *name, const char *title="CBM Task");
  45. virtual ~TpcLheTrackFinder(); //
  46. virtual void Exec(Option_t * option);
  47. virtual InitStatus Init(); //
  48. virtual void Finish(); //
  49. void Reset(); //
  50. void Register(); //
  51. void SetOption(Option_t *option=" ") {fOption = option; fOption.ToLower();}
  52. // getters
  53. void GetPhiRange(TArrayI* c, TpcLheCMTrack *cmtrack);
  54. void GetThetaRange(TArrayI* c, TpcLheCMTrack *cmtrack);
  55. void CopyClones(TClonesArray* cl1, TClonesArray* cl2);
  56. TpcLhePoint *GetVertex() { return fVertex;}
  57. Int_t GetNumberOfHits() { return fCMHits->GetEntriesFast();}
  58. TObjArray *GetTracks() { return fCMTracks;}
  59. // setters:
  60. // Tracking procedures:
  61. void DoTracking(); // tracking of main vertex tracks
  62. void LoopOverHits(); // loops over hits
  63. void CreateTrack(TpcLheCMPoint *hit); // create track with start at hit
  64. void RemoveTrack(TpcLheCMTrack *track);
  65. void GetClosestHit(TpcLheCMTrack *tr, Int_t st, Bool_t back);
  66. Bool_t TrackExtension(TpcLheCMTrack *track); //
  67. void AddTrackForFit(TpcLheCMTrack *track); //
  68. void TrackingInfo(char* info); // information about the tracking
  69. void CheckClones();
  70. ClassDef(TpcLheTrackFinder, 1) //
  71. };
  72. //________________________________________________________________
  73. inline void TpcLheTrackFinder::RemoveTrack(TpcLheCMTrack *track) {
  74. //--- Removes track from TObjArray and release the points.
  75. // track->ClearPoints(); // release points
  76. fCMTracks->Remove(track); // remove from TObjArray
  77. delete track; // delete track
  78. track = NULL;
  79. }
  80. #endif