FairRoot/PandaRoot
PndTrkCombiLegendreTask.h
Go to the documentation of this file.
1 #ifndef PNDTRKCOMBILEGENDRETASK_H
2 #define PNDTRKCOMBILEGENDRETASK_H
3 
6 // fairroot
7 #include "FairTask.h"
8 // pandaroot
9 #include "PndTrack.h"
10 #include "PndMCTrack.h"
11 // stt
12 #include "PndGeoSttPar.h"
13 #include "PndSttHit.h"
14 #include "PndSttMapCreator.h"
15 // tracking
16 #include "PndTrkSttHitList.h"
17 #include "PndTrkSdsHitList.h"
18 #include "PndTrkCluster.h"
19 #include "PndTrkClusterList.h"
20 #include "PndTrkTrack.h"
21 #include "PndTrkConformalHitList.h"
22 #include "PndTrkFitter.h"
23 #include "PndTrkNeighboringMap.h"
24 
25 // ROOT
26 #include "TH2F.h"
27 #include "TCanvas.h"
28 
29 
30 #define MAXNOFHITS 1000 // CHECK
31 
32 class TClonesArray;
33 class TObjectArray;
37 class PndTrkCombiLegendreTask : public FairTask {
38 
39  public:
40 
44 
45 
48 
49 
51  virtual InitStatus Init();
52 
53 
55  virtual void Exec(Option_t* opt);
56 
57  void SetParContainers();
58 
59 
60  void Initialize();
61  void Reset();
62 
63  inline void SwitchOnDisplay() { fDisplayOn = kTRUE; }
64  inline void SwitchOnSeeMC() { fSeeMC = kTRUE; }
65  void DrawGeometry(int cpad = 1);
66  void DrawSttGeometry();
67  void DrawHits(PndTrkHitList *hitlist);
68  void DrawLists();
69  void DrawNeighborings();
71  void Refresh();
72  void RefreshConf();
73  void DrawGeometryConf(double x1, double x2, double y1, double y2) ;
74  void DrawConfHit(double x, double y, double r, int marker = 2);
75 
76  void LightCluster(PndTrkCluster *cluster);
77  void DrawLegendreHisto();
78 
80 
81 
82  Int_t FillConformalHitList(PndTrkCluster *cluster);
83  void FillLegendreHisto(PndTrkCluster *cluster);
84  void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2]);
90  PndTrkHit *FindReferenceHit(PndTrkCluster *cluster, bool keeprefhit);
91 
92 
93  void RePrepareLegendre(PndTrkCluster *cluster);
94  /* void PrepareLegendre(); */
95  /* Int_t ApplyLegendre(double &theta_max, double &r_max); */
96  Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max);
97  Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max);
98 
99  void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R);
100  void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp);
101 
102  void SearchSecondaryTracks() { fSecondary = kTRUE; }
103 
106 
107  Int_t CountTracksInCluster(PndTrkCluster *cluster, int *noftracksinlayer);
108  Int_t CountTracksInSkewSector(PndTrkCluster *cluster, int *noftracksinlayer);
109  Int_t CountTracksInCluster(PndTrkCluster *cluster, Int_t where, int *noftracksinlayer);
110 
111  Int_t ClusterToConformal(PndTrkCluster *cluster, bool samerefhit);
117 
118  Bool_t DoesBelong(PndTrkHit *hit, double xc, double yc, double R);
119 
120 
121  void AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq);
122  void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2);
123  void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R);
124  void IntersectionFinder(PndTrkConformalHit *chit, double fitm, double fitp);
125  Double_t ComputePerpendicularChi2(PndTrkCluster *cluster, double fitm, double fitp);
126 
127  void FillHitMap();
128 
129  void FillPeakCouplesHisto(PndTrkCluster *cluster);
131 
133 
135  private:
136 
137 
139 
140 
142  TClonesArray* fSttPointArray;
144  TClonesArray* fSttHitArray;
145 
147  TClonesArray* fMvdPointArray;
149  TClonesArray* fMvdPixelHitArray;
151  TClonesArray* fMvdStripHitArray;
152 
153  TClonesArray* fTrackArray, * fTrackCandArray;
154 
155  TClonesArray* fTubeArray;
156 
157 
158  PndGeoSttPar *fSttParameters; // CHECK added
159  char fSttBranch[200],
160  fMvdPixelBranch[200],
161  fMvdStripBranch[200];
162 
164 
165  Int_t fEventCounter; // , fVerbose;
166 
167 
172 
173 
175  // TSpectrum2 *s;
180 
181 
182 
186 
188 
190 
191  std::vector< std::pair<double, double> > fFoundPeaks;
192  double fTime;
193  TStopwatch *fTimer;
195 
198 
199  // display
202  TH2F *hxy, *hxz, *hzphi;
203  TCanvas *display;
204  TH2F *huv;
205 
206 
208 
209 };
210 
211 #endif
void AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq)
Double_t x0
Definition: checkhelixhit.C:70
PndTrkClusterList CreateFullClusterization2()
Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max)
void LightCluster(PndTrkCluster *cluster)
Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max)
void CleanTrack(PndTrkTrack *track)
void FillPeakCouplesHisto(PndTrkCluster *cluster)
void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R)
PndTrkConformalTransform * conform
double r
Definition: RiemannTest.C:14
void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2)
ClassDef(PndTrkCombiLegendreTask, 1)
void ComputePlaneExtremities(PndTrkCluster *cluster)
PndTrkClusterList CreateFullClusterization()
PndTrkConformalHitList * conformalhitlist
#define verbose
void FillPeakNeighCouplesHisto(PndTrkCluster *cluster)
PndTrkTrack * LegendreFitWithRecovering(PndTrkCluster *cluster)
PndTrkHit * FindSttReferenceHit(int isec=-1)
PndTrkNeighboringMap * fHitMap
int isec
Definition: f_Init.h:19
Int_t mode
Definition: autocutx.C:47
Int_t FillConformalHitList(PndTrkCluster *cluster)
Double_t
void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp)
Double_t y0
Definition: checkhelixhit.C:71
void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R)
Int_t CountTracksInSkewSector(PndTrkCluster *cluster, int *noftracksinlayer)
PndMCTrack * track
Definition: anaLmdCluster.C:89
std::vector< std::pair< double, double > > fFoundPeaks
virtual void Exec(Option_t *opt)
void DrawHits(PndTrkHitList *hitlist)
void DrawConfHit(double x, double y, double r, int marker=2)
Double_t x
void RePrepareLegendre(PndTrkCluster *cluster)
Bool_t DoesBelong(PndTrkHit *hit, double xc, double yc, double R)
PndSdsMCPoint * hit
Definition: anasim.C:70
void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2])
Double_t y
void DrawGeometryConf(double x1, double x2, double y1, double y2)
PndTrkLegendreTransform * legendre
PndTrkCluster * ComputeSkewedXYZ(PndTrkCluster *cluster)
void FillLegendreHisto(PndTrkCluster *cluster)
PndTrkCluster * CreateClusterAroundTrack2(PndTrkTrack *track)
Int_t ClusterToConformal(PndTrkCluster *cluster, bool samerefhit)
void DrawNeighboringsToHit(PndTrkHit *hit)
Double_t R
Definition: checkhelixhit.C:61
Int_t CountTracksInCluster(PndTrkCluster *cluster, int *noftracksinlayer)
Double_t ComputePerpendicularChi2(PndTrkCluster *cluster, double fitm, double fitp)
PndTrkCluster * CreateClusterAroundTrack3(PndTrkTrack *track)
PndTrkCluster * CreateClusterAroundTrack(PndTrkTrack *track)
PndTrkTrack * LegendreFit(PndTrkCluster *cluster)
PndTrkCombiLegendreTransform * legendrecombi