14 double A0Vert,
double ZVert,
double Chi2,
15 long int PixelHits,
long int SctHits,
long int SharedHits,
long int BLayHits)
18 double Pt =
sin(ThetaVert)/std::abs(PInvVert);
20 if(
Pt <
m_CutPt)
return StatusCode::FAILURE;
21 if(std::abs(ZVert)*
sin(ThetaVert) >
m_CutZVrt)
return StatusCode::FAILURE;
22 if(Chi2 >
m_CutChi2)
return StatusCode::FAILURE;
23 if(std::abs(A0Vert) >
m_CutA0)
return StatusCode::FAILURE;
28 if((PixelHits+SctHits) <
m_CutSiHits)
return StatusCode::FAILURE;
32 return StatusCode::SUCCESS;
45 std::vector<const xAOD::TrackParticle*>& SelectedTracks)
49 std::vector<const xAOD::TrackParticle*>::const_iterator i_ntrk;
50 std::vector<double> Impact,ImpactError;
51 for (i_ntrk = InpTrk.begin(); i_ntrk < InpTrk.end(); ++i_ntrk) {
56 AmgVector(5) VectPerig = mPer.parameters();
59 if((*i_ntrk)->numberDoF() == 0)
continue;
60 double trkChi2 = (*i_ntrk)->chiSquared() / (*i_ntrk)->numberDoF();
62 double CovTrkMtx11 = (*i_ntrk)->definingParametersCovMatrix()(0,0);
63 double CovTrkMtx22 = (*i_ntrk)->definingParametersCovMatrix()(1,1);
64 double CovTrkMtx55 = (*i_ntrk)->definingParametersCovMatrix()(4,4);
73 double trkP=1./std::abs(VectPerig[4]);
75 double trkPErr=std::sqrt(CovTrkMtx55)*trkP;
76 if(trkPErr>0.5)
continue;
79 uint8_t PixelHits,SctHits,BLayHits;
82 if( SctHits<3 )
continue;
84 long int SharedHits = 0;
86 uint8_t splSCTHits,outSCTHits,splPixHits,outPixHits;
94 double ImpactA0=VectPerig[0];
95 double ImpactZ=VectPerig[1]-PrimVrt.
position().z();
98 if(std::abs((*i_ntrk)->eta())>2.) {
100 (splSCTHits || outSCTHits || outPixHits || splPixHits))
continue;
102 else {PixelHits -=1;}
104 if(std::abs((*i_ntrk)->eta())>1.65) SctHits -=1;
107 ImpactA0 , ImpactZ, trkChi2,
108 PixelHits, SctHits, SharedHits, BLayHits);
109 if(
sc.isFailure() )
continue;
110 SelectedTracks.push_back(*i_ntrk);