516 InclusionMvd[nHitsinTrack];
537 Mvd_DipVar_DipVar[nHitsinTrack],
538 Mvd_DipVar_DipVar_Sum,
539 Mvd_IndVar_DipVar[nHitsinTrack],
540 Mvd_IndVar_DipVar_Sum,
541 Mvd_IndVar_IndVar[nHitsinTrack],
542 Mvd_IndVar_IndVar_Sum,
548 Stt_DipVar_DipVar_Sum,
549 Stt_DriftRad_DipVar[nHitsinTrack],
550 Stt_DriftRad_DriftRad_Sum,
551 Stt_DriftRad_IndVar[nHitsinTrack],
553 Stt_IndVar_DipVar_Sum,
554 Stt_IndVar_IndVar_Sum;
590 Stt_DipVar_DipVar_Sum = 0. ;
591 Stt_DriftRad_DriftRad_Sum = 0. ;
592 Stt_IndVar_IndVar_Sum = 0. ;
593 Stt_IndVar_DipVar_Sum = 0. ;
595 for(i=0; i<nHitsinTrack; i++){
597 e2 = 1./(ErrorDriftRadius[
i]*ErrorDriftRadius[
i]);
599 if( DriftRadius[i]<0. )
606 Mvd_DipVar_DipVar[nMvdHits] =
Z[
i]*
Z[
i]*e2;
607 Mvd_IndVar_IndVar[nMvdHits] =(S[
i]-FInot)*(S[i]-FInot)*e2;
608 Mvd_IndVar_DipVar[nMvdHits] =(S[
i]-FInot)*
Z[i]*e2;
619 if( nSttHits < NMAX){
622 Stt_DipVar_DipVar_Sum +=
Z[
i]*
Z[
i]*e2;
623 Stt_DriftRad_DriftRad_Sum += DriftRadius[
i]*DriftRadius[
i]*e2;
624 Stt_DriftRad_IndVar[nSttHits] = DriftRadius[
i]*(S[
i]-FInot)*e2;
625 Stt_DriftRad_DipVar[nSttHits] = DriftRadius[
i]*
Z[
i]*e2;
627 Stt_IndVar_IndVar_Sum += (S[
i]-FInot)*(S[i]-FInot)*e2;
628 Stt_IndVar_DipVar_Sum += (S[
i]-FInot)*
Z[i]*e2;
637 if(nSttHits>NMAX) nSttHits=NMAX;
650 Combinations = (Int_t) (pow(2., (
double) nSttHits) + 0.1) ;
654 Stt_DriftRad_DipVar_Sum[Combinations],
655 Stt_DriftRad_IndVar_Sum[Combinations];
663 Stt_DriftRad_DipVar_Sum,
664 Stt_DriftRad_IndVar_Sum
670 memset(InclusionMvd,
true,
sizeof(InclusionMvd));
678 Mvd_DipVar_DipVar_Sum,
679 Mvd_IndVar_DipVar_Sum,
680 Mvd_IndVar_IndVar_Sum
686 chi2_best = 9999999.;
687 A = Mvd_IndVar_DipVar_Sum + Stt_IndVar_DipVar_Sum ;
689 Mvd_DipVar_DipVar_Sum + Stt_DipVar_DipVar_Sum
690 + Stt_DriftRad_DriftRad_Sum;
692 for(i=0;i<Combinations; i++){
693 M = (A + Stt_DriftRad_IndVar_Sum[
i])/(Stt_IndVar_IndVar_Sum + Mvd_IndVar_IndVar_Sum) ;
695 M*M*(Mvd_IndVar_IndVar_Sum + Stt_IndVar_IndVar_Sum)
696 + 2.*Stt_DriftRad_DipVar_Sum[i]
697 - 2.*M*(Mvd_IndVar_DipVar_Sum + Stt_IndVar_DipVar_Sum)
698 - 2.*Stt_DriftRad_IndVar_Sum[
i]*M;
708 if(nSttHits+nMvdHits > 1) { chi2_best = chi2_best/( nSttHits+nMvdHits-1); }
713 if( nSttHits+nMvdHits >1){
723 for( j =0; j<nMvdHits;j++){
724 InclusionMvd[j] =
false;
726 if(j>0) InclusionMvd[j-1] =
true;
736 Mvd_DipVar_DipVar_Sum,
737 Mvd_IndVar_DipVar_Sum,
738 Mvd_IndVar_IndVar_Sum
742 A = Mvd_IndVar_DipVar_Sum + Stt_IndVar_DipVar_Sum ;
743 chi2_fixed = Penalty +
744 Mvd_DipVar_DipVar_Sum + Stt_DipVar_DipVar_Sum
745 + Stt_DriftRad_DriftRad_Sum;
746 for(i=0;i<Combinations; i++){
747 M = (A + Stt_DriftRad_IndVar_Sum[
i])/(Stt_IndVar_IndVar_Sum + Mvd_IndVar_IndVar_Sum) ;
749 M*M*(Mvd_IndVar_IndVar_Sum + Stt_IndVar_IndVar_Sum)
750 + 2.*Stt_DriftRad_DipVar_Sum[i]
751 - 2.*M*(Mvd_IndVar_DipVar_Sum + Stt_IndVar_DipVar_Sum)
752 - 2.*Stt_DriftRad_IndVar_Sum[
i]*M;
757 if( nSttHits+nMvdHits-2 >0) chi2 = chi2/(nSttHits+nMvdHits-2);
775 if(
fabs(*emme) > 1.e-10 ) { *emme = 1./(*emme); }
else { *emme = 1.e10; }
void Calculations_SkewStt_AllLeftRightCombinations(Short_t nSttHits, Double_t *Stt_DriftRad_DipVar, Double_t *Stt_DriftRad_IndVar, Double_t *Stt_DriftRad_DipVar_Sum, Double_t *Stt_DriftRad_IndVar_Sum)
friend F32vec4 fabs(const F32vec4 &a)
void Calculations_Mvd(bool *InclusionMvd, Double_t *Mvd_DipVar_DipVar, Double_t *Mvd_IndVar_DipVar, Double_t *Mvd_IndVar_IndVar, Short_t nMvdHits, Double_t &Mvd_DipVar_DipVar_Sum, Double_t &Mvd_IndVar_DipVar_Sum, Double_t &Mvd_IndVar_IndVar_Sum)