611 |
* |
* |
612 |
* @see TrkParams::SetPFA(int) |
* @see TrkParams::SetPFA(int) |
613 |
*/ |
*/ |
614 |
void TrkTrack::EvaluateClusterPositions(){ |
Bool_t TrkTrack::EvaluateClusterPositions(){ |
615 |
|
|
616 |
// cout << "void TrkTrack::GetClusterPositions() "<<endl; |
// cout << "void TrkTrack::GetClusterPositions() "<<endl; |
617 |
|
|
618 |
TrkParams::Load( ); |
TrkParams::Load( ); |
619 |
if( !TrkParams::IsLoaded() )return; |
if( !TrkParams::IsLoaded() )return false; |
620 |
|
|
621 |
for(int ip=0; ip<6; ip++){ |
for(int ip=0; ip<6; ip++){ |
622 |
// cout << ip<<" ** "<<xm[ip]<<" / "<<ym[ip]<<endl;; |
// cout << ip<<" ** "<<xm[ip]<<" / "<<ym[ip]<<endl;; |
635 |
float bfy = 10*TrkParams::GetBY(v);//Tesla |
float bfy = 10*TrkParams::GetBY(v);//Tesla |
636 |
int ipp=ip+1; |
int ipp=ip+1; |
637 |
xyzpam_(&ipp,&icx,&icy,&ladder,&sensor,&ax,&ay,&bfx,&bfy); |
xyzpam_(&ipp,&icx,&icy,&ladder,&sensor,&ax,&ay,&bfx,&bfy); |
638 |
|
if(icx<0 || icy<0)return false; |
639 |
} |
} |
640 |
|
return true; |
641 |
} |
} |
642 |
/** |
/** |
643 |
* \brief Tracking method. It calls F77 mini routine. |
* \brief Tracking method. It calls F77 mini routine. |
675 |
|
|
676 |
extern cMini2track track_; |
extern cMini2track track_; |
677 |
fail = 0; |
fail = 0; |
678 |
|
|
679 |
FillMiniStruct(track_); |
FillMiniStruct(track_); |
680 |
|
|
681 |
if(froml1!=0)EvaluateClusterPositions(); |
if(froml1!=0){ |
682 |
|
if( !EvaluateClusterPositions() ){ |
683 |
|
cout << "void TrkTrack::Fit("<<pfixed<<","<<fail<<","<<iprint<<","<<froml1<<") --- ERROR evaluating cluster positions "<<endl; |
684 |
|
FillMiniStruct(track_) ; |
685 |
|
fail = 1; |
686 |
|
return; |
687 |
|
} |
688 |
|
}else{ |
689 |
|
FillMiniStruct(track_); |
690 |
|
} |
691 |
|
|
692 |
// if fit variables have been reset, evaluate the initial guess |
// if fit variables have been reset, evaluate the initial guess |
693 |
if(al[0]==-9999.&&al[1]==-9999.&&al[2]==-9999.&&al[3]==-9999.&&al[4]==-9999.)guess_(); |
if(al[0]==-9999.&&al[1]==-9999.&&al[2]==-9999.&&al[3]==-9999.&&al[4]==-9999.)guess_(); |
766 |
extern cMini2track track_; |
extern cMini2track track_; |
767 |
track_.istepmin = istepmin; |
track_.istepmin = istepmin; |
768 |
} |
} |
769 |
|
/** |
770 |
|
* Returns 1 if the track is inside the magnet cavity |
771 |
|
* Set the minimum number of steps for tracking precision |
772 |
|
*/ |
773 |
|
Bool_t TrkTrack::IsInsideCavity(){ |
774 |
|
float xmagntop, ymagntop, xmagnbottom, ymagnbottom; |
775 |
|
xmagntop = xv[0] + (ZMAGNHIGH-zv[0])*tan(cos(-1.0)*axv[0]/180.); |
776 |
|
ymagntop = yv[0] + (ZMAGNHIGH-zv[0])*tan(cos(-1.0)*ayv[0]/180.); |
777 |
|
xmagnbottom = xv[5] + (ZMAGNLOW-zv[5])*tan(cos(-1.0)*axv[5]/180.); |
778 |
|
ymagnbottom = yv[5] + (ZMAGNLOW-zv[5])*tan(cos(-1.0)*ayv[5]/180.); |
779 |
|
if( xmagntop>XMAGNLOW && xmagntop<XMAGNHIGH && |
780 |
|
ymagntop>YMAGNLOW && ymagntop<YMAGNHIGH && |
781 |
|
xmagnbottom>XMAGNLOW && xmagnbottom<XMAGNHIGH && |
782 |
|
ymagnbottom>YMAGNLOW && ymagnbottom<YMAGNHIGH ) return(true); |
783 |
|
else return(false); |
784 |
|
} |
785 |
/** |
/** |
786 |
* Method to retrieve ID (0,1,...) of x-cluster (if any) associated to this track. |
* Method to retrieve ID (0,1,...) of x-cluster (if any) associated to this track. |
787 |
* If no cluster is associated, ID=-1. |
* If no cluster is associated, ID=-1. |
998 |
for(int i=0; i<nclsy(); i++) ((TrkSinglet *)sy[i])->Dump(); |
for(int i=0; i<nclsy(); i++) ((TrkSinglet *)sy[i])->Dump(); |
999 |
} |
} |
1000 |
} |
} |
1001 |
|
/** |
1002 |
|
* \brief Dump processing status |
1003 |
|
*/ |
1004 |
|
void TrkLevel2::StatusDump(int view){ |
1005 |
|
cout << "DSP n. "<<view+1<<" status: "<<hex<<good[view]<<endl; |
1006 |
|
}; |
1007 |
|
/** |
1008 |
|
* \brief Check event status |
1009 |
|
* |
1010 |
|
* Check the event status, according to a flag-mask given as input. |
1011 |
|
* Return true if the view passes the check. |
1012 |
|
* |
1013 |
|
* @param view View number (0-11) |
1014 |
|
* @param flagmask Mask of flags to check (eg. flagmask=0x111 no missing packet, |
1015 |
|
* no crc error, no software alarm) |
1016 |
|
* |
1017 |
|
* @see TrkLevel2 class definition to know how the status flag is defined |
1018 |
|
* |
1019 |
|
*/ |
1020 |
|
Bool_t TrkLevel2::StatusCheck(int view, int flagmask){ |
1021 |
|
|
1022 |
|
if( view<0 || view >= 12)return false; |
1023 |
|
return !(good[view]&flagmask); |
1024 |
|
|
1025 |
|
}; |
1026 |
|
|
1027 |
|
|
1028 |
//-------------------------------------- |
//-------------------------------------- |
1029 |
// |
// |
1030 |
// |
// |