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