PandaRoot
PndTrkCTGeometryCalculations.h
Go to the documentation of this file.
1 #ifndef PndTrkCTGeometryCalculations_H
2 #define PndTrkCTGeometryCalculations_H 1
3 
4 // Root includes
5 #include "TROOT.h"
6 
7 class PndTrkCTGeometryCalculations : public TObject {
8 
9  public:
12 
15 
16  Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
17  Double_t *Xcross, // entrance-exit point
18  Double_t *Ycross // entrance-exit point
19  );
20 
21  bool CalculateCircleThru3Points(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3, Double_t *o_x, Double_t *o_y, Double_t *r_r);
22 
23  void calculateintersections(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t C0x, Double_t C0y, Double_t C0z, Double_t r, Double_t vx, Double_t vy, Double_t vz, Int_t *STATUS,
24  Double_t *POINTS);
25 
26  void CalculateSandZ(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t skewnum, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t S[2], Double_t Z[2],
27  Double_t Zdrift[2], Double_t Zerror[2]);
28 
29  void CalculateSandZ2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t skewnum, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t S[2], Double_t Sdrift[2],
30  Double_t Z[2], Double_t Zdrift[2], Double_t Zerror[2]);
31 
32  void ChooseEntranceExitbis(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList,
33  Double_t Xcross[2], // output
34  Double_t Ycross[2] // output
35  );
36 
37  void ChooseEntranceExit3(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections,
38  Double_t *XintersectionList, // input and output;
39  Double_t *YintersectionList, // input and output;
40  Double_t *FiOrderedList // output;
41  );
42 
43  Double_t Dist_SZ(Double_t Rr, Double_t KAPPA, Double_t FI0, Double_t ZED, Double_t S, Int_t *nrounds);
44 
45  Double_t Dist_SZ_bis(Double_t Rr, // input
46  Double_t KAPPA, // input
47  Double_t FI0, // input
48  Double_t ZED, // input
49  Double_t S, // input
50  Short_t n_allowed_rounds, // input, number of maximum allowed turns. That means that the number of turns
51  // can go from 0 to n_allowed_rounds. It can be negative, in that case
52  // the number of allowed turns go from n_allowed_rounds to 0;
53  Double_t signPz, // input, it indicates if the tracks goes forward (Pz>0) or backwords (Pz<0);
54  Double_t &chosenS // output, the S position corrisponding to the point minimizing the distance;
55  // this S can be < 0 or > 2PI;
56  );
57 
58  Double_t FindDistance(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t tanlow, Double_t tanmid, Double_t tanup, Double_t alfa, Double_t beta, Double_t gamma);
59 
60  void FindingParallelTrackAngularRange(Double_t oX, Double_t oY, Double_t Rr, Short_t Charge,
61  Double_t *Fi_low_limit, // Fi (in XY Helix frame) lower limit using
62  // the Stt detector minimum/maximum radius
63  // Fi_low_limit is ALWAYS between 0. and 2PI
64  Double_t *Fi_up_limit, // Fi (in XY Helix frame) upper limit using
65  // the Stt detector maximum/minimum radius
66  // Fi_up_limit is ALWAYS > Fi_low_limit and
67  // possibly > 2PI.
68  Short_t *status,
69  Double_t Rmin, // Rmin of cylindrical volume intersected by track;
70  Double_t Rmax // Rmax of cylindrical volume intersected by track;
71  );
72 
73  void FindingParallelTrackAngularRange2(Double_t oX, // input;
74  Double_t oY, // input;
75  Double_t Rma, // Rmax of cylindrical volume intersected by track;
76  Double_t Rmi, // Rmin of cylindrical volume intersected by track;
77  Double_t Rr, // input;
78  Double_t *Fi_low_limit, // output; Fi (in XY Helix frame) lower limit using
79  // the Stt detector minimum/maximum radius
80  // Fi_low_limit is ALWAYS between 0. and 2PI;
81  Double_t *Fi_up_limit, // output; // Fi (in XY Helix frame) upper limit using
82  // the Stt detector maximum/minimum radius
83  // Fi_up_limit is ALWAYS > Fi_low_limit and
84  // possibly > 2PI;
85  Short_t *status // output;
86  );
87 
88  Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2]);
89 
90  Short_t FindTrackEntranceExitbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
91  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
92  Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
93 
94  Short_t FindTrackEntranceExitbiHexagonLeft2(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
95  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
96  Double_t ApotemaMax, Double_t XintersectionList[16], Double_t YintersectionList[16], Double_t FiOrderedList[16]);
97 
98  Short_t FindTrackEntranceExitbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
99  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
100  Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
101 
102  Short_t FindTrackEntranceExitbiHexagonRight2(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
103  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
104  Double_t ApotemaMax, Double_t XintersectionList[16], Double_t YintersectionList[16], Double_t FiOrderedList[16]);
105 
106  Short_t FindTrackEntranceExitHexagonCircleLeft(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
107  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
108  Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
109 
110  Short_t FindTrackEntranceExitHexagonCircleLeft2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
111  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
112  Double_t ApotemaMax, Double_t GAP, Double_t XintersectionList[12], Double_t YintersectionList[12], Double_t FiOrderedList[12]);
113 
114  Short_t FindTrackEntranceExitHexagonCircleRight(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
115  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
116  Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
117 
118  Short_t FindTrackEntranceExitHexagonCircleRight2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
119  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
120  Double_t ApotemaMax, Double_t GAP, Double_t XintersectionList[12], Double_t YintersectionList[12], Double_t FiOrderedList[12]);
121 
122  bool IntersectionCircle_Segment(Double_t a, // coefficients implicit equation.
123  Double_t b, // of segment : a*x + b*y + c =0.
124  Double_t c,
125  Double_t P1x, // point delimiting the segment.
126  Double_t P2x, // point delimiting the segment.
127  Double_t P1y, // point delimiting the segment.
128  Double_t P2y, // point delimiting the segment.
129  Double_t Oxx, // center of circle.
130  Double_t Oyy,
131  Double_t Rr, // Radius of circle.
132  Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance);
133 
134  bool IntersectionCircle_Segment_forScitil(Double_t a, // coefficients implicit equation.
135  Double_t b, // of segment : a*x + b*y + c =0.
136  Double_t c,
137  Double_t P1x, // point delimiting the segment.
138  Double_t P2x, // point delimiting the segment.
139  Double_t P1y, // point delimiting the segment.
140  Double_t P2y, // point delimiting the segment.
141  Double_t Oxx, // center of circle.
142  Double_t Oyy,
143  Double_t Rr, // Radius of circle.
144  Double_t factor, // to take into account errors in
145  // the determination of the circumference;
146  Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance);
147 
148  bool IntersectionSciTil_Circle(Double_t posizSciTilx, Double_t posizSciTily,
149  Double_t Oxx, // center of circle.
150  Double_t Oyy,
151  Double_t Rr, // Radius of circle.
152  Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2]);
153 
154  Short_t IntersectionsWithClosedbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr,
155  Double_t Ami, // Apotema min of inner Hexagon;
156  Double_t Ama, // Apotema max of outer Hexagon;
157 
158  //-------- outputs
159  Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
160 
161  Short_t IntersectionsWithClosedbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr,
162  Double_t Ami, // Apotema min of inner Hexagon;
163  Double_t Ama, // Apotema max of outer Hexagon;
164 
165  //-------- outputs
166  Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
167 
168  Short_t IntersectionsWithClosedPolygon(Double_t Oxx, Double_t Oyy, Double_t Rr,
169  Double_t Rmi, // Rmin of cylindrical volume intersected by track;
170  Double_t Rma, // Rmax of cylindrical volume intersected by track;
171 
172  //-------- outputs
173  Short_t nIntersections[2], Double_t XintersectionList[][2], Double_t YintersectionList[][2]);
174 
175  Short_t IntersectionsWithGapSemicircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t gap, bool left, Double_t Rma, Double_t *XintersectionList, Double_t *YintersectionList);
176 
177  Short_t IntersectionsWithOpenPolygon(Double_t Oxx, // Track parameter
178  Double_t Oyy, // Track parameter
179  Double_t Rr, // Track parameter
180  Short_t nSides, // input, n. of Sides of open Polygon.
181  Double_t *a, // coefficient of formula : aX + bY + c = 0 defining
182  Double_t *b, // the Polygon sides.
183  Double_t *c,
184  Double_t *side_x, // X,Y coordinate of the Sides vertices (in sequence, following
185  Double_t *side_y, // the Polygon along.
186  //-------- outputs
187  Double_t *XintersectionList, // XintersectionList
188  Double_t *YintersectionList // YintersectionList.
189  );
190 
191  bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint);
192 
193  bool IsInMvdMiniDisk1_97to1_99(Double_t X, // X coordinate of point;
194  Double_t Y // Y coordinate of point;
195  );
196 
197  bool IsInMvdMiniDisk1_97to1_99withMargin(Double_t X, // X coordinate of point;
198  Double_t Y, // Y coordinate of point;
199  Double_t xmargin, // safety margin in X coordinate;
200  Double_t ymargin // safety margin in Y coordinate;
201  );
202 
203  bool IsInMvdMiniDisk2_41to2_43(Double_t X, // X coordinate of point;
204  Double_t Y // Y coordinate of point;
205  );
206 
207  bool IsInMvdMiniDisk2_41to2_43withMargin(Double_t X, // X coordinate of point;
208  Double_t Y, // Y coordinate of point;
209  Double_t xmargin, // safety margin in X coordinate;
210  Double_t ymargin // safety margin in Y coordinate;
211  );
212 
213  bool IsInMvdMiniDisk3_97to3_99(Double_t X, // X coordinate of point;
214  Double_t Y // Y coordinate of point;
215  );
216 
217  bool IsInMvdMiniDisk3_97to3_99withMargin(Double_t X, // X coordinate of point;
218  Double_t Y, // Y coordinate of point;
219  Double_t xmargin, // safety margin in X coordinate;
220  Double_t ymargin // safety margin in Y coordinate;
221  );
222 
223  bool IsInMvdMiniDisk4_41to4_43(Double_t X, // X coordinate of point;
224  Double_t Y // Y coordinate of point;
225  );
226 
227  bool IsInMvdMiniDisk4_41to4_43withMargin(Double_t X, // X coordinate of point;
228  Double_t Y, // Y coordinate of point;
229  Double_t xmargin, // safety margin in X coordinate;
230  Double_t ymargin // safety margin in Y coordinate;
231  );
232 
233  bool IsInMvdMiniDisk6_97to6_99(Double_t X, // X coordinate of point;
234  Double_t Y // Y coordinate of point;
235  );
236 
237  bool IsInMvdMiniDisk6_97to6_99withMargin(Double_t X, // X coordinate of point;
238  Double_t Y, // Y coordinate of point;
239  Double_t xmargin, // safety margin in X coordinate;
240  Double_t ymargin // safety margin in Y coordinate;
241  );
242 
243  bool IsInMvdMiniDisk7_41to7_43(Double_t X, // X coordinate of point;
244  Double_t Y // Y coordinate of point;
245  );
246 
247  bool IsInMvdMiniDisk7_41to7_43withMargin(Double_t X, // X coordinate of point;
248  Double_t Y, // Y coordinate of point;
249  Double_t xmargin, // safety margin in X coordinate;
250  Double_t ymargin // safety margin in Y coordinate;
251  );
252 
253  bool IsInMvdMiniDisk9_97to9_99(Double_t X, // X coordinate of point;
254  Double_t Y // Y coordinate of point;
255  );
256 
257  bool IsInMvdMiniDisk9_97to9_99withMargin(Double_t X, // X coordinate of point;
258  Double_t Y, // Y coordinate of point;
259  Double_t xmargin, // safety margin in X coordinate;
260  Double_t ymargin // safety margin in Y coordinate;
261  );
262 
263  bool IsInMvdMiniDisk10_41to10_43(Double_t X, // X coordinate of point;
264  Double_t Y // Y coordinate of point;
265  );
266 
267  bool IsInMvdMiniDisk10_41to10_43withMargin(Double_t X, // X coordinate of point;
268  Double_t Y, // Y coordinate of point;
269  Double_t xmargin, // safety margin in X coordinate;
270  Double_t ymargin // safety margin in Y coordinate;
271  );
272 
273  bool IsInMvdMiniDisk14_77to14_79(Double_t X, // X coordinate of point;
274  Double_t Y // Y coordinate of point;
275  );
276 
277  bool IsInMvdMiniDisk14_77to14_79withMargin(Double_t X, // X coordinate of point;
278  Double_t Y, // Y coordinate of point;
279  Double_t xmargin, // safety margin in X coordinate;
280  Double_t ymargin // safety margin in Y coordinate;
281  );
282 
283  bool IsInMvdMiniDisk15_21to15_23(Double_t X, // X coordinate of point;
284  Double_t Y // Y coordinate of point;
285  );
286 
287  bool IsInMvdMiniDisk15_21to15_23withMargin(Double_t X, // X coordinate of point;
288  Double_t Y, // Y coordinate of point;
289  Double_t xmargin, // safety margin in X coordinate;
290  Double_t ymargin // safety margin in Y coordinate;
291  );
292 
293  bool IsInMvdMiniDisk21_77to21_79(Double_t X, // X coordinate of point;
294  Double_t Y // Y coordinate of point;
295  );
296 
297  bool IsInMvdMiniDisk21_77to21_79withMargin(Double_t X, // X coordinate of point;
298  Double_t Y, // Y coordinate of point;
299  Double_t xmargin, // safety margin in X coordinate;
300  Double_t ymargin // safety margin in Y coordinate;
301  );
302 
303  bool IsInMvdMiniDisk22_21to22_23(Double_t X, // X coordinate of point;
304  Double_t Y // Y coordinate of point;
305  );
306 
307  bool IsInMvdMiniDisk22_21to22_23withMargin(Double_t X, // X coordinate of point;
308  Double_t Y, // Y coordinate of point;
309  Double_t xmargin, // safety margin in X coordinate;
310  Double_t ymargin // safety margin in Y coordinate;
311  );
312 
313  bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap);
314 
315  bool IsInternal(Double_t Px, // point
316  Double_t Py, Double_t Xtraslation, Double_t Ytraslation, Double_t Theta);
317 
318  void ListAxialSectorsCrossedbyTrack_and_Hits(Double_t Ox, // input;
319  Double_t Oy, // input;
320  Double_t R, // input;
321  Double_t Charge, // input;
322  Short_t nHits, // input;
323  Short_t *ListHits, // input;
324  Double_t info[][7], // input;
325  Short_t &nArcs_populated, // output; # Arcs of trajectory populated by at least 1 axial hit; this is <= 56;
326  Short_t nHitsInArc[56], // output; number of hits in each Sector; if the maximun # of Intersected Sector is 56,
327  // than the maximum # of Arcs is 28;
328 
329  Short_t (*ListHitsInArc)[56] // output; ordered list of hits in each Arc (from first to last
330  // according to the charge of the particle;if the maximum
331  // # of Intersected Sector is 56, than the maximum # of Arcs is 28;
332  );
333 
335 };
336 
337 #endif
bool IsInMvdMiniDisk6_97to6_99(Double_t X, Double_t Y)
bool IsInMvdMiniDisk9_97to9_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInternal(Double_t Px, Double_t Py, Double_t Xtraslation, Double_t Ytraslation, Double_t Theta)
void FindingParallelTrackAngularRange(Double_t oX, Double_t oY, Double_t Rr, Short_t Charge, Double_t *Fi_low_limit, Double_t *Fi_up_limit, Short_t *status, Double_t Rmin, Double_t Rmax)
void ListAxialSectorsCrossedbyTrack_and_Hits(Double_t Ox, Double_t Oy, Double_t R, Double_t Charge, Short_t nHits, Short_t *ListHits, Double_t info[][7], Short_t &nArcs_populated, Short_t nHitsInArc[56], Short_t(*ListHitsInArc)[56])
Short_t IntersectionsWithClosedPolygon(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t Rmi, Double_t Rma, Short_t nIntersections[2], Double_t XintersectionList[][2], Double_t YintersectionList[][2])
Short_t IntersectionsWithClosedbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t Ami, Double_t Ama, Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList)
Short_t FindTrackEntranceExitHexagonCircleLeft2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t XintersectionList[12], Double_t YintersectionList[12], Double_t FiOrderedList[12])
Short_t IntersectionsWithClosedbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t Ami, Double_t Ama, Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList)
bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap)
void ChooseEntranceExit3(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList, Double_t *FiOrderedList)
void CalculateSandZ(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t skewnum, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t S[2], Double_t Z[2], Double_t Zdrift[2], Double_t Zerror[2])
bool IsInMvdMiniDisk6_97to6_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
Double_t Dist_SZ(Double_t Rr, Double_t KAPPA, Double_t FI0, Double_t ZED, Double_t S, Int_t *nrounds)
bool IsInMvdMiniDisk10_41to10_43(Double_t X, Double_t Y)
bool IsInMvdMiniDisk2_41to2_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
Short_t FindTrackEntranceExitHexagonCircleLeft(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2])
bool IsInMvdMiniDisk9_97to9_99(Double_t X, Double_t Y)
bool IsInMvdMiniDisk21_77to21_79withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk7_41to7_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk14_77to14_79(Double_t X, Double_t Y)
Double_t Dist_SZ_bis(Double_t Rr, Double_t KAPPA, Double_t FI0, Double_t ZED, Double_t S, Short_t n_allowed_rounds, Double_t signPz, Double_t &chosenS)
void ChooseEntranceExitbis(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList, Double_t Xcross[2], Double_t Ycross[2])
bool IntersectionCircle_Segment_forScitil(Double_t a, Double_t b, Double_t c, Double_t P1x, Double_t P2x, Double_t P1y, Double_t P2y, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t factor, Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance)
bool IsInMvdMiniDisk15_21to15_23withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool CalculateCircleThru3Points(Double_t x1, Double_t y1, Double_t x2, Double_t y2, Double_t x3, Double_t y3, Double_t *o_x, Double_t *o_y, Double_t *r_r)
bool IsInMvdMiniDisk1_97to1_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk22_21to22_23(Double_t X, Double_t Y)
bool IsInMvdMiniDisk21_77to21_79(Double_t X, Double_t Y)
bool IsInMvdMiniDisk14_77to14_79withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint)
Short_t IntersectionsWithOpenPolygon(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t nSides, Double_t *a, Double_t *b, Double_t *c, Double_t *side_x, Double_t *side_y, Double_t *XintersectionList, Double_t *YintersectionList)
void CalculateSandZ2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t skewnum, Double_t info[][7], Double_t *WDX, Double_t *WDY, Double_t *WDZ, Double_t S[2], Double_t Sdrift[2], Double_t Z[2], Double_t Zdrift[2], Double_t Zerror[2])
bool IntersectionCircle_Segment(Double_t a, Double_t b, Double_t c, Double_t P1x, Double_t P2x, Double_t P1y, Double_t P2y, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance)
Short_t FindTrackEntranceExitbiHexagonRight2(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t XintersectionList[16], Double_t YintersectionList[16], Double_t FiOrderedList[16])
Double_t FindDistance(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t tanlow, Double_t tanmid, Double_t tanup, Double_t alfa, Double_t beta, Double_t gamma)
Short_t FindTrackEntranceExitbiHexagonLeft2(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t XintersectionList[16], Double_t YintersectionList[16], Double_t FiOrderedList[16])
bool IsInMvdMiniDisk4_41to4_43(Double_t X, Double_t Y)
Short_t FindTrackEntranceExitHexagonCircleRight2(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t XintersectionList[12], Double_t YintersectionList[12], Double_t FiOrderedList[12])
Short_t FindTrackEntranceExitHexagonCircleRight(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2])
bool IsInMvdMiniDisk2_41to2_43(Double_t X, Double_t Y)
bool IntersectionSciTil_Circle(Double_t posizSciTilx, Double_t posizSciTily, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2])
bool IsInMvdMiniDisk7_41to7_43(Double_t X, Double_t Y)
bool IsInMvdMiniDisk15_21to15_23(Double_t X, Double_t Y)
bool IsInMvdMiniDisk3_97to3_99withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2])
ClassDef(PndTrkCTGeometryCalculations, 1)
Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t *Xcross, Double_t *Ycross)
Short_t IntersectionsWithGapSemicircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t gap, bool left, Double_t Rma, Double_t *XintersectionList, Double_t *YintersectionList)
Short_t FindTrackEntranceExitbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2])
Short_t FindTrackEntranceExitbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t ApotemaMin, Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2])
void calculateintersections(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t C0x, Double_t C0y, Double_t C0z, Double_t r, Double_t vx, Double_t vy, Double_t vz, Int_t *STATUS, Double_t *POINTS)
bool IsInMvdMiniDisk22_21to22_23withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
void FindingParallelTrackAngularRange2(Double_t oX, Double_t oY, Double_t Rma, Double_t Rmi, Double_t Rr, Double_t *Fi_low_limit, Double_t *Fi_up_limit, Short_t *status)
bool IsInMvdMiniDisk4_41to4_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)
bool IsInMvdMiniDisk1_97to1_99(Double_t X, Double_t Y)
bool IsInMvdMiniDisk3_97to3_99(Double_t X, Double_t Y)
int status[10]
Definition: f_Init.h:24
bool IsInMvdMiniDisk10_41to10_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)