FairRoot/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 
8 class PndTrkCTGeometryCalculations : public TObject
9 {
10 
11  public:
12 
15 
16 
19 
20 
21 
22 
23 
25  Double_t Oxx,
26  Double_t Oyy,
27  Double_t Rr,
28  Short_t Charge,
29  Double_t *Xcross, // entrance-exit point
30  Double_t *Ycross // entrance-exit point
31  );
32 
33 
35  Double_t x1,
36  Double_t y1,
37  Double_t x2,
38  Double_t y2,
39  Double_t x3,
40  Double_t y3,
41  Double_t *o_x,
42  Double_t *o_y,
43  Double_t *r_r
44  );
45 
47  Double_t Oxx,
48  Double_t Oyy,
49  Double_t Rr,
50  Double_t C0x,
51  Double_t C0y,
52  Double_t C0z,
53  Double_t r,
54  Double_t vx,
55  Double_t vy,
56  Double_t vz,
57  Int_t *STATUS,
58  Double_t* POINTS
59  );
60 
61 
62 
63  void CalculateSandZ(
64  Double_t Oxx,
65  Double_t Oyy,
66  Double_t Rr,
67  Short_t skewnum,
68  Double_t info[][7],
69  Double_t *WDX,
70  Double_t *WDY,
71  Double_t *WDZ,
72  Double_t S[2],
73  Double_t Z[2],
74  Double_t Zdrift[2],
75  Double_t Zerror[2]
76  );
77 
78 
79 
80  void CalculateSandZ2(
81  Double_t Oxx,
82  Double_t Oyy,
83  Double_t Rr,
84  Short_t skewnum,
85  Double_t info[][7],
86  Double_t *WDX,
87  Double_t *WDY,
88  Double_t *WDZ,
89  Double_t S[2],
90  Double_t Sdrift[2],
91  Double_t Z[2],
92  Double_t Zdrift[2],
93  Double_t Zerror[2]
94  );
95 
97  Double_t Oxx,
98  Double_t Oyy,
99  Short_t Charge,
100  Double_t FiStart,
101  Short_t nIntersections,
102  Double_t *XintersectionList,
103  Double_t *YintersectionList,
104  Double_t Xcross[2], // output
105  Double_t Ycross[2] // output
106  );
107 
108 
109 
110  void ChooseEntranceExit3(
111  Double_t Oxx,
112  Double_t Oyy,
113  Short_t Charge,
114  Double_t FiStart,
115  Short_t nIntersections,
116  Double_t *XintersectionList, // input and output;
117  Double_t *YintersectionList, // input and output;
118  Double_t *FiOrderedList // output;
119  );
120 
121 
123  Double_t Rr,
124  Double_t KAPPA,
125  Double_t FI0,
126  Double_t ZED,
127  Double_t S,
128  Int_t *nrounds
129  );
130 
131 
132 
134  Double_t Rr, // input
135  Double_t KAPPA, // input
136  Double_t FI0, // input
137  Double_t ZED, // input
138  Double_t S, // input
139  Short_t n_allowed_rounds, // input, number of maximum allowed turns. That means that the number of turns
140  // can go from 0 to n_allowed_rounds. It can be negative, in that case
141  // the number of allowed turns go from n_allowed_rounds to 0;
142  Double_t signPz, // input, it indicates if the tracks goes forward (Pz>0) or backwords (Pz<0);
143  Double_t & chosenS // output, the S position corrisponding to the point minimizing the distance;
144  // this S can be < 0 or > 2PI;
145  );
146 
147 
149  Double_t Oxx,
150  Double_t Oyy,
151  Double_t Rr,
152  Double_t tanlow,
153  Double_t tanmid,
154  Double_t tanup,
155  Double_t alfa,
156  Double_t beta,
157  Double_t gamma
158  );
159 
161  Double_t oX,
162  Double_t oY,
163  Double_t Rr,
164  Short_t Charge,
165  Double_t *Fi_low_limit, // Fi (in XY Helix frame) lower limit using
166  // the Stt detector minimum/maximum radius
167  // Fi_low_limit is ALWAYS between 0. and 2PI
168  Double_t *Fi_up_limit, // Fi (in XY Helix frame) upper limit using
169  // the Stt detector maximum/minimum radius
170  // Fi_up_limit is ALWAYS > Fi_low_limit and
171  // possibly > 2PI.
172  Short_t * status,
173  Double_t Rmin, // Rmin of cylindrical volume intersected by track;
174  Double_t Rmax // Rmax of cylindrical volume intersected by track;
175  );
176 
177 
179  Double_t oX, // input;
180  Double_t oY, // input;
181  Double_t Rma, // Rmax of cylindrical volume intersected by track;
182  Double_t Rmi, // Rmin of cylindrical volume intersected by track;
183  Double_t Rr, // input;
184  Double_t *Fi_low_limit, // output; Fi (in XY Helix frame) lower limit using
185  // the Stt detector minimum/maximum radius
186  // Fi_low_limit is ALWAYS between 0. and 2PI;
187  Double_t *Fi_up_limit, // output; // Fi (in XY Helix frame) upper limit using
188  // the Stt detector maximum/minimum radius
189  // Fi_up_limit is ALWAYS > Fi_low_limit and
190  // possibly > 2PI;
191  Short_t * status // output;
192  );
193 
195  Double_t Oxx,
196  Double_t Oyy,
197  Double_t Rr,
198  Double_t RMax,
199  Double_t Xcross[2],
200  Double_t Ycross[2]
201  );
202 
203 
204 
206  Double_t vgap,
207  Double_t Oxx,
208  Double_t Oyy,
209  Double_t Rr,
210  Short_t Charge,
211  Double_t Start[3],
212  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
213  Double_t ApotemaMax,
214  Double_t Xcross[2],
215  Double_t Ycross[2]
216  );
217 
218 
220  Double_t vgap,
221  Double_t Oxx,
222  Double_t Oyy,
223  Double_t Rr,
224  Short_t Charge,
225  Double_t Start[3],
226  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
227  Double_t ApotemaMax,
228  Double_t XintersectionList[16],
229  Double_t YintersectionList[16],
230  Double_t FiOrderedList[16]
231  );
232 
234  Double_t vgap,
235  Double_t Oxx,
236  Double_t Oyy,
237  Double_t Rr,
238  Short_t Charge,
239  Double_t Start[3],
240  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
241  Double_t ApotemaMax,
242  Double_t Xcross[2],
243  Double_t Ycross[2]
244  );
245 
246 
248  Double_t vgap,
249  Double_t Oxx,
250  Double_t Oyy,
251  Double_t Rr,
252  Short_t Charge,
253  Double_t Start[3],
254  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
255  Double_t ApotemaMax,
256  Double_t XintersectionList[16],
257  Double_t YintersectionList[16],
258  Double_t FiOrderedList[16]
259  );
260 
262  Double_t Oxx,
263  Double_t Oyy,
264  Double_t Rr,
265  Short_t Charge,
266  Double_t Start[3],
267  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
268  Double_t ApotemaMax,
269  Double_t GAP,
270  Double_t Xcross[2],
271  Double_t Ycross[2]
272  );
273 
274 
276  Double_t Oxx,
277  Double_t Oyy,
278  Double_t Rr,
279  Short_t Charge,
280  Double_t Start[3],
281  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
282  Double_t ApotemaMax,
283  Double_t GAP,
284  Double_t XintersectionList[12],
285  Double_t YintersectionList[12],
286  Double_t FiOrderedList[12]
287  );
288 
290  Double_t Oxx,
291  Double_t Oyy,
292  Double_t Rr,
293  Short_t Charge,
294  Double_t Start[3],
295  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
296  Double_t ApotemaMax,
297  Double_t GAP,
298  Double_t Xcross[2],
299  Double_t Ycross[2]
300  );
301 
303  Double_t Oxx,
304  Double_t Oyy,
305  Double_t Rr,
306  Short_t Charge,
307  Double_t Start[3],
308  Double_t ApotemaMin, // Apotema=distance Hexagon side from (0,0).
309  Double_t ApotemaMax,
310  Double_t GAP,
311  Double_t XintersectionList[12],
312  Double_t YintersectionList[12],
313  Double_t FiOrderedList[12]
314  );
315 
317  Double_t a, // coefficients implicit equation.
318  Double_t b, // of segment : a*x + b*y + c =0.
319  Double_t c,
320  Double_t P1x, // point delimiting the segment.
321  Double_t P2x, // point delimiting the segment.
322  Double_t P1y, // point delimiting the segment.
323  Double_t P2y, // point delimiting the segment.
324  Double_t Oxx, // center of circle.
325  Double_t Oyy,
326  Double_t Rr, // Radius of circle.
327  Short_t * Nintersections,
328  Double_t XintersectionList[2],
329  Double_t YintersectionList[2],
330  Double_t *distance
331  );
332 
333 
334 
336  Double_t a, // coefficients implicit equation.
337  Double_t b, // of segment : a*x + b*y + c =0.
338  Double_t c,
339  Double_t P1x, // point delimiting the segment.
340  Double_t P2x, // point delimiting the segment.
341  Double_t P1y, // point delimiting the segment.
342  Double_t P2y, // point delimiting the segment.
343  Double_t Oxx, // center of circle.
344  Double_t Oyy,
345  Double_t Rr, // Radius of circle.
346  Double_t factor, // to take into account errors in
347  // the determination of the circumference;
348  Short_t * Nintersections,
349  Double_t XintersectionList[2],
350  Double_t YintersectionList[2],
351  Double_t *distance
352  );
353 
355  Double_t posizSciTilx,
356  Double_t posizSciTily,
357  Double_t Oxx, // center of circle.
358  Double_t Oyy,
359  Double_t Rr, // Radius of circle.
360  Short_t * Nintersections,
361  Double_t XintersectionList[2],
362  Double_t YintersectionList[2]
363  );
364 
365 
367  Double_t vgap,
368  Double_t Oxx,
369  Double_t Oyy,
370  Double_t Rr,
371  Double_t Ami, // Apotema min of inner Hexagon;
372  Double_t Ama, // Apotema max of outer Hexagon;
373 
374  //-------- outputs
375  Short_t *nIntersections,
376  Double_t *XintersectionList,
377  Double_t *YintersectionList
378  );
379 
381  Double_t vgap,
382  Double_t Oxx,
383  Double_t Oyy,
384  Double_t Rr,
385  Double_t Ami, // Apotema min of inner Hexagon;
386  Double_t Ama, // Apotema max of outer Hexagon;
387 
388  //-------- outputs
389  Short_t *nIntersections,
390  Double_t *XintersectionList,
391  Double_t *YintersectionList
392  );
393 
394 
396  Double_t Oxx,
397  Double_t Oyy,
398  Double_t Rr,
399  Double_t Rmi, // Rmin of cylindrical volume intersected by track;
400  Double_t Rma, // Rmax of cylindrical volume intersected by track;
401 
402  //-------- outputs
403  Short_t nIntersections[2],
404  Double_t XintersectionList[][2],
405  Double_t YintersectionList[][2]
406  );
407 
408 
409 
411  Double_t Oxx,
412  Double_t Oyy,
413  Double_t Rr,
414  Double_t gap,
415  bool left,
416  Double_t Rma,
417  Double_t *XintersectionList,
418  Double_t *YintersectionList
419  );
420 
422  Double_t Oxx, // Track parameter
423  Double_t Oyy, // Track parameter
424  Double_t Rr, // Track parameter
425  Short_t nSides, // input, n. of Sides of open Polygon.
426  Double_t *a, // coefficient of formula : aX + bY + c = 0 defining
427  Double_t *b, // the Polygon sides.
428  Double_t *c,
429  Double_t *side_x, // X,Y coordinate of the Sides vertices (in sequence, following
430  Double_t *side_y, // the Polygon along.
431  //-------- outputs
432  Double_t *XintersectionList, // XintersectionList
433  Double_t *YintersectionList // YintersectionList.
434  );
435 
436 
437  bool IsInsideArc(
438  Double_t Oxx,
439  Double_t Oyy,
440  Short_t Charge,
441  Double_t Xcross[2],
442  Double_t Ycross[2],
443  Double_t Spoint
444  );
445 
446 
448  Double_t X, // X coordinate of point;
449  Double_t Y // Y coordinate of point;
450  );
451 
453  Double_t X, // X coordinate of point;
454  Double_t Y, // Y coordinate of point;
455  Double_t xmargin, // safety margin in X coordinate;
456  Double_t ymargin // safety margin in Y coordinate;
457  );
458 
459 
461  Double_t X, // X coordinate of point;
462  Double_t Y // Y coordinate of point;
463  );
464 
466  Double_t X, // X coordinate of point;
467  Double_t Y, // Y coordinate of point;
468  Double_t xmargin, // safety margin in X coordinate;
469  Double_t ymargin // safety margin in Y coordinate;
470  );
471 
472 
473 
475  Double_t X, // X coordinate of point;
476  Double_t Y // Y coordinate of point;
477  );
478 
480  Double_t X, // X coordinate of point;
481  Double_t Y, // Y coordinate of point;
482  Double_t xmargin, // safety margin in X coordinate;
483  Double_t ymargin // safety margin in Y coordinate;
484  );
485 
486 
487 
488 
490  Double_t X, // X coordinate of point;
491  Double_t Y // Y coordinate of point;
492  );
493 
495  Double_t X, // X coordinate of point;
496  Double_t Y, // Y coordinate of point;
497  Double_t xmargin, // safety margin in X coordinate;
498  Double_t ymargin // safety margin in Y coordinate;
499  );
500 
501 
502 
504  Double_t X, // X coordinate of point;
505  Double_t Y // Y coordinate of point;
506  );
507 
509  Double_t X, // X coordinate of point;
510  Double_t Y, // Y coordinate of point;
511  Double_t xmargin, // safety margin in X coordinate;
512  Double_t ymargin // safety margin in Y coordinate;
513  );
514 
515 
516 
517 
519  Double_t X, // X coordinate of point;
520  Double_t Y // Y coordinate of point;
521  );
522 
524  Double_t X, // X coordinate of point;
525  Double_t Y, // Y coordinate of point;
526  Double_t xmargin, // safety margin in X coordinate;
527  Double_t ymargin // safety margin in Y coordinate;
528  );
529 
530 
531 
533  Double_t X, // X coordinate of point;
534  Double_t Y // Y coordinate of point;
535  );
536 
538  Double_t X, // X coordinate of point;
539  Double_t Y, // Y coordinate of point;
540  Double_t xmargin, // safety margin in X coordinate;
541  Double_t ymargin // safety margin in Y coordinate;
542  );
543 
544 
546  Double_t X, // X coordinate of point;
547  Double_t Y // Y coordinate of point;
548  );
549 
551  Double_t X, // X coordinate of point;
552  Double_t Y, // Y coordinate of point;
553  Double_t xmargin, // safety margin in X coordinate;
554  Double_t ymargin // safety margin in Y coordinate;
555  );
556 
557 
559  Double_t X, // X coordinate of point;
560  Double_t Y // Y coordinate of point;
561  );
562 
564  Double_t X, // X coordinate of point;
565  Double_t Y, // Y coordinate of point;
566  Double_t xmargin, // safety margin in X coordinate;
567  Double_t ymargin // safety margin in Y coordinate;
568  );
569 
570 
572  Double_t X, // X coordinate of point;
573  Double_t Y // Y coordinate of point;
574  );
575 
577  Double_t X, // X coordinate of point;
578  Double_t Y, // Y coordinate of point;
579  Double_t xmargin, // safety margin in X coordinate;
580  Double_t ymargin // safety margin in Y coordinate;
581  );
582 
583 
585  Double_t X, // X coordinate of point;
586  Double_t Y // Y coordinate of point;
587  );
588 
590  Double_t X, // X coordinate of point;
591  Double_t Y, // Y coordinate of point;
592  Double_t xmargin, // safety margin in X coordinate;
593  Double_t ymargin // safety margin in Y coordinate;
594  );
595 
596 
598  Double_t X, // X coordinate of point;
599  Double_t Y // Y coordinate of point;
600  );
601 
603  Double_t X, // X coordinate of point;
604  Double_t Y, // Y coordinate of point;
605  Double_t xmargin, // safety margin in X coordinate;
606  Double_t ymargin // safety margin in Y coordinate;
607  );
608 
609 
610 
611  bool IsInTargetPipe(
612  Double_t Oxx,
613  Double_t Oyy,
614  Double_t Rr,
615  Double_t fi0,
616  Double_t kappa,
617  Short_t charge,
618  Double_t gap
619  );
620 
621 
622 
623  bool IsInternal(
624  Double_t Px, // point
625  Double_t Py,
626  Double_t Xtraslation,
627  Double_t Ytraslation,
628  Double_t Theta
629  );
630 
631 
633  Double_t Ox, // input;
634  Double_t Oy, // input;
635  Double_t R, // input;
636  Double_t Charge, // input;
637  Short_t nHits, // input;
638  Short_t* ListHits, // input;
639  Double_t info[][7], // input;
640  Short_t& nArcs_populated, // output; # Arcs of trajectory populated by at least 1 axial hit; this is <= 56;
641  Short_t nHitsInArc[56], // output; number of hits in each Sector; if the maximun # of Intersected Sector is 56,
642  // than the maximum # of Arcs is 28;
643 
644  Short_t (* ListHitsInArc) [56] // output; ordered list of hits in each Arc (from first to last
645  // according to the charge of the particle;if the maximum
646  // # of Intersected Sector is 56, than the maximum # of Arcs is 28;
647  );
648 
649 
651 
652 };
653 
654 #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])
double r
Definition: RiemannTest.C:14
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])
TTree * b
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])
timer Start()
bool IsInMvdMiniDisk9_97to9_99(Double_t X, Double_t Y)
double Y
Definition: anaLmdDigi.C:68
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)
Int_t a
Definition: anaLmdDigi.C:126
int nHits
Definition: RiemannTest.C:16
Double_t
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 X
Definition: anaLmdDigi.C:68
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)
double Z
Definition: anaLmdDigi.C:68
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)
Double_t R
Definition: checkhelixhit.C:61
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:28
bool IsInMvdMiniDisk10_41to10_43withMargin(Double_t X, Double_t Y, Double_t xmargin, Double_t ymargin)