416 nFitPoints = nSttParHitsinTrack;
419 for(j=0; j< nFitPoints ; j++){
420 Xconformal[j] =infoparalConformal[ListSttParHitsinTrack[j]][0];
421 Yconformal[j] =infoparalConformal[ListSttParHitsinTrack[j]][1];
422 ErrorDriftRadiusconformal[j]=
423 infoparalConformal[ListSttParHitsinTrack[j]][2];
424 DriftRadiusconformal[j]=
425 infoparalConformal[ListSttParHitsinTrack[j]][2];
443 DriftRadiusconformal,
444 ErrorDriftRadiusconformal,
463 if(
status < 0 )
return false;
467 Ox= -0.5*(*(InOut->
ALFA));
468 Oy= -0.5*(*(InOut->
BETA));
469 R= Ox * Ox + Oy * Oy - (*(InOut->
GAMMA));
473 if(
R < 0. )
return false;
475 aaa =
sqrt( Ox * Ox + Oy * Oy );
480 if(aaa< 0.9*InOut->apotemastrawdetectormin/2.)
return false;
483 if (
R + aaa < InOut->apotemastrawdetectormin *0.9 )
return false;
489 Short_t nSttSkewHitsinTrack[10],
490 nSciTilHitsinTrack[10];
491 Short_t ListSttSkewHitsinTrack[100];
494 nSttSkewHitsinTrack[0] = 0;
495 nSciTilHitsinTrack[0] = 0;
496 nMvdPixelHitsinTrack = 0;
497 nMvdStripHitsinTrack = 0;
499 cout<<
"\tstampa in CTFind..2.cxx, dopo FitHelixCylinder :" <<endl;
500 Print2.stampetta2(tkeepit,ListMvdPixelHitsinTrack,
501 ListMvdStripHitsinTrack,ListSttParHitsinTrack,
503 &nMvdPixelHitsinTrack,&nMvdStripHitsinTrack,&nSttParHitsinTrack,
505 nSttSkewHitsinTrack,nSciTilHitsinTrack,1,
519 GeomCalculator.FindingParallelTrackAngularRange2(
529 if(flagStt < 0)
return false;
535 fiCenter =
atan2(-Oy,-Ox);
536 if( fiCenter < 0. ) fiCenter +=
two_pi;
586 if( NN < InOut->minimumhitspertrack )
return false;
592 nSttParHitsinTrack=
NN;
596 for(
i=0;
i< nSttParHitsinTrack;
i++){
597 ListSttParHitsinTrack[
i]=auxListHitsinTrack[
i];
606 Short_t nSttSkewHitsinTrack[10],
607 nSciTilHitsinTrack[10];
608 Short_t ListSttSkewHitsinTrack[100];
611 nSttSkewHitsinTrack[0] = 0;
612 nSciTilHitsinTrack[0] = 0;
614 cout<<
"\tstampa in CTFind..2.cxx, dopo TrkAssociatedParallelHitsToHelix5 :"<<endl;
615 Print2.stampetta2(tkeepit,ListMvdPixelHitsinTrack,
616 ListMvdStripHitsinTrack,ListSttParHitsinTrack,
618 &nMvdPixelHitsinTrack,&nMvdStripHitsinTrack,&nSttParHitsinTrack,
620 nSttSkewHitsinTrack,nSciTilHitsinTrack,1,
632 highqualitycut = 0.2;
652 nMvdPixelHitsinTrack,
653 ListMvdPixelHitsinTrack,
654 nMvdStripHitsinTrack,
655 ListMvdStripHitsinTrack
664 Short_t nSttSkewHitsinTrack[10],
665 nSciTilHitsinTrack[10];
666 Short_t ListSttSkewHitsinTrack[100];
669 nSttSkewHitsinTrack[0] = 0;
670 nSciTilHitsinTrack[0] = 0;
672 cout<<
"\tstampa in CTFind..2.cxx, dopo AddMvdHitsToSttTracks (m = "<<
m<<
", q = "<<q<<
", atan(m) = "<<atan(
m)<<
"):"<<endl;
673 Print2.stampetta2(tkeepit,ListMvdPixelHitsinTrack,
674 ListMvdStripHitsinTrack,ListSttParHitsinTrack,
676 &nMvdPixelHitsinTrack,&nMvdStripHitsinTrack,&nSttParHitsinTrack,
678 nSttSkewHitsinTrack,nSciTilHitsinTrack,1,
692 if( nMvdPixelHitsinTrack + nMvdStripHitsinTrack == 0 ){
695 *(InOut->
ALFA) = -2.* Ox ;
696 *(InOut->
BETA) = -2.* Oy ;
697 *(InOut->
GAMMA) = Ox * Ox + Oy * Oy -
R*
R;
714 for(j=0; j<nMvdPixelHitsinTrack; j++){
717 r2 = XMvdPixel[ListMvdPixelHitsinTrack[j]]*XMvdPixel[ListMvdPixelHitsinTrack[j]]+
718 YMvdPixel[ListMvdPixelHitsinTrack[j]]*YMvdPixel[ListMvdPixelHitsinTrack[j]];
719 Xconformal[j] = XMvdPixel[ListMvdPixelHitsinTrack[j]]/
r2 ;
720 Yconformal[j] = YMvdPixel[ListMvdPixelHitsinTrack[j]]/
r2 ;
723 gamma =
r2 - 0.01 * 0.01 ;
725 ErrorDriftRadiusconformal[j]= 3.*delta /
fabs(gamma);
728 DriftRadiusconformal[j]= -1;
735 for(j=0; j<nMvdStripHitsinTrack; j++){
737 r2 = XMvdStrip[ListMvdStripHitsinTrack[j]]*XMvdStrip[ListMvdStripHitsinTrack[j]]+
738 YMvdStrip[ListMvdStripHitsinTrack[j]]*YMvdStrip[ListMvdStripHitsinTrack[j]];
739 Xconformal[nFitPoints] = XMvdStrip[ListMvdStripHitsinTrack[j]]/
r2 ;
740 Yconformal[nFitPoints] = YMvdStrip[ListMvdStripHitsinTrack[j]]/
r2 ;
742 gamma =
r2 - 0.01 * 0.01 ;
743 ErrorDriftRadiusconformal[nFitPoints]= 3. * 0.01 /
fabs(gamma);
745 DriftRadiusconformal[nFitPoints]= -1;
753 for(j=0; j<nSttParHitsinTrack; j++){
755 Xconformal[nFitPoints] =infoparalConformal[(InOut->
ListHitsinTrack)[j]][0];
756 Yconformal[nFitPoints] =infoparalConformal[(InOut->
ListHitsinTrack)[j]][1];
761 gamma = r2 - 0.5 * 0.5 ;
762 ErrorDriftRadiusconformal[nFitPoints]=3.* 0.01/
fabs(gamma);
764 DriftRadiusconformal[nFitPoints]=
783 DriftRadiusconformal,
784 ErrorDriftRadiusconformal,
805 Ox= -0.5*(*(InOut->
ALFA));
806 Oy= -0.5*(*(InOut->
BETA));
807 R=
sqrt( Ox * Ox + Oy * Oy - (*(InOut->
GAMMA)) );
816 Short_t nSttSkewHitsinTrack[10],
817 nSciTilHitsinTrack[10];
818 Short_t ListSttSkewHitsinTrack[100];
821 nSttSkewHitsinTrack[0] = 0;
822 nSciTilHitsinTrack[0] = 0;
824 cout<<
"\tstampa in CTFind..2.cxx, dopo fitChi2.FitHelixCylinder(m = "<<
m<<
", q = "<<q<<
", atan(m) = "<<atan(
m)<<
"):"<<endl;
825 Print2.stampetta2(tkeepit,ListMvdPixelHitsinTrack,
826 ListMvdStripHitsinTrack,ListSttParHitsinTrack,
828 &nMvdPixelHitsinTrack,&nMvdStripHitsinTrack,&nSttParHitsinTrack,
830 nSttSkewHitsinTrack,nSciTilHitsinTrack,1,
846 GeomCalculator.FindingParallelTrackAngularRange2(
858 if(flagStt < 0)
return false;
863 fiCenter =
atan2(-Oy,-Ox);
864 if( fiCenter < 0. ) fiCenter +=
two_pi;
914 nMvdPixelHitsinTrack,
915 ListMvdPixelHitsinTrack,
916 nMvdStripHitsinTrack,
917 ListMvdStripHitsinTrack
939 if( NN < InOut->minimumhitspertrack )
return false;
943 nSttParHitsinTrack=
NN;
947 for(
i=0;
i< nSttParHitsinTrack;
i++){
948 ListSttParHitsinTrack[
i]=auxListHitsinTrack[
i];
1009 if( R< InOut->rstrawdetectormax){
1021 ListSttParHitsinTrack
1029 ListSttParHitsinTrack
1038 Short_t nSttSkewHitsinTrack[10],
1039 nSciTilHitsinTrack[10];
1040 Short_t ListSttSkewHitsinTrack[100];
1043 nSttSkewHitsinTrack[0] = 0;
1046 cout<<
"\tstampa in CTFind..2.cxx, dopo ordering :"<<endl;
1047 Print2.stampetta2(tkeepit,ListMvdPixelHitsinTrack,
1048 ListMvdStripHitsinTrack,ListSttParHitsinTrack,
1050 &nMvdPixelHitsinTrack,&nMvdStripHitsinTrack,&nSttParHitsinTrack,
1052 nSttSkewHitsinTrack,nSciTilHitsinTrack,1,
Short_t FitHelixCylinder2(Double_t *Cosine, Short_t LEGIANDRE_NTHETADIV, Short_t LEGIANDRE_NRADIUSDIV, Short_t nHitsinTrack, Double_t *Xconformal, Double_t *Yconformal, Double_t *DriftRadiusconformal, Double_t *ErrorDriftRadiusconformal, Double_t rotationangle, Double_t *Sinus, Double_t THETAMAX, Double_t THETAMIN, Double_t trajectory_vertex[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
friend F32vec4 sqrt(const F32vec4 &a)
void AddMvdHitsToSttTracks(Double_t delta, Double_t highqualitycut, Double_t FiRangeMvdLow, Double_t FiRangeMvdUp, Short_t maxmvdpixelhitsintrack, Short_t maxmvdstriphitsintrack, Short_t nMvdPixelHit, Short_t nMvdStripHit, Double_t Ox, Double_t Oy, Double_t R, Double_t *XMvdPixel, Double_t *XMvdStrip, Double_t *YMvdPixel, Double_t *YMvdStrip, Short_t &nPixelHitsinTrack, Short_t *ListPixelHitsinTrack, Short_t &nStripHitsinTrack, Short_t *ListStripHitsinTrack)
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[2], Short_t NMAX, Double_t *m, Double_t *q, Double_t *pAlfa, Double_t *pBeta, Double_t *pGamma, bool *Type, int istampa, int IVOLTE)
Short_t AssociateSciTilHit(Double_t dimensionscitil, Double_t *esse, bool *InclusionListSciTil, Short_t *List, Short_t maxscitilhitsintrack, Short_t nSciTilHits, Double_t Oxx, Double_t Oyy, Double_t posizSciTil[][3], Double_t Rr)
Short_t TrkAssociatedParallelHitsToHelix5(Short_t *auxListHitsinTrack, bool *InclusionListStt, Double_t Fi_low, Double_t Fi_up, Double_t info[][7], Short_t *ListSttParHits, Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t strawradius)
Short_t TrkAssociatedParallelHitsToHelix6(Short_t *auxListHitsinTrack, bool *InclusionListStt, Double_t Fi_low, Double_t Fi_up, Double_t info[][7], Short_t *ListSttParHits, Int_t NhitsParallel, Double_t Oxx, Double_t Oyy, Double_t Rr, Double_t maximum_distance)
void OrderingUsingR(Double_t info[][7], Int_t nHits, Short_t *ListHits)
void DecideWhichAngularRangeAndCharge(Double_t fiCenter, Double_t fi_low_limit[2], Double_t fi_up_limit[2], Double_t(*info)[7], Short_t *ListHitsinTrack, Short_t nHitsinTrack, Double_t Oxx, Double_t Oyy, Short_t &charge, Double_t &FiRangeMvdLow, Double_t &FiRangeMvdUp, Double_t &Fi_low_limit, Double_t &Fi_up_limit)
friend F32vec4 fabs(const F32vec4 &a)
friend F32vec4 atan2(const F32vec4 &y, const F32vec4 &x)
void OrderingUsingFi(Short_t Charge, Double_t info[][7], Int_t nHits, Double_t oX, Double_t oY, Short_t *ListHits)