PandaRoot
PndTrkLegendreNew.h
Go to the documentation of this file.
1 #ifndef PNDTRKLEGENDRENEW_H
2 #define PNDTRKLEGENDRENEW_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 #include "PndTrkNeighboringMap.h"
23 
24 // ROOT
25 #include "TH2F.h"
26 #include "TCanvas.h"
27 
28 #define MAXNOFHITS 1000 // CHECK
29 
30 class TClonesArray;
31 class TObjectArray;
34 class PndTrkLegendreNew : public FairTask {
35 
36  public:
39  PndTrkLegendreNew(int verbose);
40 
43 
45  virtual InitStatus Init();
46 
48  virtual void Exec(Option_t *opt);
49 
50  void SetParContainers();
51 
52  void Initialize();
53  void Reset();
54 
55  inline void SwitchOnDisplay() { fDisplayOn = kTRUE; }
56  void DrawGeometry();
57  void DrawHits(PndTrkHitList *hitlist);
58  void DrawLists();
59  void DrawNeighborings();
61  void Refresh();
62  void RefreshConf();
63  void DrawGeometryConf(double x1, double x2, double y1, double y2);
64  void DrawConfHit(double x, double y, double r, int marker = 2);
65 
66  void LightCluster(PndTrkCluster *cluster);
67  void DrawLegendreHisto();
68 
70 
71  Int_t FillConformalHitList(PndTrkCluster *cluster);
72  void FillLegendreHisto(PndTrkCluster *cluster);
73  void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2]);
80 
81  void RePrepareLegendre(PndTrkCluster *cluster);
82  Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max);
83  Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max);
84 
85  void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R);
86  void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp);
87 
88  void SearchSecondaryTracks() { fSecondary = kTRUE; }
89 
92 
93  Int_t CountTracksInCluster(PndTrkCluster *cluster);
94  Int_t CountTracksInSkewSector(PndTrkCluster *cluster);
95  Int_t CountTracksInCluster(PndTrkCluster *cluster, Int_t where);
96 
97  Int_t ClusterToConformal(PndTrkCluster *cluster);
100 
101  void AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq);
102  void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2);
103  void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R);
104  void IntersectionFinder(PndTrkConformalHit *chit, double fitm, double fitp);
105 
106  void FillHitMap();
107 
108  private:
109  Int_t fNofMvdPixHits, fNofMvdStrHits, fNofSttHits, fNofTriplets, fNofHits;
110 
112  TClonesArray *fSttPointArray;
114  TClonesArray *fSttHitArray;
115 
117  TClonesArray *fMvdPixelHitArray;
119  TClonesArray *fMvdStripHitArray;
120 
121  TClonesArray *fTrackArray, *fTrackCandArray;
122 
123  TClonesArray *fTubeArray;
124 
125  PndGeoSttPar *fSttParameters; // CHECK added
126  char fSttBranch[200], fMvdPixelBranch[200], fMvdStripBranch[200];
127 
128  PndSttMapCreator *fMapper;
129 
130  Int_t fEventCounter; // , fVerbose;
131 
132  PndTrkSttHitList *stthitlist;
133  PndTrkSdsHitList *mvdpixhitlist;
134  PndTrkSdsHitList *mvdstrhitlist;
135  Double_t fSttParalDistance, fSttToMvdStripDistance;
136 
137  double fDeltaThetaRad;
138  // TSpectrum2 *s;
139  PndTrkLegendreTransform *legendre;
140  Bool_t fPersistence, fUseMVDPix, fUseMVDStr, fUseSTT, fSecondary, fInitDone;
141 
142  PndTrkConformalTransform *conform;
143  PndTrkConformalHitList *conformalhitlist;
144  PndTrkTools *tools;
145 
146  PndTrkHit *fRefHit;
147 
148  Double_t fMvdPix_RealDistLimit, fMvdStr_RealDistLimit, fStt_RealDistLimit, fMvdPix_ConfDistLimit, fMvdStr_ConfDistLimit, fStt_ConfDistLimit;
149 
150  std::vector<std::pair<double, double>> fFoundPeaks;
151  double fTime;
152  TStopwatch *fTimer;
153  PndTrkFitter *fFitter;
154 
155  PndTrkNeighboringMap *fHitMap;
156  double fUmin, fUmax, fVmin, fVmax, fRmin, fRmax, fThetamin, fThetamax;
157 
158  // display
159  Bool_t fDisplayOn;
160  TH2F *hxy, *hxz, *hzphi;
161  TCanvas *display;
162  TH2F *huv;
163 
164  ClassDef(PndTrkLegendreNew, 1);
165 };
166 
167 #endif
void AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq)
void FillLegendreHisto(PndTrkCluster *cluster)
void DrawConfHit(double x, double y, double r, int marker=2)
void DrawNeighboringsToHit(PndTrkHit *hit)
PndTrkHit * FindSttReferenceHit(int isec=-1)
Int_t FillConformalHitList(PndTrkCluster *cluster)
void DrawHits(PndTrkHitList *hitlist)
Int_t CountTracksInCluster(PndTrkCluster *cluster)
void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R)
void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R)
PndTrkClusterList CreateFullClusterization2()
void LightCluster(PndTrkCluster *cluster)
Int_t ClusterToConformal(PndTrkCluster *cluster)
void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2])
void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp)
int isec
Definition: f_Init.h:16
PndTrkClusterList CreateFullClusterization()
Int_t CountTracksInSkewSector(PndTrkCluster *cluster)
virtual void Exec(Option_t *opt)
Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max)
PndTrkHit * FindMvdPixelReferenceHit()
PndTrkTrack * LegendreFit(PndTrkCluster *cluster)
void DrawLegendreHisto()
void DrawGeometryConf(double x1, double x2, double y1, double y2)
PndTrkHit * FindReferenceHit()
void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2)
PndTrkHit * FindMvdReferenceHit()
PndTrkHit * FindMvdStripReferenceHit()
void ComputePlaneExtremities(PndTrkCluster *cluster)
PndTrkCluster * CreateClusterAroundTrack(PndTrkTrack *track)
void RePrepareLegendre(PndTrkCluster *cluster)
Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max)
virtual InitStatus Init()