ATLAS Offline Software
CaloCellTimeCorrTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "CaloCellTimeCorrTool.h"
8 
9 
11  const std::string& name,
12  const IInterface* parent) :
13  base_class (type, name, parent) {}
14 
16 
17 
20  return StatusCode::SUCCESS;
21 }
22 
23 
24 
26  const EventContext& ctx) const {
27 
29 
30 
31  //Possible optimization: If the following lines turn out to be slow to be executed on every event,
32  //put them into a conditions algo
33  const coral::Blob& blob = (**timeShiftHdl)["CaloCondBlob16M"].data<coral::Blob>();
34  if (blob.size()<3) {
35  ATH_MSG_DEBUG("Found empty blob, no corretion needed");
36  return StatusCode::SUCCESS;
37  }
38 
39  std::unique_ptr<const CaloCondBlobFlt> corrValues(CaloCondBlobFlt::getInstance(blob));
40  ATH_MSG_DEBUG("Database folder has values for " << corrValues->getNChans() << " channels and " << corrValues->getNGains() << " gains.");
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& shift= corrValues->getData(hash_id);
49  theCell->setTime(theCell->time()+shift);
50  }//end if hash_id<NChans
51  }//end loop over cells
52  return StatusCode::SUCCESS;
53 }
CaloCellTimeCorrTool.h
CaloCondBlobDat::getData
T getData(const unsigned int channel, const unsigned int adc, const unsigned int idx) const
Returns a single T belonging to a channel/gain.
Definition: CaloCondBlobDat.h:134
CaloCellTimeCorrTool::m_timeShiftFldr
SG::ReadCondHandleKey< AthenaAttributeList > m_timeShiftFldr
Definition: CaloCellTimeCorrTool.h:35
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
CaloCell::setTime
virtual void setTime(float time)
set time
Definition: CaloCell.cxx:151
skel.it
it
Definition: skel.GENtoEVGEN.py:423
python.subdetectors.tile.Blob
Blob
Definition: tile.py:17
CaloCell::time
float time() const
get time (data member)
Definition: CaloCell.h:352
CaloDetDescrElement::calo_hash
IdentifierHash calo_hash() const
cell calo hash
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:412
CaloCellTimeCorrTool::process
virtual StatusCode process(CaloCellContainer *theCellContainer, const EventContext &ctx) const override
Definition: CaloCellTimeCorrTool.cxx:25
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCellTimeCorrTool::~CaloCellTimeCorrTool
~CaloCellTimeCorrTool()
CaloCondBlobBase::getNGains
uint32_t getNGains() const
Returns the number of gains stored for each channel.
Definition: CaloCondBlobBase.h:239
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloCondBlobFlt.h
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloCondBlobFlt::getInstance
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
Definition: CaloCondBlobFlt.cxx:12
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloCellTimeCorrTool::initialize
virtual StatusCode initialize() override
Definition: CaloCellTimeCorrTool.cxx:18
IdentifierHash
Definition: IdentifierHash.h:38
CaloCellTimeCorrTool::CaloCellTimeCorrTool
CaloCellTimeCorrTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: CaloCellTimeCorrTool.cxx:10
CaloCondBlobAlgs_fillNoiseFromASCII.blob
blob
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:96
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloCondBlobBase::getNChans
uint32_t getNChans() const
Returns the number of channels stored in the BLOB.
Definition: CaloCondBlobBase.h:231