ATLAS Offline Software
Loading...
Searching...
No Matches
CaloCellEnergyRescaler.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
8#include <memory>
9
11 const std::string& name,
12 const IInterface* parent) :
13 base_class (type, name, parent) {}
14
16
17
19 ATH_CHECK(m_eneShiftFldr.initialize());
20 return StatusCode::SUCCESS;
21}
22
23
24StatusCode
26 const EventContext& ctx) const {
27
29
30 //Possible optimization: If the following lines turn out to be slow to be executed on every event,
31 //put them into a conditions algo
32 const coral::Blob& blob = (**eneShiftHdl)["CaloCondBlob16M"].data<coral::Blob>();
33 if (blob.size()<3) {
34 ATH_MSG_DEBUG("Found empty blob, no corretion needed");
35 return StatusCode::SUCCESS;
36 }
37
38 std::unique_ptr<const CaloCondBlobFlt> corrValues(CaloCondBlobFlt::getInstance(blob));
39 ATH_MSG_DEBUG("Database folder has values for " << corrValues->getNChans() << " channels and " << corrValues->getNGains() << " gains.");
40
41
42 CaloCellContainer::iterator it=theCaloCellContainer->begin();
43 CaloCellContainer::iterator it_e=theCaloCellContainer->end();
44 for(;it!=it_e;++it) {
45 CaloCell* theCell=(*it);
46 const IdentifierHash& hash_id=theCell->caloDDE()->calo_hash();
47 if (hash_id<corrValues->getNChans()) {
48 const float& scale= corrValues->getData(hash_id);
49 theCell->scaleEnergy(scale);
50 }//end if hash_id<NChans
51 }//end loop over cells
52 return StatusCode::SUCCESS;
53}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x)
Container class for CaloCell.
SG::ReadCondHandleKey< AthenaAttributeList > m_eneShiftFldr
virtual StatusCode process(CaloCellContainer *theCellContainer, const EventContext &ctx) const override
CaloCellEnergyRescaler(const std::string &type, const std::string &name, const IInterface *parent)
virtual StatusCode initialize() override
Data object for each calorimeter readout cell.
Definition CaloCell.h:57
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition CaloCell.h:321
virtual void scaleEnergy(float scale)
scale energy
Definition CaloCell.h:478
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
DataModel_detail::iterator< DataVector > iterator
Definition DataVector.h:842
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
This is a "hash" representation of an Identifier.