ATLAS Offline Software
Loading...
Searching...
No Matches
CaloBCIDLumiCondAlg.cxx
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration.
3 */
10
11
12#include "CaloBCIDLumiCondAlg.h"
15
16
21{
22 ATH_CHECK( m_coeffsKey.initialize() );
23 ATH_CHECK( m_outputLumiKey.initialize() );
24 ATH_CHECK( m_bcDataKey.initialize(m_isMC) );
25 ATH_CHECK( m_lumiDataKey.initialize(!m_isMC) );
26
27 return StatusCode::SUCCESS;
28}
29
30
35StatusCode CaloBCIDLumiCondAlg::execute (const EventContext& ctx) const
36{
39
40 std::unique_ptr<CaloBCIDLumi> lumi;
41 if (m_isMC) {
42 if (outputLumi.isValid()) {
43 ATH_MSG_DEBUG ("Found valid write handle");
44 return StatusCode::SUCCESS;
45 }
46
48 lumi = std::make_unique<CaloBCIDLumi> (**coeffs, **bccd);
49 outputLumi.addDependency (bccd);
50 }
51 else {
53
54 // Need to check start of range, since lumi might be extensible.
55 EventIDRange range;
56 if (outputLumi.isValid(range)) {
57 EventIDBase start = range.start();
58 EventIDBase coeffs_start = coeffs.getRange().start();
59 EventIDBase lcd_start = lcd.getRange().start();
60 if ((start.time_stamp() == coeffs_start.time_stamp() &&
61 start.time_stamp_ns_offset() == coeffs_start.time_stamp_ns_offset()) ||
62 (start.time_stamp() == lcd_start.time_stamp() &&
63 start.time_stamp_ns_offset() == lcd_start.time_stamp_ns_offset()))
64 {
65 ATH_MSG_DEBUG ("Found valid write handle");
66 return StatusCode::SUCCESS;
67 }
68 }
69
70 lumi = std::make_unique<CaloBCIDLumi> (**coeffs, **lcd);
71 outputLumi.addDependency (lcd);
72 }
73
74 outputLumi.addDependency (coeffs);
75
76 ATH_CHECK( outputLumi.record (std::move (lumi)) );
77 ATH_MSG_INFO( "recorded new " << outputLumi.key() << " with range " << outputLumi.getRange() );
78 return StatusCode::SUCCESS;
79}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Conditions algorithm to create CaloBCIDLumi.
Gaudi::Property< bool > m_isMC
Property; MC flag.
virtual StatusCode execute(const EventContext &ctx) const override final
Execute the algorithm.
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Property: Per-bunch luminosity data (data only) conditions input).
SG::ReadCondHandleKey< BunchCrossingCondData > m_bcDataKey
Property: Bunch crossing data (MC only) (conditions input).
virtual StatusCode initialize() override
Gaudi initialize method.
SG::WriteCondHandleKey< CaloBCIDLumi > m_outputLumiKey
Property: Offset correction luminosity-dependent conditions object (output).
SG::ReadCondHandleKey< CaloBCIDCoeffs > m_coeffsKey
Property: Coefficients object (conditions input).
const EventIDRange & getRange()
const std::string & key() const
void addDependency(const EventIDRange &range)
const EventIDRange & getRange() const
StatusCode record(const EventIDRange &range, T *t)
record handle, with explicit range DEPRECATED