31 m_splitVertexTrkInvFraction(2),
32 m_distanceSplitVxMatch(5.0),
33 m_splitMatchingMetric(3),
34 m_doEnhancedMonitoring(false)
38 declareProperty(
"splitMatchingMetric",
m_splitMatchingMetric,
"Determines which function to use to calculate matching between split vertices and original input vertex -- used in selection efficiency");
39 declareProperty(
"doEnhancedMonitoring" ,
m_doEnhancedMonitoring,
"turn on the enhanced vertex monitoring, it is triggered by the same InDetFlag that also triggers the creation of no beam constraint and split vertices");
67 auto pvGroup =
getGroup(
"PrimaryVertex");
72 if (!handle_vxContainer.isPresent()) {
74 return StatusCode::SUCCESS;
76 if (!handle_vxContainer.isValid()) {
78 return StatusCode::RECOVERABLE;
81 auto vertexContainer = handle_vxContainer.cptr();
85 int pvN = vertexContainer->size()-1;
92 for(
const auto vtx : *vertexContainer) {
103 if (vtx->numberDoF() <= 0)
continue;
105 float pvX = vtx->position().x();
107 fill(pvGroup, pvX_m);
109 float pvY = vtx->position().y();
111 fill(pvGroup, pvY_m);
113 float pvZ = vtx->position().z();
115 fill(pvGroup, pvZ_m);
119 fill(pvGroup, pvErrX_m);
123 fill(pvGroup, pvErrY_m);
127 fill(pvGroup, pvErrZ_m);
129 float pvChiSqDoF = vtx->chiSquared() / vtx->numberDoF() ;
131 fill(pvGroup, pvChiSqDoF_m);
134 auto & trackparticles = vtx->trackParticleLinks();
136 int pvNTracks = trackparticles.size() ;
138 fill(pvGroup, pvNTracks_m);
142 for (
const auto & trackparticle : trackparticles)
144 const Trk::Perigee & measuredPerigee = (*trackparticle)->perigeeParameters();
146 float pvTrackEta = measuredPerigee.eta() ;
148 fill(pvGroup, pvTrackEta_m);
150 float pvTrackPt = measuredPerigee.pT()/1000. ;
152 fill(pvGroup, pvTrackPt_m);
160 fill(pvGroup, nPriVtx_m);
163 fill(pvGroup, nPileupVtx_m);
173 return StatusCode::SUCCESS;