13 #ifndef PNDSTTTRACKFINDERREAL 14 #define PNDSTTTRACKFINDERREAL 1 21 #include "TClonesArray.h" 39 Double_t KAPPA[3][16];
66 void WriteHistograms();
69 virtual Int_t DoFind(TClonesArray *trackCandArray, TClonesArray *trackArray, TClonesArray *helixHitArray);
70 virtual Int_t DoFind(TClonesArray *mHitArray, TClonesArray *mHelixHitArray);
74 fHitCollectionList.Add(mHitArray);
75 fPointCollectionList.Add(mPointArray);
78 void SetTubeArray(TClonesArray *tubeArray) { fTubeArray = tubeArray; };
82 sprintf(fSttBranch,
"%s", string1);
89 static const Short_t nmaxHits = 1000,
92 nmaxSciTilHitsinTrack = 2,
93 MAXMCTRACKS = 10000, MAXTRACKSPEREVENT = 50,
MAXHITSINCELL = 50, nmaxinclinationversors = 20, nAdmittedRadia = 3, nbinCX = 100, nbinCY = 100, nbinZ = 100, nbinR = 100,
94 nbinD = 250, nbinFi = 250, nbinKAPPA = 200, nbinFI0 = 200, MINIMUMCOUNTSDFiR = 18, MINIMUMCOUNTSKAPPAFI0 = 5, MAXElementsOverThresholdinHough = 500,
95 nRdivConformal = 10, NHITSINFIT = 15,
98 static const Double_t
PI = 3.141592654,
99 RStrawDetectorMin = 16.119,
100 ApotemaMaxInnerParStraw = 23.246827,
101 ApotemaMinSkewStraw = 23.246827,
102 ApotemaMaxSkewStraw = 31.517569,
103 ApotemaMinOuterParStraw = 31.863369,
104 RStrawDetectorMax = 40.73,
107 Rmin = 20., Rmax = 700.,
PMAX = 100.,
STRAWRADIUS = 0.5, StrawDriftError = 0.02, SKEWinclination_DEGREES = 3., CXmin = -150., CXmax = 150., CYmin = -300., CYmax = 300.,
108 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,
114 static const bool YesClean =
false;
115 bool YesSciTil, InclusionListSciTil[nmaxSciTilHits];
117 static const Short_t nFidivConformal = (Short_t)(3.141592654 * 45. / 0.5);
119 static const int nmassimo = 50,
124 bool iplotta, doMcComparison, TypeConf[MAXTRACKSPEREVENT];
128 TH1F *hdist, *hdistgoodlast, *hdistbadlast;
139 Double_t veritaMC[nmaxHits][3];
141 Short_t MINIMUMHITSPERTRACK, MINIMUMOUTERHITSPERTRACK, nRdivConformalEffective, nSciTilHits, nSttSkewhit, infoparal[nmaxHits], infoskew[nmaxHits],
142 nHitsInMCTrack[MAXTRACKSPEREVENT], nSciTilHitsinTrack[MAXTRACKSPEREVENT], nSttSkewhitInMCTrack[MAXTRACKSPEREVENT],
143 ListSciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHitsinTrack];
147 Double_t Fimin, Fimax, FI0min, FI0max, stepD, stepFi, stepR, stepKAPPA, stepFI0, stepfineKAPPA, stepfineFI0,
SEMILENGTH_STRAIGHT,
ZCENTER_STRAIGHT, ALFA[MAXTRACKSPEREVENT],
148 BETA[MAXTRACKSPEREVENT], GAMMA[MAXTRACKSPEREVENT], radiaConf[nRdivConformal], CxMC[MAXTRACKSPEREVENT], CyMC[MAXTRACKSPEREVENT], R_MC[MAXTRACKSPEREVENT],
149 posizSciTil[nmaxSciTilHits][3], S_SciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHits];
151 TClonesArray *fMCTrackArray, *fSciTPointArray, *fSciTHitArray;
153 TClonesArray *fTubeArray;
156 TList fHitCollectionList;
157 TList fPointCollectionList;
159 PndSttHit *GetHitFromCollections(Int_t hitCounter);
160 FairMCPoint *GetPointFromCollections(Int_t hitCounter);
161 TClonesArray *fSttHitArray;
164 char fSttBranch[100];
166 void Initialization_ClassVariables();
168 void PndSttFromXYtoConformal(Double_t trajectory_vertex[3], Double_t info[][7], Int_t Nparal, Double_t infoparalConformal[][5], Int_t *
status);
170 void PndSttFromXYtoConformal2(Double_t trajectory_vertex[3], Short_t nHitsinTrack, Short_t iExclude, Short_t *ListHits, Double_t info[][7], Double_t auxinfoparalConformal[][5],
173 void PndSttBoxConformalFilling(
bool ExclusionList[nmaxHits], Double_t infoparalConformal[][5], Int_t Nparal, Short_t nBoxConformal[nRdivConformal][nFidivConformal],
174 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits]);
176 void Merge_Sort(Short_t n_ele, Double_t *array, Short_t *ind);
178 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);
180 Short_t PndSttFindTrackPatterninBoxConformal(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal,
185 Double_t info[][7],
bool Exclusion_List[nmaxHits], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits],
186 Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal],
187 Short_t *ListHitsinTrack);
189 Short_t PndSttFindTrackPatterninBoxConformalSpecial(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal, Short_t NparallelToSearch, Short_t iSeed,
190 Short_t *ListHitsinTrackinWhichToSearch, Double_t info[][7],
bool InclusionList[nmaxHits], Short_t RConformalIndex[nmaxHits],
191 Short_t FiConformalIndex[nmaxHits], Short_t nBoxConformal[nRdivConformal][nFidivConformal],
192 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *OutputListHitsinTrack);
194 Short_t PndSttFindTrackStrictCollection(Short_t NFiCELLDISTANCE,
196 Short_t NParallelToSearch,
197 Short_t *ListHitsinTrackinWhichToSearch,
bool ExclusionList[nmaxHits], Short_t FiConformalIndex[nmaxHits],
198 Short_t *OutputListHitsinTrack);
203 Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal,
204 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,
207 Short_t PndSttFitSZspacebis(Short_t nSttSkewhitinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t FInot, Short_t NMAX, Double_t *m);
210 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);
212 Short_t PndSttTrkAssociatedParallelHitsToHelix(Double_t Ox, Double_t Oy, Double_t
R, Int_t Nhits, Double_t info[][7],
213 Short_t *auxListHitsinTrack
216 Short_t PndSttTrkAssociatedParallelHitsToHelixQuater(
bool ExclusionList[nmaxHits], Double_t m, Double_t q, Short_t Status, Short_t nHitsinTrack, Short_t *ListHitsinTrack,
217 Int_t NhitsParallel, Double_t Ox, Double_t Oy, Double_t R, Double_t info[][7], Double_t infoparalConformal[][5],
218 Short_t *RConformalIndex, Short_t *FiConformalIndex, Short_t nBoxConformal[nRdivConformal][nFidivConformal],
219 Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *auxListHitsinTrack);
221 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,
222 Double_t Fi_up, Short_t *auxListHitsinTrack);
224 bool PndSttAcceptHitsConformal(Double_t distance, Double_t DriftConfR, Double_t StrawConfR);
226 CalculatedCircles PndSttTrkFindCircles(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t);
228 CalculatedHelix PndSttTrkFindHelix(Double_t Ox, Double_t Oy, Double_t R, Double_t Zcenter1, Double_t Zcenter2, Double_t Zcenter3, Double_t semilengthStraight1,
229 Double_t semilengthStraight2, Double_t semilengthStraight3, Double_t C0x1, Double_t C0y1, Double_t C0z1, Double_t semilengthSkew1, Double_t r1,
230 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,
231 Double_t vy2, Double_t vz2, Int_t *STATUS);
233 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,
236 void plottamentiParalleleGenerali(Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX, Float_t *RemainingCY,
bool *Goodflag);
238 void plottamentiParalleleconMassimo(
char *tipo, Int_t nMaxima, Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX,
239 Float_t *RemainingCY, Double_t Rup, Double_t Rlow, Double_t Dup, Double_t Dlow, Double_t Fiup, Double_t Filow);
241 bool iscontiguous(
int ncomponents, Short_t *vec1, Short_t *vec2);
243 void clustering2(Short_t vec1[2],
244 int nListElements, Short_t List[][2],
245 int &nClusterElementsFound, Short_t ClusterElementsFound[][2],
246 int &nRemainingElements, Short_t RemainingElements[][2]
249 void clustering3(Short_t vec1[3],
250 int nListElements, Short_t List[][3],
251 int &nClusterElementsFound, Short_t ClusterElementsFound[][3],
252 int &nRemainingElements, Short_t RemainingElements[][3]
255 void WriteMacroParallelAssociatedHits(Double_t Ox, Double_t Oy, Double_t R, Short_t Nhits, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7],
256 Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t imaxima, Int_t sequencial, Short_t nscitilhitsintrack,
257 Short_t *listscitilhitsintrack);
259 void WriteMacroParallelAssociatedHitswithMC(Double_t Ox, Double_t Oy, Double_t R, Short_t TrackFoundaTrackMC, Short_t Nhits,
260 Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7], Short_t ifoundtrack, Int_t sequentialNTrack,
261 Short_t nscitilhitsintrack, Short_t *listscitilhitsintrack, Short_t nParalCommon[MAXTRACKSPEREVENT],
262 Short_t ParalCommonList[MAXTRACKSPEREVENT][nmaxHits], Short_t nSpuriParinTrack[MAXTRACKSPEREVENT],
263 Short_t ParSpuriList[MAXTRACKSPEREVENT][nmaxHits], Short_t nMCParalAlone[MAXTRACKSPEREVENT],
264 Short_t MCParalAloneList[MAXTRACKSPEREVENT][nmaxHits]);
265 void WriteMacroParallelHitsGeneral(
bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t nTracksFoundSoFar);
267 void WriteMacroParallelHitsGeneralConformalwithMC(
bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3],
268 Short_t nTracksFoundSoFar);
270 void WriteMacroParallelHitsConformalwithMCspecial(Int_t Nhits, Double_t auxinfoparalConformal[][5], Short_t nTracksFoundSoFar, Short_t Status, Double_t *trajectory_vertex);
272 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[],
273 Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack,
274 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA);
276 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,
277 Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack,
278 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSkewCommon, Short_t SkewCommonList[MAXTRACKSPEREVENT][nmaxHits],
279 Short_t daTrackFoundaTrackMC, Short_t nMCSkewAlone[MAXTRACKSPEREVENT], Short_t MCSkewAloneList[MAXTRACKSPEREVENT][nmaxHits],
280 Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA
284 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,
285 Double_t Fi_up_limit,
288 Short_t Charge, Double_t Fi_initial_helix_referenceframe, Double_t Fi_final_helix_referenceframe,
289 Short_t SkewList[nmaxHits][2],
293 Double_t *ZRadiusafterTilt
296 Short_t AssociateBetterAfterFitSkewHitsToXYTrack(Short_t TemporarynSttSkewhitinTrack,
297 Short_t SkewList[nmaxHits][2],
301 Double_t *ZRadiusafterTilt,
307 Double_t *temporeZDrift,
308 Double_t *temporeZErrorafterTilt,
312 void PndSttOrderingParallel(Double_t oX, Double_t oY, Double_t info[][7], Short_t nParallelHits, Short_t *ListParallelHits, Short_t *Infoparal, Short_t Charge,
313 Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_final_helix_referenceframe, Double_t *U, Double_t *V);
315 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,
316 Short_t Charge, Short_t nParHits, Short_t *ListParHits, Double_t *U, Double_t *V, Short_t *BigList
320 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,
321 Short_t *Infoparal, Short_t *Infoskew, Short_t *nTotal, Short_t *BigList, Short_t *Charge);
323 void PndSttFindingParallelTrackAngularRange(Double_t oX, Double_t oY, Double_t r, Short_t Charge,
324 Double_t *Fi_low_limit,
327 Double_t *Fi_up_limit,
336 void WriteMacroParallelHitswithRfromMC(Int_t Nhits, Double_t info[][7], Short_t nTracksFoundSoFar,
338 Double_t *Ox, Double_t *Oy, Short_t *daParTrackFoundaTrackMC);
340 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,
341 Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t nMaxima);
343 void AssociateFoundTrackstoMC(Double_t info[][7], Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHits],
344 Short_t *nSttSkewhitinTrack, Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHits], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT]);
346 void AssociateFoundTrackstoMCbis(
bool *keepit, Double_t info[][7], Short_t nTracksFoundSoFar, Short_t nHitsinTrack[MAXTRACKSPEREVENT],
347 Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSttSkewhitinTrack[MAXTRACKSPEREVENT],
348 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT]);
350 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,
354 void PndSttInfoXYZSkew(Double_t Z,
356 Double_t S, Double_t Ox, Double_t Oy, Double_t R, Double_t KAPPA, Double_t FI0, Short_t Charge,
360 void FixDiscontinuitiesFiangleinSZplane(Short_t TemporarynSttSkewhitinTrack, Double_t *S, Double_t *Fi_initial_helix_referenceframe, Short_t Charge);
362 void FindCharge(Double_t oX, Double_t oY, Short_t nParallelHits, Double_t *X, Double_t *Y, Short_t *Charge);
364 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,
365 Short_t *Listofhits, Double_t info[][7], Double_t RStrawDetMin, Double_t RStrawDetInnerParMax, Double_t RStrawDetOuterParMin, Double_t RStrawDetMax);
367 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,
368 Short_t *Listofhits, Double_t *S, Double_t info[][7], Double_t RminStrawSkew, Double_t RmaxStrawSkew,
373 bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
376 Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t cut, Short_t maxnum,
381 Short_t IntersectionsWithClosedPolygon(Double_t Ox, Double_t Oy, Double_t R,
386 Short_t nIntersections[2], Double_t XintersectionList[][2], Double_t YintersectionList[][2]);
387 Short_t IntersectionsWithOpenPolygon(Double_t Ox,
397 Double_t *XintersectionList,
398 Double_t *YintersectionList
400 Short_t IntersectionsWithClosedbiHexagonLeft(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R,
405 Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
407 Short_t IntersectionsWithClosedbiHexagonRight(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R,
412 Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList);
414 bool IntersectionCircle_Segment(Double_t a,
424 Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance);
426 bool IntersectionSciTil_Circle(Double_t posizSciTilx, Double_t posizSciTily,
430 Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2]);
432 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);
434 bool IsInternal(Double_t Px,
435 Double_t Py, Double_t Xtraslation, Double_t Ytraslation, Double_t Theta);
437 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],
438 Double_t YintersectionList[][2],
443 void ChooseEntranceExitbis(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t FiStart, Short_t nIntersections, Double_t *XintersectionList, Double_t *YintersectionList,
448 Short_t FindTrackEntranceExitbiHexagon(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
450 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
452 Short_t FindTrackEntranceExitbiHexagonLeft(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
454 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
456 Short_t FindTrackEntranceExitbiHexagonRight(Double_t vgap, Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
458 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
460 void SeparateInnerOuterParallel(
463 Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax,
466 Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits,
468 Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight,
470 Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight
474 Short_t FindTrackEntranceExitHexagonCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
476 Double_t ApotemaMax, Double_t Xcross[2], Double_t Ycross[2]);
477 Short_t FindTrackEntranceExitHexagonCircleLeft(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
479 Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
480 Short_t FindTrackEntranceExitHexagonCircleRight(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Start[3],
482 Double_t ApotemaMax, Double_t GAP, Double_t Xcross[2], Double_t Ycross[2]);
483 Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2]);
485 bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint);
487 bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap);
489 Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge,
494 void OrderingUsingConformal(Double_t oX, Double_t oY, Int_t nHits, Double_t
XY[][2],
498 bool FindTrackInXYProjection(Short_t iHit,
501 Int_t *Minclinations, Double_t info[nmaxHits][7],
bool *ExclusionList, Short_t *RConformalIndex, Short_t *FiConformalIndex,
502 Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[
MAXHITSINCELL][nRdivConformal][nFidivConformal],
503 Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t *trajectory_vertex,
504 Double_t infoparalConformal[nmaxHits][5], Double_t posizSciTilx, Double_t posizSciTily, Double_t *S, Double_t *Ox, Double_t *Oy, Double_t *R,
505 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,
506 Double_t *U, Double_t *V);
508 Short_t AssociateSciTilHit(Double_t Oxx, Double_t Oyy, Double_t Rr,
513 void disegnaSciTilHit(FILE *MACRO,
int ScitilHit,
double posx,
double posy,
int tipo);
515 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