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;
#define ATH_CHECK
Evaluate an expression and check for errors.
Implementation of inner detector global Primary Vertex monitoring tool.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
virtual StatusCode initialize() override
initialize
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
virtual ~InDetGlobalPrimaryVertexMonAlg()
virtual StatusCode initialize() override
initialize
int m_splitMatchingMetric
store metric to be used for split vertex matching in selection efficiency Values currently implemente...
InDetGlobalPrimaryVertexMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
SG::ReadHandleKey< xAOD::VertexContainer > m_vxContainerName
float m_distanceSplitVxMatch
store maximum distance for matching split vertices to original non-BC vertex
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
bool m_doEnhancedMonitoring
int m_splitVertexTrkInvFraction
store inverse of the fraction of input tracks used for probe vertex (1:N)
Declare a monitored scalar variable.
double eta() const
Access method for pseudorapidity - from momentum.
double pT() const
Access method for transverse momentum.
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
double error(const Amg::MatrixX &mat, int index)
return diagonal error of the matrix caller should ensure the matrix is symmetric and the index is in ...
Generic monitoring tool for athena components.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ z
global position (cartesian)