CbmSttHelixTrackFitter.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /** CbmSttTrackFitter
  2. *@author R.Castelijns <r.castelijns@fz-juelich.de>
  3. **
  4. ** Abstract base class for concrete STT track fitting algorithm.
  5. ** Each derived class must implement the method DoFit. This has
  6. ** to operate on an object of type CbmSttTrack and fill the
  7. ** parameters fPidHypo, fParamFirst, fParamLast, fFlag and fChi2.
  8. **/
  9. #ifndef CBMSTTHELIXTRACKFITTER
  10. #define CBMSTTHELIXTRACKFITTER 1
  11. #include "CbmSttTrack.h"
  12. #include "CbmSttHit.h"
  13. //#include "CbmSttHOT.h"
  14. #include "CbmSttPoint.h"
  15. #include "FairTrackParam.h"
  16. #include "CbmSttTrackFitter.h"
  17. //#include "CbmSttHoughAccumulatorNew.h"
  18. #include "TH2F.h"
  19. #include "TCanvas.h"
  20. #include "TList.h"
  21. class CbmSttTrackFitter;
  22. void fcnHelix(Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t iflag);
  23. class CbmSttHelixTrackFitter : public CbmSttTrackFitter
  24. {
  25. private:
  26. Int_t fEventCounter;
  27. CbmSttTrack* fTrack;
  28. CbmSttTrack currentTrack;
  29. TClonesArray* fHitArray;
  30. TClonesArray* fPointArray;
  31. TClonesArray *fHotArray;
  32. TObjArray *ZPointsArray;
  33. TCanvas *eventCanvas;
  34. TCanvas *eventCanvas2;
  35. TH2F *h1;
  36. TH2F *h2;
  37. Bool_t rootoutput;
  38. Int_t fVerbose;
  39. /** Private method AddHOT
  40. **
  41. ** Adds a CbmSttHOT the HOTCollection
  42. **/
  43. /* CbmSttHOT* AddHOT(Double_t x, Double_t y, Double_t x, Int_t hitindex, Int_t pointindex, Int_t trackindex); */
  44. public:
  45. CbmSttHelixTrackFitter();
  46. CbmSttHelixTrackFitter(Int_t verbose);
  47. ~CbmSttHelixTrackFitter();
  48. void Init();
  49. Bool_t IntersectionFinder(CbmSttTrack *pTrack, FairTrackParam *par);
  50. Bool_t IntersectionFinder4b(CbmSttTrack *pTrack, FairTrackParam *par);
  51. Bool_t ZFinder(CbmSttTrack* pTrack, Int_t pidHypo);
  52. Bool_t ZFinder2(CbmSttTrack* pTrack, Int_t pidHypo);
  53. Int_t Zfit(CbmSttTrack* pTrack, Int_t pidHypo);
  54. Int_t Zfit2(CbmSttTrack* pTrack, Int_t pidHypo);
  55. Int_t Fit4(CbmSttTrack* pTrack, Int_t pidHypo);
  56. Int_t Fit4b(CbmSttTrack* pTrack, Int_t pidHypo);
  57. Int_t MinuitFit(CbmSttTrack* pTrack, Int_t pidHypo);
  58. Int_t DoFit(CbmSttTrack* pTrack, Int_t pidHypo = 211);
  59. /* Int_t AddHitOnTrack(CbmSttTrack *pTrack); */
  60. // ========================
  61. // ========================
  62. CbmSttHit* GetHitFromCollections(Int_t hitCounter) const;
  63. // ========================
  64. // ========================
  65. TList fHitCollectionList;
  66. virtual void AddHitCollection(TClonesArray* mHitArray) {fHitCollectionList.Add(mHitArray); }
  67. virtual void Extrapolate( CbmSttTrack* track, Double_t r,
  68. FairTrackParam *param );
  69. void ResetMArray();
  70. CbmSttTrack* GetTrack() const { return fTrack; };
  71. TClonesArray* GetHitArray() const { return fHitArray; };
  72. /* TClonesArray* GetHOTCollection() const { return fHotArray; }; */
  73. ClassDef(CbmSttHelixTrackFitter,1);
  74. };
  75. #endif