1 #ifndef PNDSTTTRACKFINDERREAL
2 #define PNDSTTTRACKFINDERREAL 1
9 #include "TClonesArray.h"
54 bool doMcComparison,
bool doSciTil);
68 virtual Int_t
DoFind(TClonesArray* trackCandArray, TClonesArray*
trackArray, TClonesArray* helixHitArray);
69 virtual Int_t
DoFind(TClonesArray* mHitArray, TClonesArray* mHelixHitArray);
256 Short_t nHitsinTrack ,
260 Double_t auxinfoparalConformal[][5],
267 Double_t infoparalConformal[][5],Int_t Nparal,
270 Short_t RConformalIndex[nmaxHits],
271 Short_t FiConformalIndex[nmaxHits]
280 void Merge(Short_t nl,
Double_t *left, Short_t *ind_left, Short_t nr,
286 Short_t NRCELLDISTANCE,
287 Short_t NFiCELLDISTANCE,
295 Short_t RConformalIndex[nmaxHits],
296 Short_t FiConformalIndex[nmaxHits],
299 Short_t *ListHitsinTrack
304 Short_t NRCELLDISTANCE,
305 Short_t NFiCELLDISTANCE,
307 Short_t NparallelToSearch,
309 Short_t *ListHitsinTrackinWhichToSearch,
312 Short_t RConformalIndex[nmaxHits],
313 Short_t FiConformalIndex[nmaxHits],
316 Short_t *OutputListHitsinTrack
321 Short_t NFiCELLDISTANCE,
323 Short_t NParallelToSearch,
324 Short_t *ListHitsinTrackinWhichToSearch,
326 Short_t FiConformalIndex[nmaxHits],
327 Short_t *OutputListHitsinTrack
340 Double_t *ErrorDriftRadiusconformal,
354 Short_t nSttSkewhitinTrack,
365 Short_t nSkewHitsinTrack,
383 Short_t *auxListHitsinTrack
393 Short_t nHitsinTrack,
394 Short_t *ListHitsinTrack,
401 Short_t *RConformalIndex,
402 Short_t *FiConformalIndex,
405 Short_t *auxListHitsinTrack
417 Short_t *auxListHitsinTrack
445 Float_t * RemainingFi, Float_t * RemainingCX, Float_t * RemainingCY,
450 Float_t * RemainingFi, Float_t * RemainingCX, Float_t * RemainingCY,
456 bool iscontiguous(
int ncomponents, Short_t * vec1, Short_t *vec2);
460 int nListElements, Short_t List[][2],
461 int & nClusterElementsFound, Short_t ClusterElementsFound[][2],
462 int & nRemainingElements, Short_t RemainingElements[][2]
467 int nListElements, Short_t List[][3],
468 int & nClusterElementsFound, Short_t ClusterElementsFound[][3],
469 int & nRemainingElements, Short_t RemainingElements[][3]
481 Int_t Minclinations[],
485 Short_t nscitilhitsintrack,
486 Short_t *listscitilhitsintrack
493 Short_t TrackFoundaTrackMC,
498 Int_t sequentialNTrack,
499 Short_t nscitilhitsintrack,
500 Short_t *listscitilhitsintrack,
502 Short_t ParalCommonList[MAXTRACKSPEREVENT][
nmaxHits],
503 Short_t nSpuriParinTrack[MAXTRACKSPEREVENT],
504 Short_t ParSpuriList[MAXTRACKSPEREVENT][nmaxHits],
505 Short_t nMCParalAlone[MAXTRACKSPEREVENT],
506 Short_t MCParalAloneList[MAXTRACKSPEREVENT][nmaxHits]
512 Int_t Minclinations[],
514 Short_t nTracksFoundSoFar
521 Int_t Minclinations[],
523 Short_t nTracksFoundSoFar
530 Double_t auxinfoparalConformal[][5],
531 Short_t nTracksFoundSoFar,
532 Short_t Status,
Double_t *trajectory_vertex
547 Int_t Minclinations[],
550 Int_t sequentialNTrack,
551 Short_t nSttSkewhitinTrack,
568 Int_t Minclinations[],
571 Int_t sequentialNTrack,
572 Short_t nSttSkewhitinTrack,
576 Short_t daTrackFoundaTrackMC,
578 Short_t MCSkewAloneList[MAXTRACKSPEREVENT][nmaxHits],
587 bool *ExclusionListSkew,
598 Double_t Fi_initial_helix_referenceframe,
599 Double_t Fi_final_helix_referenceframe,
608 Short_t TemporarynSttSkewhitinTrack,
629 Short_t nParallelHits,
630 Short_t *ListParallelHits,
633 Double_t *Fi_initial_helix_referenceframe,
634 Double_t *Fi_final_helix_referenceframe,
647 Short_t *ListSkewHits,
651 Short_t *ListParHits,
662 Short_t nParallelHits,
663 Short_t *ListParallelHits,
665 Short_t *ListSkewHits,
693 Short_t nTracksFoundSoFar,
697 Short_t * daParTrackFoundaTrackMC
705 Int_t Nincl, Int_t Minclinations[],
Double_t inclination[][3],
706 Int_t imaxima, Int_t nMaxima
714 Short_t nTracksFoundSoFar,
715 Short_t *nHitsinTrack,
717 Short_t *nSttSkewhitinTrack,
726 Short_t nTracksFoundSoFar,
729 Short_t nSttSkewhitinTrack[MAXTRACKSPEREVENT],
730 Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack],
731 Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT]
763 Short_t TemporarynSttSkewhitinTrack,
765 Double_t *Fi_initial_helix_referenceframe,
774 Short_t nParallelHits,
849 Short_t nIntersections[2],
876 Short_t *nIntersections,
891 Short_t *nIntersections,
908 Short_t * Nintersections,
920 Short_t * Nintersections,
952 Short_t nIntersections[2],
964 Short_t nIntersections,
1021 Short_t *nInnerHits,
1022 Short_t *ListInnerHits,
1023 Short_t *nOuterHits,
1024 Short_t *ListOuterHits,
1026 Short_t *nInnerHitsLeft,
1027 Short_t *ListInnerHitsLeft,
1028 Short_t *nInnerHitsRight,
1029 Short_t *ListInnerHitsRight,
1031 Short_t *nOuterHitsLeft,
1032 Short_t *ListOuterHitsLeft,
1033 Short_t *nOuterHitsRight,
1034 Short_t *ListOuterHitsRight
1134 Int_t *Minclinations,
1136 bool *ExclusionList,
1137 Short_t *RConformalIndex,
1138 Short_t *FiConformalIndex,
1141 Short_t nTracksFoundSoFar,
1142 Short_t *nHitsinTrack,
1145 Double_t infoparalConformal[nmaxHits][5],
1154 Double_t *Fi_initial_helix_referenceframe,
1155 Double_t *Fi_final_helix_referenceframe,
Short_t IntersectionsWithClosedbiHexagonRight(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R, Double_t Ami, Double_t Ama, Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList)
void WriteMacroParallelAssociatedHitswithMC(Double_t Ox, Double_t Oy, Double_t R, Short_t TrackFoundaTrackMC, Short_t Nhits, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7], Short_t ifoundtrack, Int_t sequentialNTrack, Short_t nscitilhitsintrack, Short_t *listscitilhitsintrack, Short_t nParalCommon[MAXTRACKSPEREVENT], Short_t ParalCommonList[MAXTRACKSPEREVENT][nmaxHits], Short_t nSpuriParinTrack[MAXTRACKSPEREVENT], Short_t ParSpuriList[MAXTRACKSPEREVENT][nmaxHits], Short_t nMCParalAlone[MAXTRACKSPEREVENT], Short_t MCParalAloneList[MAXTRACKSPEREVENT][nmaxHits])
static const Short_t MAXElementsOverThresholdinHough
static const Double_t KAPPAmax
TClonesArray * fSciTPointArray
TClonesArray * trackArray
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, Double_t Fi_up_limit, Short_t Charge, Double_t Fi_initial_helix_referenceframe, Double_t Fi_final_helix_referenceframe, Short_t SkewList[nmaxHits][2], Double_t *S, Double_t *Z, Double_t *ZDrift, Double_t *ZRadiusafterTilt)
static const Double_t ApotemaMinOuterParStraw
static const Double_t DELTA_FI0
Double_t CalculateArcLength(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2])
static const Double_t KAPPAmin
bool iscontiguous(int ncomponents, Short_t *vec1, Short_t *vec2)
static const Double_t DELTA_R
TClonesArray * fTubeArray
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])
static const Short_t nbinCX
FairMCPoint * GetPointFromCollections(Int_t hitCounter)
static const Short_t nbinFi
virtual ~PndSttTrackFinderReal()
static const Double_t DELTA_KAPPA
void WriteMacroParallelHitsGeneral(bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t nTracksFoundSoFar)
static const Short_t nbinZ
bool IsInsideArc(Double_t Oxx, Double_t Oyy, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Double_t Spoint)
Double_t R_MC[MAXTRACKSPEREVENT]
void PndSttFindingParallelTrackAngularRange(Double_t oX, Double_t oY, Double_t r, Short_t Charge, Double_t *Fi_low_limit, Double_t *Fi_up_limit, Short_t *status, Double_t Rmin, Double_t Rmax)
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])
Double_t posizSciTil[nmaxSciTilHits][3]
Short_t FitHelixCylinder(Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, 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, bool *TypeConf)
virtual void AddHitCollection(TClonesArray *mHitArray, TClonesArray *mPointArray)
bool PndSttAcceptHitsConformal(Double_t distance, Double_t DriftConfR, Double_t StrawConfR)
static const Double_t StrawDriftError
static const Double_t CYmax
static const Double_t VERTICALGAP
static const Short_t NHITSINFIT
Short_t infoskew[nmaxHits]
static const Double_t RStrawDetectorMin
static const Short_t nAdmittedRadia
void PndSttFromXYtoConformal(Double_t trajectory_vertex[3], Double_t info[][7], Int_t Nparal, Double_t infoparalConformal[][5], Int_t *status)
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, Short_t Charge, Short_t nParHits, Short_t *ListParHits, Double_t *U, Double_t *V, Short_t *BigList)
Short_t FindIntersectionsOuterCircle(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t RMax, Double_t Xcross[2], Double_t Ycross[2])
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, Double_t *Posiz)
void FindCharge(Double_t oX, Double_t oY, Short_t nParallelHits, Double_t *X, Double_t *Y, Short_t *Charge)
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, Double_t *POINTS)
static const Short_t MAXMCTRACKS
void disegnaAssiXY(FILE *MACRO, double xmin, double xmax, double ymin, double ymax)
Short_t PndSttFindTrackPatterninBoxConformal(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal, Short_t ihit, Short_t nRcell, Short_t nFicell, Double_t info[][7], bool Exclusion_List[nmaxHits], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits], Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *ListHitsinTrack)
static const Double_t SKEWinclination_DEGREES
virtual Int_t DoFind(TClonesArray *trackCandArray, TClonesArray *trackArray, TClonesArray *helixHitArray)
void plottamentiParalleleconMassimo(char *tipo, Int_t nMaxima, Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX, Float_t *RemainingCY, Double_t Rup, Double_t Rlow, Double_t Dup, Double_t Dlow, Double_t Fiup, Double_t Filow)
Double_t CxMC[MAXTRACKSPEREVENT]
static const Double_t Zmax
static const Double_t Dmax
void SetInputBranchName(char *string1)
static const int nmassimo
static const Short_t nbinR
static const Double_t DELTA_D
static const Double_t Dmin
void AssociateFoundTrackstoMCbis(bool *keepit, Double_t info[][7], Short_t nTracksFoundSoFar, Short_t nHitsinTrack[MAXTRACKSPEREVENT], Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSttSkewhitinTrack[MAXTRACKSPEREVENT], Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT])
static const Double_t PMAX
static const Short_t nbinCY
static const bool YesClean
Short_t MINIMUMOUTERHITSPERTRACK
void clustering2(Short_t vec1[2], int nListElements, Short_t List[][2], int &nClusterElementsFound, Short_t ClusterElementsFound[][2], int &nRemainingElements, Short_t RemainingElements[][2])
bool FindTrackInXYProjection(Short_t iHit, Short_t nRcell, Short_t nFicell, Int_t *Minclinations, Double_t info[nmaxHits][7], bool *ExclusionList, Short_t *RConformalIndex, Short_t *FiConformalIndex, Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[MAXHITSINCELL][nRdivConformal][nFidivConformal], Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t *trajectory_vertex, Double_t infoparalConformal[nmaxHits][5], Double_t posizSciTilx, Double_t posizSciTily, Double_t *S, Double_t *Ox, Double_t *Oy, Double_t *R, 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, Double_t *U, Double_t *V)
Double_t GAMMA[MAXTRACKSPEREVENT]
void Initialization_ClassVariables()
Double_t ZCENTER_STRAIGHT
CalculatedCircles PndSttTrkFindCircles(Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t, Double_t)
Short_t nSttSkewhitInMCTrack[MAXTRACKSPEREVENT]
static const Short_t nmaxinclinationversors
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 Ox, Double_t Oy, Double_t R, Short_t *Nintersections, Double_t XintersectionList[2], Double_t YintersectionList[2], Double_t *distance)
static const Short_t MAXHITSINCELL
static const Short_t nbinD
Short_t AssociateSciTilHit(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t *List, Double_t *esse)
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, Short_t *Infoparal, Short_t *Infoskew, Short_t *nTotal, Short_t *BigList, Short_t *Charge)
TClonesArray * fSciTHitArray
static const Short_t MINIMUMCOUNTSDFiR
static const Short_t MINIMUMCOUNTSKAPPAFI0
static const Short_t nmaxSciTilHits
static const Double_t CXmin
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])
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])
Double_t SEMILENGTH_STRAIGHT
Short_t PndSttTrkAssociatedParallelHitsToHelixQuater(bool ExclusionList[nmaxHits], Double_t m, Double_t q, Short_t Status, Short_t nHitsinTrack, Short_t *ListHitsinTrack, Int_t NhitsParallel, Double_t Ox, Double_t Oy, Double_t R, Double_t info[][7], Double_t infoparalConformal[][5], Short_t *RConformalIndex, Short_t *FiConformalIndex, Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *auxListHitsinTrack)
Short_t nRdivConformalEffective
Double_t BETA[MAXTRACKSPEREVENT]
Short_t MINIMUMHITSPERTRACK
static const Short_t nFidivConformal
void OrderingUsingConformal(Double_t oX, Double_t oY, Int_t nHits, Double_t XY[][2], Int_t Charge, Short_t *ListHits)
Double_t S_SciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHits]
void PndSttInfoXYZSkew(Double_t Z, Double_t ZDrift, Double_t S, Double_t Ox, Double_t Oy, Double_t R, Double_t KAPPA, Double_t FI0, Short_t Charge, Double_t *Posiz)
void PndSttOrderingParallel(Double_t oX, Double_t oY, Double_t info[][7], Short_t nParallelHits, Short_t *ListParallelHits, Short_t *Infoparal, Short_t Charge, Double_t *Fi_initial_helix_referenceframe, Double_t *Fi_final_helix_referenceframe, Double_t *U, Double_t *V)
static const Short_t MAXTRACKSPEREVENT
static const Double_t Rmin
static const Double_t Zmin
TClonesArray * fSttHitArray
static const Double_t ApotemaMinSkewStraw
static const Double_t Rmax
static const Short_t nmaxHits
void SeparateInnerOuterParallel(Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t RStrawDetInnerParMax, Short_t *nInnerHits, Short_t *ListInnerHits, Short_t *nOuterHits, Short_t *ListOuterHits, Short_t *nInnerHitsLeft, Short_t *ListInnerHitsLeft, Short_t *nInnerHitsRight, Short_t *ListInnerHitsRight, Short_t *nOuterHitsLeft, Short_t *ListOuterHitsLeft, Short_t *nOuterHitsRight, Short_t *ListOuterHitsRight)
TList fPointCollectionList
void AssociateFoundTrackstoMC(Double_t info[][7], Short_t nTracksFoundSoFar, Short_t *nHitsinTrack, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHits], Short_t *nSttSkewhitinTrack, Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHits], Short_t daTrackFoundaTrackMC[MAXTRACKSPEREVENT])
void SetTubeArray(TClonesArray *tubeArray)
void clustering3(Short_t vec1[3], int nListElements, Short_t List[][3], int &nClusterElementsFound, Short_t ClusterElementsFound[][3], int &nRemainingElements, Short_t RemainingElements[][3])
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, Short_t *Listofhits, Double_t *S, Double_t info[][7], Double_t RminStrawSkew, Double_t RmaxStrawSkew, Double_t cut, Short_t maxnum)
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)
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])
Double_t veritaMC[nmaxHits][3]
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])
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, Double_t Fi_up, Short_t *auxListHitsinTrack)
static const Double_t STRAWRADIUS
void plottamentiParalleleGenerali(Int_t Nremaining, Float_t *RemainingR, Float_t *RemainingD, Float_t *RemainingFi, Float_t *RemainingCX, Float_t *RemainingCY, bool *Goodflag)
Double_t radiaConf[nRdivConformal]
bool BadTrack_ParStt(Double_t Oxx, Double_t Oyy, Double_t Rr, Short_t Charge, Double_t Xcross[2], Double_t Ycross[2], Short_t nHits, Short_t *ListHits, Double_t info[][7], Double_t cut, Short_t maxnum, Short_t islack)
bool IsInTargetPipe(Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t fi0, Double_t kappa, Short_t charge, Double_t gap)
CalculatedHelix PndSttTrkFindHelix(Double_t Ox, Double_t Oy, Double_t R, Double_t Zcenter1, Double_t Zcenter2, Double_t Zcenter3, Double_t semilengthStraight1, Double_t semilengthStraight2, Double_t semilengthStraight3, Double_t C0x1, Double_t C0y1, Double_t C0z1, Double_t semilengthSkew1, Double_t r1, 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, Double_t vy2, Double_t vz2, Int_t *STATUS)
static const Short_t nmaxHitsInTrack
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], Double_t YintersectionList[][2], Double_t Xcross[2], Double_t Ycross[2])
void disegnaSciTilHit(FILE *MACRO, int ScitilHit, double posx, double posy, int tipo)
Short_t PndSttTrkAssociatedParallelHitsToHelix(Double_t Ox, Double_t Oy, Double_t R, Int_t Nhits, Double_t info[][7], Short_t *auxListHitsinTrack)
static const Double_t CVEL
TClonesArray * fMCTrackArray
Short_t FindTrackEntranceExitbiHexagon(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 PndSttFitSZspacebis(Short_t nSttSkewhitinTrack, Double_t *S, Double_t *Z, Double_t *DriftRadius, Double_t FInot, Short_t NMAX, Double_t *m)
void Merge_Sort(Short_t n_ele, Double_t *array, Short_t *ind)
static const Double_t CXmax
PndSttHit * GetHitFromCollections(Int_t hitCounter)
Short_t nSciTilHitsinTrack[MAXTRACKSPEREVENT]
static const Double_t CYmin
void WriteMacroParallelHitsGeneralConformalwithMC(bool *keepit, Int_t Nhits, Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t nTracksFoundSoFar)
void FixDiscontinuitiesFiangleinSZplane(Short_t TemporarynSttSkewhitinTrack, Double_t *S, Double_t *Fi_initial_helix_referenceframe, Short_t Charge)
Short_t PndSttFindTrackPatterninBoxConformalSpecial(Short_t NRCELLDISTANCE, Short_t NFiCELLDISTANCE, Short_t Nparal, Short_t NparallelToSearch, Short_t iSeed, Short_t *ListHitsinTrackinWhichToSearch, Double_t info[][7], bool InclusionList[nmaxHits], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits], Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t *OutputListHitsinTrack)
Double_t CyMC[MAXTRACKSPEREVENT]
void WriteMacroParallelHitsConformalwithMCspecial(Int_t Nhits, Double_t auxinfoparalConformal[][5], Short_t nTracksFoundSoFar, Short_t Status, Double_t *trajectory_vertex)
static const Short_t nbinKAPPA
Short_t IntersectionsWithClosedPolygon(Double_t Ox, Double_t Oy, Double_t R, Double_t Rmi, Double_t Rma, Short_t nIntersections[2], Double_t XintersectionList[][2], Double_t YintersectionList[][2])
void WriteMacroParallelHitswithRfromMC(Int_t Nhits, Double_t info[][7], Short_t nTracksFoundSoFar, Double_t *Ox, Double_t *Oy, Short_t *daParTrackFoundaTrackMC)
static const Short_t DELTAnR
static const Short_t nbinFI0
static const Double_t ApotemaMaxInnerParStraw
Short_t ListSciTilHitsinTrack[MAXTRACKSPEREVENT][nmaxSciTilHitsinTrack]
Short_t AssociateBetterAfterFitSkewHitsToXYTrack(Short_t TemporarynSttSkewhitinTrack, Short_t SkewList[nmaxHits][2], Double_t *S, Double_t *Z, Double_t *ZDrift, Double_t *ZRadiusafterTilt, Double_t KAPPA, Double_t FI0, Short_t *tempore, Double_t *temporeS, Double_t *temporeZ, Double_t *temporeZDrift, Double_t *temporeZErrorafterTilt, Int_t *STATUS)
Short_t IntersectionsWithOpenPolygon(Double_t Ox, Double_t Oy, Double_t R, 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 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[], Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack, Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA)
bool TypeConf[MAXTRACKSPEREVENT]
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)
Double_t ALFA[MAXTRACKSPEREVENT]
bool IsInternal(Double_t Px, Double_t Py, Double_t Xtraslation, Double_t Ytraslation, Double_t Theta)
static const Double_t BFIELD
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, Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t nMaxima)
Short_t FindTrackEntranceExitHexagonCircle(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])
static const Double_t DELTA_Fi
Short_t nHitsInMCTrack[MAXTRACKSPEREVENT]
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, Int_t Minclinations[], Double_t inclination[][3], Int_t imaxima, Int_t sequentialNTrack, Short_t nSttSkewhitinTrack, Short_t ListSkewHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Short_t nSkewCommon, Short_t SkewCommonList[MAXTRACKSPEREVENT][nmaxHits], Short_t daTrackFoundaTrackMC, Short_t nMCSkewAlone[MAXTRACKSPEREVENT], Short_t MCSkewAloneList[MAXTRACKSPEREVENT][nmaxHits], Short_t nscitilhits, Double_t *ESSE, Double_t *ZETA)
bool InclusionListSciTil[nmaxSciTilHits]
void PndSttFromXYtoConformal2(Double_t trajectory_vertex[3], Short_t nHitsinTrack, Short_t iExclude, Short_t *ListHits, Double_t info[][7], Double_t auxinfoparalConformal[][5], Int_t *status)
Short_t infoparal[nmaxHits]
static const Short_t nmaxSciTilHitsinTrack
void WriteMacroParallelAssociatedHits(Double_t Ox, Double_t Oy, Double_t R, Short_t Nhits, Short_t ListHitsinTrack[MAXTRACKSPEREVENT][nmaxHitsInTrack], Double_t info[][7], Int_t Nincl, Int_t Minclinations[], Double_t inclination[][3], Short_t imaxima, Int_t sequencial, Short_t nscitilhitsintrack, Short_t *listscitilhitsintrack)
Short_t IntersectionsWithClosedbiHexagonLeft(Double_t vgap, Double_t Ox, Double_t Oy, Double_t R, Double_t Ami, Double_t Ama, Short_t *nIntersections, Double_t *XintersectionList, Double_t *YintersectionList)
static const Double_t RStrawDetectorMax
void PndSttBoxConformalFilling(bool ExclusionList[nmaxHits], Double_t infoparalConformal[][5], Int_t Nparal, Short_t nBoxConformal[nRdivConformal][nFidivConformal], Short_t HitsinBoxConformal[][nRdivConformal][nFidivConformal], Short_t RConformalIndex[nmaxHits], Short_t FiConformalIndex[nmaxHits])
static const Double_t DIMENSIONSCITIL
ClassDef(PndSttTrackFinderReal, 1)
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)
static const Double_t ApotemaMaxSkewStraw
static const Double_t RMAXSCITIL
Short_t PndSttFindTrackStrictCollection(Short_t NFiCELLDISTANCE, Short_t iSeed, Short_t NParallelToSearch, Short_t *ListHitsinTrackinWhichToSearch, bool ExclusionList[nmaxHits], Short_t FiConformalIndex[nmaxHits], Short_t *OutputListHitsinTrack)
static const Short_t nRdivConformal
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, Short_t *Listofhits, Double_t info[][7], Double_t RStrawDetMin, Double_t RStrawDetInnerParMax, Double_t RStrawDetOuterParMin, Double_t RStrawDetMax)