|
ATLAS Offline Software
|
Select topo-clusters to be used in egamma reconstruction.
More...
#include <egammaTopoClusterCopier.h>
|
| egammaTopoClusterCopier (const std::string &name, ISvcLocator *pSvcLocator) |
|
virtual StatusCode | initialize () override final |
|
virtual StatusCode | execute (const EventContext &ctx) const override final |
|
virtual StatusCode | finalize () override final |
|
virtual StatusCode | sysInitialize () override |
| Override sysInitialize. More...
|
|
virtual bool | isClonable () const override |
| Specify if the algorithm is clonable. More...
|
|
virtual unsigned int | cardinality () const override |
| Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
|
|
virtual StatusCode | sysExecute (const EventContext &ctx) override |
| Execute an algorithm. More...
|
|
virtual const DataObjIDColl & | extraOutputDeps () const override |
| Return the list of extra output dependencies. More...
|
|
virtual bool | filterPassed (const EventContext &ctx) const |
|
virtual void | setFilterPassed (bool state, const EventContext &ctx) const |
|
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 | 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 |
|
Select topo-clusters to be used in egamma reconstruction.
This algorithm is the first step in egamma reconstruction. It selects topoclusters and decorate them with the EM fraction. The input and output containers are collections of xAOD::CaloCluster.
- Input container: input clusters
- Output container: view of decorated selected clusters
- Output container: shallow copy of decorated clusters of the input container
The algorithm computes a custom version of the EM fraction defined as the sum of the energy of the presampler, three accordion layers and the energy in the tile-gap divided by the total energy of the cluster. The computation is done only for cluster passing the preselection (|eta| and minimum EM energy). Otherwise a value of 0 is used. The value is used to decorate the clusters with "EMFraction" decoration.
The selection is based on:
- maximum |eta| of selected clusters
- minimum EM energy of selected clusters
- mimimum EM fraction of selected clusters
Definition at line 42 of file egammaTopoClusterCopier.h.
◆ StoreGateSvc_t
◆ egammaTopoClusterCopier()
egammaTopoClusterCopier::egammaTopoClusterCopier |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
pSvcLocator |
|
) |
| |
◆ cardinality()
unsigned int AthReentrantAlgorithm::cardinality |
( |
| ) |
const |
|
overridevirtualinherited |
Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
Override this to return 0 for reentrant algorithms.
Override this to return 0 for reentrant algorithms.
Definition at line 55 of file AthReentrantAlgorithm.cxx.
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode egammaTopoClusterCopier::execute |
( |
const EventContext & |
ctx | ) |
const |
|
finaloverridevirtual |
Definition at line 125 of file egammaTopoClusterCopier.cxx.
133 std::unique_ptr<xAOD::CaloClusterContainer>,
134 std::unique_ptr<xAOD::ShallowAuxContainer>
137 ATH_CHECK(outputTopoclustersShallow.record(
138 std::move(inputShallowcopy.first),
139 std::move(inputShallowcopy.second)
144 auto viewCopy = std::make_unique<ConstDataVector<xAOD::CaloClusterContainer>>(
SG::VIEW_ELEMENTS);
148 std::unique_ptr<ConstDataVector<xAOD::CaloClusterContainer>> fwdViewCopy;
156 fwdViewCopy = std::make_unique<ConstDataVector<xAOD::CaloClusterContainer>>(
SG::VIEW_ELEMENTS);
170 "->CHECKING Cluster at eta,phi,et " <<
171 clus->eta() <<
" , " <<
172 clus->phi() <<
" , " <<
177 s_acc_emfraction(*clus) = 0.0;
179 const double clusterE = clus->e();
180 const double aeta = std::abs(clus->eta());
182 const bool valid_for_central = checkIfValidForCentral(aeta,
m_etaCut, clusterE,
m_ECut);
184 if (valid_for_central) {
185 ++buff_CentralPassPreSelection;
186 }
else if (valid_for_fwd) {
187 ++buff_FwdPassPreSelection;
192 const bool valid_for_both = valid_for_central && valid_for_fwd;
193 if (valid_for_both) {
194 ++buff_FwdPassPreSelection;
195 ++buff_SharedPassPreSelection;
199 fwdViewCopy->push_back(clus->getSisterCluster());
200 ++buff_FwdPassSelection;
204 double eg_tilegap = 0;
205 if (valid_for_central) {
206 if (aeta > 1.35 && aeta < 1.65 && clusterE > 0) {
207 eg_tilegap += addTileGapCellsEnergy(clus);
211 const double emfrac= (clus->energyBE(0) + clus->energyBE(1) +
212 clus->energyBE(2) + clus->energyBE(3) + eg_tilegap) / clusterE;
214 s_acc_emfraction(*clus) = emfrac;
217 "-->Selected Cluster at eta,phi,et,EMFraction " << clus->eta() <<
218 " , " << clus->phi() <<
219 " , " << clus->et() <<
223 if (valid_for_central) {
224 viewCopy->push_back(clus);
225 ++buff_CentralPassSelection;
229 fwdViewCopy->push_back(clus);
230 ++buff_FwdPassSelection;
233 if (valid_for_both) {
234 ++buff_SharedPassSelection;
243 "Cloned container has size: " << viewCopy->size() <<
244 " selected out of : " << inputTopoclusters->size()
247 ATH_CHECK(outputTopoclusters.record(std::move(viewCopy)));
255 "Cloned fwd container has size: " << fwdViewCopy->size() <<
256 " selected out of : " << inputTopoclusters->size()
259 ATH_CHECK(outputFwdTopoclusters.record(std::move(fwdViewCopy)));
262 return StatusCode::SUCCESS;
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ extraOutputDeps()
const DataObjIDColl & AthReentrantAlgorithm::extraOutputDeps |
( |
| ) |
const |
|
overridevirtualinherited |
Return the list of extra output dependencies.
This list is extended to include symlinks implied by inheritance relations.
Definition at line 79 of file AthReentrantAlgorithm.cxx.
86 return Algorithm::extraOutputDeps();
◆ filterPassed()
virtual bool AthReentrantAlgorithm::filterPassed |
( |
const EventContext & |
ctx | ) |
const |
|
inlinevirtualinherited |
◆ finalize()
StatusCode egammaTopoClusterCopier::finalize |
( |
| ) |
|
|
finaloverridevirtual |
◆ initialize()
StatusCode egammaTopoClusterCopier::initialize |
( |
| ) |
|
|
finaloverridevirtual |
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isClonable()
bool AthReentrantAlgorithm::isClonable |
( |
| ) |
const |
|
overridevirtualinherited |
Specify if the algorithm is clonable.
Reentrant algorithms are clonable.
Reimplemented in Simulation::BeamEffectsAlg, InDet::SiTrackerSpacePointFinder, InDet::SCT_Clusterization, InDet::SiSPSeededTrackFinder, SCTRawDataProvider, InDet::GNNSeedingTrackMaker, SCT_PrepDataToxAOD, RoIBResultToxAOD, SCT_CablingCondAlgFromCoraCool, SCT_ReadCalibDataTestAlg, SCT_CablingCondAlgFromText, InDet::SiSPGNNTrackMaker, SCT_ReadCalibChipDataTestAlg, SCT_TestCablingAlg, SCT_ConfigurationConditionsTestAlg, ITkPixelCablingAlg, ITkStripCablingAlg, SCTEventFlagWriter, SCT_ConditionsSummaryTestAlg, SCT_ModuleVetoTestAlg, SCT_MonitorConditionsTestAlg, SCT_LinkMaskingTestAlg, SCT_MajorityConditionsTestAlg, SCT_RODVetoTestAlg, SCT_SensorsTestAlg, SCT_TdaqEnabledTestAlg, SCT_SiliconConditionsTestAlg, SCTSiLorentzAngleTestAlg, SCT_ByteStreamErrorsTestAlg, SCT_ConditionsParameterTestAlg, SCT_FlaggedConditionTestAlg, SCT_StripVetoTestAlg, SCT_RawDataToxAOD, and SCTSiPropertiesTestAlg.
Definition at line 44 of file AthReentrantAlgorithm.cxx.
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ renounce()
◆ renounceArray()
◆ setFilterPassed()
virtual void AthReentrantAlgorithm::setFilterPassed |
( |
bool |
state, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
inlinevirtualinherited |
◆ sysExecute()
StatusCode AthReentrantAlgorithm::sysExecute |
( |
const EventContext & |
ctx | ) |
|
|
overridevirtualinherited |
Execute an algorithm.
We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.
Definition at line 67 of file AthReentrantAlgorithm.cxx.
69 return Gaudi::Algorithm::sysExecute (ctx);
◆ sysInitialize()
StatusCode AthReentrantAlgorithm::sysInitialize |
( |
| ) |
|
|
overridevirtualinherited |
Override sysInitialize.
Override sysInitialize from the base class.
Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc
Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc
Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.
Reimplemented in InputMakerBase, and HypoBase.
Definition at line 96 of file AthReentrantAlgorithm.cxx.
107 if ( cs.retrieve().isFailure() ) {
109 return StatusCode::SUCCESS;
111 if (cs->regHandle(
this,*
h).isFailure()) {
112 sc = StatusCode::FAILURE;
113 ATH_MSG_ERROR(
"unable to register WriteCondHandle " <<
h->fullKey()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_AllClusters
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_AllClusters {} |
|
mutableprivate |
◆ m_CentralPassPreSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_CentralPassPreSelection {} |
|
mutableprivate |
◆ m_CentralPassSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_CentralPassSelection {} |
|
mutableprivate |
◆ m_detStore
◆ m_doForwardClusters
bool egammaTopoClusterCopier::m_doForwardClusters = false |
|
private |
◆ m_ECut
Gaudi::Property<float> egammaTopoClusterCopier::m_ECut |
|
private |
◆ m_EMFracCut
Gaudi::Property<float> egammaTopoClusterCopier::m_EMFracCut |
|
private |
Initial value:{
this,
"EMFracCut",
0.5,
"mimimum EM fraction of selected clusters"
}
Definition at line 110 of file egammaTopoClusterCopier.h.
◆ m_etaCut
Gaudi::Property<float> egammaTopoClusterCopier::m_etaCut |
|
private |
◆ m_evtStore
◆ m_extendedExtraObjects
DataObjIDColl AthReentrantAlgorithm::m_extendedExtraObjects |
|
privateinherited |
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Empty if no symlinks were found.
Definition at line 153 of file AthReentrantAlgorithm.h.
◆ m_fwdEtaCut
Gaudi::Property<double> egammaTopoClusterCopier::m_fwdEtaCut |
|
private |
Initial value:{
this,
"fwdEtaCut",
2.5,
"minimum |eta| of selected fwd clusters"
}
Definition at line 89 of file egammaTopoClusterCopier.h.
◆ m_fwdETCut
Gaudi::Property<double> egammaTopoClusterCopier::m_fwdETCut |
|
private |
◆ m_FwdPassPreSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_FwdPassPreSelection {} |
|
mutableprivate |
◆ m_FwdPassSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_FwdPassSelection {} |
|
mutableprivate |
◆ m_hasITk
Gaudi::Property<bool> egammaTopoClusterCopier::m_hasITk |
|
private |
Initial value:{
this,
"hasITk",
false,
"Boolean to do track matching"
}
Private member flag to do the track matching.
Definition at line 118 of file egammaTopoClusterCopier.h.
◆ m_inputTopoCollection
Initial value:{
this,
"InputTopoCollection",
"CaloTopoClusters",
"input topocluster collection"
}
Definition at line 54 of file egammaTopoClusterCopier.h.
◆ m_outputFwdTopoCollection
Initial value:{
this,
"OutputFwdTopoCollection",
"",
"View container of selected fwd topoclusters"
}
Definition at line 75 of file egammaTopoClusterCopier.h.
◆ m_outputTopoCollection
Initial value:{
this,
"OutputTopoCollection",
"egammaTopoCluster",
"View container of selected topoclusters"
}
Definition at line 68 of file egammaTopoClusterCopier.h.
◆ m_outputTopoCollectionShallow
Initial value:{
this,
"TopoShallow_doNotConfig",
"",
"Shallow copy of input collection that allows properties to be modified"
}
Definition at line 61 of file egammaTopoClusterCopier.h.
◆ m_SharedPassPreSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_SharedPassPreSelection {} |
|
mutableprivate |
◆ m_SharedPassSelection
Gaudi::Accumulators::Counter egammaTopoClusterCopier::m_SharedPassSelection {} |
|
mutableprivate |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
Gaudi::Accumulators::Counter m_FwdPassPreSelection
Gaudi::Property< double > m_fwdEtaCut
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
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)
Gaudi::Property< float > m_etaCut
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
bool m_doForwardClusters
Private member flag to copy forward clusters.
SG::WriteHandleKey< ConstDataVector< xAOD::CaloClusterContainer > > m_outputFwdTopoCollection
bool greater(double a, double b)
Compare two FP numbers, working around x87 precision issues.
virtual void setOwner(IDataHandleHolder *o)=0
Gaudi::Accumulators::Counter m_FwdPassSelection
SG::WriteHandleKey< xAOD::CaloClusterContainer > m_outputTopoCollectionShallow
Description of a calorimeter cluster.
AthReentrantAlgorithm()
Default constructor:
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
Gaudi::Accumulators::Counter m_AllClusters
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< float > m_EMFracCut
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Gaudi::Accumulators::Counter m_SharedPassPreSelection
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< float > m_ECut
virtual StatusCode sysInitialize() override
Override sysInitialize.
bool isFCAL(const xAOD::CaloCluster *cluster)
return true if the cluster (or the majority of its energy) is in the FCAL0
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_inputTopoCollection
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
SG::WriteHandleKey< ConstDataVector< xAOD::CaloClusterContainer > > m_outputTopoCollection
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
#define ATH_MSG_WARNING(x)
Gaudi::Accumulators::Counter m_CentralPassSelection
Gaudi::Property< double > m_fwdETCut
Gaudi::Property< bool > m_hasITk
Private member flag to do the track matching.
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Gaudi::Accumulators::Counter m_CentralPassPreSelection
Gaudi::Accumulators::Counter m_SharedPassSelection