ATLAS Offline Software
TBEMECXTalkToyModel.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /********************************************************************
6 
7 NAME: TBEMECXTalkToyModel
8 PACKAGE: offline/Calorimeter/CaloRec
9 
10 AUTHORS: Johannes Erdmann
11 CREATED: October 14,2008
12 
13 PURPOSE: A simple toy model to simulate longitudinal cross-talk
14  between EMEC2 and EMEC3 in the reco step.
15  Code mainly copied from CaloCellContainerCorrectorTool
16 
17 ********************************************************************/
18 
19 #include "TBEMECXTalkToyModel.h"
20 
22 #include "CaloEvent/CaloCell.h"
23 
24 #include "CaloDetDescr/CaloDetDescrElement.h"
26 
28 // CONSTRUCTOR:
30 
32  const std::string& type,
33  const std::string& name,
34  const IInterface* parent)
35  :base_class (type, name, parent),
36  m_caloSelection(false),
37  m_calo_id(nullptr)
38 {
39  declareProperty("CaloNums",m_caloNums);
40  declareProperty("XTalkScaleLong", m_xtalkScaleLong);
41  declareProperty("XTalkScaleEta", m_xtalkScaleEta);
42  declareProperty("XTalkScaleEMEC2Eta",m_xtalkScaleEMEC2Eta);
43  m_caloNums.clear();
44  //default: process all calo
45  m_caloNums.push_back( static_cast<int>(CaloCell_ID::NSUBCALO) );
46 }
47 
48 
49 
50 
52 // INITIALIZE:
53 // The initialize method will create all the required algorithm objects
55 
57 {
58  unsigned int nSubCalo=static_cast<unsigned int>(CaloCell_ID::NSUBCALO) ;
59 
60  //check calo number specified
61  m_caloSelection = true ;
62  if (m_caloNums.size()==0) {
63  ATH_MSG_WARNING (" no calo specified for correction. Will do nothing. ");
64  return StatusCode::SUCCESS;
65  } else if (m_caloNums.size()>nSubCalo ) {
66  ATH_MSG_ERROR (" More than "
67  << nSubCalo << " calo specified. Must be wrong. Stop.");
68  return StatusCode::FAILURE;
69  } else if (m_caloNums.size()==1 && m_caloNums[0]==static_cast<int>(nSubCalo)) {
70  m_caloSelection = false ;
71  ATH_MSG_INFO (" Correction will be applied on all calo.");
72  } else {
73  for (unsigned int index=0; index < m_caloNums.size() ; ++index) {
74  if (m_caloNums[index]<0 || m_caloNums[index]>=static_cast<int>(nSubCalo) ) {
75  ATH_MSG_ERROR ("Invalid calo specification:"
76  << m_caloNums[index] << "Stop.");
77  return StatusCode::FAILURE;
78  } else {
79  ATH_MSG_INFO (" Correction will be applied on calo:"
80  << static_cast<int>(m_caloNums[index]));
81  }
82  }
83  }
84 
85  ATH_CHECK(detStore()->retrieve(m_calo_id,"CaloCell_ID"));
86 
87  ATH_MSG_VERBOSE ("XTalkScaleLong = " << m_xtalkScaleLong);
88  ATH_MSG_VERBOSE ("XTalkScaleEta = " << m_xtalkScaleEta);
89  ATH_MSG_VERBOSE ("XTalkScaleEMEC2Eta = " << m_xtalkScaleEMEC2Eta);
90  ATH_MSG_VERBOSE ("Initialization completed successfully" );
91 
92  return StatusCode::SUCCESS;
93 
94 }
95 
97  const EventContext& /*ctx*/) const
98 {
99  StatusCode sc;
100 
101  if (!m_caloSelection) {
102  // no selection mode (faster)
103  CaloCellContainer::iterator itrCellBeg=theCont->begin();
104  CaloCellContainer::iterator itrCellEnd=theCont->end();
105 
106  sc = processOnCellIterators(itrCellBeg, itrCellEnd );
107  if (sc.isFailure())
108  ATH_MSG_WARNING ("Failure from processOnCellIterators");
109  }else {
110  // selection mode
111 
112  for (std::vector<int>::const_iterator itrCalo=m_caloNums.begin();itrCalo!=m_caloNums.end();++itrCalo){
113 
114 
115  CaloCell_ID::SUBCALO caloNum=static_cast<CaloCell_ID::SUBCALO>(*itrCalo);
116 
117  CaloCellContainer::iterator itrCellBeg=theCont->beginCalo(caloNum);
118  CaloCellContainer::iterator itrCellEnd=theCont->endCalo(caloNum);
119 
120  if (!theCont->hasCalo(caloNum))
121  {
122  ATH_MSG_WARNING (" Attempt to apply correction but CaloCellContainer has not been filled for this calo : "
123  << *itrCalo);
124  } else
125  {
126  sc=processOnCellIterators(itrCellBeg, itrCellEnd );
127  if (sc.isFailure())
128  ATH_MSG_WARNING ("Failure from processOnCellIterators for calo "
129  << static_cast<int> (caloNum));
130  }
131  }
132  }
133 
134  return StatusCode::SUCCESS ;
135 }
136 
138  const CaloCellContainer::iterator & itrCellEnd ) const
139 {
140  IdentifierHash myHashMin,myHashMax;
141  m_calo_id->calo_cell_hash_range (CaloCell_ID::LAREM,myHashMin,myHashMax);
142  unsigned int myCellHashOffset = myHashMin;
143 
145  std::map<Identifier,CaloCell*> cellMap;
146  std::map<Identifier,float> energyMap;
147  for (itrCell=itrCellBeg;itrCell!=itrCellEnd;++itrCell) {
148  CaloCell * theCell = *itrCell;
149  cellMap.insert(std::pair<Identifier,CaloCell*>(theCell->ID(),theCell));
150  energyMap.insert(std::pair<Identifier,float>(theCell->ID(),theCell->energy()));
151  }
152 
153  for (itrCell=itrCellBeg;itrCell!=itrCellEnd;++itrCell) {
154  CaloCell * theCell = *itrCell;
155  const CaloDetDescrElement* element = theCell->caloDDE();
156 
157  if (element->is_lar_em_endcap_inner()) {
159 
160  if (sample==6) { // this is the EMEC2
161  std::map<Identifier,float>::iterator cellItEng = energyMap.find(theCell->ID());
162  if (cellItEng==energyMap.end()) {
163  ATH_MSG_ERROR ("Identifier not found in energyMap");
164  return StatusCode::FAILURE;
165  }
166  double e = (*cellItEng).second;
167 
168  const CaloCell_ID::SUBCALO mySubDet = element->getSubCalo();
169  std::vector<IdentifierHash> theNeighbors;
170 
171  int otherSubDet;
172  Identifier myId = theCell->ID();
173  IdentifierHash myHashId = m_calo_id->subcalo_cell_hash(myId,otherSubDet);
174 
175  // longitudinal neighbor (N1)
176  m_calo_id->get_neighbours(myHashId+myCellHashOffset,LArNeighbours::nextInSamp,theNeighbors);
177  ATH_MSG_DEBUG ("N1 theNeighbors.size() = " << theNeighbors.size());
178  IdentifierHash nId = theNeighbors.at(0)-myCellHashOffset;
179  myId = m_calo_id->cell_id(mySubDet,nId);
180  std::map<Identifier,CaloCell*>::iterator cellIt = cellMap.find(myId);
181  if (cellIt==cellMap.end()) {
182  ATH_MSG_ERROR ("neighbor CaloCell object not found in cellMap");
183  return StatusCode::FAILURE;
184  }
185  CaloCell * theCellN1 = (*cellIt).second;
186  if (!theCellN1) {
187  ATH_MSG_ERROR ("neighbor CaloCell object not found in cellMap");
188  return StatusCode::FAILURE;
189  }
190  cellItEng = energyMap.find(theCellN1->ID());
191  if (cellItEng==energyMap.end()) {
192  ATH_MSG_ERROR ( "Identifier not found in energyMap" );
193  return StatusCode::FAILURE;
194  }
195  double eN1 = (*cellItEng).second;
196 
197  // neighbors in eta of EMEC3 cell (N2,N3) -- only if they exist
198  int EMEC3neighbors = 0;
199  myHashId = m_calo_id->subcalo_cell_hash(theCellN1->ID(),otherSubDet);
200  //
201  m_calo_id->get_neighbours(myHashId+myCellHashOffset,LArNeighbours::nextInEta,theNeighbors);
202  ATH_MSG_DEBUG ( "N2 theNeighbors.size() = " << theNeighbors.size() );
203  CaloCell * theCellN2 = 0x0;
204  double eN2 = 0.;
205  if (theNeighbors.size()>0) {
206  nId = theNeighbors.at(0)-myCellHashOffset;
207  myId = m_calo_id->cell_id(mySubDet,nId);
208  cellIt = cellMap.find(myId);
209  if (cellIt!=cellMap.end()) {
210  theCellN2 = (*cellIt).second;
211  cellItEng = energyMap.find(theCellN2->ID());
212  if (cellItEng==energyMap.end()) {
213  ATH_MSG_ERROR ( "Identifier not found in energyMap" );
214  return StatusCode::FAILURE;
215  }
216  eN2 = (*cellItEng).second;
217  EMEC3neighbors++;
218  }
219  }
220  //
221  m_calo_id->get_neighbours(myHashId+myCellHashOffset,LArNeighbours::prevInEta,theNeighbors);
222  ATH_MSG_DEBUG ( "N3 theNeighbors.size() = " << theNeighbors.size() );
223  CaloCell * theCellN3 = 0x0;
224  double eN3 = 0.;
225  if (theNeighbors.size()>0) {
226  nId = theNeighbors.at(0)-myCellHashOffset;
227  myId = m_calo_id->cell_id(mySubDet,nId);
228  cellIt = cellMap.find(myId);
229  if (cellIt!=cellMap.end()) {
230  theCellN3 = (*cellIt).second;
231  cellItEng = energyMap.find(theCellN3->ID());
232  if (cellItEng==energyMap.end()) {
233  ATH_MSG_ERROR ( "Identifier not found in energyMap" );
234  return StatusCode::FAILURE;
235  }
236  eN3 = (*cellItEng).second;
237  EMEC3neighbors++;
238  }
239  }
240 
241  // neighbors in eta of EMEC2 cell (N4,N5) -- only if they exist
242  int EMEC2neighbors = 0;
243  myHashId = m_calo_id->subcalo_cell_hash(theCell->ID(),otherSubDet);
244  //
245  m_calo_id->get_neighbours(myHashId+myCellHashOffset,LArNeighbours::nextInEta,theNeighbors);
246  ATH_MSG_DEBUG ( "N4 theNeighbors.size() = " << theNeighbors.size() );
247  CaloCell * theCellN4 = 0x0;
248  double eN4 = 0.;
249  if (theNeighbors.size()>0) {
250  nId = theNeighbors.at(0)-myCellHashOffset;
251  myId = m_calo_id->cell_id(mySubDet,nId);
252  cellIt = cellMap.find(myId);
253  if (cellIt!=cellMap.end()) {
254  theCellN4 = (*cellIt).second;
255  cellItEng = energyMap.find(theCellN4->ID());
256  if (cellItEng==energyMap.end()) {
257  ATH_MSG_ERROR ( "Identifier not found in energyMap" );
258  return StatusCode::FAILURE;
259  }
260  eN4 = (*cellItEng).second;
261  EMEC2neighbors++;
262  }
263  }
264  //
265  m_calo_id->get_neighbours(myHashId+myCellHashOffset,LArNeighbours::prevInEta,theNeighbors);
266  ATH_MSG_DEBUG ( "N5 theNeighbors.size() = " << theNeighbors.size() );
267  CaloCell * theCellN5 = 0x0;
268  double eN5 = 0.;
269  if (theNeighbors.size()>0) {
270  nId = theNeighbors.at(0)-myCellHashOffset;
271  myId = m_calo_id->cell_id(mySubDet,nId);
272  cellIt = cellMap.find(myId);
273  if (cellIt!=cellMap.end()) {
274  theCellN5 = (*cellIt).second;
275  cellItEng = energyMap.find(theCellN5->ID());
276  if (cellItEng==energyMap.end()) {
277  ATH_MSG_ERROR ( "Identifier not found in energyMap" );
278  return StatusCode::FAILURE;
279  }
280  eN5 = (*cellItEng).second;
281  EMEC2neighbors++;
282  }
283  }
284 
285  double rescaled_e = (1.-m_xtalkScaleLong-EMEC3neighbors*m_xtalkScaleEta-EMEC2neighbors*m_xtalkScaleEMEC2Eta)*e
286  + m_xtalkScaleLong*eN1 + m_xtalkScaleEta*(eN2+eN3) + m_xtalkScaleEMEC2Eta*(eN4+eN5)
287  + (theCell->energy()-e);
288  double rescaled_eN1 = 0;
289  if (theCellN1) rescaled_eN1 = (1.-m_xtalkScaleLong)*eN1 + m_xtalkScaleLong*e + (theCellN1->energy()-eN1);
290  double rescaled_eN2 = 0.;
291  if (theCellN2) rescaled_eN2 = (1.-m_xtalkScaleEta)*eN2 + m_xtalkScaleEta*e + (theCellN2->energy()-eN2);
292  double rescaled_eN3 = 0.;
293  if (theCellN3) rescaled_eN3 = (1.-m_xtalkScaleEta)*eN3 + m_xtalkScaleEta*e + (theCellN3->energy()-eN3);
294  /*
295  double rescaled_eN4 = 0.;
296  if (theCellN4) rescaled_eN4 = (1.-m_xtalkScaleEMEC2Eta)*eN4 + m_xtalkScaleEMEC2Eta*e + (theCellN4->energy()-eN4);
297  double rescaled_eN5 = 0.;
298  if (theCellN5) rescaled_eN5 = (1.-m_xtalkScaleEMEC2Eta)*eN5 + m_xtalkScaleEMEC2Eta*e + (theCellN5->energy()-eN5);
299  */
300 
301  ATH_MSG_DEBUG ("");
302  ATH_MSG_DEBUG ( "neighbors of cell [" << m_calo_id->show_to_string(theCell ->ID(),0,'/') << "] : " );
303  if (theCellN1)
304  ATH_MSG_DEBUG ( " N1 = [" << m_calo_id->show_to_string(theCellN1->ID(),0,'/') << "]" );
305  if (theCellN2)
306  ATH_MSG_DEBUG ( " N2 = [" << m_calo_id->show_to_string(theCellN2->ID(),0,'/') << "]" );
307  if (theCellN3)
308  ATH_MSG_DEBUG ( " N3 = [" << m_calo_id->show_to_string(theCellN3->ID(),0,'/') << "]" );
309  if (theCellN4)
310  ATH_MSG_DEBUG ( " N4 = [" << m_calo_id->show_to_string(theCellN4->ID(),0,'/') << "]" );
311  if (theCellN5)
312  ATH_MSG_DEBUG ( " N5 = [" << m_calo_id->show_to_string(theCellN5->ID(),0,'/') << "]" );
313 
314  ATH_MSG_DEBUG ( "EMEC2 cell : energy before = " << e << " | energy after rescaling = " << rescaled_e );
315  ATH_MSG_DEBUG ( " "
316  << (1.-m_xtalkScaleLong-EMEC3neighbors*m_xtalkScaleEta-EMEC2neighbors*m_xtalkScaleEMEC2Eta)*e
317  << " | " << m_xtalkScaleLong*eN1
318  << " | " << m_xtalkScaleEta*(eN2+eN3)
319  << " | " << m_xtalkScaleEMEC2Eta*(eN4+eN5)
320  << " | " << (theCell->energy()-e) );
321  ATH_MSG_DEBUG ( "EMEC3 cell (N1): energy before = " << eN1 << " | energy after rescaling = " << rescaled_eN1 );
323  << " | " << (theCellN1->energy()-eN1) );
324  if (theCellN2) {
325  ATH_MSG_DEBUG ( "EMEC3 cell (N2): energy before = " << eN2 << " | energy after rescaling = " << rescaled_eN2 );
326  ATH_MSG_DEBUG ( " " << (1.-m_xtalkScaleEta)*eN2 + m_xtalkScaleEta*e
327  << " | " << (theCellN2->energy()-eN2) );
328  }
329  if (theCellN3) {
330  ATH_MSG_DEBUG ( "EMEC3 cell (N3): energy before = " << eN3 << " | energy after rescaling = " << rescaled_eN3 );
331  ATH_MSG_DEBUG ( " " << (1.-m_xtalkScaleEta)*eN3 + m_xtalkScaleEta*e
332  << " | " << (theCellN3->energy()-eN3) );
333  }
334  /*
335  if (theCellN4) {
336  log << MSG::DEBUG << "EMEC2 cell (N4): energy before = " << eN4 << " | energy after rescaling = " << rescaled_eN4 << endmsg;
337  log << MSG::DEBUG << " " << (1.-m_xtalkScaleEMEC2Eta)*eN4 + m_xtalkScaleEMEC2Eta*e
338  << " | " << (theCellN4->energy()-eN4) << endmsg;
339  }
340  if (theCellN5) {
341  log << MSG::DEBUG << "EMEC2 cell (N5): energy before = " << eN5 << " | energy after rescaling = " << rescaled_eN5 << endmsg;
342  log << MSG::DEBUG << " " << (1.-m_xtalkScaleEMEC2Eta)*eN5 + m_xtalkScaleEMEC2Eta*e
343  << " | " << (theCellN5->energy()-eN5) << endmsg;
344  }
345  */
346  theCell ->setEnergy(rescaled_e);
347  if (theCellN1) theCellN1->setEnergy(rescaled_eN1);
348  if (theCellN2) theCellN2->setEnergy(rescaled_eN2);
349  if (theCellN3) theCellN3->setEnergy(rescaled_eN3);
350  //if (theCellN4) theCellN4->setEnergy(rescaled_eN4);
351  //if (theCellN5) theCellN5->setEnergy(rescaled_eN5);
352  }
353  }
354  }
355  return StatusCode::SUCCESS;
356 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TBEMECXTalkToyModel::m_calo_id
const CaloCell_ID * m_calo_id
Definition: TBEMECXTalkToyModel.h:37
CaloDetDescrElement::is_lar_em_endcap_inner
bool is_lar_em_endcap_inner() const
cell belongs to the inner wheel of EM end cap
Definition: CaloDetDescrElement.cxx:114
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TBEMECXTalkToyModel::processOnCellIterators
StatusCode processOnCellIterators(const CaloCellContainer::iterator &itrCellBeg, const CaloCellContainer::iterator &itrCellEnd) const
Definition: TBEMECXTalkToyModel.cxx:137
TBEMECXTalkToyModel::m_xtalkScaleEta
float m_xtalkScaleEta
Definition: TBEMECXTalkToyModel.h:41
index
Definition: index.py:1
TBEMECXTalkToyModel::m_caloNums
std::vector< int > m_caloNums
Definition: TBEMECXTalkToyModel.h:32
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
TBEMECXTalkToyModel::m_xtalkScaleLong
float m_xtalkScaleLong
Definition: TBEMECXTalkToyModel.h:40
TBEMECXTalkToyModel::TBEMECXTalkToyModel
TBEMECXTalkToyModel(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TBEMECXTalkToyModel.cxx:31
CaloCell.h
TBEMECXTalkToyModel::initialize
virtual StatusCode initialize() override
Definition: TBEMECXTalkToyModel.cxx:56
CaloCellContainer::endCalo
CaloCellContainer::iterator endCalo(CaloCell_ID::SUBCALO caloNum)
Definition: CaloCellContainer.cxx:128
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
CaloCell::setEnergy
virtual void setEnergy(float energy)
set energy
Definition: CaloCell.cxx:136
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloCell_ID.h
CaloCell::energy
double energy() const
get energy (data member)
Definition: CaloCell.h:311
CaloDetDescrElement::getSubCalo
CaloCell_ID::SUBCALO getSubCalo() const
cell subcalo
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:433
LArNeighbours::nextInSamp
@ nextInSamp
Definition: LArNeighbours.h:20
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
DataModel_detail::iterator
(Non-const) Iterator class for DataVector/DataList.
Definition: DVLIterator.h:184
TBEMECXTalkToyModel.h
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
CaloCell_Base_ID::calo_cell_hash_range
void calo_cell_hash_range(const Identifier id, IdentifierHash &caloCellMin, IdentifierHash &caloCellMax) const
to loop on 'global' cell hashes of one sub-calorimeter alone
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
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
CaloCell_Base_ID::SUBCALO
SUBCALO
enumeration of sub calorimeters
Definition: CaloCell_Base_ID.h:46
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_Base_ID::subcalo_cell_hash
IdentifierHash subcalo_cell_hash(const Identifier cellId, int &subCalo) const
create hash id from 'global' cell id
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CaloCell_Base_ID::get_neighbours
int get_neighbours(const IdentifierHash caloHash, const LArNeighbours::neighbourOption &option, std::vector< IdentifierHash > &neighbourList) const
access to hashes for neighbours return == 0 for neighbours found
Definition: CaloCell_Base_ID.cxx:190
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
CaloCell_Base_ID::cell_id
Identifier cell_id(const int subCalo, const int barec_or_posneg, const int sampling_or_fcalmodule, const int region_or_dummy, const int eta, const int phi) const
Make a cell (== channel) ID from constituting fields and subCalo index; for (Mini)FCAL,...
CaloCellContainer::beginCalo
CaloCellContainer::iterator beginCalo(CaloCell_ID::SUBCALO caloNum)
get non const iterators on cell of just one calo
Definition: CaloCellContainer.cxx:123
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TBEMECXTalkToyModel::m_xtalkScaleEMEC2Eta
float m_xtalkScaleEMEC2Eta
Definition: TBEMECXTalkToyModel.h:42
DeMoScan.index
string index
Definition: DeMoScan.py:362
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
AtlasDetectorID::show_to_string
std::string show_to_string(Identifier id, const IdContext *context=0, char sep='.') const
or provide the printout in string form
Definition: AtlasDetectorID.cxx:574
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArNeighbours::nextInEta
@ nextInEta
Definition: LArNeighbours.h:15
TBEMECXTalkToyModel::process
virtual StatusCode process(CaloCellContainer *theCellContainer, const EventContext &ctx) const override
Definition: TBEMECXTalkToyModel.cxx:96
declareProperty
#define declareProperty(n, p, h)
Definition: BaseFakeBkgTool.cxx:15
CaloCellContainer::hasCalo
bool hasCalo(const CaloCell_ID::SUBCALO caloNum) const
tell wether it has been filled with cells (maybe none) of a given calo
Definition: CaloCellContainer.cxx:209
LArNeighbours::prevInEta
@ prevInEta
Definition: LArNeighbours.h:14
CaloCell_Base_ID::NSUBCALO
@ NSUBCALO
Definition: CaloCell_Base_ID.h:46
IdentifierHash
Definition: IdentifierHash.h:38
CaloCell_Base_ID::LAREM
@ LAREM
Definition: CaloCell_Base_ID.h:46
TBEMECXTalkToyModel::m_caloSelection
bool m_caloSelection
Definition: TBEMECXTalkToyModel.h:35
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.