FairRoot/PandaRoot
PndTrkLegendreTask.h
Go to the documentation of this file.
1 #ifndef PNDTRKLEGENDRETASK_H
2 #define PNDTRKLEGENDRETASK_H
3 
5 // fairroot
6 #include "FairTask.h"
7 // pandaroot
8 #include "PndTrack.h"
9 #include "PndMCTrack.h"
10 // stt
11 #include "PndGeoSttPar.h"
12 #include "PndSttHit.h"
13 #include "PndSttMapCreator.h"
14 // tracking
15 #include "PndTrkSttHitList.h"
16 #include "PndTrkSdsHitList.h"
17 #include "PndTrkCluster.h"
18 #include "PndTrkClusterList.h"
19 #include "PndTrkTrack.h"
20 #include "PndTrkConformalHitList.h"
21 #include "PndTrkFitter.h"
22 
23 // ROOT
24 #include "TH2F.h"
25 #include "TCanvas.h"
26 
27 
28 #define MAXNOFHITS 1000 // CHECK
29 
30 class TClonesArray;
31 class TObjectArray;
32 class TSpectrum2;
35 class PndTrkLegendreTask : public FairTask {
36 
37  public:
38 
42 
43 
46 
47 
49  virtual InitStatus Init();
50 
51 
53  virtual void Exec(Option_t* opt);
54 
55  void SetParContainers();
56 
57 
58  void Initialize();
59  void Reset();
60 
61  Int_t FillConformalHitList();
62  void FillLegendreHisto(Int_t mode);
63  void FillLegendreHisto(PndTrkCluster *cluster);
64 
65 
68 
69  PndTrkCluster CreateClusterByConfDistance(double fitm, double fitq);
70  PndTrkCluster CreateClusterByRealDistance(double xc0, double yc0, double R0);
71  PndTrkCluster CreateClusterByMixedDistance(double fitm, double fitq);
72  PndTrkCluster CreateClusterByDistance(Int_t mode, double fitm, double fitq);
74 
75  void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R);
77 
78  void RegisterTrack(PndTrkTrack *track);
79 
80  void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2]);
81 
88 
89  void SearchSecondaryTracks() { fSecondary = kTRUE; }
90 
92  TH2F *hxy, *hxz, *hzphi;
93  TCanvas *display;
94  inline void SwitchOnDisplay() { fDisplayOn = kTRUE; }
95  void DrawGeometry();
96  void DrawHits(PndTrkHitList *hitlist);
97  void Refresh();
98  // conformal
99  TH2F *huv;
100  void RefreshConf();
101  void DrawGeometryConf(double x1, double y1, double x2, double y2) ;
102  void DrawConfHit(double x, double y, double r, int marker = 2);
103  void LightCluster(PndTrkCluster *cluster);
104  void DrawLegendreHisto();
105  // z
106  void RefreshZ();
107  void DrawZGeometry(int whichone = 1, double phimin = 0, double phimax = 360, double zmin = -43, double zmax = 113);
108  void DontUseMvdPix() { fUseMVDPix = kFALSE; }
109  void DontUseMvdStr() { fUseMVDStr = kFALSE; }
110  void DontUseStt() { fUseSTT = kFALSE; }
111 
112  Bool_t DoesRealHitBelong(PndTrkHit *hit, double x0, double y0, double R);
113  Bool_t DoesConfHitBelong(PndTrkConformalHit *hit, double fitm, double fitp);
114 
115  void RePrepareLegendre(PndTrkCluster *cluster);
116  void PrepareLegendre();
117  Int_t ApplyLegendre(double &theta_max, double &r_max);
118  Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max);
119  Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max);
120 
121 
122  Bool_t ZPhiFit(int iter, PndTrkCluster *cluster, double &fitm, double &fitp);
123  PndTrkCluster* CleanupZPhiFit(PndTrkCluster *cluster, double fitm, double fitp);
124  double ComputeZRediduals(PndTrkCluster *cluster, double fitm, double fitp);
125  double CorrectZ(PndTrkCluster *cluster, double deltaz, double fitm, double fitp);
126 
127  private:
128 
129 
131 
132 
134  TClonesArray* fSttPointArray;
136  TClonesArray* fSttHitArray;
137 
138 
140  TClonesArray* fMvdPixelHitArray;
142  TClonesArray* fMvdStripHitArray;
143 
144  TClonesArray* fTrackArray, * fTrackCandArray;
145 
146  TClonesArray* fTubeArray;
147 
148 
149  PndGeoSttPar *fSttParameters; // CHECK added
150  char fSttBranch[200],
151  fMvdPixelBranch[200],
152  fMvdStripBranch[200];
153 
155 
156  Int_t fEventCounter; // , fVerbose;
157 
158 
163 
164 
166  // TSpectrum2 *s;
169 
171 
175 
177 
179 
180  std::vector< std::pair<double, double> > fFoundPeaks;
181  double fTime;
182  TStopwatch *fTimer;
185 
186 };
187 
188 #endif
PndTrkHit * FindReferenceHit()
Double_t x0
Definition: checkhelixhit.C:70
PndTrkHit * FindMvdPixelReferenceHit()
double r
Definition: RiemannTest.C:14
PndTrkCluster Cleanup(PndTrkCluster cluster)
Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max)
PndSttMapCreator * fMapper
PndTrkHit * FindMvdReferenceHit()
Bool_t IsSttAssociate(PndTrkHit *hit1, PndTrkHit *hit2)
void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R)
PndTrkSttHitList * stthitlist
void DrawConfHit(double x, double y, double r, int marker=2)
#define verbose
PndTrkLegendreTransform * legendre
PndGeoSttPar * fSttParameters
double ComputeZRediduals(PndTrkCluster *cluster, double fitm, double fitp)
void FillLegendreHisto(Int_t mode)
PndTrkCluster CreateClusterByMixedDistance(double fitm, double fitq)
void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2])
TClonesArray * fMvdPixelHitArray
virtual InitStatus Init()
void RePrepareLegendre(PndTrkCluster *cluster)
void DrawZGeometry(int whichone=1, double phimin=0, double phimax=360, double zmin=-43, double zmax=113)
Int_t mode
Definition: autocutx.C:47
PndTrkConformalTransform * conform
void DrawGeometryConf(double x1, double y1, double x2, double y2)
PndTrkHit * FindMvdStripReferenceHit()
TClonesArray * fTubeArray
Bool_t DoesConfHitBelong(PndTrkConformalHit *hit, double fitm, double fitp)
Double_t
std::vector< std::pair< double, double > > fFoundPeaks
Bool_t ZPhiFit(int iter, PndTrkCluster *cluster, double &fitm, double &fitp)
Double_t y0
Definition: checkhelixhit.C:71
PndMCTrack * track
Definition: anaLmdCluster.C:89
ClassDef(PndTrkLegendreTask, 1)
TClonesArray * fTrackCandArray
PndTrkCluster CreateSkewHitList(PndTrkTrack *track)
PndTrkCluster * CleanupZPhiFit(PndTrkCluster *cluster, double fitm, double fitp)
void RegisterTrack(PndTrkTrack *track)
PndTrkCluster CreateClusterByConfDistance(double fitm, double fitq)
PndTrkSdsHitList * mvdpixhitlist
Int_t ApplyLegendre(double &theta_max, double &r_max)
virtual void Exec(Option_t *opt)
TClonesArray * fSttHitArray
TClonesArray * fSttPointArray
Double_t x
TClonesArray * fTrackArray
PndTrkHit * FindSttReferenceHit()
void LightCluster(PndTrkCluster *cluster)
double CorrectZ(PndTrkCluster *cluster, double deltaz, double fitm, double fitp)
PndSdsMCPoint * hit
Definition: anasim.C:70
Double_t y
PndTrkCluster CreateClusterByRealDistance(double xc0, double yc0, double R0)
PndTrkCluster CreateClusterByDistance(Int_t mode, double fitm, double fitq)
PndTrkSdsHitList * mvdstrhitlist
PndTrkFitter * fFitter
Bool_t DoesRealHitBelong(PndTrkHit *hit, double x0, double y0, double R)
Double_t R
Definition: checkhelixhit.C:61
void DrawHits(PndTrkHitList *hitlist)
PndTrkCluster CreateSttCluster(PndTrkHit *firsthit)
TClonesArray * fMvdStripHitArray
PndTrkCluster CleanUpSkewHitList(PndTrkCluster *skewhitlist)
PndTrkConformalHitList * conformalhitlist