|
ATLAS Offline Software
|
A cluster builder tool forming topo-clusters representing calorimeter tower signals on a regular grid in \( (\eta,\phi) \) space. By default, EM-scale topo-towers are created from cells in topo-clusters.
More...
#include <CaloTopoTowerFromClusterMaker.h>
|
| CaloTopoTowerFromClusterMaker (const std::string &type, const std::string &name, const IInterface *pParent) |
| Tool constructor. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
virtual StatusCode | initialize () override |
| Setting up the operational mode and corresponding parameters. More...
|
|
virtual StatusCode | execute (const EventContext &ctx, xAOD::CaloClusterContainer *pClusCont, CaloCellClusterWeights *cellWeights) const override |
| Execute the tool and fill the xAOD::CaloClusterContainer pointed to by pClusCont . More...
|
|
virtual StatusCode | finalize () override |
| Finalize the tool (no action) More...
|
|
|
bool | addCellToProtoCluster (const CaloTowerGeometry *towerGeo, const CaloCell *cptr, protocont_t &pProtoCont, double weight=1.) const |
| Adding cells to proto-clusters. More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &) |
| specialization for handling Gaudi::Property<SG::VarHandleBase> More...
|
|
Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &) |
| specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
|
|
|
- Returns
false in case of problems with data access or inconsistent data structures
- Parameters
-
- Returns
|
uint_t | buildInclTowers (const CaloTowerGeometry *towerGeo, const CaloCellContainer &pCellCont, protocont_t &pProtoCont) const |
| Inclusive towers. More...
|
|
uint_t | buildExclTowers (const CaloTowerGeometry *towerGeo, const CaloCellContainer &pCellCont, protocont_t &pProtoCont) const |
| Exclusive towers. More...
|
|
uint_t | buildEMTopoTowers (const CaloTowerGeometry *towerGeo, const xAOD::CaloClusterContainer &clusCont, protocont_t &protoCont) const |
| EM topo-towers. More...
|
|
uint_t | buildLCWTopoTowers (const CaloTowerGeometry *towerGeo, const xAOD::CaloClusterContainer &clusCont, protocont_t &protoCont, CaloCellClusterWeights *cellWeights) const |
| LCW topo-towers. More...
|
|
|
StoreGateSvc_t | m_evtStore |
| Pointer to StoreGate (event store by default) More...
|
|
StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) More...
|
|
std::vector< SG::VarHandleKeyArray * > | m_vhka |
|
bool | m_varHandleArraysDeclared |
|
|
SG::ReadCondHandleKey< CaloTowerGeometry > | m_towerGeoKey {this,"TowerGeometry","CaloTowerGeometry"} |
| the name of the key of the CaloTowerGeometry object in the ConditonsStore More...
|
|
SG::ReadCondHandleKey< CaloDetDescrManager > | m_caloMgrKey {this,"CaloDetDescrManager", "CaloDetDescrManager"} |
|
SG::ReadHandleKey< xAOD::CaloClusterContainer > | m_clusterContainerKey |
| Topo-cluster container key. More...
|
|
SG::ReadHandleKey< CaloCellContainer > | m_cellContainerKey |
| Calorimeter cell container. More...
|
|
bool | m_orderByPt = { false } |
| Orders cluster container by \( p_{\text{T}} \), default true . More...
|
|
bool | m_prepareLCW = { false } |
| Prepare LCW calibration, default is false . More...
|
|
bool | m_useCellsFromClusters = { true } |
| Use cells from topo-clusters if true , else use all cells, default is true . More...
|
|
bool | m_applyCellEnergyThreshold = { false } |
| Apply cell energy threshold, default is false . More...
|
|
bool | m_doCellIndexCheck = { false } |
| Check cell hash index consistency if true (default false ) More...
|
|
bool | m_buildCombinedSignal = { false } |
| Build topo-clusters within given \( y \) range, else topo-towers. More...
|
|
double | m_energyThreshold |
| Cell energy threshold, default is set in m_energyThresholdDef . More...
|
|
double | m_clusterRange |
| Range where topo-clusters are used when m_buildCombinedSignal = true More...
|
|
bool | m_removeSamplingData = { true } |
| Remove sampling data for towers. More...
|
|
|
std::vector< CaloSampling::CaloSample > | m_excludedSamplings |
| List of excluded samplings (CaloSampling::CaloSample enumerators) More...
|
|
std::vector< std::string > | m_excludedSamplingsName |
| List of excluded samplings (human-readable names) More...
|
|
std::bitset< _CALOTOPOTOWERFROMCLUSTERMAKER_BITSET_SIZE > | m_excludedSamplingsPattern |
| Bit pattern indicates if sampling is excluded. More...
|
|
A cluster builder tool forming topo-clusters representing calorimeter tower signals on a regular grid in \( (\eta,\phi) \) space. By default, EM-scale topo-towers are created from cells in topo-clusters.
This tool fills EM-scale towers and stores them as xAOD::CaloCluster
. It supports several operational modes, which are controlled by tool properties. It fills a container of type xAOD::CaloClusterContainer
. The properties controlling its specific behavior are:
Properties defining tool behavior |
Property name | Property type | Default value | Comment |
OrderClusterByPt | bool | false | if true , the xAOD::CaloClusterContainer is ordered by \( p_{\rm T}^{\rm clus} \). See further comments below. |
PrepareLCW | bool | false | if true , the tool fills a CaloCellClusterWeights object and records it into the event store to be used by CaloTopoClusterFromTowerCalibrator |
UseCellsFromClusters | bool | true | if true , only cells from topo-clusters are used to fill the towers (topo-towers); else, inclusive towers are filled with all cells. |
Properties setting variables for operational modes |
Property name | Property type | Default value | Comment |
CellEnergyThreshold | double | m_energyThresholdDef | cell energy threshold used in exclusive mode only. See further comments below. |
CellContainerKey | SG::ReadHandleKey<CaloCellContainer> | "AllCalo" | cell container key is needed to pick up CaloCellContainer for all operational modes. |
ClusterContainerKey | SG::ReadHandleKey<xAOD::CaloClusterContainer> | "CaloTopoClusters" | cluster container key is needed to pick up xAOD::CaloClusterContainer for filtered mode (UseCellsFromCluster = true ) |
CellClusterWeightKey | SG::WriteHandleKey<CaloCellClusterWeights> | −N/A− | key for CaloCellClusterWeights object is needed if PrepareLCW = true . Default is empty key. |
BuildCombinedTopoSignal | bool | false | turns on combined topo-cluster/topo-tower output, with topo-clusters used within the rapidity range defined by TopoClusterRange and topo-towers elsewhere. |
TopoClusterRange | double | 5. | sets the range \( y_{\rm topo-cluster}^{\rm max} \) for using topo-clusters when BuildCombinedTopoSignal = true ; topo-clusters with \( \left|y_{\rm topo-cluster}\right| < y_{\rm topo-cluster}^{\rm max} \) are used. |
The towers can be classified as:
- inclusive cell towers All cells are collected into inclusive towers, independent of their signal. Requires properties
UseCellsFromClusters = false
and UseCellEnergyThreshold = false
. Only EM towers are possible, as cells not collected into topo-clustersdo not have a calibration applied.
- exclusive cell towers Cells with \( E > E_{\rm min} \) are collected into exclusive towers. This behaviour is turned on by
UseCellsFromClusters = false
and UseCellEnergyThreshold = true
. A meaningful CellEnergyThreshold
value needs to be provided in addition.
- filtered mode Cells contributing to standard topo-clusters are collected into topo-towers. This behaviour is triggered by
UseCellsFromClusters = true
. Optionally, LCW calibration can be applied to these towers by setting PrepareLCW = true
and scheduling a CaloTopoClusterFromTowerCalibrator
tool after the cluster moment calculators. The values of the UseEnergyThreshold
and CellEnergyThreshold
properties are ignored in this mode. A valid event store key needs to be provided in the to pick up the topo-cluster container. Note that building EM topo-towers requires topo-clusters on EM scale (no LCW applied) to get the correct geometrical cell weights only. LCW topo-towers require LCW scale topo-clusters to get the correct full geometrical and calibration weights.
mixed mode Cells contributing to standard topo-clusters are collected into towers if these topo-clusters are outside of a give rapidity range. The rapidity range is defined by the TopoClusterRange
property. This mode is turned on by setting the property BuildCombinedTopoSignal = true
. It is turned off by default (BuildCombinedTopoSignal = false
). EM scale and LCW scale is possible, as in the filtered mode.
Configuration 2 and 3 are exclusive, with 3 overwriting 2. The output topo-clusters represent calorimeter towers on the EM scale. The can be handed to cluster moment tools (needs EM scale) and, if desired, to a dedicated cluster calibration tool of type xAOD::CaloTowerClusterFromTowerCalibrator
.
To avoid multiple retrievals of the same weights by searching for cells in (many) topo-clusters, the overall weight of the cell signal is stored in a random access look-up table stored in a CaloCellClusterWeights
object in the detector store. This object is created by this tool, if needed. If the tool property CellWeightLookupKey
is set, this object will be generated, filled, and recorded. This is essential for calibrated topo-towers!
- Note
- The
OrderByPt
property, which orders the container by descending transverse momentum, is only useful for EM towers. Applyin LCW may lead to a different order - if a container with LCW towers should be ordered, the corresponding property OrderByPt
of the CaloTopoClusterFromTowerCalibrator
tool should be set to true
.
-
Many more details on the towers are available on this page.
- Author
- Peter Loch loch@.nosp@m.phys.nosp@m.ics.a.nosp@m.rizo.nosp@m.na.ed.nosp@m.u
Definition at line 37 of file CaloTopoTowerFromClusterMaker.h.
◆ protocont_t
◆ StoreGateSvc_t
◆ uint_t
◆ CaloTopoTowerFromClusterMaker()
CaloTopoTowerFromClusterMaker::CaloTopoTowerFromClusterMaker |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
pParent |
|
) |
| |
◆ addCellToProtoCluster()
Adding cells to proto-clusters.
- Returns
true
if cell successfully added to one (or more) proto-clusters
- Parameters
-
cptr | pointer ton non-modifiable CaloCell object |
pProtoCont | reference to proto-cluster container |
weight | additional (global) weight of cell (e.g. for geometrical weight for combined EM-scale signals)
|
Definition at line 437 of file CaloTopoTowerFromClusterMaker.cxx.
442 if ( cptr ==
nullptr ) {
return false; }
450 uint_t cellIdx(pProtoCont.at(towerIdx).getCellLinks()->getCellContainer()->findIndex(cptr->
caloDDE()->
calo_hash()));
451 pProtoCont[towerIdx].addCell(cellIdx,towerGeo->
cellWeight(elm)*
weight); ++nctr;
◆ badIndexValue()
◆ buildEMTopoTowers()
EM topo-towers.
Definition at line 304 of file CaloTopoTowerFromClusterMaker.cxx.
313 for (
const auto *pClus : pClusCont ) {
314 for (
auto fCell(pClus->cell_begin()); fCell != pClus->cell_end(); ++fCell ) {
315 uint_t cidx(
static_cast<uint_t>((*fCell)->caloDDE()->calo_hash()));
316 if ( cidx < cellTags.size() ) {
317 if ( !cellTags.at(cidx) ) { cellTags[cidx] = this->
addCellToProtoCluster(towerGeo,*fCell,pProtoCont); }
327 std::vector<std::tuple<const CaloCell*,double> > cellList(towerGeo->
totalNumberCells(),std::tuple<const CaloCell*,double>(
nullptr,0.));
328 for (
const auto *pClus : pClusCont ) {
330 for (
auto fCell(pClus->cell_begin()); fCell != pClus->cell_end(); ++fCell ) {
331 uint_t cidx(
static_cast<uint_t>((*fCell)->caloDDE()->calo_hash()));
332 if ( cellTags.at(cidx) ) {
333 std::get<1>(cellList[cidx]) += fCell.weight();
335 cellList[cidx] = std::tuple<const CaloCell*,double>(*fCell,fCell.weight());
336 cellTags[cidx] =
true;
344 for (
auto tpl : cellList ) { this->
addCellToProtoCluster(towerGeo,std::get<0>(tpl),pProtoCont,std::get<1>(tpl)); }
348 return cCtr+pProtoCont.size();
◆ buildExclTowers()
Exclusive towers.
Definition at line 419 of file CaloTopoTowerFromClusterMaker.cxx.
423 for (
const auto *cptr : pCellCont ) {
424 if ( cptr ==
nullptr ) {
434 return pProtoCont.size();
◆ buildInclTowers()
Inclusive towers.
Definition at line 401 of file CaloTopoTowerFromClusterMaker.cxx.
405 for (
const auto *cptr : pCellCont ) {
406 if ( cptr ==
nullptr ) {
415 return pProtoCont.size();
◆ buildLCWTopoTowers()
LCW topo-towers.
Definition at line 352 of file CaloTopoTowerFromClusterMaker.cxx.
365 for (
const auto *pClus : pClusCont ) {
367 for (
auto fCell(pClus->cell_begin()); fCell != pClus->cell_end(); ++fCell ) {
371 cellWeights->
set(*fCell,fCell.weight());
376 for (
const auto *pClus : pClusCont ) {
380 for (
auto fCell(pClus->cell_begin()); fCell != pClus->cell_end(); ++fCell ) {
384 cellWeights->
set(*fCell,fCell.weight());
393 return cCtr+pProtoCont.size();
◆ checkCellIndices()
Checks consistency between cell indices and hash identifiers.
Definition at line 521 of file CaloTopoTowerFromClusterMaker.cxx.
529 if ( pCellCont ==
nullptr ) {
531 }
else if ( pCellCont->
empty() ) {
543 std::ofstream logstream; logstream.open(
logname);
544 if ( !logstream.is_open() ) {
548 logstream <<
"##########################################################################" << std::endl;
549 logstream <<
"### This file contains a list of CaloCell indices in CaloCellContainer ###" << std::endl;
550 logstream <<
"### for which this index is not the same as the calorimeter cell hash ###" << std::endl;
551 logstream <<
"### identifier. An empty list indicates full consistency between this ###" << std::endl;
552 logstream <<
"### index and the hash identifier for all cells. ###" << std::endl;
553 logstream <<
"##########################################################################" << std::endl;
554 logstream <<
"<begin list>--------------------------------------------------------------" << std::endl;
561 size_t ifc(0); std::bitset<200000> chkflg; chkflg.reset();
562 for (
size_t i(0);
i<pCellCont->
size(); ++
i ) {
563 if ( pCellCont->
at(
i) !=
nullptr ) {
566 std::string cni(
"UKNOWN");
567 double etai(0.);
double phii(0.);
568 const CaloDetDescrElement* iel =
i < caloDDMgr->element_size() ? caloDDMgr->get_element(
i) :
nullptr;
569 if ( iel !=
nullptr ) {
570 cni = CaloRec::Lookup::getSamplingName(iel->
getSampling());
574 std::string cnc(
"UNKNOWN");
575 double etac(0.);
double phic(0.);
576 const CaloDetDescrElement* cel = chash < caloDDMgr->element_size() ? caloDDMgr->get_element(chash) :
nullptr;
577 if ( cel !=
nullptr ) {
578 cnc = CaloRec::Lookup::getSamplingName(cel->
getSampling());
582 size_t cidx(pCellCont->
findIndex(chash));
583 logstream <<
CaloRec::Helpers::fmtMsg(
"[%06zu] Cell %6zu [%12.12s %5.3f %5.3f] non-matching id %6zu [%12.12s %5.3f %5.3f] findCell() index %6zu",
584 ++ifc,
i,cni.c_str(),etai,phii,chash,cnc.c_str(),etac,phic,cidx) << std::endl;
589 logstream <<
"<end list>----------------------------------------------------------------" << std::endl;
602 for (
size_t i(0);
i<chl.size(); ++
i ) {
if ( !chkflg.test(
i) ) { chl.push_back(
i); } }
603 if ( !chl.empty() ) {
◆ cleanupCells()
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
Execute the tool and fill the xAOD::CaloClusterContainer
pointed to by pClusCont
.
Implements CaloTowerCollectionProcessor.
Definition at line 183 of file CaloTopoTowerFromClusterMaker.cxx.
193 if ( !pCellCont.isValid() ) {
195 return StatusCode::FAILURE;
217 size_t numberOfTowers=towerGeo->
towerBins();
218 protocont_t pProtoCont; pProtoCont.reserve(numberOfTowers);
240 if ( !pTopoClusCont.isValid() ) {
242 return StatusCode::FAILURE;
259 for (
uint_t ipc(0); ipc<pProtoCont.size(); ++ipc ) {
289 volatile double pt1(pc1->pt());
290 volatile double pt2(pc2->pt());
291 return ( pt1 > pt2 );
296 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ filterProtoCluster()
◆ finalize()
StatusCode CaloTopoTowerFromClusterMaker::finalize |
( |
| ) |
|
|
overridevirtual |
◆ getClusterSize() [1/2]
◆ getClusterSize() [2/2]
◆ initialize()
StatusCode CaloTopoTowerFromClusterMaker::initialize |
( |
| ) |
|
|
overridevirtual |
Setting up the operational mode and corresponding parameters.
Definition at line 78 of file CaloTopoTowerFromClusterMaker.cxx.
96 ATH_MSG_INFO(
"Configure for building topo-towers (filtered mode):");
99 ATH_MSG_WARNING(
"[ignore] cannot apply energy thresholds to topo-towers!");
114 ATH_MSG_INFO(
"[accept] configure exclusive towers: use cell energy threshold");
118 return StatusCode::FAILURE;
148 ATH_MSG_INFO(
"Cells from all samplings used for topo-cluster included");
157 for (
size_t i(0);
i<nex; ++
i ) {
166 std::map<bool,std::string> blu { {
true,
"true" }, {
false,
"false" } };
177 return StatusCode::SUCCESS;
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ interfaceID()
static const InterfaceID& CaloTowerCollectionProcessor::interfaceID |
( |
| ) |
|
|
inlinestaticinherited |
◆ isValidIndex()
bool CaloTopoTowerFromClusterMaker::isValidIndex |
( |
uint_t |
idx | ) |
const |
|
inlineprivate |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_applyCellEnergyThreshold
bool CaloTopoTowerFromClusterMaker::m_applyCellEnergyThreshold = { false } |
|
private |
◆ m_buildCombinedSignal
bool CaloTopoTowerFromClusterMaker::m_buildCombinedSignal = { false } |
|
private |
◆ m_caloMgrKey
◆ m_cellContainerKey
◆ m_clusterContainerKey
◆ m_clusterRange
double CaloTopoTowerFromClusterMaker::m_clusterRange |
|
private |
◆ m_clusterRangeDef
const double CaloTopoTowerFromClusterMaker::m_clusterRangeDef = 5. |
|
staticprivate |
◆ m_detStore
◆ m_doCellIndexCheck
bool CaloTopoTowerFromClusterMaker::m_doCellIndexCheck = { false } |
|
private |
◆ m_energyThreshold
double CaloTopoTowerFromClusterMaker::m_energyThreshold |
|
private |
◆ m_energyThresholdDef
const double CaloTopoTowerFromClusterMaker::m_energyThresholdDef = -100000000. |
|
staticprivate |
◆ m_errorValueUINT
◆ m_evtStore
◆ m_excludedSamplings
◆ m_excludedSamplingsName
std::vector<std::string> CaloTopoTowerFromClusterMaker::m_excludedSamplingsName |
|
private |
◆ m_excludedSamplingsPattern
◆ m_numberOfSamplings
uint_t CaloTopoTowerFromClusterMaker::m_numberOfSamplings |
|
private |
◆ m_orderByPt
bool CaloTopoTowerFromClusterMaker::m_orderByPt = { false } |
|
private |
◆ m_prepareLCW
bool CaloTopoTowerFromClusterMaker::m_prepareLCW = { false } |
|
private |
◆ m_removeSamplingData
bool CaloTopoTowerFromClusterMaker::m_removeSamplingData = { true } |
|
private |
◆ m_towerGeoKey
◆ m_useCellsFromClusters
bool CaloTopoTowerFromClusterMaker::m_useCellsFromClusters = { true } |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
uint_t buildLCWTopoTowers(const CaloTowerGeometry *towerGeo, const xAOD::CaloClusterContainer &clusCont, protocont_t &protoCont, CaloCellClusterWeights *cellWeights) const
LCW topo-towers.
bool m_orderByPt
Orders cluster container by , default true.
static bool filterProtoCluster(const CaloClusterCellLink &clnk)
Checks for and removes invalid cell links
ClusterSize
Enumeration to identify different cluster sizes.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
void clearSamplingData()
Clear the sampling data.
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
const_iterator begin() const
const begin method
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clusterContainerKey
Topo-cluster container key.
bool msgLvl(const MSG::Level lvl) const
bool check(size_t hash) const
Safe checking if cell is used by any cluster.
std::string fmtMsg(const char *fmt,...)
double towerPhi(index_t towerIndex) const
Return azimuth from global tower index (bin center)
bool m_applyCellEnergyThreshold
Apply cell energy threshold, default is false.
void set(size_t hash, double value)
uint_t buildExclTowers(const CaloTowerGeometry *towerGeo, const CaloCellContainer &pCellCont, protocont_t &pProtoCont) const
Exclusive towers.
SG::ReadHandleKey< CaloCellContainer > m_cellContainerKey
Calorimeter cell container.
float eta_raw() const
cell eta_raw
virtual void setOwner(IDataHandleHolder *o)=0
bool checkCellIndices(const CaloTowerGeometry *towerGeo, const CaloDetDescrManager *caloDDM, const CaloCellContainer *pCellCont) const
Checks consistency between cell indices and hash identifiers.
static const double m_energyThresholdDef
Default energy threshold.
uint_t maxCellHash() const
Maximum cell hash value.
std::vector< CaloProtoCluster > protocont_t
Container for CaloProtoCluster objects.
Description of a calorimeter cluster.
const CaloCellContainer * getCellContainer() const
Method to access underlying cell container.
IdentifierHash calo_hash() const
cell calo hash
double m_clusterRange
Range where topo-clusters are used when m_buildCombinedSignal = true
bool m_doCellIndexCheck
Check cell hash index consistency if true (default false)
void setPhi0(flt_t)
Set raw of cluster seed.
bool m_buildCombinedSignal
Build topo-clusters within given range, else topo-towers.
bool isValidIndex(uint_t idx) const
Checks if argument is a valid index value.
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
SG::ReadCondHandleKey< CaloTowerGeometry > m_towerGeoKey
the name of the key of the CaloTowerGeometry object in the ConditonsStore
std::vector< CaloSampling::CaloSample > m_excludedSamplings
List of excluded samplings (CaloSampling::CaloSample enumerators)
SG::ReadCondHandleKey< CaloDetDescrManager > m_caloMgrKey
double towerEta(index_t towerIndex) const
Return pseudorapidity from global tower index (bin center)
static xAOD::CaloCluster::ClusterSize getClusterSize(uint_t etaBins, uint_t phiBins)
Returns a cluster size tag from number of eta and phi bins in tower grid.
uint_t buildInclTowers(const CaloTowerGeometry *towerGeo, const CaloCellContainer &pCellCont, protocont_t &pProtoCont) const
Inclusive towers.
CaloClusterCellLink::iterator removeCell(iterator cellItr)
Method to remove a cell.
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
bool addCellToProtoCluster(const CaloTowerGeometry *towerGeo, const CaloCell *cptr, protocont_t &pProtoCont, double weight=1.) const
Adding cells to proto-clusters.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
std::atomic< bool > CaloTopoTowerFromClusterMaker_checkCellIndices(false)
uint_t towerBins() const
Total number of towers.
bool m_prepareLCW
Prepare LCW calibration, default is false.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
bool calculateKine(xAOD::CaloCluster *pClus, bool onlyKine=false)
Kinematic updates.
static const uint_t m_errorValueUINT
Error value for uint_t type values.
std::size_t uint_t
Unsigned integral type.
size_t size() const
size method
Tower geometry store and description provider.
std::vector< std::string > m_excludedSamplingsName
List of excluded samplings (human-readable names)
uint_t m_numberOfSamplings
Number of samplings.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
StatusCode initialize(bool used=true)
const_iterator end() const
const end method
bool m_removeSamplingData
Remove sampling data for towers.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
index_t towerIndex(IdentifierHash cellHash) const
Get global tower index for a calorimeter cell referenced by its hash identifier.
uint_t totalNumberCells() const
Total number of cells.
CaloClusterCellLink * releaseCellLinks()
Hand over ownership of CaloClusterCellLink to client.
void addCellLink(CaloClusterCellLink *CCCL)
This class provides the client interface for accessing the detector description information common to...
Data object for each calorimeter readout cell.
void setClusterSize(const ClusterSize)
Get cluster size.
CaloCell_ID::CaloSample getSampling() const
cell sampling
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
static const double m_clusterRangeDef
Default cluster range.
uint_t badIndexValue() const
Returns value indicating a bad index.
int findIndex(const IdentifierHash theHash) const
Return index of the cell with a given hash.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
uint_t buildEMTopoTowers(const CaloTowerGeometry *towerGeo, const xAOD::CaloClusterContainer &clusCont, protocont_t &protoCont) const
EM topo-towers.
std::bitset< _CALOTOPOTOWERFROMCLUSTERMAKER_BITSET_SIZE > m_excludedSamplingsPattern
Bit pattern indicates if sampling is excluded.
static std::string getSamplingName(CaloSample theSample)
Returns a string (name) for each CaloSampling.
const T * at(size_type n) const
Access an element, as an rvalue.
bool m_useCellsFromClusters
Use cells from topo-clusters if true, else use all cells, default is true.
double cellWeight(const element_t &elm) const
Retrieve cell signal weight from lookup table entry.
size_type size() const noexcept
Returns the number of elements in the collection.
elementvector_t getTowers(IdentifierHash cellHash) const
Retrieve the list of towers associated with a calorimeter cell referenced by its hash identifier.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
bool empty() const noexcept
Returns true if the collection is empty.
int cleanupCells(const CaloTowerGeometry *towerGeo, CaloClusterCellLink *clk, uint_t nclus) const
Checks CaloClusterCellLink for consistency.
double m_energyThreshold
Cell energy threshold, default is set in m_energyThresholdDef.
bool isInvalidIndex(index_t idx) const
Returns true if argument is equal to the value provided by invalidIndex()
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
float phi_raw() const
cell phi_raw