PandaRoot
PndTrkLegendreNew.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef PNDTRKLEGENDRENEW_H
14 #define PNDTRKLEGENDRENEW_H
15 
17 // fairroot
18 #include "FairTask.h"
19 // pandaroot
20 #include "PndTrack.h"
21 #include "PndMCTrack.h"
22 // stt
23 #include "PndGeoSttPar.h"
24 #include "PndSttHit.h"
25 #include "PndSttMapCreator.h"
26 // tracking
27 #include "PndTrkSttHitList.h"
28 #include "PndTrkSdsHitList.h"
29 #include "PndTrkCluster.h"
30 #include "PndTrkClusterList.h"
31 #include "PndTrkTrack.h"
32 #include "PndTrkConformalHitList.h"
33 #include "PndTrkFitter.h"
34 #include "PndTrkNeighboringMap.h"
35 
36 // ROOT
37 #include "TH2F.h"
38 #include "TCanvas.h"
39 
40 #define MAXNOFHITS 1000 // CHECK
41 
42 class TClonesArray;
43 class TObjectArray;
46 class PndTrkLegendreNew : public FairTask {
47 
48  public:
51  PndTrkLegendreNew(int verbose);
52 
55 
57  virtual InitStatus Init();
58 
60  virtual void Exec(Option_t *opt);
61 
62  void SetParContainers();
63 
64  void Initialize();
65  void Reset();
66 
67  inline void SwitchOnDisplay() { fDisplayOn = kTRUE; }
68  void DrawGeometry();
69  void DrawHits(PndTrkHitList *hitlist);
70  void DrawLists();
71  void DrawNeighborings();
73  void Refresh();
74  void RefreshConf();
75  void DrawGeometryConf(double x1, double x2, double y1, double y2);
76  void DrawConfHit(double x, double y, double r, int marker = 2);
77 
78  void LightCluster(PndTrkCluster *cluster);
79  void DrawLegendreHisto();
80 
82 
83  Int_t FillConformalHitList(PndTrkCluster *cluster);
84  void FillLegendreHisto(PndTrkCluster *cluster);
85  void ComputeTraAndRot(PndTrkHit *hit, Double_t &delta, Double_t trasl[2]);
92 
93  void RePrepareLegendre(PndTrkCluster *cluster);
94  Int_t ApplyLegendre(PndTrkCluster *cluster, double &theta_max, double &r_max);
95  Int_t ExtractLegendre(Int_t mode, double &theta_max, double &r_max);
96 
97  void FromConformalToRealTrack(double fitm, double fitp, double &x0, double &y0, double &R);
98  void FromRealToConformalTrack(double x0, double y0, double R, double &fitm, double &fitp);
99 
100  void SearchSecondaryTracks() { fSecondary = kTRUE; }
101 
104 
105  Int_t CountTracksInCluster(PndTrkCluster *cluster);
106  Int_t CountTracksInSkewSector(PndTrkCluster *cluster);
107  Int_t CountTracksInCluster(PndTrkCluster *cluster, Int_t where);
108 
109  Int_t ClusterToConformal(PndTrkCluster *cluster);
112 
113  void AnalyticalFit(PndTrkCluster *cluster, double xc, double yc, double R, double &fitm, double &fitq);
114  void AnalyticalFit2(PndTrkCluster *cluster, double fitm, double fitp, double &fitm2, double &fip2);
115  void IntersectionFinder(PndTrkHit *hit, double xc, double yc, double R);
116  void IntersectionFinder(PndTrkConformalHit *chit, double fitm, double fitp);
117 
118  void FillHitMap();
119 
120  private:
121  Int_t fNofMvdPixHits, fNofMvdStrHits, fNofSttHits, fNofTriplets, fNofHits;
122 
124  TClonesArray *fSttPointArray;
126  TClonesArray *fSttHitArray;
127 
129  TClonesArray *fMvdPixelHitArray;
131  TClonesArray *fMvdStripHitArray;
132 
133  TClonesArray *fTrackArray, *fTrackCandArray;
134 
135  TClonesArray *fTubeArray;
136 
137  PndGeoSttPar *fSttParameters; // CHECK added
138  char fSttBranch[200], fMvdPixelBranch[200], fMvdStripBranch[200];
139 
140  PndSttMapCreator *fMapper;
141 
142  Int_t fEventCounter; // , fVerbose;
143 
144  PndTrkSttHitList *stthitlist;
145  PndTrkSdsHitList *mvdpixhitlist;
146  PndTrkSdsHitList *mvdstrhitlist;
147  Double_t fSttParalDistance, fSttToMvdStripDistance;
148 
149  double fDeltaThetaRad;
150  // TSpectrum2 *s;
151  PndTrkLegendreTransform *legendre;
152  Bool_t fPersistence, fUseMVDPix, fUseMVDStr, fUseSTT, fSecondary, fInitDone;
153 
154  PndTrkConformalTransform *conform;
155  PndTrkConformalHitList *conformalhitlist;
156  PndTrkTools *tools;
157 
158  PndTrkHit *fRefHit;
159 
160  Double_t fMvdPix_RealDistLimit, fMvdStr_RealDistLimit, fStt_RealDistLimit, fMvdPix_ConfDistLimit, fMvdStr_ConfDistLimit, fStt_ConfDistLimit;
161 
162  std::vector<std::pair<double, double>> fFoundPeaks;
163  double fTime;
164  TStopwatch *fTimer;
165  PndTrkFitter *fFitter;
166 
167  PndTrkNeighboringMap *fHitMap;
168  double fUmin, fUmax, fVmin, fVmax, fRmin, fRmax, fThetamin, fThetamax;
169 
170  // display
171  Bool_t fDisplayOn;
172  TH2F *hxy, *hxz, *hzphi;
173  TCanvas *display;
174  TH2F *huv;
175 
176  ClassDef(PndTrkLegendreNew, 1);
177 };
178 
179 #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:40
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()