FairRoot/PandaRoot
PndTrkLegendreSecTask2.h
Go to the documentation of this file.
1 #ifndef PNDTRKLEGENDSECRETASK2_H
2 #define PNDTRKLEGENDSECRETASK2_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 PndTrkLegendreSecTask2 : 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 
62 
63  Int_t FillConformalHitList(int isec = -1);
64  Int_t FillConformalHitList(PndTrkCluster *cluster);
65  void FillLegendreHisto(Int_t mode);
66  void FillLegendreHisto(PndTrkCluster *cluster);
67 
68  Int_t AddHitToClusterByDistance(PndTrkCluster *cluster, Int_t mode, double fitm, double fitp);
70  Bool_t CheckAssignability(std::vector< PndTrkHit *> hitlist);
71 
72 
75 
76  PndTrkCluster CreateClusterByConfDistance(double fitm, double fitq);
77  PndTrkCluster CreateClusterByRealDistance(double xc0, double yc0, double R0);
78  PndTrkCluster CreateClusterByMixedDistance(double fitm, double fitq);
79  PndTrkCluster CreateClusterByDistance(Int_t mode, double fitm, double fitq);
81 
82  void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R);
84 
85  void RegisterTrack(PndTrkTrack *track);
86 
87  void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2]);
88 
94 
96 
97 
98 
100 
101  void SearchSecondaryTracks() { fSecondary = kTRUE; }
102 
104  TH2F *hxy, *hxz, *hzphi;
105  TCanvas *display;
106  inline void SwitchOnDisplay() { fDisplayOn = kTRUE; }
107  void DrawGeometry();
108  void DrawHits(PndTrkHitList *hitlist);
109  void Refresh();
110  // conformal
111  TH2F *huv;
112  void RefreshConf();
113  void DrawGeometryConf(double x1, double y1, double x2, double y2) ;
114  void DrawConfHit(double x, double y, double r, int marker = 2);
115  void LightCluster(PndTrkCluster *cluster);
116  void DrawLegendreHisto();
117  // z
118  void RefreshZ();
119  void DrawZGeometry(int whichone = 1, double phimin = 0, double phimax = 360, double zmin = -43, double zmax = 113);
120  void DontUseMvdPix() { fUseMVDPix = kFALSE; }
121  void DontUseMvdStr() { fUseMVDStr = kFALSE; }
122  void DontUseStt() { fUseSTT = kFALSE; }
123 
124  Bool_t DoesRealHitBelong(PndTrkHit *hit, double x0, double y0, double R);
125  Bool_t DoesConfHitBelong(PndTrkConformalHit *hit, double fitm, double fitp);
126 
127  void RePrepareLegendre(PndTrkCluster *cluster);
128  void PrepareLegendre();
129  Int_t ApplyLegendre(double &theta_max, double &r_max);
130  Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max);
131  Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max);
132 
133 
134  Bool_t ZPhiFit(int iter, PndTrkCluster *cluster, double &fitm, double &fitp);
135  PndTrkCluster* CleanupZPhiFit(PndTrkCluster *cluster, double fitm, double fitp);
136  double ComputeZRediduals(PndTrkCluster *cluster, double fitm, double fitp);
137  double CorrectZ(PndTrkCluster *cluster, double deltaz, double fitm, double fitp);
138 
139  private:
140 
141 
143 
144 
146  TClonesArray* fSttPointArray;
148  TClonesArray* fSttHitArray;
149 
150 
152  TClonesArray* fMvdPixelHitArray;
154  TClonesArray* fMvdStripHitArray;
155 
156  TClonesArray* fTrackArray, * fTrackCandArray;
157 
158  TClonesArray* fTubeArray;
159 
160 
161  PndGeoSttPar *fSttParameters; // CHECK added
162  char fSttBranch[200],
163  fMvdPixelBranch[200],
164  fMvdStripBranch[200];
165 
167 
168  Int_t fEventCounter; // , fVerbose;
169 
170 
175 
176 
178  // TSpectrum2 *s;
181 
182 
183 
187 
189 
191 
192  std::vector< std::pair<double, double> > fFoundPeaks;
193  double fTime;
194  TStopwatch *fTimer;
197 
198 };
199 
200 #endif
PndTrkCluster CreateSkewHitList(PndTrkTrack *track)
Double_t x0
Definition: checkhelixhit.C:70
Int_t ApplyLegendre(double &theta_max, double &r_max)
void LightCluster(PndTrkCluster *cluster)
PndTrkSdsHitList * mvdpixhitlist
void RegisterTrack(PndTrkTrack *track)
double r
Definition: RiemannTest.C:14
void DrawGeometryConf(double x1, double y1, double x2, double y2)
virtual void Exec(Option_t *opt)
Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max)
PndTrkConformalTransform * conform
#define verbose
PndTrkCluster CreateClusterByRealDistance(double xc0, double yc0, double R0)
PndTrkCluster CreateClusterByDistance(Int_t mode, double fitm, double fitq)
void RePrepareLegendre(PndTrkCluster *cluster)
void DrawHits(PndTrkHitList *hitlist)
int isec
Definition: f_Init.h:19
Int_t mode
Definition: autocutx.C:47
double CorrectZ(PndTrkCluster *cluster, double deltaz, double fitm, double fitp)
std::vector< std::pair< double, double > > fFoundPeaks
Bool_t CheckAssignability(std::vector< PndTrkHit * > hitlist)
Double_t
Bool_t CheckVicinity(PndTrkHit *hit, PndTrkCluster *cluster)
Int_t FillConformalHitList(int isec=-1)
Double_t y0
Definition: checkhelixhit.C:71
Bool_t DoesConfHitBelong(PndTrkConformalHit *hit, double fitm, double fitp)
PndTrkCluster CleanUpSkewHitList(PndTrkCluster *skewhitlist)
PndMCTrack * track
Definition: anaLmdCluster.C:89
PndTrkCluster CreateClusterByConfDistance(double fitm, double fitq)
ClassDef(PndTrkLegendreSecTask2, 1)
PndTrkCluster * CleanupZPhiFit(PndTrkCluster *cluster, double fitm, double fitp)
void DrawConfHit(double x, double y, double r, int marker=2)
PndTrkCluster Cleanup(PndTrkCluster cluster)
Double_t x
PndTrkLegendreTransform * legendre
PndTrkHit * FindSttReferenceHit(int isec=-1)
void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2])
Bool_t DoesRealHitBelong(PndTrkHit *hit, double x0, double y0, double R)
PndTrkConformalHitList * conformalhitlist
Bool_t ZPhiFit(int iter, PndTrkCluster *cluster, double &fitm, double &fitp)
void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R)
PndSdsMCPoint * hit
Definition: anasim.C:70
Double_t y
double ComputeZRediduals(PndTrkCluster *cluster, double fitm, double fitp)
PndTrkCluster CreateSttCluster(PndTrkHit *firsthit)
PndTrkCluster CreateClusterByMixedDistance(double fitm, double fitq)
Double_t R
Definition: checkhelixhit.C:61
Int_t AddHitToClusterByDistance(PndTrkCluster *cluster, Int_t mode, double fitm, double fitp)
void DrawZGeometry(int whichone=1, double phimin=0, double phimax=360, double zmin=-43, double zmax=113)
PndTrkSdsHitList * mvdstrhitlist
Bool_t IsSttAssociate(PndTrkHit *hit1, PndTrkHit *hit2)