![]() |
ATLAS Offline Software
|
topological cluster splitter. More...
#include <CaloTopoClusterSplitter.h>
Public Member Functions | |
| CaloTopoClusterSplitter (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. | |
| virtual StatusCode | initialize () override |
| virtual StatusCode | execute (xAOD::CaloClusterContainer *collection) final |
| Execute on an entire collection of clusters. | |
| ServiceHandle< StoreGateSvc > & | evtStore () |
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. | |
| const ServiceHandle< StoreGateSvc > & | detStore () const |
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. | |
| virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. | |
| virtual StatusCode | sysStart () override |
| Handle START transition. | |
| virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. | |
| virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. | |
| Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T, V, H > &t) |
| void | updateVHKA (Gaudi::Details::PropertyBase &) |
| MsgStream & | msg () const |
| bool | msgLvl (const MSG::Level lvl) const |
| DeclareInterfaceID (CaloClusterCollectionProcessor, 1, 0) | |
Protected Member Functions | |
| void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution | |
| 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. | |
Private Types | |
| typedef ServiceHandle< StoreGateSvc > | StoreGateSvc_t |
Private Member Functions | |
| Gaudi::Details::PropertyBase & | declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &) |
| specialization for handling Gaudi::Property<SG::VarHandleKey> | |
Private Attributes | |
| const CaloCell_ID * | m_calo_id |
| std::string | m_neighborOption |
| type of neighbor relations to use. | |
| LArNeighbours::neighbourOption | m_nOption |
| bool | m_restrictHECIWandFCalNeighbors |
| if set to true limit the neighbors in HEC IW and FCal2&3. | |
| int | m_nCells |
| local maxima need at least this number of neighbors to become seeds | |
| float | m_minEnergy |
| local maxima need at least this energy content | |
| bool | m_shareBorderCells |
| share cells at the border between two local maxima | |
| float | m_emShowerScale |
| typical em shower scale to use for distance criteria in shared cells | |
| std::vector< std::string > | m_samplingNames |
| vector of names of the calorimeter samplings to consider. | |
| std::set< int > | m_validSamplings |
| actual set of samplings to be used | |
| int | m_minSampling |
| smallest valid sampling found | |
| int | m_maxSampling |
| largest valid sampling found | |
| std::vector< bool > | m_useSampling |
| flag for all samplings - true for used ones, false for excluded ones | |
| std::vector< std::string > | m_secondarySamplingNames |
| vector of names of the secondary calorimeter samplings to consider. | |
| std::set< int > | m_validSecondarySamplings |
| actual set of secondary samplings to be used | |
| int | m_minSecondarySampling |
| smallest valid secondary sampling found | |
| int | m_maxSecondarySampling |
| largest valid secondary sampling found | |
| std::vector< bool > | m_useSecondarySampling |
| flag for all secondary samplings - true for used ones, false for excluded ones | |
| 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 | |
| bool | m_absOpt |
| if set to true, splitter only looks at absolute value of Energy in order to identify potential seed cells | |
| IdentifierHash | m_hashMin |
| IdentifierHash | m_hashMax |
| 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) | |
| StoreGateSvc_t | m_detStore |
| Pointer to StoreGate (detector store by default) | |
| std::vector< SG::VarHandleKeyArray * > | m_vhka |
| bool | m_varHandleArraysDeclared |
topological cluster splitter.
Split clusters based on topological neighboring and energy defined local maxima. The cells in a cluster are searched for local maxima by means of their energy content. The so found local maxima are used as seeds for a topological clustering as in the CaloTopoClusterMaker. The special case of zero thresholds for neighbors and cells is used such that all cells in the parent cluster will be re-clustered. One further difference to the normal topological clustering is that proto-clusters containing a local maximum can never be merged. Therefore the number of clusters resulting from the splitting of the parent is determined by the number of local maxima found in the cluster. If no local maximum was found, the parent cluster will be left un-altered in the cluster container. If parts of the original cluster are not connected with local maximum containing parts (different cluster algorithm or different neighbor option) all cells of a cluster in this category are included in a rest-cluster and added to the new cluster list. Thus the total energy of all clusters and the number of cells of all clusters should be the same before and after splitting. Cells at the border between 2 split clusters can be shared if the corresponding property is set. Otherwise they are attached to the cluster which provides the neighbor with largest energy content.
Definition at line 47 of file CaloTopoClusterSplitter.h.
|
privateinherited |
Definition at line 388 of file AthCommonDataStore.h.
| CaloTopoClusterSplitter::CaloTopoClusterSplitter | ( | const std::string & | type, |
| const std::string & | name, | ||
| const IInterface * | parent ) |
Definition at line 47 of file CaloTopoClusterSplitter.cxx.
|
inlineprivateinherited |
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
|
inherited |
|
inlineinherited |
Definition at line 145 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition at line 95 of file AthCommonDataStore.h.
|
inlineinherited |
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition at line 85 of file AthCommonDataStore.h.
|
overridevirtual |
Execute on an entire collection of clusters.
| collection | The container of clusters. param ctx The event context. |
Implements CaloClusterCollectionProcessor.
Definition at line 309 of file CaloTopoClusterSplitter.cxx.
|
inlinefinalvirtual |
Execute on an entire collection of clusters.
| collection | The container of clusters. (deprecated) |
Reimplemented from CaloClusterCollectionProcessor.
Definition at line 50 of file CaloClusterCollectionProcessor.h.
|
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
|
overridevirtual |
Definition at line 94 of file CaloTopoClusterSplitter.cxx.
|
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.
|
inlineinherited |
Definition at line 24 of file AthCommonMsg.h.
|
inlineinherited |
Definition at line 30 of file AthCommonMsg.h.
|
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.
|
inlineprotectedinherited |
Definition at line 380 of file AthCommonDataStore.h.
|
inlineprotectedinherited |
remove all handles from I/O resolution
Definition at line 364 of file AthCommonDataStore.h.
|
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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.
|
overridevirtualinherited |
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
|
inlineinherited |
Definition at line 308 of file AthCommonDataStore.h.
|
private |
if set to true, splitter only looks at absolute value of Energy in order to identify potential seed cells
Definition at line 240 of file CaloTopoClusterSplitter.h.
|
private |
Definition at line 61 of file CaloTopoClusterSplitter.h.
|
privateinherited |
Pointer to StoreGate (detector store by default)
Definition at line 393 of file AthCommonDataStore.h.
|
private |
typical em shower scale to use for distance criteria in shared cells
a shared cell is included in both clusters neighboring the cell with weights depending on the cluster energies and the distance of the shared cell to the cluster centroids. The distance is measured in units of this property to roughly describe the exponential slope of the energy density distribution for em showers. The exact choice of this property is not critical but should roughly match the Moliere radius in the LArEM since here the sharing of cells has the biggest use case.
Definition at line 149 of file CaloTopoClusterSplitter.h.
|
privateinherited |
Pointer to StoreGate (event store by default)
Definition at line 390 of file AthCommonDataStore.h.
|
private |
Definition at line 244 of file CaloTopoClusterSplitter.h.
|
private |
Definition at line 243 of file CaloTopoClusterSplitter.h.
|
private |
largest valid 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 or not.
Definition at line 185 of file CaloTopoClusterSplitter.h.
|
private |
largest valid secondary sampling found
This is needed to adjust the range of the vector<bool> for a quick lookup if a cell belongs to a valid secondary sampling or not.
Definition at line 222 of file CaloTopoClusterSplitter.h.
|
private |
local maxima need at least this energy content
potential seed cells have to pass this cut on the energy content.
Definition at line 115 of file CaloTopoClusterSplitter.h.
|
private |
smallest valid 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 or not.
Definition at line 178 of file CaloTopoClusterSplitter.h.
|
private |
smallest valid secondary sampling found
This is needed to adjust the range of the vector<bool> for a quick lookup if a cell belongs to a valid secondary sampling or not.
Definition at line 215 of file CaloTopoClusterSplitter.h.
|
private |
local maxima need at least this number of neighbors to become seeds
each cell above the energy cut having at least this many neighbors in the parent cluster and only neighbors with smaller energy seed a split cluster.
Definition at line 108 of file CaloTopoClusterSplitter.h.
|
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:
The default setting is "super3D".
Definition at line 87 of file CaloTopoClusterSplitter.h.
|
private |
Definition at line 88 of file CaloTopoClusterSplitter.h.
|
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 99 of file CaloTopoClusterSplitter.h.
|
private |
vector of names of the calorimeter samplings to consider.
The default is to use all EM calorimeter samplings except for: PreSamplerB, EMB1, PreSamplerE, EME1. The first FCal is also considered an EM calorimeter sampling. The exclusion of the strips is mainly to be able to split converted photon clusters while the exclusion of the hadronic calorimeters is mainly due to the fact that the splitting here does not improve performance. Excluding a sampling from this vector effectively sets the E for each of its cells (for the purpose of local maxima search) to
Definition at line 164 of file CaloTopoClusterSplitter.h.
|
private |
vector of names of the secondary calorimeter samplings to consider.
Samplings in this list will be considered for local maxima only if no local max in the primary list is overlapping. By default this list is empty
Definition at line 201 of file CaloTopoClusterSplitter.h.
|
private |
share cells at the border between two local maxima
this property needs to be set to true in order to treat cells which would be included in 2 clusters (for more then 2 the 2 with the largest E for the current seed cells are used) as shared cells. Shared cells are first excluded from the clustering and then clustered after all normal cells are clustered. The shared clusters are added to the 2 clusters they neighbor with the weights \(w_1 = E_1/(E_1+r E_2)\) and \(w_2 = 1-w_1\), where \(E_{1,2}\) are the current energies of the 2 neighboring clusters without the shared cells and \(r=\exp(d_1-d_2)\) is the ratio of the expected dependencies on the distances \(d_i\) (in units of a typical em shower scale) of each shared cell to the cluster centers. If the property is set to false the border cells are included in the normal clustering and the cluster with the largest E for the current seed cells gets the current border cell.
Definition at line 135 of file CaloTopoClusterSplitter.h.
|
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 235 of file CaloTopoClusterSplitter.h.
|
private |
Definition at line 246 of file CaloTopoClusterSplitter.h.
|
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 local maxima.
Definition at line 192 of file CaloTopoClusterSplitter.h.
|
private |
flag for all secondary 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 secondary local maxima.
Definition at line 230 of file CaloTopoClusterSplitter.h.
|
private |
actual set of samplings to be used
This set is created according to the names given in the property m_samplingNames.
Definition at line 171 of file CaloTopoClusterSplitter.h.
|
private |
actual set of secondary samplings to be used
This set is created according to the names given in the property m_secondarySamplingNames.
Definition at line 208 of file CaloTopoClusterSplitter.h.
|
privateinherited |
Definition at line 399 of file AthCommonDataStore.h.
|
privateinherited |
Definition at line 398 of file AthCommonDataStore.h.