PandaRoot
PndTrkCTFindTrackInXY2.h
Go to the documentation of this file.
1 #ifndef PndTrkCTFindTrackInXY2_H
2 #define PndTrkCTFindTrackInXY2_H 1
3 
4 #include "PndTrkVectors.h"
5 // Root includes
6 #include "TROOT.h"
7 
9  // inputs;
11  Double_t *Cosine; // for the Legiandre fit;
15  Double_t (*info)[7];
16  Short_t maxhitsinfit;
19  bool *Mvdhits;
20  Short_t nMvdPixelHit;
21  Short_t nMvdStripHit;
22  Short_t number_straws; // this is the number of all straws in the Stt detector;
23  Short_t *nParContiguous;
24  Short_t (*ListParContiguous)[6]; // this is the list of contiguous TubeID ;
25  Double_t r_stt_inner_par_max; // r_stt_inner_par_max ==> radius of the circumscribed
26  // circumference to the
27  //; outer hexagon defining THE INNER axial Stt straw region;
28  Double_t *Sinus; // for the Legiandre fit;
29  Short_t *StrawCode;
30  Short_t *StrawCode2;
31  Short_t *TubeID; // TubeID[i] = Tube ID corresponding to i-th Stt hit;
32  Short_t *SttStrawOn; // SttStrawOn[i] >= 0 --> it is the Stt hit number corresponding to Stt
33  // i-th Tube ID; tSttStrawOn[i] == -1 --> i-th Stt straw NOT hit;
34  Double_t thetamax; // input, maximum of Theta range (usually 2PI radians);
35  Double_t thetamin; // input, minimum of Theta range (usually 0 radians);
36  Double_t *XMvdPixel;
37  Double_t *XMvdStrip;
38  Double_t *YMvdPixel;
39  Double_t *YMvdStrip;
40 
41  // outputs;
42  Double_t *ALFA;
43  Double_t *BETA;
44  Short_t *Charge;
46  Double_t *Fi_low_limit;
47  Double_t *Fi_up_limit;
48  Double_t *GAMMA;
49  Short_t *ListHitsinTrack;
56  Short_t *nHitsinTrack;
57  Double_t *Oxx;
58  Double_t *Oyy;
59  Double_t *Rr;
60  Double_t *xTube;
61  Double_t *yTube;
62  Double_t *zTube;
63  Double_t *xxyyTube;
64 
65  //---
66 
68  Double_t deltanr;
69  Double_t dimensionscitil;
70  Short_t *FiConformalIndex;
72  Short_t *HitsinBoxConf;
73  int icounter; // counter useful for debugging;
75  Double_t (*infoparalConformal)[5];
77  Short_t *ListSttParHits;
79  Short_t maxstthits;
81  Short_t *nBoxConf;
82  Short_t nFicell; // Fi cell of the seed hit;
83  Short_t nfidivconformal;
84  Short_t nRcell; // R cell of the seed hit;
85  Short_t nrdivconformal;
86  Short_t nSciTilHits;
88  Int_t nsttparhit;
89  void *posizSciT;
90  Double_t posizSciTilx;
91  Double_t posizSciTily;
92  Double_t *radiaConf;
93  Short_t *RConformalIndex;
95  Double_t strawradius;
97  Double_t *trajectory_vertex;
98  bool *TypeConf;
99  Double_t *U;
100  Double_t *V;
101  bool YesSciTil;
102 };
103 
104 class PndTrkCTFindTrackInXY2 : public TObject {
105 
106  public:
109 
112 
113  //----------------
114 
115  void AddMvdHitsToSttTracks(Double_t delta, // input;
116  Double_t highqualitycut, // input;
117  Double_t FiRangeMvdLow, // input;
118  Double_t FiRangeMvdUp, // input;
119  Short_t maxmvdpixelhitsintrack, // input;
120  Short_t maxmvdstriphitsintrack, // input;
121  Short_t nMvdPixelHit, // input;
122  Short_t nMvdStripHit, // input;
123  Double_t Ox, // input;
124  Double_t Oy, // input;
125  Double_t R, // input;
126  Double_t *XMvdPixel, // input;
127  Double_t *XMvdStrip, // input;
128  Double_t *YMvdPixel, // input;
129  Double_t *YMvdStrip, // input;
130 
131  Short_t &nPixelHitsinTrack, // output
132  Short_t *ListPixelHitsinTrack, // output; dimensionality : [MAXMVDSTRIPHITSINTRACK];
133  Short_t &nStripHitsinTrack, // output
134  Short_t *ListStripHitsinTrack // output; dimensionality : [MAXMVDSTRIPHITSINTRACK];
135  );
136 
137  Short_t AssociateSciTilHit(Double_t dimensionscitil,
138  Double_t *esse, // output, list of S of the SciTil hits associated.
139  bool *InclusionListSciTil,
140  Short_t *List, // output, list of SciTil hits associated (max. 2);
141  Short_t maxscitilhitsintrack, Short_t nSciTilHits, Double_t Oxx, Double_t Oyy, Double_t posizSciTil[][3], Double_t Rr);
142 
143  void DecideWhichAngularRangeAndCharge(Double_t fiCenter, // input, fi of the (0,0) in the Helix reference frame;
144  Double_t fi_low_limit[2], // input; fi low limit of the Stt detector in the Helix frame;
145  Double_t fi_up_limit[2], // input; fi up limit of the Stt detector in the Helix frame;
146  Double_t (*info)[7], // input
147  Short_t *ListHitsinTrack, // input
148  Short_t nHitsinTrack, // input
149  Double_t Oxx, // input
150  Double_t Oyy, // input
151 
152  Short_t &charge, // output; charge of the particle;
153  Double_t &FiRangeMvdLow, // output; Fi range of possible Mvd hits; FiRangeMvdLow always
154  // between 0 and 2PI; and always FiRangeMvdLow<FiRangeMvdUp;
155  Double_t &FiRangeMvdUp, // output; Fi range of possible Mvd hits;
156  Double_t &Fi_low_limit, // output;
157  Double_t &Fi_up_limit // output;
158 
159  );
160 
161  bool FindTrackInXYProjection(struct FindTrackInXYProjection2_InputOutputData *InOut, int istampa, int IVOLTE);
162 
163  void OrderingUsingConformal(Short_t Charge, // input;
164  Double_t info[][7], // input;
165  Int_t nHits, // input;
166  Double_t oX, // input;
167  Double_t oY, // input;
168  Short_t *ListHits // input and output (ordered);
169  );
170 
171  void OrderingUsingFi(Short_t Charge, // input;
172  Double_t info[][7], // input;
173  Int_t nHits, // input;
174  Double_t oX, // input;
175  Double_t oY, // input;
176  Short_t *ListHits // input and output (ordered);
177  );
178 
179  void OrderingUsingR(Double_t info[][7], // input;
180  Int_t nHits, // input;
181  Short_t *ListHits // input and output (ordered);
182  );
183 
184  Short_t TrkAssociatedParallelHitsToHelix5(Short_t *auxListHitsinTrack, bool *InclusionListStt, Double_t Fi_low, Double_t Fi_up, Double_t info[][7], Short_t *ListSttParHits,
185  Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t strawradius);
186 
187  Short_t TrkAssociatedParallelHitsToHelix6(Short_t *auxListHitsinTrack, bool *InclusionListStt, Double_t Fi_low, Double_t Fi_up, Double_t info[][7], Short_t *ListSttParHits,
188  Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t maximum_distance);
189  ClassDef(PndTrkCTFindTrackInXY2, 1);
190 };
191 
192 #endif