ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
CaloTopoClusterMaker Class Reference

topological cluster maker. More...

#include <CaloTopoClusterMaker.h>

Inheritance diagram for CaloTopoClusterMaker:
Collaboration diagram for CaloTopoClusterMaker:

Public Member Functions

 CaloTopoClusterMaker (const std::string &type, const std::string &name, const IInterface *parent)
 
virtual StatusCode execute (const EventContext &ctx, xAOD::CaloClusterContainer *theClusters) const override
 Execute on an entire collection of clusters. More...
 
virtual StatusCode initialize () override
 
void getClusterSize ()
 
virtual StatusCode execute (const EventContext &ctx, xAOD::CaloClusterContainer *collection) const=0
 Execute on an entire collection of clusters. More...
 
virtual StatusCode execute (xAOD::CaloClusterContainer *collection) final
 Execute on an entire collection of clusters. 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 execute (xAOD::CaloClusterContainer *collection) final
 Execute on an entire collection of clusters. More...
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Standard Gaudi interface ID method. More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool passCellTimeCut (const CaloCell *, const CaloCellContainer *) const
 
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...
 

Private Attributes

const CaloCell_IDm_calo_id
 
SG::ReadHandleKey< CaloCellContainerm_cellsKey
 vector of names of the cell containers to use as input. More...
 
std::vector< std::string > m_caloNames
 vector of names of the calorimeters to consider. More...
 
bool m_subcaloUsed [CaloCell_ID::NSUBCALO]
 Flag which subdetectors are to be used. More...
 
float m_cellThresholdOnEorAbsEinSigma
 all cells have to satisfy \(|E| > N_{\rm cell}\,\sigma\) More...
 
float m_neighborThresholdOnEorAbsEinSigma
 cells with \(|E| > N_{\rm neighbor}\,\sigma\) extend the cluster More...
 
float m_seedThresholdOnEorAbsEinSigma
 cells with \(|E| > N_{\rm seed}\,\sigma\) start a cluster More...
 
float m_seedThresholdOnTAbs
 threshold used for timing cut on seed cells. More...
 
float m_timeCutUpperLimit
 upper limit on the energy significance, for applying the cell time cut More...
 
float m_xtalkDeltaT
 additional max. More...
 
float m_xtalk2Eratio1
 cut on Eneighbor/E to revover out of time cell close to energetic first phi neighbor cell More...
 
float m_xtalk2Eratio2
 cut on Eneighbor/E to revover out of time cell close to energetic second phi neighbor cell More...
 
float m_xtalk3Eratio
 cut on Eneighbor/E to revover out of time layer 3cell close to energetic previous sampling neighbor More...
 
float m_xtalkEtaEratio
 cut on Eneighbor/E to revover out of time layer 2 cell close in eta to energetic neighor cell More...
 
float m_xtalk2DEratio
 cut on Eneighbor/E to remove out of time layer layer2 all 2D neighbors More...
 
SG::ReadCondHandleKey< CaloNoisem_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
 Key of the CaloNoise Conditions data object. More...
 
std::string m_neighborOption
 type of neighbor relations to use. More...
 
LArNeighbours::neighbourOption m_nOption
 
bool m_restrictHECIWandFCalNeighbors
 if set to true limit the neighbors in HEC IW and FCal2&3. More...
 
bool m_restrictPSNeighbors
 if set to true limit the neighbors in presampler Barrel and Endcap. More...
 
bool m_seedCutsInAbsE
 if set to true seed cuts are on \(|E|\) and \(|E|_\perp\). More...
 
bool m_neighborCutsInAbsE
 if set to true neighbor cuts are on \(|E|\) and \(|E|_\perp\). More...
 
bool m_cellCutsInAbsE
 if set to true cell cuts are on \(|E|\) and \(|E|_\perp\). More...
 
bool m_clusterCutsInAbsE
 if set to true final cluster cuts are on \(|E|_\perp\). More...
 
float m_clusterEtorAbsEtCut
 \(E_\perp\) cut on the final cluster. More...
 
bool m_twogaussiannoise
 if set to true use 2-gaussian noise description for TileCal
More...
 
bool m_treatL1PredictedCellsAsGood
 if set to true treat cells with a dead OTX which can be predicted by L1 trigger info as good instead of bad cells More...
 
bool m_seedCutsInT
 if set to true, time cut is applied to seed cells, no cut otherwise More...
 
bool m_cutOOTseed
 if set to true, seed cells failing the time cut are also excluded from cluster at all More...
 
bool m_useTimeCutUpperLimit
 if set to true, the time cut is not applied on cell of large significance More...
 
bool m_xtalkEM2
 if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbour cells in phi More...
 
bool m_xtalkEM2D
 if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from all 2D neighors More...
 
bool m_xtalkEM2n
 if set to true (together with m_xtalkEM2) we also extend the time window for 2nd phi neighbors More...
 
bool m_xtalkEM3
 if set to true we extend the time window for direct layer 3 neighbors of high energy layer 2 cells More...
 
bool m_xtalkEMEta
 if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbour cells in eta More...
 
std::vector< std::string > m_samplingNames
 vector of names of the calorimeter samplings to consider for seeds. More...
 
std::set< int > m_validSamplings
 actual set of samplings to be used for seeds More...
 
int m_minSampling
 smallest valid seed sampling found More...
 
int m_maxSampling
 largest valid seed sampling found More...
 
std::vector< bool > m_useSampling
 flag for all samplings - true for used ones, false for excluded ones More...
 
IdentifierHash m_hashMin
 
IdentifierHash m_hashMax
 
xAOD::CaloCluster::ClusterSize m_clusterSize
 Cluster size enum. Set based on energy cut jobO. More...
 
Gaudi::Property< bool > m_useGPUCriteria {this, "UseGPUCriteria", false, "Adopt a set of criteria that is consistent with the GPU implementation."}
 
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
 

Detailed Description

topological cluster maker.

Version
$Id: CaloTopoClusterMaker.h,v 1.24 2009-05-15 12:09:48 artamono Exp $
Author
Sven Menke menke.nosp@m.@mpp.nosp@m.mu.mp.nosp@m.g.de
Date
23-December-2003 Make clusters from CaloCells based on topological neighboring and noise motivated thresholds in units of sigma applied to the absolute value of the energy for each cell. The clusters will have at least one cell with \( E > N_{\rm seed}\,\sigma \) (or \(|E| > N_{\rm seed}\,\sigma \) if SeedCutsInAbsE is true). Cells with \( |E| > N_{\rm neighbor}\,\sigma \) will expand the cluster by means of their neighbors. All cells in the cluster must fulfill \( |E| > N_{\rm cell}\,\sigma \). The actual clustering is performed by expanding around seed cells. The neighboring cells above neighbor threshold (if not used so far) are stored in a list and used in the next expansion step. The algorithm terminates if no more unused neighbor cells are found. The final clusters are copied to the cluster collection if they pass the \(E_\perp\) (or \(|E|_\perp\) if SeedCutsInAbsE is true) cut.

Like all other cluster maker tools this class derives from CaloClusterCollectionProcessor.

Definition at line 48 of file CaloTopoClusterMaker.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ CaloTopoClusterMaker()

CaloTopoClusterMaker::CaloTopoClusterMaker ( const std::string &  type,
const std::string &  name,
const IInterface *  parent 
)

Definition at line 51 of file CaloTopoClusterMaker.cxx.

