25 std::vector<const xAOD::TrackParticle*>& inpTrk = xAODwrk->
inpTrk;
26 std::vector<const xAOD::TrackParticle*>& selectedTracks = xAODwrk->
listSelTracks;
27 std::vector<const xAOD::TrackParticle*>::const_iterator i_ntrk;
28 std::vector<double> impact,impactError;
29 std::multimap<double,const xAOD::TrackParticle*> orderedTrk;
32 h.m_hb_ntrkInput->Fill( inpTrk.size()+0.1,
m_w_1);
34 for (i_ntrk = inpTrk.begin(); i_ntrk < inpTrk.end(); ++i_ntrk) {
40 h.m_hb_trkSelect->Fill( 0.,
m_w_1);
42 if((*i_ntrk)->numberDoF() == 0)
continue;
43 double trkChi2 = (*i_ntrk)->chiSquared() / (*i_ntrk)->numberDoF();
45 if( (*i_ntrk)->pt() <
m_cutPt)
continue;
48 h.m_hb_trkSelect->Fill( 1.,
m_w_1);
53 const double CovTrkMtx00 = (*locCov)(0,0);
55 uint8_t PixelHits,SctHits,BLayHits,TRTHits;
58 if( SctHits<3 )
continue;
63 h.m_hb_trkSelect->Fill( 2.,
m_w_1);
67 double impactD0=sqrt( (perigeePos.x()-primVrt.
x())*(perigeePos.x()-primVrt.
x())
68 +(perigeePos.y()-primVrt.
y())*(perigeePos.y()-primVrt.
y()) );
69 double impactZ=perigeePos.z()-primVrt.
z();
72 h.m_hb_trkD0->Fill( impactD0,
m_w_1);
73 h.m_hb_trkZ ->Fill( impactZ,
m_w_1);
80 h.m_hb_trkSelect->Fill( 3.,
m_w_1);
85 double impactBeam=sqrt( (perigeePos.x()-bX)*(perigeePos.x()-bX) + (perigeePos.y()-bY)*(perigeePos.y()-bY));
87 double signifBeam = impactBeam / sqrt(CovTrkMtx00);
91 h.m_hb_trkSelect->Fill( 4.,
m_w_1);
98 if(std::abs((*i_ntrk)->eta())<1.9 && TRTHits <
m_cutTRTHits)
continue;
101 h.m_hb_trkSelect->Fill( 5.,
m_w_1);
104 orderedTrk.emplace(signifBeam,*i_ntrk);
105 selectedTracks.push_back(*i_ntrk);
108 std::map<double,const xAOD::TrackParticle*>::reverse_iterator rt=orderedTrk.rbegin();
109 selectedTracks.resize(orderedTrk.size());
110 for (
int cntt=0; rt!=orderedTrk.rend(); ++rt,++cntt) {selectedTracks[cntt]=(*rt).second;}