19 return StatusCode::SUCCESS;
29 return StatusCode::FAILURE;
32 auto lumiBlock =
Scalar<int>(
"LB", eventInfo->lumiBlock());
36 float avgMuInverse = avgIntPerXing>0 ? 1./avgIntPerXing : 0.;
48 for (
const auto vertex : *vertices ) {
49 if (!vertex || !vertex->nTrackParticles())
continue;
53 for (
size_t i = 0; i < vertex->nTrackParticles(); ++i) {
63 auto nLooseVtxPerAvgMu =
Scalar<float>(
"nLooseVtxPerAvgMu",nLooseVtx*avgMuInverse);
64 auto nTightVtxPerAvgMu =
Scalar<float>(
"nTightVtxPerAvgMu",nTightVtx*avgMuInverse);
66 fill(group,lumiBlock,avgLumi,avgIntPerXing,lumiPerBCID,intPerXing,duration,
67 avgLiveFrac,liveFracPerBCID,lumiWeight,nLooseVtx,nTightVtx,nLooseVtxPerAvgMu,
73 if ( !pixelClusters.
isValid() ) {
75 }
else if ( !pixelID.
isValid() ) {
84 for (
auto cluster : *pixelClusters ) {
87 for (
auto pixel : *cluster ) {
90 int ec = pixelID->barrel_ec(clusterID);
91 if (ec==2) nClustersECA++;
92 else if (ec==-2) nClustersECC++;
94 int ld = pixelID->layer_disk(clusterID);
95 if (ld==0) nClustersB0++;
96 else if(ld==1) nClustersB1++;
97 else if(ld==2) nClustersB2++;
102 auto nClustersAllPerAvgMu =
Scalar<int>(
"nClustersAllPerAvgMu",nClustersAll*avgMuInverse);
103 auto nClustersECAPerAvgMu =
Scalar<int>(
"nClustersECAPerAvgMu",nClustersECA*avgMuInverse);
104 auto nClustersECCPerAvgMu =
Scalar<int>(
"nClustersECCPerAvgMu",nClustersECC*avgMuInverse);
105 auto nClustersB0PerAvgMu =
Scalar<int>(
"nClustersB0PerAvgMu",nClustersB0*avgMuInverse);
106 auto nClustersB1PerAvgMu =
Scalar<int>(
"nClustersB1PerAvgMu",nClustersB1*avgMuInverse);
107 auto nClustersB2PerAvgMu =
Scalar<int>(
"nClustersB2PerAvgMu",nClustersB2*avgMuInverse);
109 fill(
"pixel",lumiBlock,avgIntPerXing,
110 nClustersAll,nClustersECA,nClustersECC,
111 nClustersB0,nClustersB1,nClustersB2,
112 nClustersAllPerAvgMu,nClustersECAPerAvgMu,nClustersECCPerAvgMu,
113 nClustersB0PerAvgMu,nClustersB1PerAvgMu,nClustersB2PerAvgMu);
117 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Environment_t environment() const
Accessor functions for the environment.
virtual StatusCode initialize() override
initialize
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
AthMonitorAlgorithm::Environment_t m_environment
Instance of the Environment_t enum.
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
virtual StatusCode initialize() override
initialize
DQTLumiMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
RHK< PixelID > m_PixelIDKey
RHK< xAOD::VertexContainer > m_VertexContainerKey
GP< float > m_tightTrackWeight
RHK< InDet::PixelClusterContainer > m_PixelClustersKey
Declare a monitored scalar variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual double lbLumiWeight(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average integrated luminosity multiplied by the live fraction.
virtual float lbInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate instantaneous number of interactions, i.e.
virtual float lbLuminosityPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the instantaneous luminosity per bunch crossing.
virtual float livefractionPerBCID(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the live fraction per bunch crossing ID.
virtual float lbAverageLuminosity(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbAverageInteractionsPerCrossing(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average mu, i.e.
virtual float lbAverageLivefraction(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the average luminosity livefraction.
virtual double lbDuration(const EventContext &ctx=Gaudi::Hive::currentContext()) const
Calculate the duration of the luminosity block (in seconds)
Generic monitoring tool for athena components.
void fill(H5::Group &out_file, size_t iterations)