ATLAS Offline Software
EMB1CellsFromCaloClusters.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "CxxUtils/prefetch.h"
7 
9  const std::string& name,
10  const IInterface* parent):
11  base_class(type, name, parent){
12 }
13 
16 
17  return StatusCode::SUCCESS;
18 }
19 
21 EMB1CellsFromCaloClusters::cells(std::vector<std::vector<const CaloCell*>>& cells,
22  const EventContext& ctx) const {
23  // Read in a container containing CaloClusters
24 
25  auto h_caloClusters = SG::makeHandle(m_caloClustersKey, ctx);
26  CHECK(h_caloClusters.isValid());
27 
28  auto dvec = *h_caloClusters;
29  ATH_MSG_DEBUG("number of retrieved clusters: " << dvec.size());
30 
31  const CaloCell_ID* calocell_id{nullptr};
32  CHECK(detStore()->retrieve (calocell_id, "CaloCell_ID"));
33 
34  // selector
35  auto EMB1_sel = [&calocell_id](const CaloCell* cell) {
36  return
37  calocell_id->calo_sample(calocell_id->calo_cell_hash(cell->ID())) ==
39  };
40 
41 
42 
43 
44  for(const auto& cl : dvec){
45  const auto *cell_links = cl->getCellLinks();
46  if (!cell_links){
47  ATH_MSG_ERROR("No link from cluster to cells");
48  return StatusCode::FAILURE;
49  } else {
50  ATH_MSG_DEBUG("Number of cells from cell_links " << cell_links->size());
51  }
52 
53 
54  auto c_iter = cell_links->begin();
55  auto c_end = cell_links->end();
56 
57  std::vector<const CaloCell*> cluster_cells;
58  std::copy_if(c_iter,
59  c_end,
60  std::back_inserter(cluster_cells),
61  EMB1_sel);
62 
63  // having less than two cells in the selected cell container
64  // will mess up the simple seed selection procedure, so
65  // add a requirement on the number of selected cells.
66  if (cluster_cells.size() > 1) {
67  cells.push_back(cluster_cells);
68  }
69  }
70 
71  return StatusCode::SUCCESS;
72 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:271
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
EMB1CellsFromCaloClusters::cells
virtual StatusCode cells(std::vector< std::vector< const CaloCell * >> &, const EventContext &) const override
Definition: EMB1CellsFromCaloClusters.cxx:21
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
EMB1CellsFromCaloClusters::initialize
virtual StatusCode initialize() override
Definition: EMB1CellsFromCaloClusters.cxx:14
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
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
test_pyathena.parent
parent
Definition: test_pyathena.py:15
AnalysisUtils::copy_if
Out copy_if(In first, const In &last, Out res, const Pred &p)
Definition: IFilterUtils.h:30
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
CaloCell_ID
Helper class for offline cell identifiers.
Definition: CaloCell_ID.h:34
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
EMB1CellsFromCaloClusters::m_caloClustersKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClustersKey
Definition: EMB1CellsFromCaloClusters.h:33
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
EMB1CellsFromCaloClusters.h
EMB1CellsFromCaloClusters::EMB1CellsFromCaloClusters
EMB1CellsFromCaloClusters(const std::string &type, const std::string &name, const IInterface *parent)
Definition: EMB1CellsFromCaloClusters.cxx:8
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
prefetch.h
Functions to prefetch blocks of memory.