17 return StatusCode::SUCCESS;
26 return StatusCode::SUCCESS;
31 ATH_CHECK( outputHandle.
record(std::make_unique<CaloCalibrationHitContainer>()) );
33 unsigned int nHitsMerged(0);
45 auto bookmark = calibrationHits.lower_bound(hit);
58 if (bookmark == calibrationHits.end() ||
59 !(*bookmark)->Equals(hit)) {
60 auto&& hitCopy = std::make_unique<CaloCalibrationHit>(*hit);
63 if (calibrationHits.empty() ||
64 bookmark == calibrationHits.begin()) {
66 calibrationHits.insert(hitCopy.release());
75 calibrationHits.insert(--bookmark, hitCopy.release());
80 (*bookmark)->Add(hit);
86 for(
auto *hit : calibrationHits)
89 outputHandle->push_back(hit);
92 calibrationHits.clear();
93 ATH_MSG_DEBUG(outputHandle.
name() <<
" has " << outputHandle->size() <<
" hits. Merged " << nHitsMerged <<
" hits.");
94 return StatusCode::SUCCESS;
#define ATH_CHECK
Evaluate an expression and check for errors.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Class to store calorimeter calibration hit.
virtual StatusCode execute() override final
Athena Algorithm execute.
std::set< CaloCalibrationHit *, LessHit > calibrationHits_t
SG::WriteHandleKey< CaloCalibrationHitContainer > m_outputHits
SG::ReadHandleKeyArray< CaloCalibrationHitContainer > m_inputHits
CalibrationHitMerger(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
virtual StatusCode initialize() override final
Athena algorithm's interface methods.
const std::string & name() const
Return the StoreGate ID for the referenced object.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.