34 std::vector<const Muon::MuonSegment*> (&disqualifiedSegments)[2][4]){
37 const int nMeasCutMdt[4] = { 4, 2, 4, 5};
38 const int nMeasCutTgcStrip[4] = { 0, 0, 1, 0};
40 const float dPhiCutPosDir[4] = {0.05,0.05,0.08,0.1 };
41 const float dTheCutPosDir[4] = { 0.2, 0.4, 0.6,0.5 };
45 bool skipSegm;
int nDisqualifiedSegm;
49 for(
int jMDT=0;jMDT<4;jMDT++){
51 int nSegm=sortedSegments[i][jMDT].size();
54 for(
int n=0; n<nSegm;n++){
58 if(segm==
nullptr)
continue;
62 nDisqualifiedSegm=disqualifiedSegments[i][jMDT].size();
63 for(
int ndis=0;ndis<nDisqualifiedSegm;ndis++)
if(segm==disqualifiedSegments[i][jMDT].at(ndis))skipSegm=
true;
71 int nTgcMeas[2] = {0,0};
81 stationName = int(
m_idHelperSvc->mdtIdHelper().stationName(
id));
84 if((stationName==41)||(stationName==42))nTgcMeas[isStrip]++;
85 if((stationName==43)||(stationName==44))nTgcMeas[isStrip]++;
86 if((stationName==45)||(stationName==46))nTgcMeas[isStrip]++;
87 if((stationName==47)||(stationName==48))nTgcMeas[isStrip]++;
89 if((stationName==13)||(stationName==49))nMdtMeas++;
90 if((stationName==14)||(stationName==15))nMdtMeas++;
91 if((stationName==17)||(stationName==18))nMdtMeas++;
92 if((stationName==20)||(stationName==21))nMdtMeas++;
96 if(nMdtMeas<nMeasCutMdt[jMDT]||nTgcMeas[1]<nMeasCutTgcStrip[jMDT]){
107 float segmPosPhi = segmGlobalPos.phi();
108 float segmPosThe = segmGlobalPos.theta();
109 if(segmPosPhi<0) segmPosPhi+=2*
M_PI;
110 if(segmPosThe>
M_PI/2) segmPosThe=
M_PI-segmPosThe;
114 float segmDirPhi = segmGlobalDir.phi();
115 float segmDirThe = segmGlobalDir.theta();
116 if(segmDirPhi<0) segmDirPhi+=2*
M_PI;
117 if(segmDirThe>
M_PI/2) segmDirThe=
M_PI-segmDirThe;
120 float dPhi_Pos_Dir = segmPosPhi-segmDirPhi;
121 float dThe_Pos_Dir = segmPosThe-segmDirThe;
122 if(dPhi_Pos_Dir<-
M_PI)dPhi_Pos_Dir+=2*
M_PI;
123 if(dPhi_Pos_Dir>
M_PI)dPhi_Pos_Dir-=2*
M_PI;
131 if(std::abs(dPhi_Pos_Dir)>dPhiCutPosDir[jMDT]||std::abs(dThe_Pos_Dir)>dTheCutPosDir[jMDT]){
139 disqualifiedSegments[i][jMDT].push_back(segm);