1 #ifndef PNDSTTTRACKFINDERREAL 2 #define PNDSTTTRACKFINDERREAL 1 9 #include "TClonesArray.h" 27 Double_t KAPPA[3][16];
54 void WriteHistograms();
57 virtual Int_t DoFind(TClonesArray *trackCandArray, TClonesArray *trackArray, TClonesArray *helixHitArray);
58 virtual Int_t DoFind(TClonesArray *mHitArray, TClonesArray *mHelixHitArray);
62 fHitCollectionList.Add(mHitArray);
63 fPointCollectionList.Add(mPointArray);
66 void SetTubeArray(TClonesArray *tubeArray) { fTubeArray = tubeArray; };
70 sprintf(fSttBranch,
"%s", string1);
77 static const Short_t nmaxHits = 1000,
80 nmaxSciTilHitsinTrack = 2,
81 MAXMCTRACKS = 10000, MAXTRACKSPEREVENT = 50,
MAXHITSINCELL = 50, nmaxinclinationversors = 20, nAdmittedRadia = 3, nbinCX = 100, nbinCY = 100, nbinZ = 100, nbinR = 100,
82 nbinD = 250, nbinFi = 250, nbinKAPPA = 200, nbinFI0 = 200, MINIMUMCOUNTSDFiR = 18, MINIMUMCOUNTSKAPPAFI0 = 5, MAXElementsOverThresholdinHough = 500,
83 nRdivConformal = 10, NHITSINFIT = 15,
86 static const Double_t
PI = 3.141592654,
87 RStrawDetectorMin = 16.119,
88 ApotemaMaxInnerParStraw = 23.246827,
89 ApotemaMinSkewStraw = 23.246827,
90 ApotemaMaxSkewStraw = 31.517569,
91 ApotemaMinOuterParStraw = 31.863369,
92 RStrawDetectorMax = 40.73,
95 Rmin = 20., Rmax = 700.,
PMAX = 100.,
STRAWRADIUS = 0.5, StrawDriftError = 0.02, SKEWinclination_DEGREES = 3., CXmin = -150., CXmax = 150., CYmin = -300., CYmax = 300.,
96 Dmin = -21., Dmax = 21., KAPPAmin = -2., KAPPAmax = 2., Zmin = -75., Zmax = 75., DELTA_R = 5., DELTA_Fi = 0.3, DELTA_D = 2., DELTA_KAPPA = 0.03,
102 static const bool YesClean =
false;
103 bool YesSciTil, InclusionListSciTil[nmaxSciTilHits];
105 static const Short_t nFidivConformal = (Short_t)(3.141592654 * 45. / 0.5);
107 static const int nmassimo = 50,
112 bool iplotta, doMcComparison, TypeConf[MAXTRACKSPEREVENT];
116 TH1F *hdist, *hdistgoodlast, *hdistbadlast;
127 Double_t veritaMC[nmaxHits][3];
129 Short_t MINIMUMHITSPERTRACK, MINIMUMOUTERHITSPERTRACK, nRdivConformalEffective, nSciTilHits, nSttSkewhit, infoparal[nmaxHits], infoskew[nmaxHits],
130 nHitsInMCTrack[MAXTRACKSPEREVENT], nSciTilHitsinTrack[MAXTRACKSPEREVENT], nSttSkewhitInMCTrack[MAXTRACKSPEREVENT],
131 ListSciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHitsinTrack];
135 Double_t Fimin, Fimax, FI0min, FI0max, stepD, stepFi, stepR, stepKAPPA, stepFI0, stepfineKAPPA, stepfineFI0,
SEMILENGTH_STRAIGHT,
ZCENTER_STRAIGHT, ALFA[MAXTRACKSPEREVENT],
136 BETA[MAXTRACKSPEREVENT], GAMMA[MAXTRACKSPEREVENT], radiaConf[nRdivConformal], CxMC[MAXTRACKSPEREVENT], CyMC[MAXTRACKSPEREVENT], R_MC[MAXTRACKSPEREVENT],
137 posizSciTil[nmaxSciTilHits][3], S_SciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHits];
139 TClonesArray *fMCTrackArray, *fSciTPointArray, *fSciTHitArray;
141 TClonesArray *fTubeArray;
144 TList fHitCollectionList;
145 TList fPointCollectionList;
147 PndSttHit *GetHitFromCollections(Int_t hitCounter);
148 FairMCPoint *GetPointFromCollections(Int_t hitCounter);
149 TClonesArray *fSttHitArray;
152 char fSttBranch[100];
154 void Initialization_ClassVariables();
156 void PndSttFromXYtoConformal(Double_t trajectory_vertex[3], Double_t info[][7], Int_t Nparal, Double_t infoparalConformal[][5], Int_t *
status);
158 void PndSttFromXYtoConformal2(Double_t trajectory_vertex[3], Short_t nHitsinTrack, Short_t iExclude, Short_t *ListHits, Double_t info[][7], Double_t auxinfoparalConformal[][5],
161 void PndSttBoxConformalFilling(
bool ExclusionList[nmaxHits], Double_t infoparalConformal[][5], Int_t Nparal, Short_t nBoxConformal[nRdivConformal][nFidivConformal],
162 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits]);
164 void Merge_Sort(Short_t n_ele, Double_t *array, Short_t *ind);
166 void Merge(Short_t nl, Double_t *left, Short_t *ind_left, Short_t nr, Double_t *right, Short_t *ind_right, Double_t *result, Short_t *ind);
168 Short_t PndSttFindTrackPatterninBoxConformal(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal,
173 Double_t info[][7],
bool Exclusion_List[nmaxHits], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits],
174 Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal],
175 Short_t *ListHitsinTrack);
177 Short_t PndSttFindTrackPatterninBoxConformalSpecial(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal, Short_t NparallelToSearch, Short_t iSeed,
178 Short_t *ListHitsinTrackinWhichToSearch, Double_t info[][7],
bool InclusionList[nmaxHits], Short_t RConformalIndex[nmaxHits],
179 Short_t FiConformalIndex[nmaxHits], Short_t nBoxConformal[nRdivConformal][nFidivConformal],
180 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *OutputListHitsinTrack);
182 Short_t PndSttFindTrackStrictCollection(Short_t NFiCELLDISTANCE,
184 Short_t NParallelToSearch,
185 Short_t *ListHitsinTrackinWhichToSearch,
bool ExclusionList[nmaxHits], Short_t FiConformalIndex[nmaxHits],
186 Short_t *OutputListHitsinTrack);
191 Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal,
192 Double_t rotationangle, Double_t *trajectory_vertex, Short_t NMAX, Double_t *
m, Double_t *q, Double_t *ALFA, Double_t *BETA, Double_t *GAMMA,
195 Short_t PndSttFitSZspacebis(Short_t nSttSkewhitinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t FInot, Short_t NMAX, Double_t *m);
198 Short_t FitSZspace(Short_t nSkewHitsinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t *ErrorDriftRadius, Double_t FInot, Short_t NMAX, Double_t *emme);
200 Short_t PndSttTrkAssociatedParallelHitsToHelix(Double_t Ox, Double_t Oy, Double_t
R, Int_t Nhits, Double_t info[][7],
201 Short_t *auxListHitsinTrack
204 Short_t PndSttTrkAssociatedParallelHitsToHelixQuater(
bool ExclusionList[nmaxHits], Double_t m, Double_t q, Short_t Status, Short_t nHitsinTrack, Short_t *ListHitsinTrack,
205 Int_t NhitsParallel, Double_t Ox, Double_t Oy, Double_t R, Double_t info[][7], Double_t infoparalConformal[][5],
206 Short_t *RConformalIndex, Short_t *FiConformalIndex, Short_t nBoxConformal[nRdivConformal][nFidivConformal],
207 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *auxListHitsinTrack);
209 Short_t PndSttTrkAssociatedParallelHitsToHelix5(
bool ExclusionList[nmaxHits], Int_t NhitsParallel, Double_t Ox, Double_t Oy, Double_t R, Double_t info[][7], Double_t Fi_low,
210 Double_t Fi_up, Short_t *auxListHitsinTrack);
212 bool PndSttAcceptHitsConformal(Double_t distance, Double_t DriftConfR, Double_t StrawConfR);
214 CalculatedCircles PndSttTrkFindCircles(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
216 CalculatedHelix PndSttTrkFindHelix(Double_t Ox, Double_t Oy, Double_t R, Double_t Zcenter1, Double_t Zcenter2, Double_t Zcenter3, Double_t semilengthStraight1,
217 Double_t semilengthStraight2, Double_t semilengthStraight3, Double_t C0x1, Double_t C0y1, Double_t C0z1, Double_t semilengthSkew1, Double_t r1,
218 Double_t vx1, Double_t vy1, Double_t vz1, Double_t C0x2, Double_t C0y2, Double_t C0z2, Double_t semilengthSkew2, Double_t r2, Double_t vx2,
219 Double_t vy2, Double_t vz2, Int_t *STATUS);
221 void calculateintersections(Double_t Ox, Double_t Oy, Double_t R, Double_t C0x, Double_t C0y, Double_t C0z, Double_t r, Double_t vx, Double_t vy, Double_t vz, Int_t *STATUS,
224 void plottamentiParalleleGenerali(Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX, Float_t *RemainingCY,
bool *Goodflag);
226 void plottamentiParalleleconMassimo(
char *tipo, Int_t nMaxima, Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX,
227 Float_t *RemainingCY, Double_t Rup, Double_t Rlow, Double_t Dup, Double_t Dlow, Double_t Fiup, Double_t Filow);
229 bool iscontiguous(
int ncomponents, Short_t *vec1, Short_t *vec2);
231 void clustering2(Short_t vec1[2],
232 int nListElements, Short_t List[][2],
233 int &nClusterElementsFound, Short_t ClusterElementsFound[][2],
234 int &nRemainingElements, Short_t RemainingElements[][2]
237 void clustering3(Short_t vec1[3],
238 int nListElements, Short_t List[][3],
239 int &nClusterElementsFound, Short_t ClusterElementsFound[][3],
240 int &nRemainingElements, Short_t RemainingElements[][3]
243 void WriteMacroParallelAssociatedHits(Double_t Ox, Double_t Oy, Double_t R, Short_t Nhits, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7],
244 Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t imaxima, Int_t sequencial, Short_t nscitilhitsintrack,
245 Short_t *listscitilhitsintrack);
247 void WriteMacroParallelAssociatedHitswithMC(Double_t Ox, Double_t Oy, Double_t R, Short_t TrackFoundaTrackMC, Short_t Nhits,
248 Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7], Short_t ifoundtrack, Int_t sequentialNTrack,
249 Short_t nscitilhitsintrack, Short_t *listscitilhitsintrack, Short_t nParalCommon[MAXTRACKSPEREVENT],
250 Short_t ParalCommonList[MAXTRACKSPEREVENT][nmaxHits], Short_t nSpuriParinTrack[MAXTRACKSPEREVENT],
251 Short_t ParSpuriList[MAXTRACKSPEREVENT][nmaxHits], Short_t nMCParalAlone[MAXTRACKSPEREVENT],
252 Short_t MCParalAloneList[MAXTRACKSPEREVENT][nmaxHits]);
253 void WriteMacroParallelHitsGeneral(
bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t nTracksFoundSoFar);
255 void WriteMacroParallelHitsGeneralConformalwithMC(
bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3],
256 Short_t nTracksFoundSoFar);
258 void WriteMacroParallelHitsConformalwithMCspecial(Int_t Nhits, Double_t auxinfoparalConformal[][5], Short_t nTracksFoundSoFar, Short_t Status, Double_t *trajectory_vertex);
260 void WriteMacroSkewAssociatedHits(
bool goodskewfit, Double_t KAPPA, Double_t FI0, Double_t D, Double_t Fi, Double_t R, Double_t info[][7], Int_t Nincl, Int_t Minclinations[],
261 Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack,
262 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA);
264 void WriteMacroSkewAssociatedHitswithMC(
bool goodskewfit, Double_t KAPPA, Double_t FI0, Double_t D, Double_t Fi, Double_t R, Double_t info[][7], Int_t Nincl,
265 Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack,
266 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSkewCommon, Short_t SkewCommonList[MAXTRACKSPEREVENT][nmaxHits],
267 Short_t daTrackFoundaTrackMC, Short_t nMCSkewAlone[MAXTRACKSPEREVENT], Short_t MCSkewAloneList[MAXTRACKSPEREVENT][nmaxHits],
268 Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA
272 Short_t AssociateSkewHitsToXYTrack(
bool *ExclusionListSkew, Double_t Ox, Double_t Oy, Double_t R, Double_t info[][7], Double_t inclination[][3], Double_t Fi_low_limit,
273 Double_t Fi_up_limit,
276 Short_t Charge, Double_t Fi_initial_helix_referenceframe, Double_t Fi_final_helix_referenceframe,
277 Short_t SkewList[nmaxHits][2],
281 Double_t *ZRadiusafterTilt
284 Short_t AssociateBetterAfterFitSkewHitsToXYTrack(Short_t TemporarynSttSkewhitinTrack,
285 Short_t SkewList[nmaxHits][2],
289 Double_t *ZRadiusafterTilt,
295 Double_t *temporeZDrift,
296 Double_t *temporeZErrorafterTilt,
300 void PndSttOrderingParallel(Double_t oX, Double_t oY, Double_t info[][7], Short_t nParallelHits, Short_t *ListParallelHits, Short_t *Infoparal, Short_t Charge,
301 Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_final_helix_referenceframe, Double_t *U, Double_t *V);
303 void PndSttOrderingSkewandParallel(Short_t *Infoparal, Short_t *Infoskew, Double_t oX, Double_t oY, Double_t Rr, Short_t nSttSkewhit, Short_t *ListSkewHits, Double_t *SList,
304 Short_t Charge, Short_t nParHits, Short_t *ListParHits, Double_t *U, Double_t *V, Short_t *BigList
308 void PndSttOrdering(Double_t oX, Double_t oY, Double_t info[][7], Short_t nParallelHits, Short_t *ListParallelHits, Short_t nSttSkewhit, Short_t *ListSkewHits, Double_t *S,
309 Short_t *Infoparal, Short_t *Infoskew, Short_t *nTotal, Short_t *BigList, Short_t *Charge);
311 void PndSttFindingParallelTrackAngularRange(Double_t oX, Double_t oY, Double_t r, Short_t Charge,
312 Double_t *Fi_low_limit,
315 Double_t *Fi_up_limit,
324 void WriteMacroParallelHitswithRfromMC(Int_t Nhits, Double_t info[][7], Short_t nTracksFoundSoFar,
326 Double_t *Ox, Double_t *Oy, Short_t *daParTrackFoundaTrackMC);
328 void WriteMacroSkewAssociatedHitswithRfromMC(Double_t KAPPA, Double_t FI0, Double_t D, Double_t Fi, Double_t R, Int_t Nhits, Double_t info[][7], Int_t Nincl,
329 Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t nMaxima);
331 void AssociateFoundTrackstoMC(Double_t info[][7], Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHits],
332 Short_t *nSttSkewhitinTrack, Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHits], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT]);
334 void AssociateFoundTrackstoMCbis(
bool *keepit, Double_t info[][7], Short_t nTracksFoundSoFar, Short_t nHitsinTrack[MAXTRACKSPEREVENT],
335 Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSttSkewhitinTrack[MAXTRACKSPEREVENT],
336 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT]);
338 void PndSttInfoXYZParal(Double_t info[][7], Short_t infopar, Double_t Ox, Double_t Oy, Double_t R, Double_t KAPPA, Double_t FI0, Short_t Charge,
342 void PndSttInfoXYZSkew(Double_t Z,
344 Double_t S, Double_t Ox, Double_t Oy, Double_t R, Double_t KAPPA, Double_t FI0, Short_t Charge,
348 void FixDiscontinuitiesFiangleinSZplane(Short_t TemporarynSttSkewhitinTrack, Double_t *S, Double_t *Fi_initial_helix_referenceframe, Short_t Charge);
350 void FindCharge(Double_t oX, Double_t oY, Short_t nParallelHits, Double_t *X, Double_t *Y, Short_t *Charge);
352 bool SttParalCleanup(Double_t GAP, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t FI0, Double_t FiLimitAdmissible, Short_t nHits,
353 Short_t *Listofhits, Double_t info[][7], Double_t RStrawDetMin, Double_t RStrawDetInnerParMax, Double_t RStrawDetOuterParMin, Double_t RStrawDetMax);
355 bool SttSkewCleanup(Double_t GAP, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3], Double_t FI0, Double_t FiLimitAdmissible, Short_t nHits,
356 Short_t *Listofhits, Double_t *S, Double_t info[][7], Double_t RminStrawSkew, Double_t RmaxStrawSkew,
361 bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
364 Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t cut, Short_t maxnum,
369 Short_t IntersectionsWithClosedPolygon(Double_t Ox, Double_t Oy, Double_t R,
374 Short_t nIntersections[2], Double_t XintersectionList[][2], Double_t YintersectionList[][2]);
375 Short_t IntersectionsWithOpenPolygon(Double_t Ox,
385 Double_t *XintersectionList,
386 Double_t *YintersectionList
388 Short_t IntersectionsWithClosedbiHexagonLeft(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R,
393 Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
395 Short_t IntersectionsWithClosedbiHexagonRight(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R,
400 Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
402 bool IntersectionCircle_Segment(Double_t a,
412 Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance);
414 bool IntersectionSciTil_Circle(Double_t posizSciTilx, Double_t posizSciTily,
418 Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2]);
420 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);
422 bool IsInternal(Double_t Px,
423 Double_t Py, Double_t Xtraslation, Double_t Ytraslation, Double_t Theta);
425 void ChooseEntranceExit(Double_t Oxx, Double_t Oyy, Short_t flag, Short_t Charge, Double_t FiStart, Short_t nIntersections[2], Double_t XintersectionList[][2],
426 Double_t YintersectionList[][2],
431 void ChooseEntranceExitbis(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList,
436 Short_t FindTrackEntranceExitbiHexagon(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
438 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
440 Short_t FindTrackEntranceExitbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
442 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
444 Short_t FindTrackEntranceExitbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
446 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
448 void SeparateInnerOuterParallel(
451 Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax,
454 Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits,
456 Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight,
458 Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight
462 Short_t FindTrackEntranceExitHexagonCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
464 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
465 Short_t FindTrackEntranceExitHexagonCircleLeft(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
467 Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
468 Short_t FindTrackEntranceExitHexagonCircleRight(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
470 Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
471 Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2]);
473 bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint);
475 bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap);
477 Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
482 void OrderingUsingConformal(Double_t oX, Double_t oY, Int_t nHits, Double_t
XY[][2],
486 bool FindTrackInXYProjection(Short_t iHit,
489 Int_t *Minclinations, Double_t info[nmaxHits][7],
bool *ExclusionList, Short_t *RConformalIndex, Short_t *FiConformalIndex,
490 Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[
MAXHITSINCELL][nRdivConformal][nFidivConformal],
491 Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t *trajectory_vertex,
492 Double_t infoparalConformal[nmaxHits][5], Double_t posizSciTilx, Double_t posizSciTily, Double_t *S, Double_t *Ox, Double_t *Oy, Double_t *R,
493 Double_t *Fi_low_limit, Double_t *Fi_up_limit, Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_final_helix_referenceframe, Short_t *Charge,
494 Double_t *U, Double_t *V);
496 Short_t AssociateSciTilHit(Double_t Oxx, Double_t Oyy, Double_t Rr,
501 void disegnaSciTilHit(FILE *MACRO,
int ScitilHit,
double posx,
double posy,
int tipo);
503 void disegnaAssiXY(FILE *MACRO,
double xmin,
double xmax,
double ymin,
double ymax);
virtual void AddHitCollection(TClonesArray *mHitArray, TClonesArray *mPointArray)
void SetInputBranchName(char *string1)
const Double_t SEMILENGTH_STRAIGHT
const Double_t STRAWRADIUS
const Double_t VERTICALGAP
void SetTubeArray(TClonesArray *tubeArray)
const Double_t ZCENTER_STRAIGHT
const Double_t DIMENSIONSCITIL