ATLAS Offline Software
CaloTopoTowerBuilderTool.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 
6 #include "CLHEP/Units/SystemOfUnits.h"
7 
8 #include "GaudiKernel/AlgTool.h"
9 
10 #include "Gaudi/Property.h"
11 #include "GaudiKernel/Service.h"
12 #include "GaudiKernel/IToolSvc.h"
13 
14 #include "StoreGate/StoreGateSvc.h"
15 
17 
18 #include "CaloEvent/CaloCell.h"
21 #include "CaloEvent/CaloTower.h"
22 #include "CaloEvent/CaloTowerContainer.h"
24 
26 
28 #include "CaloEvent/CaloCluster.h"
29 
31 
32 #include <string>
33 #include <cmath>
34 
36  const std::string& type,
37  const IInterface* parent)
39  m_calo_id(nullptr)
40 {
41  declareInterface<ICaloTopoTowerBuilderToolBase>(this);
42 }
43 
45 = default;
46 
48 // Specific Initialization //
50 
51 // protected!
53 {
54  ATH_MSG_INFO( "Initializing CaloTopoTowerAlg" );
55 
56  ATH_CHECK(detStore()->retrieve(m_calo_id, "CaloCell_ID"));
57 
58  return StatusCode::SUCCESS;
59 }
60 
62 // Tower Builder //
64 
66  CaloTopoTowerContainer* theTowers, const CaloCellContainer* /*theCells*/) const
67 {
69  //Starting loading variables from CaloTopoTowerContainer
70 
71  ATH_MSG_DEBUG("Loading variables from theTowers");
72  const CaloTowerContainer* towerContainer=theTowers->GetTowers();
73  const CaloClusterContainer* clusters=theTowers->GetClusters();
74  const CaloCellContainer* Cells=theTowers->GetCells();
75 
76  if (!towerContainer || !clusters || !Cells) {
77  msg(MSG::WARNING) << " Missing input container : ";
78  if (!towerContainer) msg(MSG::WARNING) << " no tower ";
79  if (!clusters) msg(MSG::WARNING) << " no TopoClusters ";
80  if (!Cells) msg(MSG::WARNING) << " no Cells ";
81  msg(MSG::WARNING) << " .. no CaloTopoTowers are made " << endmsg;
82  return StatusCode::SUCCESS;
83  }
84 
85  const ElementLink<CaloCellContainer> CellsEL (*Cells, 0, ctx);
86 
87  const CaloCell2ClusterMap* cellToClusterMap=theTowers->GetCellToClusterMap();
88  bool delete_cellToClusterMap=false;
89  if(cellToClusterMap==nullptr ){
90  cellToClusterMap=CreateCaloCell2ClusterMap(clusters);
91  delete_cellToClusterMap=true;
92  }
93  ATH_MSG_DEBUG( "Tower size " << towerContainer->size() );
94  ATH_MSG_DEBUG( "Cluster size " << clusters->size() );
95  ATH_MSG_DEBUG( "Cell size " << Cells->size() );
96 
97  double minimumCellEnergy = theTowers->GetMinimumCellEnergy();
98  double minimumClusterEnergy = theTowers->GetMinimumClusterEnergy();
99 
100  bool useCellWeights = theTowers->GetUseCellWeights();
101 
102  ATH_MSG_DEBUG("Energy cuts " << minimumCellEnergy << " " << minimumClusterEnergy << " " << useCellWeights);
103 
104  float noiseSigma0 = theTowers->GetNoiseSigma();
105  float cellESignificanceThreshold = theTowers->GetCellESignificanceThreshold();
106 
107 
108  ATH_MSG_DEBUG("Noise cuts "<< noiseSigma0 << " " << cellESignificanceThreshold);
109 
110  // List of calorimeters from which to use cells
111  std::vector<CaloCell_ID::SUBCALO> caloIndices = theTowers->GetCaloIndices();
112  bool caloSelection = theTowers->GetCaloSelection();
113 
114  ATH_MSG_DEBUG("caloSelection " << caloSelection << " " << caloIndices.size());
115 
116  //Finished loading variables from CaloTopoTowerContainer
119  const CaloClusterContainer* clusterContainer = nullptr;
120  CaloCell2ClusterMap::const_iterator fClusMap(cellToClusterMap->begin());
121  CaloCell2ClusterMap::const_iterator lClusMap(cellToClusterMap->end());
122  ATH_MSG_DEBUG("Starting loop over Navigable CaloCell2ClusterMap");
123  while ( clusterContainer == nullptr && fClusMap != lClusMap ){
124  ATH_MSG_VERBOSE("In loop over Navigable CaloCell2ClusterMap");
125  if (*fClusMap) {
126  // Pick first Navigable and then ask first entry in this
127  // Navigable for the pointer to the CaloClusterContainer.
128  // This should be sufficient because all entries should
129  // have the same pointer. (TBC)
130  ATH_MSG_DEBUG("CaloCell2ClusterMap has entry");
131  const nav_t* pNav = (*fClusMap);
132  clusterContainer = pNav->getContainer(pNav->begin());
133  ATH_MSG_DEBUG("Successfully picked up CaloClusterContainer ");
134  }
135  else ++fClusMap;
136  }
137 
138  // Make sure the cluster container is not NULL
139  if ( clusterContainer == nullptr ) {
140  if (!Cells->empty() ) {
141  ATH_MSG_WARNING( "No cluster found from CaloCell2ClusterMap, tool unusable" );
142  }
143  else {
144  ATH_MSG_DEBUG(" empty calorimeter event .. return ");
145  }
146 
147  if(delete_cellToClusterMap){
148  ATH_MSG_DEBUG( "Deleting cellToClusterMap Pointer");
149  delete cellToClusterMap;
150  ATH_MSG_DEBUG("Deleting cellToClusterMap Pointer Finished");
151  }
152 
153  return StatusCode::SUCCESS;
154  }
155  else
156  ATH_MSG_DEBUG("Size of CaloClusterContainer = " << clusterContainer->size());
157 
160  // (*towerIter) is the ITERATOR over TOWERS
161  // (*cellInTowerIter) is the ITERATOR over CELLS for this TOWER
162 
163  ATH_MSG_DEBUG("Beginning loop over tower grid");
164 
165  for (const CaloTower* tower : *towerContainer)
166  {
167  int towerIndex = towerContainer->getTowerIndex(tower);
168 
169  CaloTower* newTower = theTowers->getTower(towerIndex);
170 
172  ATH_MSG_VERBOSE("In loop over tower grid: tower eta-phi" << tower->eta() << " " << tower->phi());
173  CaloTower::cell_iterator cellInTowerIter(tower->cell_begin());
174  CaloTower::cell_iterator lastCellInTower(tower->cell_end());
175 
177  double energyTower = 0.0;
178  double totalAttachedClusterEnergy = 0.0;
179  int numberOfCellsInTower = 0;
180  int numberOfAttachedCellsInTower = 0;
181  int numberOfClustersInTower = 0;
182  int totalNumberOfCellsInAttachedClusters = 0;
184  ATH_MSG_VERBOSE("Now looking at all cells in this tower");
185  for ( ; cellInTowerIter != lastCellInTower; cellInTowerIter++ ){
186  numberOfCellsInTower++;
187  // geometrical cell weight in towers
188  // **** Note that in the header it says that this gets the kinematic weight
189  // **** is this somehow different from the geometrical weight?
190  double signedE = 0.0; // zero-out the energy for this cell in case we can't get it from the map
191  double weight = tower->getCellWeight(cellInTowerIter); // get the weight of this cell in the tower
192 
193  const CaloCell* cell = (*cellInTowerIter);
194  if (!cell) continue;
195 
196  size_t globalIndex=0;
197  if (!(tower->getCellIndex(cell,globalIndex)) ) {
198  ATH_MSG_WARNING( " cannot find back cell index " );
199  continue;
200  }
201 
202  if (caloSelection) {
203  CaloCell_ID::SUBCALO iCaloNum = (cell->caloDDE()->getSubCalo()); // keep only cells from desired calorimeter
204  std::vector<CaloCell_ID::SUBCALO>::const_iterator theFound =
205  find (caloIndices.begin(),caloIndices.end(),iCaloNum);
206  if (theFound==caloIndices.end()) continue ;
207  }
208 
209  signedE = cell->e(); // get the cell energy if we got a good pointer
210  if (!useCellWeights) weight = 1.0; // if we chose not to use the cell weights, reset to 1.0
211  double cellEnergy = weight * signedE; // calculate the energy of this cell in this tower using the weight
212 
213 
214  float signedRatio=0;
215 
216  float noiseSigma = 1.0;
217  if (cellESignificanceThreshold>=0.) {
218  noiseSigma = noiseSigma0;
219  if ( noiseSigma > 0. ) signedRatio = signedE/noiseSigma;
220  }
221 
222  // WARNINGGING
223  ATH_MSG_VERBOSE( " Cell has E = " << signedE << " eta,phi " << cell->eta() << " " << cell->phi() );
224  ATH_MSG_VERBOSE( "Cell has E in tower = " << cellEnergy );
225  ATH_MSG_VERBOSE( " Cell noise sigma = " << noiseSigma );
226  ATH_MSG_VERBOSE( " Cell noise signif = " << signedRatio );
228  if ( (signedE > minimumCellEnergy) && ( fabs(signedRatio) > cellESignificanceThreshold) ){
229  // find clusters associated to this cell using the hash ID
230  size_t cellIndex(cell->caloDDE()->calo_hash());
231  ATH_MSG_VERBOSE("Cell index from CaloCell2ClusterMap = " << cellIndex);
232  const nav_t* nav = (cellToClusterMap->operator[])(cellIndex);
233 
235  if (!nav) {
236  ATH_MSG_VERBOSE("No Cluster container from this cell!");
237  }
238  else{
240  ATH_MSG_VERBOSE("Cell associated to N clusters = " << nav->size());
241  nav_t::object_iter clusterIterator(nav->begin());
242  nav_t::object_iter lastCluster(nav->end());
243  for ( ; clusterIterator != lastCluster; clusterIterator++ ){
244  const CaloCluster* clusterFromCell = (*clusterIterator);
245  double eClusRaw = clusterFromCell->getBasicEnergy();
246  double eClus = clusterFromCell->energy();
247  ATH_MSG_VERBOSE( " Cluster Basic Energy = " << eClusRaw);
248  ATH_MSG_VERBOSE( " Cluster Normal Energy = " << eClus);
249 
251  if ( eClusRaw > minimumClusterEnergy ){
252  ATH_MSG_VERBOSE("Cluster has at least E > " << minimumClusterEnergy);
253 
254  numberOfAttachedCellsInTower++;
255  totalNumberOfCellsInAttachedClusters += clusterFromCell->getNumberOfCells();
256  totalAttachedClusterEnergy += eClusRaw;
257  energyTower += cellEnergy;
258  numberOfClustersInTower++;
259 
260  newTower->addUniqueCellNoKine(CellsEL,globalIndex,weight, 10);
261 
262  // now that we found the cell in at least one cluster above threshold, stop looking at associated clusters
263  ATH_MSG_VERBOSE(" -- Found at least one cluster passing cuts. 'break'");
264  break;
265 
266  } // cluster filter
267  } // clusters from cell loop
268  ATH_MSG_VERBOSE("Finished cluster loop");
269  } // cluster associated to cell
270  } // cell filter
271  } // cell loop
272  ATH_MSG_VERBOSE("Finished cell loop");
273 
275  newTower->setE(energyTower);
276 
277  // Report some information about this Topo-Tower
278  if (msgLvl(MSG::VERBOSE)) {
279  msg() << endmsg;
280  ATH_MSG_VERBOSE( "Old/ new TopoTower energy from all cells = " << tower->e() << " " << newTower->e() );
281  ATH_MSG_VERBOSE( "TopoTower energy adding all cells in clusters = " << energyTower );
282  ATH_MSG_VERBOSE( "Total attached cluster energy = " << totalAttachedClusterEnergy );
283  ATH_MSG_VERBOSE( "Total number of attached clusters = " << numberOfClustersInTower );
284  ATH_MSG_VERBOSE( "Number of cells in attached clusters = " << totalNumberOfCellsInAttachedClusters );
285  ATH_MSG_VERBOSE( "Total number of cells originally in tower = " << numberOfCellsInTower );
286  ATH_MSG_VERBOSE( "Total number of cells from clusters = " << numberOfAttachedCellsInTower );
287 
288  CaloTower::cell_iterator cellInTowerIter(newTower->cell_begin());
289  CaloTower::cell_iterator lastCellInTower(newTower->cell_end());
290  msg(MSG::VERBOSE) << " E*weight, eta, phi of cells in new tower ";
291  for ( ; cellInTowerIter != lastCellInTower; cellInTowerIter++ ) {
292  double weight = tower->getCellWeight(cellInTowerIter); // get the weight of this cell in the tower
293  const CaloCell* cell = (*cellInTowerIter);
294  if (!cell) continue;
295  msg(MSG::VERBOSE) << cell->e()*weight << " " << cell->eta() << " " << cell->phi() << " / ";
296  }
297  msg(MSG::VERBOSE) << endmsg;
298  }
299 
300  } // tower loop
301  if(delete_cellToClusterMap){
302  ATH_MSG_DEBUG("Deleting cellToClusterMap Pointer");
303  delete cellToClusterMap;
304  ATH_MSG_DEBUG("Deleting cellToClusterMap Pointer Finished");
305  }
306  ATH_MSG_DEBUG("Finished creating TopoTowers");
307 
308  return StatusCode::SUCCESS;
309 }
310 
311 
312 
313 
314 void CaloTopoTowerBuilderTool::handle(const Incident&) {
315 
316 }
317 
319 {
320  return StatusCode::SUCCESS;
321 }
322 
323 
324 
325 const CaloCell2ClusterMap*
327 {
328  ATH_MSG_DEBUG("CreateCaloCell2ClusterMap() Starting");
329  CaloCell2ClusterMap *cell2ClusterMap;
330  cell2ClusterMap = new CaloCell2ClusterMap();
331  // resize it to total range of IdentifierHash for all calos
333  cell2ClusterMap->resize(maxRange);
334 
335  ATH_MSG_DEBUG("CaloCluster container contains " << clusColl->size() << " clusters");
336  // loop over cluster collection and add each cluster to the map for
337  // each member cell
338  for (const CaloCluster* clust : *clusColl) {
339  // loop over its cell members
340  if ((clust->getNumberOfCells()) == 0 ) {
341  ATH_MSG_DEBUG(" no cells for this cluster... No reverse navigation possible...");
342  }
343  else {
344  CaloCluster::cell_iterator cellIter = clust->cell_begin();
345  CaloCluster::cell_iterator cellIterEnd = clust->cell_end();
346  for( ;cellIter!=cellIterEnd;cellIter++) {
347  // look up the IdentifierHash for the current cell
348  if (*cellIter) {
349  IdentifierHash myHashId = m_calo_id->calo_cell_hash((*cellIter)->ID());
350  // get the existing? Navigable for this cell
351  Navigable<CaloClusterContainer> *theNav = (*cell2ClusterMap)[myHashId];
352  if ( !theNav ) {
353  // create a new Navigable if it doesn't exist
354  theNav = new Navigable<CaloClusterContainer>();
355  // and store it in the vector
356  (*cell2ClusterMap)[myHashId] = theNav;
357  }
358  // add the current cluster to the list of clusters for this cell
359  theNav->putElement(clusColl,clust);
360  // add the energy*weight for this cell to the weightedESum
361  }
362  }
363  }
364  }
365  ATH_MSG_DEBUG("CreateCaloCell2ClusterMap() Finished");
366  return cell2ClusterMap;
367 }
368 
369 
370 
CaloEnergyCluster::cell_begin
cell_iterator cell_begin() const
Retrieve a STL-type begin() iterator for the cell store.
Definition: CaloEnergyCluster.cxx:270
CaloTopoTowerContainer::GetClusters
DataLink< CaloClusterContainer > GetClusters() const
Definition: CaloTopoTowerContainer.h:159
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CaloCell2ClusterMap
map of CaloCluster objects each CaloCell belongs to
Definition: CaloCell2ClusterMap.h:27
CaloTowerContainer::getTower
CaloTower * getTower(index_t eta, index_t phi)
Returns a pointer to a tower with given indices.
Definition: CaloTowerContainer.cxx:266
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CaloCell_Base_ID::calo_cell_hash
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
CaloEnergyCluster::cell_end
cell_iterator cell_end() const
Retrieve a STL-type end() iterator for the cell store.
Definition: CaloEnergyCluster.cxx:275
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
CaloTowerStore.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
Navigable::putElement
void putElement(const CONT *objectContainer, const constituent_type *constituentObject, const RPAR &objectParameter=RPAR(), size_t sizeHint=0)
CaloTopoTowerBuilderTool::initializeTool
virtual StatusCode initializeTool() override
Definition: CaloTopoTowerBuilderTool.cxx:52
CaloClusterContainer
Storable container for CaloCluster.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloClusterContainer.h:37
CaloCell.h
Navigable::begin
virtual object_iter begin() const
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
CaloCluster::getBasicEnergy
virtual double getBasicEnergy() const
Access basic energy scale signal.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:876
CaloTopoTowerBuilderTool::execute
virtual StatusCode execute(const EventContext &ctx, CaloTopoTowerContainer *theContainer, const CaloCellContainer *theCell=0) const override
execute
Definition: CaloTopoTowerBuilderTool.cxx:65
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
IOVSVC_CALLBACK_ARGS
#define IOVSVC_CALLBACK_ARGS
short hand for IOVSvc call back argument list, to be used when no access to formal arguments is neede...
Definition: IOVSvcDefs.h:24
CaloEnergyCluster::addUniqueCellNoKine
void addUniqueCellNoKine(const CaloCellContainer *theContainer, index_type theIndex, double weight, size_t size_hint=0)
Add a cell (very fast)
Definition: CaloEnergyCluster.cxx:125
CaloCompositeCellBase::getNumberOfCells
unsigned int getNumberOfCells() const
Return the number of cells in the store.
CaloTopoTowerContainer::GetCells
DataLink< CaloCellContainer > GetCells() const
Definition: CaloTopoTowerContainer.h:163
Navigable::end
virtual object_iter end() const
NavigableIterator
Definition: NavigableIterator.h:24
CaloCell_ID.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
CaloCompositeKineBase::energy
virtual double energy() const
Return energy.
Definition: CaloCompositeKineBase.h:70
CaloTopoTowerBuilderToolBase
CaloTopoTowerBuilderToolBase is abstract base class for tower builders.
Definition: CaloTopoTowerBuilderToolBase.h:22
CaloTopoTowerContainer::GetCaloSelection
bool GetCaloSelection() const
Definition: CaloTopoTowerContainer.h:185
CaloTopoTowerBuilderTool.h
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
CaloCluster::cell_iterator
CaloCompositeCellBase< CaloClusterNavigable >::cell_iterator cell_iterator
Iterator on CaloCell s.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:115
CaloTowerContainer
Storable container class for CaloTower.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTowerContainer.h:77
CaloTopoTowerBuilderTool::CaloTopoTowerBuilderTool
CaloTopoTowerBuilderTool(const std::string &name, const std::string &type, const IInterface *parent)
AlgTool constructor.
Definition: CaloTopoTowerBuilderTool.cxx:35
CaloTower::cell_iterator
CaloEnergyCluster::cell_iterator cell_iterator
Iterator on CaloCell s.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:94
CaloTopoTowerContainer::GetUseCellWeights
bool GetUseCellWeights() const
Definition: CaloTopoTowerContainer.h:173
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
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
CaloTopoTowerContainer::GetMinimumClusterEnergy
double GetMinimumClusterEnergy() const
Definition: CaloTopoTowerContainer.h:171
CaloCell_Base_ID::SUBCALO
SUBCALO
enumeration of sub calorimeters
Definition: CaloCell_Base_ID.h:46
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloTopoTowerContainer
Storable container class for CaloTower.
Definition: CaloTopoTowerContainer.h:51
CaloCluster
Principal data class for CaloCell clusters.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloCluster.h:79
CaloPhiRange.h
CaloPhiRange class declaration.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloTopoTowerContainer::GetNoiseSigma
float GetNoiseSigma() const
Definition: CaloTopoTowerContainer.h:177
CaloTower
Data class for calorimeter cell towers.
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:55
CaloTower::e
virtual double e() const override final
get energy data member
Definition: Calorimeter/CaloEvent/CaloEvent/CaloTower.h:135
DataVector::resize
void resize(size_type sz)
Resizes the collection to the specified number of elements.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Navigable::getContainer
const CONT * getContainer(const constituent_type *aConstituent) const
CaloTopoTowerContainer.h
CaloTopoTowerBuilderTool::handle
virtual void handle(const Incident &) override
Definition: CaloTopoTowerBuilderTool.cxx:314
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
CaloTopoTowerContainer::GetCaloIndices
std::vector< CaloCell_ID::SUBCALO > GetCaloIndices() const
Definition: CaloTopoTowerContainer.h:183
Navigable
Navigable template generalization to handle navigation.
Definition: Navigable.h:93
CaloTopoTowerBuilderTool::m_calo_id
const CaloCell_ID * m_calo_id
Definition: CaloTopoTowerBuilderTool.h:68
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloTopoTowerBuilderTool::~CaloTopoTowerBuilderTool
virtual ~CaloTopoTowerBuilderTool()
Navigable::size
virtual unsigned int size() const
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CaloTopoTowerContainer::GetTowers
DataLink< CaloTowerContainer > GetTowers() const
Definition: CaloTopoTowerContainer.h:161
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CaloTopoTowerBuilderTool::CreateCaloCell2ClusterMap
const CaloCell2ClusterMap * CreateCaloCell2ClusterMap(const CaloClusterContainer *c) const
Definition: CaloTopoTowerBuilderTool.cxx:326
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
CaloTopoTowerContainer::GetMinimumCellEnergy
double GetMinimumCellEnergy() const
Definition: CaloTopoTowerContainer.h:169
P4EEtaPhiM::setE
virtual void setE(double theE)
set energy data member
Definition: P4EEtaPhiM.h:114
CaloTopoTowerContainer::GetCellToClusterMap
const CaloCell2ClusterMap * GetCellToClusterMap() const
Definition: CaloTopoTowerContainer.h:165
Identifier::size_type
IDENTIFIER_TYPE size_type
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:41
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
IdentifierHash
Definition: IdentifierHash.h:38
IGeoModelSvc.h
StoreGateSvc.h
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
CaloTopoTowerContainer::GetCellESignificanceThreshold
float GetCellESignificanceThreshold() const
Definition: CaloTopoTowerContainer.h:179
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloCell_Base_ID::calo_cell_hash_max
size_type calo_cell_hash_max(void) const
cell 'global' hash table max size
CaloTopoTowerBuilderTool::LoadCalibration
virtual StatusCode LoadCalibration(IOVSVC_CALLBACK_ARGS) override
Definition: CaloTopoTowerBuilderTool.cxx:318