56  m_calo_id(nullptr),
57  m_cellsKey(""),
58  m_subcaloUsed(),
62  m_seedThresholdOnTAbs ( 12.5*ns),
63  m_timeCutUpperLimit ( 20.),
64  m_xtalkDeltaT ( 15.*ns),
65  m_xtalk2Eratio1 ( 4.),
66  m_xtalk2Eratio2 ( 25.),
67  m_xtalk3Eratio ( 10.),
68  m_xtalkEtaEratio (4.),
69  m_xtalk2DEratio (4.),
70  m_neighborOption ("super3D"),
73  m_restrictPSNeighbors (false),
74  m_seedCutsInAbsE (false),
75  m_neighborCutsInAbsE (true),
76  m_cellCutsInAbsE (true),
77  m_clusterCutsInAbsE (true),
79  m_twogaussiannoise (false),
81  m_seedCutsInT (false),
82  m_cutOOTseed (false),
83  m_useTimeCutUpperLimit (false),
84  m_xtalkEM2 (false),
85  m_xtalkEM2D (false),
86  m_xtalkEM2n (false),
87  m_xtalkEM3 (false),
88  m_xtalkEMEta (false),
89  m_minSampling (0),
90  m_maxSampling (0),
91  m_hashMin (999999),
92  m_hashMax (0),
93  m_clusterSize ()
94 {
95  declareInterface<CaloClusterCollectionProcessor> (this);
96  // Name(s) of Cell Containers
97  declareProperty("CellsName",m_cellsKey);
98 
99  // Name(s) of Calorimeters to consider
100  declareProperty("CalorimeterNames",m_caloNames);
101 
102  // Name(s) of Calorimeter Samplings to consider for seeds
103  declareProperty("SeedSamplingNames",m_samplingNames);
104 
105  // Energy thresholds (in units of noise Sigma)
106  declareProperty("SeedThresholdOnEorAbsEinSigma",
108  declareProperty("NeighborThresholdOnEorAbsEinSigma",
110  declareProperty("CellThresholdOnEorAbsEinSigma",
112 
113  // Seed and cluster cuts are in E or Abs E
114  declareProperty("SeedCutsInAbsE",m_seedCutsInAbsE);
115 
116  // Time thresholds (in abs. val.)
117  declareProperty("SeedThresholdOnTAbs",m_seedThresholdOnTAbs);
118 
119  // Significance upper limit for applying time cut
120  declareProperty("TimeCutUpperLimit",m_timeCutUpperLimit);
121 
122  //do Seed cuts on Time
123  declareProperty("SeedCutsInT",m_seedCutsInT);
124  //exclude out-of-time seeds from neighbouring and cell stage
125  declareProperty("CutOOTseed",m_cutOOTseed);
126  //do not apply time cut on cells of large significance
127  declareProperty("UseTimeCutUpperLimit",m_useTimeCutUpperLimit);
128  //relax time window (if timing is used) in EM2 when xTalk is present
129  declareProperty("XTalkEM2",m_xtalkEM2);
130  //relax time window (if timing is used) in EM2 when xTalk is present for all 2D neighbirs
131  declareProperty("XTalkEM2D",m_xtalkEM2D);
132  //relax time window (if timing is used) in EM2 Eta directionwhen xTalk is present
133  declareProperty("XTalkEMEta",m_xtalkEMEta);
134  //relax time window (if timing is used) in EM2 when xTalk is present also for 2nd phi neighbors (if XTalkEM2 is also set)
135  declareProperty("XTalkEM2n",m_xtalkEM2n);
136  //relax time window (if timing is used) in EM3 when xTalk is present for layer 3 neighbor of high energy layer 2 cells
137  declareProperty("XTalkEM3",m_xtalkEM3);
138  //delta T to add to upper time threshold for EM2 cells affected by xtalk
139  declareProperty("XTalkDeltaT",m_xtalkDeltaT);
140  //Eratio for first phi neighbor in layer2
141  declareProperty("XTalk2Eratio1",m_xtalk2Eratio1);
142  //Eratio for second phi neighbor in layer2
143  declareProperty("XTalk2Eratio2",m_xtalk2Eratio2);
144  //Eratio for previous sampling neighbor in layer 3
145  declareProperty("XTalk3Eratio",m_xtalk3Eratio);
146  //Eratio for cross-talk in eta layer 2
147  declareProperty("XTalkEtaEratio",m_xtalkEtaEratio);
148  //Eratio for cross-talk in all 2D layer 2 neighbors
149  declareProperty("XTalk2DEratio",m_xtalk2DEratio);
150 
151  // Neighbor cuts are in E or Abs E
152  declareProperty("NeighborCutsInAbsE",m_neighborCutsInAbsE);
153 
154  // Cell cuts are in E or Abs E
155  declareProperty("CellCutsInAbsE",m_cellCutsInAbsE);
156 
157  // Neighbor Option
158  declareProperty("NeighborOption",m_neighborOption);
159 
160  // Restrict HEC IW and FCal Neighbors
161  declareProperty("RestrictHECIWandFCalNeighbors",m_restrictHECIWandFCalNeighbors);
162 
163  // Restrict PS Neighbors
164  declareProperty("RestrictPSNeighbors",m_restrictPSNeighbors);
165 
166  //Cluster cuts are in E_t or Abs E_t
167  declareProperty("ClusterCutsInAbsEt",m_clusterCutsInAbsE);
168 
169  // Cluster E_t or Abs E_t cut
170  declareProperty("ClusterEtorAbsEtCut",m_clusterEtorAbsEtCut);
171 
172  // use 2-gaussian noise for Tile
173  declareProperty("TwoGaussianNoise",m_twogaussiannoise);
174 
175  // Treat bad cells with dead OTX if predicted from L1 as good
176  declareProperty("TreatL1PredictedCellsAsGood",m_treatL1PredictedCellsAsGood);
177 }

Member Function Documentation

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation 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.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation 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.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute() [1/4]

virtual StatusCode CaloClusterCollectionProcessor::execute

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters. param ctx The event context.

◆ execute() [2/4]

StatusCode CaloTopoClusterMaker::execute ( const EventContext &  ctx,
xAOD::CaloClusterContainer collection 
) const
overridevirtual

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters. param ctx The event context.

Implements CaloClusterCollectionProcessor.

Definition at line 357 of file CaloTopoClusterMaker.cxx.

359 {
360  // minimal significance - should be > 0 in order to avoid
361  // throwing away of bad cells
362  const float epsilon = 0.00001;
363 
364  //ATH_MSG_DEBUG( "Executing " << name());
365 
367  using HashCluster = CaloTopoTmpHashCluster;
368 
372 
373  // create cell list for cells above seed cut (for seed growing algo)
374  std::vector<HashCell> mySeedCells;
375  mySeedCells.reserve (2000);
376  // create initial cluster list (one cell per cluster)
377  std::vector<HashCluster *> myHashClusters;
378  myHashClusters.reserve (10000);
379 
380  // create vector to hold all cells.
381  std::vector<HashCell> cellVector (m_hashMax - m_hashMin);
382  HashCell* hashCells = cellVector.data() - m_hashMin;
383 
384 
386  const CaloNoise* noiseCDO=*noiseHdl;
387 
388  //---- Get the CellContainers ----------------
389 
390  // for (const std::string& cellsName : m_cellsNames) {
392  if( !cellColl.isValid()){
393  ATH_MSG_ERROR( " Can not retrieve CaloCellContainer: "
394  << cellColl.name() );
395  return StatusCode::RECOVERABLE;
396  }
397 
398  const DataLink<CaloCellContainer> cellCollLink (cellColl.name(),ctx);
399 
400  //ATH_MSG_DEBUG("CaloCell container: "<< cellsName
401  // <<" contains " << cellColl->size() << " cells");
402 
403  for (int isubdet = 0; isubdet < CaloCell_ID::NSUBCALO; ++isubdet) {
404  CaloCell_ID::SUBCALO subdet = (CaloCell_ID::SUBCALO)isubdet;
405  if (m_subcaloUsed[subdet] && cellColl->hasCalo(subdet)) {
406  auto cellIter = cellColl->beginConstCalo (subdet);
407  auto cellIterEnd = cellColl->endConstCalo (subdet);
408  for (int iCell = cellColl->indexFirstCellCalo(subdet);
409  cellIter != cellIterEnd;
410  ++iCell, ++cellIter)
411  {
412  CaloPrefetch::nextDDE(cellIter, cellIterEnd, 2);
413  const CaloCell* pCell = *cellIter;
414  const float noiseSigma = m_twogaussiannoise ? \
415  noiseCDO->getEffectiveSigma(pCell->ID(),pCell->gain(),pCell->energy()) : \
416  noiseCDO->getNoise(pCell->ID(),pCell->gain());
417 
418  float signedE = pCell->energy();
419  float signedEt = pCell->et();
420  float signedRatio = epsilon; // not 0 in order to keep bad cells
421  if ( finite(noiseSigma) && noiseSigma > 0 && !CaloBadCellHelper::isBad(pCell,m_treatL1PredictedCellsAsGood) )
422  signedRatio = signedE/noiseSigma;
423 
424  bool passedCellCut = (m_cellCutsInAbsE?std::abs(signedRatio):signedRatio) > m_cellThresholdOnEorAbsEinSigma;
425  bool passedNeighborCut = (m_neighborCutsInAbsE?std::abs(signedRatio):signedRatio) > m_neighborThresholdOnEorAbsEinSigma;
426  bool passedSeedCut = (m_seedCutsInAbsE?std::abs(signedRatio):signedRatio) > m_seedThresholdOnEorAbsEinSigma;
427 
428  bool applyTimeCut = m_seedCutsInT && (!m_useTimeCutUpperLimit || signedRatio <= m_timeCutUpperLimit);
429  bool passTimeCut_seedCell = (!applyTimeCut || passCellTimeCut(pCell,cellColl.cptr()));
430  bool passedSeedAndTimeCut = (passedSeedCut && passTimeCut_seedCell);
431 
432  bool passedNeighborAndTimeCut = passedNeighborCut;
433  if(m_cutOOTseed && passedSeedCut && !passTimeCut_seedCell) passedNeighborAndTimeCut=false; //exclude Out-Of-Time seeds from neighbouring stage as well (if required)
434 
435  bool passedCellAndTimeCut = passedCellCut;
436  if(m_cutOOTseed && passedSeedCut && !passTimeCut_seedCell) passedCellAndTimeCut=false; //exclude Out-Of-Time seeds from cluster (if required)
437 
438  if ( passedCellAndTimeCut || passedNeighborAndTimeCut || passedSeedAndTimeCut ) {
439  const CaloDetDescrElement* dde = pCell->caloDDE();
440  IdentifierHash hashid = dde ? dde->calo_hash() : m_calo_id->calo_cell_hash(pCell->ID());
441  CaloTopoTmpClusterCell *tmpClusterCell =
442  new (tmpcell_pool.allocate())
443  CaloTopoTmpClusterCell(hashid,subdet,iCell,signedRatio,signedEt);
444 #if 0
445  // some debug printout - can also be used to construct neighbor
446  // tables offline ...
447  if ( m_doALotOfPrintoutInFirstEvent ) {
448  ATH_MSG_DEBUG( " [ExtId|Id|SubDet|HashId|eta|phi|E/noise|Et]: "
449  << "[" << m_calo_id->show_to_string(pCell->ID(),0,'/')
450  << "|" << mypCell->ID().getString()
451  << "|" << subdet
452  << "|" << (unsigned int)hashid
453  << "|" << pCell->eta()
454  << "|" << pCell->phi()
455  << "|" << signedRatio
456  << "|" << signedEt
457  << "]");
458 
459  }
460 #endif
461  HashCell hashCell(tmpClusterCell);
462  if ( passedNeighborAndTimeCut || passedSeedAndTimeCut ) {
463  HashCluster *tmpCluster =
464  new (tmpclus_pool.allocate()) HashCluster (tmplist_pool);
465  tmpClusterCell->setCaloTopoTmpHashCluster(tmpCluster);
466  tmpCluster->add(hashCell);
467  myHashClusters.push_back(tmpCluster);
468  int caloSample = dde ? dde->getSampling() : m_calo_id->calo_sample(pCell->ID());
469  if ( passedSeedAndTimeCut
470  && caloSample >= m_minSampling
471  && caloSample <= m_maxSampling
472  && m_useSampling[caloSample-m_minSampling]) {
473  tmpClusterCell->setUsed();
474  mySeedCells.push_back(hashCell);
475  }
476  }
477  hashCells[hashid] = hashCell;
478  }
479  }//end loop over cells
480  }//end if use subcalo
481  }//end loop over subcalos
482 
483 
484  // sort initial seed cells to start with the cell of largest S/N
485  // this makes the resulting clusters independent of the initial
486  // ordering of the cells
487  if ( m_useGPUCriteria) {
488  if ( m_seedCutsInAbsE) {
490  std::sort(mySeedCells.begin(),mySeedCells.end(),compareSoverN);
491  }
492  else {
494  std::sort(mySeedCells.begin(),mySeedCells.end(),compareSoverN);
495  }
496  }
497  else {
498  if ( m_seedCutsInAbsE) {
500  std::sort(mySeedCells.begin(),mySeedCells.end(),compareSoverN);
501  }
502  else {
504  std::sort(mySeedCells.begin(),mySeedCells.end(),compareSoverN);
505  }
506  }
507 
508 #if 1
509  if (msgLvl(MSG::DEBUG)) {
510  for (const HashCell& hc : mySeedCells) {
511  ATH_MSG_DEBUG( " SeedCell ["
512  << hc.getCaloTopoTmpClusterCell()->getSubDet()
513  << "|"
514  << (unsigned int)hc.getCaloTopoTmpClusterCell()->getID()
515  << "] has S/N = "
516  << hc.getCaloTopoTmpClusterCell()->getSignedRatio()
517  );
518  }
519  }
520 #endif
521 
522  std::vector<HashCell> myNextCells;
523  myNextCells.reserve (1000);
524 
525  std::vector<IdentifierHash> theNeighbors;
526  theNeighbors.reserve(22);
527 #if 0
528  std::vector<IdentifierHash> theNNeighbors;
529  theNNeighbors.reserve(22);
530 #endif
531 
532  bool doRestrictHECIWandFCal = m_restrictHECIWandFCalNeighbors &&
534 
535  bool doRestrictPS = m_restrictPSNeighbors &&
537 
538  while ( !mySeedCells.empty() ) {
539  // create cell list for next neighbor cells to consider
540  myNextCells.clear();
541 
542  // loop over all current neighbor cells (for Seed Growing Algo)
543  for (HashCell& hc : mySeedCells) {
544  CaloTopoTmpClusterCell* pCell= hc.getCaloTopoTmpClusterCell();
545  IdentifierHash hashid = pCell->getID();
546  HashCluster *myCluster = pCell->getCaloTopoTmpHashCluster();
547  CaloCell_ID::SUBCALO mySubDet = pCell->getSubDet();
548  // in case we use all3d or super3D and the current cell is in the
549  // HEC IW or FCal2 & 3 or PS and we want to restrict their neighbors,
550  // use only next in sampling neighbors
552  if (( mySubDet != CaloCell_ID::LAREM &&
553  doRestrictHECIWandFCal &&
554  ( ( mySubDet == CaloCell_ID::LARHEC &&
555  m_calo_id->region(m_calo_id->cell_id(hashid)) == 1 ) ||
556  ( mySubDet == CaloCell_ID::LARFCAL &&
557  m_calo_id->sampling(m_calo_id->cell_id(hashid)) > 1 ) ) ) ||
558  ( doRestrictPS &&
559  ( ( mySubDet == CaloCell_ID::LAREM &&
560  m_calo_id->sampling(m_calo_id->cell_id(hashid)) == 0 ) ) ) ) {
562  }
563  m_calo_id->get_neighbours(hashid,opt,theNeighbors);
564  // loop over all neighbors of that cell (Seed Growing Algo)
565  for (IdentifierHash nId : theNeighbors) {
566  CaloCell_ID::SUBCALO otherSubDet =
568  if ( m_subcaloUsed[otherSubDet] ) {
569  HashCell neighborCell = hashCells[nId];
570  if ( neighborCell.getCaloTopoTmpClusterCell() ) {
571  CaloTopoTmpClusterCell* pNCell =
572  neighborCell.getCaloTopoTmpClusterCell();
573  // check neighbor threshold only since seed cells are already in
574  // the original list
575  bool isAboveNeighborThreshold =
576  (m_neighborCutsInAbsE?std::abs(pNCell->getSignedRatio()):pNCell->getSignedRatio()) > m_neighborThresholdOnEorAbsEinSigma;
577  // checking the neighbors
578  if ( isAboveNeighborThreshold && !pNCell->getUsed() ) {
579  pNCell->setUsed();
580  myNextCells.push_back(neighborCell);
581  }
582  HashCluster *otherCluster = pNCell->getCaloTopoTmpHashCluster();
583  if ( myCluster != otherCluster ) {
584  HashCluster *toKill = nullptr;
585  HashCluster *toKeep = nullptr;
586  if ( !otherCluster || isAboveNeighborThreshold ) {
587 
588  auto compareClusters = [&](const auto & c1, const auto & c2) {
589  if (m_useGPUCriteria) {
590  //The seed cell with the largest SNR wins
591  if (m_seedCutsInAbsE) {
593  return compare(*(c1->begin()), *(c2->begin()));
594  }
595  else {
597  return compare(*(c1->begin()), *(c2->begin()));
598  }
599  }
600  else {
601  //We merge the smallest cluster to the largest...
602  return c1->size() > c2->size();
603  }
604  };
605 
606  if ( !otherCluster || compareClusters(myCluster, otherCluster) ) {
607  toKill = otherCluster;
608  toKeep = myCluster;
609  }
610  else {
611  toKill = myCluster;
612  toKeep = otherCluster;
613  }
614  if ( toKill ) {
615  for (auto *hc : *toKill)
616  hc->setCaloTopoTmpHashCluster(toKeep);
617  toKeep->add(*toKill);
618  toKill->removeAll();
619  }
620  else {
621  toKeep->add(neighborCell);
622  pNCell->setCaloTopoTmpHashCluster(toKeep);
623  }
624  myCluster = toKeep;
625  }
626  }
627  }
628  }
629  }
630  }
631  mySeedCells.swap (myNextCells);
632  }
633 
634 
635  //Create temporary list of proto-clusters
636  //Clusters below Et cut will be dropped.
637  //The remaining clusters will be sorted in E_t before storing
638  std::vector<std::unique_ptr<CaloProtoCluster> > sortClusters;
639  sortClusters.reserve (myHashClusters.size());
640 
641  for (HashCluster* tmpCluster : myHashClusters) {
642  bool addCluster(false);
643  if ( tmpCluster->size() > 1 )
644  addCluster = true;
645  else if ( tmpCluster->size() == 1 ) {
646  // need to check if seed cell was good
647  HashCluster::iterator clusCellIter=tmpCluster->begin();
648  if ( clusCellIter->getUsed() )
649  addCluster = true;
650  }
651  if ( addCluster) {
652  std::unique_ptr<CaloProtoCluster> myCluster = std::make_unique<CaloProtoCluster>(cellCollLink);
653  //CaloProtoCluster* myCluster = new CaloProtoCluster(cellCollLink);
654  myCluster->getCellLinks()->reserve(tmpCluster->size());
655 
656  for (CaloTopoTmpClusterCell* cell : *tmpCluster) {
657  const size_t iCell = cell->getCaloCell();
658  myCluster->addCell(iCell,1.);
659  }
660  const float cl_et = myCluster->et();
661  if ( (m_clusterCutsInAbsE ? std::abs(cl_et) : cl_et) > m_clusterEtorAbsEtCut ) {
662  sortClusters.push_back(std::move(myCluster));
663  }
664  }
665  }
666 
667  // Sort the clusters according to Et
668  std::sort(sortClusters.begin(),sortClusters.end(),[](const std::unique_ptr<CaloProtoCluster>& pc1,
669  const std::unique_ptr<CaloProtoCluster>& pc2) {
670  //As in CaloUtils/CaloClusterEtSort.
671  //assign to volatile to avoid excess precison on in FP unit on x386 machines
672  volatile double et1(pc1->et());
673  volatile double et2(pc2->et());
674  //return (et1 < et2); //This is the order we had from CaloRec-02-13-11 to CaloRec-03-00-31
675  return (et1 > et2); //This is the order we should have
676  }
677  );
678  // add to cluster container
679  clusColl->reserve(sortClusters.size());
680 
681  for (const auto& protoCluster: sortClusters) {
682  xAOD::CaloCluster* xAODCluster=new xAOD::CaloCluster();
683  clusColl->push_back(xAODCluster);
684  xAODCluster->addCellLink(protoCluster->releaseCellLinks());//Hand over ownership to xAOD::CaloCluster
685  xAODCluster->setClusterSize(m_clusterSize);
686  CaloClusterKineHelper::calculateKine(xAODCluster,false,true, m_useGPUCriteria); //No weight at this point!
687  }
688 
689  tmpclus_pool.erase();
690  tmpcell_pool.erase();
691 
692  return StatusCode::SUCCESS;
693 }

◆ execute() [3/4]

virtual StatusCode CaloClusterCollectionProcessor::execute ( xAOD::CaloClusterContainer collection)
inlinefinalvirtualinherited

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters. (deprecated)

Definition at line 49 of file CaloClusterCollectionProcessor.h.

50  {
51  return execute (Gaudi::Hive::currentContext(), collection);
52  }

◆ execute() [4/4]

virtual StatusCode CaloClusterCollectionProcessor::execute
inlinefinal

Execute on an entire collection of clusters.

Parameters
collectionThe container of clusters. (deprecated)

Definition at line 49 of file CaloClusterCollectionProcessor.h.

50  {
51  return execute (Gaudi::Hive::currentContext(), collection);
52  }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

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

◆ getClusterSize()

void CaloTopoClusterMaker::getClusterSize ( )

◆ initialize()

StatusCode CaloTopoClusterMaker::initialize ( )
overridevirtual

Definition at line 181 of file CaloTopoClusterMaker.cxx.

182 {
183  ATH_MSG_INFO( "Initializing " << name() );
184  ATH_MSG_INFO( "Treat L1 Predicted Bad Cells as Good set to" << ((m_treatL1PredictedCellsAsGood) ? "true" : "false") );
185  ATH_MSG_INFO( "Two-Gaussian noise for Tile set to " << ((m_twogaussiannoise) ? "true" : "false") );
187  getClusterSize();
188 
189  ATH_CHECK( detStore()->retrieve (m_calo_id, "CaloCell_ID") );
190 
191  ATH_MSG_INFO( "Threshold choices:"
192  << (m_seedCutsInAbsE?" SeedThresholdOnAbsEinSigma=":
193  " SeedThresholdOnEinSigma=")
195  << (m_neighborCutsInAbsE?", NeighborThresholdOnAbsEinSigma=":
196  ", NeighborThresholdOnEinSigma=")
198  << (m_cellCutsInAbsE?", CellThresholdOnAbsEinSigma=":
199  ", CellThresholdOnEinSigma=")
201  );
202 
203  ATH_MSG_INFO( "Time cut option: " << ((!m_seedCutsInT) ? "None" : (m_cutOOTseed ? "Seed Extended" : "Seed")));
204  ATH_MSG_INFO( "E/sigma veto on T cut: m_useTimeCutUpperLimit=" << (m_useTimeCutUpperLimit ? "true" : "false") << ", m_timeCutUpperLimit=" << m_timeCutUpperLimit);
205 
206  //--- set Neighbor Option
207 
208  if ( m_neighborOption == "all2D" )
210  else if ( m_neighborOption == "all3D" )
212  else if ( m_neighborOption == "super3D" )
214  else {
215  ATH_MSG_ERROR( "Invalid Neighbor Option "
216  << m_neighborOption << ", exiting ..." );
217  return StatusCode::FAILURE;
218  }
219 
220  ATH_MSG_INFO( "Neighbor Option "
221  << m_neighborOption << " is selected!" );
222 
223  //--- check calorimeter names to use
224  for (const std::string& caloName : m_caloNames) {
225  if ( caloName == "LAREM" )
227  else if ( caloName == "LARHEC" )
229  else if ( caloName == "LARFCAL" )
231  else if ( caloName == "TILE" )
233  else
234  ATH_MSG_ERROR( "Calorimeter " << caloName
235  << " is not a valid Calorimeter name and will be ignored! "
236  << "Valid names are: LAREM, LARHEC, LARFCAL, and TILE." );
237  }
238 
239  //--- check sampling names to use for seeds
240  for (const std::string& sampName : m_samplingNames) {
241  if ( sampName == "PreSamplerB" )
243  else if ( sampName == "EMB1" )
245  else if ( sampName == "EMB2" )
247  else if ( sampName == "EMB3" )
249  else if ( sampName == "PreSamplerE" )
251  else if ( sampName == "EME1" )
253  else if ( sampName == "EME2" )
255  else if ( sampName == "EME3" )
257  else if ( sampName == "HEC0" )
259  else if ( sampName == "HEC1" )
261  else if ( sampName == "HEC2" )
263  else if ( sampName == "HEC3" )
265  else if ( sampName == "TileBar0" )
267  else if ( sampName == "TileBar1" )
269  else if ( sampName == "TileBar2" )
271  else if ( sampName == "TileGap1" )
273  else if ( sampName == "TileGap2" )
275  else if ( sampName == "TileGap3" )
277  else if ( sampName == "TileExt0" )
279  else if ( sampName == "TileExt1" )
281  else if ( sampName == "TileExt2" )
283  else if ( sampName == "FCAL0" )
285  else if ( sampName == "FCAL1" )
287  else if ( sampName == "FCAL2" )
289  else
290  ATH_MSG_ERROR( "Calorimeter sampling" << sampName
291  << " is not a valid Calorimeter sampling name and will be ignored! "
292  << "Valid names are: "
293  << "PreSamplerB, EMB1, EMB2, EMB3, "
294  << "PreSamplerE, EME1, EME2, EME3, "
295  << "HEC0, HEC1, HEC2, HEC3, "
296  << "TileBar0, TileBar1, TileBar2, "
297  << "TileGap1, TileGap2, TileGap3, "
298  << "TileExt0, TileExt1, TileExt2, "
299  << "FCAL0, FCAL1, FCAL2." );
300  }
301 
302  msg(MSG::INFO) << "Samplings to consider for seeds:";
303  for (const std::string& sampName : m_samplingNames)
304  msg() << " " << sampName;
305  msg() << endmsg;
306 
307  m_minSampling=0;
308  m_maxSampling=0;
309  for (int s : m_validSamplings) {
310  if ( s > m_maxSampling )
311  m_maxSampling = s;
312  if ( s < m_minSampling )
313  m_minSampling = s;
314  }
315 
316  m_useSampling.resize(m_maxSampling-m_minSampling+1,false);
317 
318  for (int s : m_validSamplings) {
319  m_useSampling[s-m_minSampling] = true;
320  }
321 
322  ATH_MSG_INFO( "CellCollection to use: " << m_cellsKey.key() );
323 
324  msg(MSG::INFO) << "Calorimeters to consider:";
325  for (const std::string& caloName : m_caloNames)
326  msg() << " " << caloName;
327  msg() << endmsg;
328 
329  //---- retrieve the noise CDO ----------------
330 
332 
333  ATH_MSG_INFO( (m_clusterCutsInAbsE?"ClusterAbsEtCut= ":"ClusterEtCut= ")
334  << m_clusterEtorAbsEtCut << " MeV" );
335 
336  m_hashMin = 999999;
337  m_hashMax = 0;
338  for (int subdet = 0; subdet < CaloCell_ID::NSUBCALO; ++subdet) {
339  if (m_subcaloUsed[subdet]) {
340  IdentifierHash thismin, thismax;
342  thismin, thismax);
343  m_hashMin = std::min (m_hashMin, thismin);
344  m_hashMax = std::max (m_hashMax, thismax);
345  }
346  }
347 
348  //ATH_CHECK( m_cablingKey.initialize() );
349 
350  return StatusCode::SUCCESS;
351 
352 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

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& CaloClusterCollectionProcessor::interfaceID ( )
inlinestaticinherited

Standard Gaudi interface ID method.

Definition at line 58 of file CaloClusterCollectionProcessor.h.

58 {return IID_CaloClusterCollectionProcessor;}

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

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.

◆ passCellTimeCut()

bool CaloTopoClusterMaker::passCellTimeCut ( const CaloCell pCell,
const CaloCellContainer cellColl 
) const
inlineprivate

Definition at line 714 of file CaloTopoClusterMaker.cxx.

714  {
715  // get the cell time to cut on (the same as in CaloEvent/CaloCluster.h)
716  bool isInTime = true;
717  // need sampling number already for time
718  CaloSampling::CaloSample sam = pCell->caloDDE()->getSampling();
719  // check for unknown sampling
721  const unsigned pmask= pCell->caloDDE()->is_tile() ? 0x8080 : 0x2000;
722  //0x2000 is used to tell that time and quality information are available for this channel
723  //(from TWiki: https://twiki.cern.ch/twiki/bin/viewauth/AtlasComputing/CaloEventDataModel#The_Raw_Data_Model)
724  // Is time defined?
725  if(pCell->provenance() & pmask) {
726  isInTime = (std::abs(pCell->time())<m_seedThresholdOnTAbs);
727  if ( m_xtalkEM2 && (!isInTime) && (pCell->energy() > 0 && (sam == CaloSampling::EMB2 || (sam == CaloSampling::EME2 && std::abs(pCell->eta()) < 2.5)))) {
728  // relax time constraints in EMB2 and EME2_OW due to xTalk from direct phi neighbours
729  // check if |E| is less than 0.25 times one of the |E| values of direct
730  // phi-neighbours. In case that phi-neigbour is in-time, expand upper limit by m_xtalkDeltaT
731  IdentifierHash hashid = pCell->caloDDE()->calo_hash();
732  std::vector<IdentifierHash> theNeighbors;
733  LArNeighbours::neighbourOption opt = (LArNeighbours::neighbourOption)(((int)LArNeighbours::prevInPhi)|((int)LArNeighbours::nextInPhi)); // shoud make a proper enum in LarNeighbours.h for this one ...
734  m_calo_id->get_neighbours(hashid,opt,theNeighbors);
735  // loop over all neighbors of that cell (Seed Growing Algo)
736  for (IdentifierHash nId : theNeighbors) {
737  const CaloCell * pNCell = cellColl->findCell(nId);
738  if ( pNCell ) {
739  if ( pNCell->energy() > m_xtalk2Eratio1*pCell->energy() ) {
740  if ( (!(pNCell->provenance() & pmask)) || std::abs(pNCell->time()) < m_seedThresholdOnTAbs) {
741  isInTime = ((pCell->time() > -m_seedThresholdOnTAbs) && (pCell->time() < m_seedThresholdOnTAbs + m_xtalkDeltaT));
742  if ( isInTime ) {
743  // exit after first phi neighbour in case that already made
744  // the time-cut pass
745  break;
746  }
747  }
748  }
749 
750  // check second neighbor
751  if (m_xtalkEM2n) {
752  std::vector<IdentifierHash> theNextNeighbors;
753  m_calo_id->get_neighbours(nId,opt,theNextNeighbors);
754  for (IdentifierHash n2Id : theNextNeighbors) {
755  if (n2Id != hashid) {
756  const CaloCell * p2NCell = cellColl->findCell(n2Id);
757  if (p2NCell) {
758  if (p2NCell->energy() > m_xtalk2Eratio2*pCell->energy()) {
759  if ( (!(p2NCell->provenance() & pmask)) || std::abs(p2NCell->time()) < m_seedThresholdOnTAbs) {
760  isInTime = ((pCell->time() > -m_seedThresholdOnTAbs) && (pCell->time() < m_seedThresholdOnTAbs + m_xtalkDeltaT));
761  if (isInTime) break;
762  }
763  }
764  }
765  }
766  } // loop over 2nd neighbors
767  }
768  } // if (pNcell)
769  } // loop over first neighbors
770  } // special case for layer 2
771 
772  // check cross talk in eta
773  if ( m_xtalkEMEta && (!isInTime) && (pCell->energy() > 0 && (sam == CaloSampling::EMB2 || (sam == CaloSampling::EME2 && std::abs(pCell->eta()) < 2.5)))) {
774  IdentifierHash hashid = pCell->caloDDE()->calo_hash();
775  std::vector<IdentifierHash> theNeighbors;
777  m_calo_id->get_neighbours(hashid,opt,theNeighbors);
778  for (IdentifierHash nId : theNeighbors) {
779  const CaloCell * pNCell = cellColl->findCell(nId);
780  if ( pNCell ) {
781  if ( pNCell->energy() > m_xtalkEtaEratio*pCell->energy() ) {
782  if ( (!(pNCell->provenance() & pmask)) || std::abs(pNCell->time()) < m_seedThresholdOnTAbs) {
783  isInTime = ((pCell->time() > -m_seedThresholdOnTAbs) && (pCell->time() < m_seedThresholdOnTAbs + m_xtalkDeltaT));
784  if ( isInTime ) {
785  // exit after first phi neighbour in case that already made
786  // the time-cut pass
787  break;
788  }
789  }
790  }
791  }
792  }
793  }
794 
795  // option for all2D
796  if ( m_xtalkEM2D && (!isInTime) && (pCell->energy() > 0 && (sam == CaloSampling::EMB2 || (sam == CaloSampling::EME2 && std::abs(pCell->eta()) < 2.5)))) {
797  IdentifierHash hashid = pCell->caloDDE()->calo_hash();
798  std::vector<IdentifierHash> theNeighbors;
800  m_calo_id->get_neighbours(hashid,opt,theNeighbors);
801  for (IdentifierHash nId : theNeighbors) {
802  const CaloCell * pNCell = cellColl->findCell(nId);
803  if ( pNCell ) {
804  if ( pNCell->energy() > m_xtalk2DEratio*pCell->energy() ) {
805  if ( (!(pNCell->provenance() & pmask)) || std::abs(pNCell->time()) < m_seedThresholdOnTAbs) {
806  isInTime = ((pCell->time() > -m_seedThresholdOnTAbs) && (pCell->time() < m_seedThresholdOnTAbs + m_xtalkDeltaT));
807  if ( isInTime ) break;
808  }
809  }
810  }
811  }
812  }
813 
814  // relax also time constraint for EMB3 and EME2_OW
815  if ( m_xtalkEM3 && (!isInTime) && (pCell->energy() > 0 && (sam == CaloSampling::EMB3 || (sam == CaloSampling::EME3 && std::abs(pCell->eta()) < 2.5)))) {
816  // check previous sampling cell, should be >10 times more (TBC)
817  IdentifierHash hashid = pCell->caloDDE()->calo_hash();
818  std::vector<IdentifierHash> theNeighbors;
820  m_calo_id->get_neighbours(hashid,opt,theNeighbors);
821  for (IdentifierHash nId : theNeighbors) {
822  const CaloCell * pNCell = cellColl->findCell(nId);
823  if ( pNCell ) {
824  if ( pNCell->energy() > m_xtalk3Eratio*pCell->energy() ) {
825  if ( (!(pNCell->provenance() & pmask)) || std::abs(pNCell->time()) < m_seedThresholdOnTAbs) {
826  isInTime = ((pCell->time() > -m_seedThresholdOnTAbs) && (pCell->time() < m_seedThresholdOnTAbs + m_xtalkDeltaT));
827  if (isInTime) break;
828  }
829  } // Eratio cut at 10
830  }
831  } // loop over neighors
832  } // cell is layer 3 EM
833 
834  }
835  }
836  return isInTime;
837 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_calo_id

const CaloCell_ID* CaloTopoClusterMaker::m_calo_id
private

Definition at line 65 of file CaloTopoClusterMaker.h.

◆ m_caloNames

std::vector<std::string> CaloTopoClusterMaker::m_caloNames
private

vector of names of the calorimeters to consider.

The default is to use all calorimeters (i.e. LAREM, LARHEC, LARFCAL, TILE). Cells which belong to one of the input cell containers and to one of the calorimeters in this vector are used as input for the cluster maker. This property is used in order to ignore a certain subsystem (e.g. for LAREM only clusters specify only LAREM in the jobOptions).

Definition at line 81 of file CaloTopoClusterMaker.h.

◆ m_cellCutsInAbsE

bool CaloTopoClusterMaker::m_cellCutsInAbsE
private

if set to true cell cuts are on \(|E|\) and \(|E|_\perp\).

The cell cuts will be on absolute energy and absolute transverse energy if this is set to true. If set to false the cuts will be on energy and transverse energy instead.

Definition at line 243 of file CaloTopoClusterMaker.h.

◆ m_cellsKey

SG::ReadHandleKey<CaloCellContainer> CaloTopoClusterMaker::m_cellsKey
private

vector of names of the cell containers to use as input.

Definition at line 70 of file CaloTopoClusterMaker.h.

◆ m_cellThresholdOnEorAbsEinSigma

float CaloTopoClusterMaker::m_cellThresholdOnEorAbsEinSigma
private

all cells have to satisfy \(|E| > N_{\rm cell}\,\sigma\)

This cut determines how much the cluster will extend beyond the last cell passing the neighbor threshold. The smaller this cut is the more cells will be allowed in the tail of the cluster. It should be smaller or equal to the neighbor threshold. If a cell passing this cut is neighbor of two or more cells passing the neighbor cut it will be inserted in the cluster which has the neighbor cell that was asked first for its neighbors. Since the original list of seed cells is ordered in descending order of \(E/\sigma\) (or \(|E|/\sigma\)) the distance of the cell (in number of cell generations passing the neighbor cut until this cell will be reached) usually determines in which cluster the cell will end up in. The cell cut should be lower or equal to the neighbor cut.

Definition at line 106 of file CaloTopoClusterMaker.h.

◆ m_clusterCutsInAbsE

bool CaloTopoClusterMaker::m_clusterCutsInAbsE
private

if set to true final cluster cuts are on \(|E|_\perp\).

The final cluster cuts will be on absolute transverse energy if this is set to true. If set to false the cuts will be on transverse energy instead.

Definition at line 251 of file CaloTopoClusterMaker.h.

◆ m_clusterEtorAbsEtCut

float CaloTopoClusterMaker::m_clusterEtorAbsEtCut
private

\(E_\perp\) cut on the final cluster.

The final cluster has to pass this cut (which is on \(E_\perp\) or \(|E|_\perp\) of the cluster depending on the above switch) in order to be inserted into the CaloClusterContainer.

Definition at line 259 of file CaloTopoClusterMaker.h.

◆ m_clusterSize

xAOD::CaloCluster::ClusterSize CaloTopoClusterMaker::m_clusterSize
private

Cluster size enum. Set based on energy cut jobO.

Definition at line 360 of file CaloTopoClusterMaker.h.

◆ m_cutOOTseed

bool CaloTopoClusterMaker::m_cutOOTseed
private

if set to true, seed cells failing the time cut are also excluded from cluster at all

Definition at line 279 of file CaloTopoClusterMaker.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_hashMax

IdentifierHash CaloTopoClusterMaker::m_hashMax
private

Definition at line 356 of file CaloTopoClusterMaker.h.

◆ m_hashMin

IdentifierHash CaloTopoClusterMaker::m_hashMin
private

Definition at line 355 of file CaloTopoClusterMaker.h.

◆ m_maxSampling

int CaloTopoClusterMaker::m_maxSampling
private

largest valid seed sampling found

This is needed to adjust the range of the vector<bool> for a quick lookup if a cell belongs to a valid sampling for seeds or not.

Definition at line 346 of file CaloTopoClusterMaker.h.

◆ m_minSampling

int CaloTopoClusterMaker::m_minSampling
private

smallest valid seed sampling found

This is needed to adjust the range of the vector<bool> for a quick lookup if a cell belongs to a valid sampling for seeds or not.

Definition at line 338 of file CaloTopoClusterMaker.h.

◆ m_neighborCutsInAbsE

bool CaloTopoClusterMaker::m_neighborCutsInAbsE
private

if set to true neighbor cuts are on \(|E|\) and \(|E|_\perp\).

The neighbor cuts will be on absolute energy and absolute transverse energy if this is set to true. If set to false the cuts will be on energy and transverse energy instead.

Definition at line 235 of file CaloTopoClusterMaker.h.

◆ m_neighborOption

std::string CaloTopoClusterMaker::m_neighborOption
private

type of neighbor relations to use.

The CaloIdentifier package defines different types of neighbors for the calorimeter cells. Currently supported neighbor relations for topological clustering are:

  • "all2D" for all cells in the same layer (sampling or module) of one calorimeter subsystem. Note that endcap and barrel will be unconnected in this case even for the LAREM.
  • "all3D" for all cells in the same calorimeter. This means all the "all2D" neighbors for each cell plus the cells in adjacent samplings overlapping at least partially in \(\eta\) and \(\phi\) with the cell. Note that endcap and barrel will be connected in this case for the LAREM.
  • "super3D" for all cells. This means all the "all3D" neighbors for each cell plus the cells in adjacent samplings from other subsystems overlapping at least partially in \(\eta\) and \(\phi\) with the cell. All calorimeters are connected in this case.

The default setting is "super3D".

Definition at line 196 of file CaloTopoClusterMaker.h.

◆ m_neighborThresholdOnEorAbsEinSigma

float CaloTopoClusterMaker::m_neighborThresholdOnEorAbsEinSigma
private

cells with \(|E| > N_{\rm neighbor}\,\sigma\) extend the cluster

This cut determines how many cells are asked for their neighbors to expand the cluster. The smaller this cut is the more cells will be asked for their neighbors. If a cell passing this cut is neighbor of two other cells passing this cut from different clusters, the two clusters are merged. The neighbor cut should be lower or equal to the seed cut.

Definition at line 117 of file CaloTopoClusterMaker.h.

◆ m_noiseCDOKey

SG::ReadCondHandleKey<CaloNoise> CaloTopoClusterMaker::m_noiseCDOKey {this,"CaloNoiseKey","totalNoise","SG Key of CaloNoise data object"}
private

Key of the CaloNoise Conditions data object.

Typical values are '"electronicNoise', 'pileupNoise', or '"totalNoise' (default)

Definition at line 167 of file CaloTopoClusterMaker.h.

◆ m_nOption

LArNeighbours::neighbourOption CaloTopoClusterMaker::m_nOption
private

Definition at line 197 of file CaloTopoClusterMaker.h.

◆ m_restrictHECIWandFCalNeighbors

bool CaloTopoClusterMaker::m_restrictHECIWandFCalNeighbors
private

if set to true limit the neighbors in HEC IW and FCal2&3.

The cells in HEC IW and FCal2&3 get very large in terms of eta and phi. Since this might pose problems on certain jet algorithms one might need to avoid expansion in eta and phi for those cells. If this property is set to true the 2d neighbors of these cells are not used - only the next sampling neighbors are probed.

Definition at line 208 of file CaloTopoClusterMaker.h.

◆ m_restrictPSNeighbors

bool CaloTopoClusterMaker::m_restrictPSNeighbors
private

if set to true limit the neighbors in presampler Barrel and Endcap.

The presampler cells add a lot of PileUp in the Hilum samples. With this option set to true the presampler cells do not expand the cluster in the presampler layer. Only the next sampling is used as valid neighbor source.

Definition at line 217 of file CaloTopoClusterMaker.h.

◆ m_samplingNames

std::vector<std::string> CaloTopoClusterMaker::m_samplingNames
private

vector of names of the calorimeter samplings to consider for seeds.

The default is to use all calorimeter samplings. Excluding a sampling from this vector prevents the definition of a seed cell in this sampling. Cells in those samplings are still used and incorporated in the topo clusters (both on the neighbor and the cell level) they can therefore even expand a cluster but not seed one ...

Definition at line 323 of file CaloTopoClusterMaker.h.

◆ m_seedCutsInAbsE

bool CaloTopoClusterMaker::m_seedCutsInAbsE
private

if set to true seed cuts are on \(|E|\) and \(|E|_\perp\).

The seed cuts and the \(E_\perp\) cut on the final clusters before insertion to the CaloClusterContainer will be on absolute energy and absolute transverse energy if this is set to true. If set to false the cuts will be on energy and transverse energy instead.

Definition at line 227 of file CaloTopoClusterMaker.h.

◆ m_seedCutsInT

bool CaloTopoClusterMaker::m_seedCutsInT
private

if set to true, time cut is applied to seed cells, no cut otherwise

Definition at line 274 of file CaloTopoClusterMaker.h.

◆ m_seedThresholdOnEorAbsEinSigma

float CaloTopoClusterMaker::m_seedThresholdOnEorAbsEinSigma
private

cells with \(|E| > N_{\rm seed}\,\sigma\) start a cluster

This cut determines how many clusters are formed initially. The smaller this cut is the more clusters will be created. During the accumulation of cells inside the clusters it can happen that clusters are merged if a cell passing the neighbor threshold would be included in both clusters.

Definition at line 127 of file CaloTopoClusterMaker.h.

◆ m_seedThresholdOnTAbs

float CaloTopoClusterMaker::m_seedThresholdOnTAbs
private

threshold used for timing cut on seed cells.

Implemented as |seed_cell_time|<m_seedThresholdOnTAbs. No such cut on neighbouring cells.

Definition at line 132 of file CaloTopoClusterMaker.h.

◆ m_subcaloUsed

bool CaloTopoClusterMaker::m_subcaloUsed[CaloCell_ID::NSUBCALO]
private

Flag which subdetectors are to be used.

This is initialized according to the names given in the property m_caloNames.

Definition at line 88 of file CaloTopoClusterMaker.h.

◆ m_timeCutUpperLimit

float CaloTopoClusterMaker::m_timeCutUpperLimit
private

upper limit on the energy significance, for applying the cell time cut

Definition at line 136 of file CaloTopoClusterMaker.h.

◆ m_treatL1PredictedCellsAsGood

bool CaloTopoClusterMaker::m_treatL1PredictedCellsAsGood
private

if set to true treat cells with a dead OTX which can be predicted by L1 trigger info as good instead of bad cells

Definition at line 269 of file CaloTopoClusterMaker.h.

◆ m_twogaussiannoise

bool CaloTopoClusterMaker::m_twogaussiannoise
private

if set to true use 2-gaussian noise description for TileCal

Definition at line 264 of file CaloTopoClusterMaker.h.

◆ m_useGPUCriteria

Gaudi::Property<bool> CaloTopoClusterMaker::m_useGPUCriteria {this, "UseGPUCriteria", false, "Adopt a set of criteria that is consistent with the GPU implementation."}
private

Definition at line 362 of file CaloTopoClusterMaker.h.

◆ m_useSampling

std::vector<bool> CaloTopoClusterMaker::m_useSampling
private

flag for all samplings - true for used ones, false for excluded ones

This vector serves as a quick lookup table to find out if a cell belongs to a sampling that should be used for seeds.

Definition at line 353 of file CaloTopoClusterMaker.h.

◆ m_useTimeCutUpperLimit

bool CaloTopoClusterMaker::m_useTimeCutUpperLimit
private

if set to true, the time cut is not applied on cell of large significance

Definition at line 284 of file CaloTopoClusterMaker.h.

◆ m_validSamplings

std::set<int> CaloTopoClusterMaker::m_validSamplings
private

actual set of samplings to be used for seeds

This set is created according to the names given in the property m_samplingNames.

Definition at line 330 of file CaloTopoClusterMaker.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.

◆ m_xtalk2DEratio

float CaloTopoClusterMaker::m_xtalk2DEratio
private

cut on Eneighbor/E to remove out of time layer layer2 all 2D neighbors

Definition at line 161 of file CaloTopoClusterMaker.h.

◆ m_xtalk2Eratio1

float CaloTopoClusterMaker::m_xtalk2Eratio1
private

cut on Eneighbor/E to revover out of time cell close to energetic first phi neighbor cell

Definition at line 145 of file CaloTopoClusterMaker.h.

◆ m_xtalk2Eratio2

float CaloTopoClusterMaker::m_xtalk2Eratio2
private

cut on Eneighbor/E to revover out of time cell close to energetic second phi neighbor cell

Definition at line 149 of file CaloTopoClusterMaker.h.

◆ m_xtalk3Eratio

float CaloTopoClusterMaker::m_xtalk3Eratio
private

cut on Eneighbor/E to revover out of time layer 3cell close to energetic previous sampling neighbor

Definition at line 153 of file CaloTopoClusterMaker.h.

◆ m_xtalkDeltaT

float CaloTopoClusterMaker::m_xtalkDeltaT
private

additional max.

delta t added to the upper limit time window in case of xtalk in EM2 should be accounted for

Definition at line 141 of file CaloTopoClusterMaker.h.

◆ m_xtalkEM2

bool CaloTopoClusterMaker::m_xtalkEM2
private

if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbour cells in phi

Definition at line 289 of file CaloTopoClusterMaker.h.

◆ m_xtalkEM2D

bool CaloTopoClusterMaker::m_xtalkEM2D
private

if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from all 2D neighors

Definition at line 294 of file CaloTopoClusterMaker.h.

◆ m_xtalkEM2n

bool CaloTopoClusterMaker::m_xtalkEM2n
private

if set to true (together with m_xtalkEM2) we also extend the time window for 2nd phi neighbors

Definition at line 299 of file CaloTopoClusterMaker.h.

◆ m_xtalkEM3

bool CaloTopoClusterMaker::m_xtalkEM3
private

if set to true we extend the time window for direct layer 3 neighbors of high energy layer 2 cells

Definition at line 304 of file CaloTopoClusterMaker.h.

◆ m_xtalkEMEta

bool CaloTopoClusterMaker::m_xtalkEMEta
private

if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbour cells in eta

Definition at line 310 of file CaloTopoClusterMaker.h.

◆ m_xtalkEtaEratio

float CaloTopoClusterMaker::m_xtalkEtaEratio
private

cut on Eneighbor/E to revover out of time layer 2 cell close in eta to energetic neighor cell

Definition at line 157 of file CaloTopoClusterMaker.h.


The documentation for this class was generated from the following files:
CaloPrefetch::ArenaHandlePrefetch
Wrapper for SG::ArenaHandle with pre-fetching.
Definition: CaloPrefetch.h:102
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CaloTopoClusterMaker::m_xtalkEMEta
bool m_xtalkEMEta
if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbou...
Definition: CaloTopoClusterMaker.h:310
LArNeighbours::neighbourOption
neighbourOption
Definition: LArNeighbours.h:12
GetLCDefs::Unknown
@ Unknown
Definition: GetLCDefs.h:21
CaloTopoClusterMaker::m_xtalkEM2D
bool m_xtalkEM2D
if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from all 2D neighors
Definition: CaloTopoClusterMaker.h:294
xAOD::CaloCluster_v1::CSize_Unknown
@ CSize_Unknown
Definition: CaloCluster_v1.h:112
CaloTopoClusterMaker::getClusterSize
void getClusterSize()
Definition: CaloTopoClusterMaker.cxx:695
CaloCell_Base_ID::LARFCAL
@ LARFCAL
Definition: CaloCell_Base_ID.h:46
CaloTopoClusterMaker::m_noiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Key of the CaloNoise Conditions data object.
Definition: CaloTopoClusterMaker.h:167
Amg::compare
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
Definition: EventPrimitivesHelpers.h:109
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
CaloCell_ID_FCS::TileExt2
@ TileExt2
Definition: FastCaloSim_CaloCell_ID.h:39
CaloCell::phi
virtual double phi() const override final
get phi (through CaloDetDescrElement)
Definition: CaloCell.h:359
CaloTopoClusterMaker::m_xtalkDeltaT
float m_xtalkDeltaT
additional max.
Definition: CaloTopoClusterMaker.h:141
CaloCell_Base_ID::calo_cell_hash
IdentifierHash calo_cell_hash(const Identifier cellId) const
create hash id from 'global' cell id
CaloCell_Base_ID::region
int region(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
max
#define max(a, b)
Definition: cfImp.cxx:41
CaloTopoTmpHashCluster
Definition: CaloTopoTmpHashCluster.h:29
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
CaloTopoClusterMaker::m_samplingNames
std::vector< std::string > m_samplingNames
vector of names of the calorimeter samplings to consider for seeds.
Definition: CaloTopoClusterMaker.h:323
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloTopoTmpHashCellSort::compareAbsWithIndex
Definition: CaloTopoTmpHashCellSort.h:76
CaloTopoClusterMaker::m_seedCutsInAbsE
bool m_seedCutsInAbsE
if set to true seed cuts are on and .
Definition: CaloTopoClusterMaker.h:227
CaloTopoClusterMaker::m_validSamplings
std::set< int > m_validSamplings
actual set of samplings to be used for seeds
Definition: CaloTopoClusterMaker.h:330
make_coralServer_rep.opt
opt
Definition: make_coralServer_rep.py:19
CaloTopoClusterMaker::m_restrictPSNeighbors
bool m_restrictPSNeighbors
if set to true limit the neighbors in presampler Barrel and Endcap.
Definition: CaloTopoClusterMaker.h:217
CaloTopoTmpHashCell
Definition: CaloTopoTmpHashCell.h:22
CaloTopoClusterMaker::m_seedCutsInT
bool m_seedCutsInT
if set to true, time cut is applied to seed cells, no cut otherwise
Definition: CaloTopoClusterMaker.h:274
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CaloTopoClusterMaker::execute
virtual StatusCode execute(const EventContext &ctx, xAOD::CaloClusterContainer *theClusters) const override
Execute on an entire collection of clusters.
Definition: CaloTopoClusterMaker.cxx:357
CaloCell_ID_FCS::TileExt0
@ TileExt0
Definition: FastCaloSim_CaloCell_ID.h:37
CaloCell_ID_FCS::TileBar1
@ TileBar1
Definition: FastCaloSim_CaloCell_ID.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
CaloClusterCollectionProcessor::execute
virtual StatusCode execute(const EventContext &ctx, xAOD::CaloClusterContainer *collection) const =0
Execute on an entire collection of clusters.
extractSporadic.c1
c1
Definition: extractSporadic.py:134
CaloTopoClusterMaker::m_caloNames
std::vector< std::string > m_caloNames
vector of names of the calorimeters to consider.
Definition: CaloTopoClusterMaker.h:81
python.SystemOfUnits.MeV
int MeV
Definition: SystemOfUnits.py:154
CaloTopoTmpClusterCell
Definition: CaloTopoTmpClusterCell.h:27
CaloTopoTmpHashCellSort::compareAbs
Definition: CaloTopoTmpHashCellSort.h:42
CaloTopoClusterMaker::m_calo_id
const CaloCell_ID * m_calo_id
Definition: CaloTopoClusterMaker.h:65
CaloTopoTmpClusterCell::setCaloTopoTmpHashCluster
void setCaloTopoTmpHashCluster(CaloTopoTmpHashCluster *cluster)
Definition: CaloTopoTmpClusterCell.h:64
CaloTopoClusterMaker::m_minSampling
int m_minSampling
smallest valid seed sampling found
Definition: CaloTopoClusterMaker.h:338
CaloCell_ID_FCS::FCAL1
@ FCAL1
Definition: FastCaloSim_CaloCell_ID.h:41
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
CaloTopoClusterMaker::m_seedThresholdOnTAbs
float m_seedThresholdOnTAbs
threshold used for timing cut on seed cells.
Definition: CaloTopoClusterMaker.h:132
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
CaloTopoClusterMaker::m_xtalk2Eratio1
float m_xtalk2Eratio1
cut on Eneighbor/E to revover out of time cell close to energetic first phi neighbor cell
Definition: CaloTopoClusterMaker.h:145
CaloCell_Base_ID::LARHEC
@ LARHEC
Definition: CaloCell_Base_ID.h:46
CaloTopoClusterMaker::m_clusterCutsInAbsE
bool m_clusterCutsInAbsE
if set to true final cluster cuts are on .
Definition: CaloTopoClusterMaker.h:251
CaloCell_ID_FCS::HEC2
@ HEC2
Definition: FastCaloSim_CaloCell_ID.h:29
CaloCell_Base_ID::calo_sample
int calo_sample(const Identifier id) const
returns an int taken from Sampling enum and describing the subCalo to which the Id belongs.
Definition: CaloCell_Base_ID.cxx:141
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
CaloCell::provenance
uint16_t provenance() const
get provenance (data member)
Definition: CaloCell.h:338
CaloCell::time
float time() const
get time (data member)
Definition: CaloCell.h:352
CaloTopoClusterMaker::m_xtalkEM2n
bool m_xtalkEM2n
if set to true (together with m_xtalkEM2) we also extend the time window for 2nd phi neighbors
Definition: CaloTopoClusterMaker.h:299
LArNeighbours::prevInPhi
@ prevInPhi
Definition: LArNeighbours.h:12
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
CaloTopoClusterMaker::m_neighborOption
std::string m_neighborOption
type of neighbor relations to use.
Definition: CaloTopoClusterMaker.h:196
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
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
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
CaloCell::energy
double energy() const
get energy (data member)
Definition: CaloCell.h:311
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
CaloProtoCluster::getCellLinks
CaloClusterCellLink * getCellLinks()
Get a pointer to the underlying CaloClusterCellLink object.
Definition: CaloProtoCluster.h:58
CaloTopoClusterMaker::m_subcaloUsed
bool m_subcaloUsed[CaloCell_ID::NSUBCALO]
Flag which subdetectors are to be used.
Definition: CaloTopoClusterMaker.h:88
LArNeighbours::nextInSamp
@ nextInSamp
Definition: LArNeighbours.h:20
xAOD::CaloCluster_v1::Topo_633
@ Topo_633
Definition: CaloCluster_v1.h:103
LArNeighbours::nextInPhi
@ nextInPhi
Definition: LArNeighbours.h:13
CaloCell_ID::SUBCALO
CaloCell_Base_ID::SUBCALO SUBCALO
Definition: CaloCell_ID.h:50
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
CaloTopoClusterMaker::m_nOption
LArNeighbours::neighbourOption m_nOption
Definition: CaloTopoClusterMaker.h:197
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
CaloDetDescrElement::calo_hash
IdentifierHash calo_hash() const
cell calo hash
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:412
AthCommonDataStore
Definition: AthCommonDataStore.h:52
CaloCell_ID_FCS::HEC1
@ HEC1
Definition: FastCaloSim_CaloCell_ID.h:28
CaloTopoClusterMaker::m_useGPUCriteria
Gaudi::Property< bool > m_useGPUCriteria
Definition: CaloTopoClusterMaker.h:362
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CaloTopoClusterMaker::m_neighborCutsInAbsE
bool m_neighborCutsInAbsE
if set to true neighbor cuts are on and .
Definition: CaloTopoClusterMaker.h:235
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
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
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
CaloTopoTmpClusterCellBase::getSubDet
CaloCell_ID::SUBCALO getSubDet() const
Definition: CaloTopoTmpClusterCellBase.h:72
CaloCell_Base_ID::sampling
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
CaloProtoCluster::addCell
void addCell(const unsigned cellIdx, const CaloClusterCellLink::weight_t weight=1.0)
Add a cell (forward to underlying CaloClusterCellLink)
Definition: CaloProtoCluster.h:46
CaloCell_Base_ID::SUBCALO
SUBCALO
enumeration of sub calorimeters
Definition: CaloCell_Base_ID.h:46
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CaloCell::et
virtual double et() const override final
get et
Definition: CaloCell.h:407
CaloTopoClusterMaker::m_xtalkEM2
bool m_xtalkEM2
if set to true, the time window is softened in the EMB2 and EME2_OW due to xtalk from direct neighbou...
Definition: CaloTopoClusterMaker.h:289
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
CaloCell_Base_ID::sub_calo
int sub_calo(const Identifier id) const
returns an int taken from SUBCALO enum and describing the subCalo to which the Id belongs.
CaloTopoClusterMaker::m_cellThresholdOnEorAbsEinSigma
float m_cellThresholdOnEorAbsEinSigma
all cells have to satisfy
Definition: CaloTopoClusterMaker.h:106
CaloTopoClusterMaker::m_neighborThresholdOnEorAbsEinSigma
float m_neighborThresholdOnEorAbsEinSigma
cells with extend the cluster
Definition: CaloTopoClusterMaker.h:117
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloCell_Base_ID::TILE
@ TILE
Definition: CaloCell_Base_ID.h:46
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
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
xAOD::CaloCluster_v1::Topo_420
@ Topo_420
Definition: CaloCluster_v1.h:102
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
LArNeighbours::prevInSamp
@ prevInSamp
Definition: LArNeighbours.h:19
CaloTopoTmpClusterCellBase::getID
const IdentifierHash & getID() const
Definition: CaloTopoTmpClusterCellBase.h:61
CxxUtils::pointer_list::allocator
Allocator for pointer_list, specialized for NELT.
Definition: pointer_list.h:256
LArNeighbours::super3D
@ super3D
Definition: LArNeighbours.h:29
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
CaloTopoClusterMaker::m_restrictHECIWandFCalNeighbors
bool m_restrictHECIWandFCalNeighbors
if set to true limit the neighbors in HEC IW and FCal2&3.
Definition: CaloTopoClusterMaker.h:208
CaloPrefetch::ArenaHandlePrefetch::allocate
void * allocate()
Return space for new element, then allocate and prefetch one more.
Definition: CaloPrefetch.h:124
min
#define min(a, b)
Definition: cfImp.cxx:40
CaloTopoClusterMaker::m_cellCutsInAbsE
bool m_cellCutsInAbsE
if set to true cell cuts are on and .
Definition: CaloTopoClusterMaker.h:243
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
CaloCellContainer::findCell
const CaloCell * findCell(const IdentifierHash theHash) const
fast find method given identifier hash.
Definition: CaloCellContainer.cxx:345
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
CaloDetDescrElement::is_tile
bool is_tile() const
cell belongs to Tile
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:442
CaloNoise
Definition: CaloNoise.h:16
CaloTopoClusterMaker::m_clusterEtorAbsEtCut
float m_clusterEtorAbsEtCut
cut on the final cluster.
Definition: CaloTopoClusterMaker.h:259
CaloTopoTmpHashCellSort::compareWithIndex
Definition: CaloTopoTmpHashCellSort.h:57
CaloTopoClusterMaker::m_xtalk2DEratio
float m_xtalk2DEratio
cut on Eneighbor/E to remove out of time layer layer2 all 2D neighbors
Definition: CaloTopoClusterMaker.h:161
CaloTopoTmpHashCellSort::compare
Definition: CaloTopoTmpHashCellSort.h:28
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
CaloTopoClusterMaker::m_treatL1PredictedCellsAsGood
bool m_treatL1PredictedCellsAsGood
if set to true treat cells with a dead OTX which can be predicted by L1 trigger info as good instead ...
Definition: CaloTopoClusterMaker.h:269
CaloCell_ID_FCS::TileExt1
@ TileExt1
Definition: FastCaloSim_CaloCell_ID.h:38
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
CaloTopoClusterMaker::m_hashMin
IdentifierHash m_hashMin
Definition: CaloTopoClusterMaker.h:355
CaloTopoClusterMaker::m_xtalk3Eratio
float m_xtalk3Eratio
cut on Eneighbor/E to revover out of time layer 3cell close to energetic previous sampling neighbor
Definition: CaloTopoClusterMaker.h:153
CaloCell::gain
CaloGain::CaloGain gain() const
get gain (data member )
Definition: CaloCell.h:345
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
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloCell::ID
Identifier ID() const
get ID (from cached data member) non-virtual and inline for fast access
Definition: CaloCell.h:279
CaloTopoTmpClusterCellBase::getUsed
bool getUsed() const
Definition: CaloTopoTmpClusterCellBase.h:87
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,...
CaloTopoClusterMaker::m_timeCutUpperLimit
float m_timeCutUpperLimit
upper limit on the energy significance, for applying the cell time cut
Definition: CaloTopoClusterMaker.h:136
CaloTopoTmpClusterCellBase::setUsed
void setUsed()
Definition: CaloTopoTmpClusterCellBase.h:92
CaloCell_ID_FCS::HEC0
@ HEC0
Definition: FastCaloSim_CaloCell_ID.h:27
CaloProtoCluster::et
double et()
Return the weighted Et of the list of cells.
Definition: CaloProtoCluster.h:40
CaloTopoClusterMaker::passCellTimeCut
bool passCellTimeCut(const CaloCell *, const CaloCellContainer *) const
Definition: CaloTopoClusterMaker.cxx:714
CaloTopoClusterMaker::m_seedThresholdOnEorAbsEinSigma
float m_seedThresholdOnEorAbsEinSigma
cells with start a cluster
Definition: CaloTopoClusterMaker.h:127
CaloTopoClusterMaker::m_maxSampling
int m_maxSampling
largest valid seed sampling found
Definition: CaloTopoClusterMaker.h:346
python.DataFormatRates.c2
c2
Definition: DataFormatRates.py:123
a
TList * a
Definition: liststreamerinfos.cxx:10
xAOD::CaloCluster_v1::addCellLink
void addCellLink(CaloClusterCellLink *CCCL)
Definition: CaloCluster_v1.h:721
h
CaloTopoClusterMaker::m_twogaussiannoise
bool m_twogaussiannoise
if set to true use 2-gaussian noise description for TileCal
Definition: CaloTopoClusterMaker.h:264
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
xAOD::CaloCluster_v1::setClusterSize
void setClusterSize(const ClusterSize)
Get cluster size.
Definition: CaloCluster_v1.cxx:369
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
std::sort
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.
Definition: DVL_algorithms.h:623
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LArNeighbours::nextInEta
@ nextInEta
Definition: LArNeighbours.h:15
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
CaloTopoClusterMaker::m_cellsKey
SG::ReadHandleKey< CaloCellContainer > m_cellsKey
vector of names of the cell containers to use as input.
Definition: CaloTopoClusterMaker.h:70
CaloClusterKineHelper::calculateKine
static void calculateKine(xAOD::CaloCluster *clu, const bool useweight=true, const bool updateLayers=true, const bool useGPUCriteria=false)
Helper class to calculate cluster kinematics based on cells.
Definition: CaloClusterKineHelper.cxx:223
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
CaloCell_ID_FCS::FCAL2
@ FCAL2
Definition: FastCaloSim_CaloCell_ID.h:42
CaloTopoClusterMaker::m_cutOOTseed
bool m_cutOOTseed
if set to true, seed cells failing the time cut are also excluded from cluster at all
Definition: CaloTopoClusterMaker.h:279
CaloTopoClusterMaker::m_xtalk2Eratio2
float m_xtalk2Eratio2
cut on Eneighbor/E to revover out of time cell close to energetic second phi neighbor cell
Definition: CaloTopoClusterMaker.h:149
LArNeighbours::all3D
@ all3D
Definition: LArNeighbours.h:24
LArNeighbours::prevInEta
@ prevInEta
Definition: LArNeighbours.h:14
CaloCell_Base_ID::NSUBCALO
@ NSUBCALO
Definition: CaloCell_Base_ID.h:46
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
CaloTopoClusterMaker::m_hashMax
IdentifierHash m_hashMax
Definition: CaloTopoClusterMaker.h:356
IdentifierHash
This is a "hash" representation of an Identifier. This encodes a 32 bit index which can be used to lo...
Definition: IdentifierHash.h:25
CaloTopoTmpClusterCellBase::getSignedRatio
const float & getSignedRatio() const
Definition: CaloTopoTmpClusterCellBase.h:77
CaloCell_ID_FCS::HEC3
@ HEC3
Definition: FastCaloSim_CaloCell_ID.h:30
CaloCell_Base_ID::LAREM
@ LAREM
Definition: CaloCell_Base_ID.h:46
CaloTopoClusterMaker::m_xtalkEtaEratio
float m_xtalkEtaEratio
cut on Eneighbor/E to revover out of time layer 2 cell close in eta to energetic neighor cell
Definition: CaloTopoClusterMaker.h:157
CaloCell_ID_FCS::FCAL0
@ FCAL0
Definition: FastCaloSim_CaloCell_ID.h:40
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
CaloCell_ID_FCS::TileBar2
@ TileBar2
Definition: FastCaloSim_CaloCell_ID.h:33
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
CaloPrefetch::nextDDE
void nextDDE(Iter iter, Iter endIter)
Prefetch next CaloDDE.
Definition: CaloPrefetch.h:47
CaloTopoClusterMaker::m_clusterSize
xAOD::CaloCluster::ClusterSize m_clusterSize
Cluster size enum. Set based on energy cut jobO.
Definition: CaloTopoClusterMaker.h:360
CaloTopoClusterMaker::m_useSampling
std::vector< bool > m_useSampling
flag for all samplings - true for used ones, false for excluded ones
Definition: CaloTopoClusterMaker.h:353
LArNeighbours::all2D
@ all2D
Definition: LArNeighbours.h:18
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
CaloBadCellHelper::isBad
static bool isBad(const CaloCell *pCell, bool treatL1PredictedCellsAsGood)
Definition: CaloBadCellHelper.h:27
CaloTopoClusterMaker::m_xtalkEM3
bool m_xtalkEM3
if set to true we extend the time window for direct layer 3 neighbors of high energy layer 2 cells
Definition: CaloTopoClusterMaker.h:304
CaloTopoTmpClusterCell::getCaloTopoTmpHashCluster
const CaloTopoTmpHashCluster * getCaloTopoTmpHashCluster() const
Definition: CaloTopoTmpClusterCell.h:54
CaloCell::eta
virtual double eta() const override final
get eta (through CaloDetDescrElement)
Definition: CaloCell.h:366
fitman.k
k
Definition: fitman.py:528
CaloTopoClusterMaker::m_useTimeCutUpperLimit
bool m_useTimeCutUpperLimit
if set to true, the time cut is not applied on cell of large significance
Definition: CaloTopoClusterMaker.h:284
CaloPrefetch::ArenaHandlePrefetch::erase
void erase()
Free all allocated elements.
Definition: CaloPrefetch.h:136