10#ifndef ISOLATIONALGS_ISOLATIONBUILDER_H
11#define ISOLATIONALGS_ISOLATIONBUILDER_H 1
22#include "GaudiKernel/ToolHandle.h"
60 virtual StatusCode
initialize() override final;
62 virtual StatusCode
finalize() override final;
74 "ElectronCollectionContainerName",
80 "FwdElectronCollectionContainerName",
86 "PhotonCollectionContainerName",
92 "MuonCollectionContainerName",
99 "CaloCellIsolationTool",
101 "Handle of the calo cell IsolationTool"
107 "CellCollectionName",
109 "Name of container which contain calo cells"
115 "CaloTopoIsolationTool",
117 "Handle of the calo topo IsolationTool"
123 "PFlowIsolationTool",
125 "Handle of the pflow IsolationTool"
131 "TrackIsolationTool",
133 "Handle of the track IsolationTool"
143 "use track to track assoc after brem" };
154 "The isolation types to do for electrons: vector of vector of enum type "
162 "The correction types to do for electron iso: vector of vector of enum "
163 "type Iso::IsolationCalo/TrackCorrection"
170 "The extra correction types to store but not apply for electrons"
179 "The isolation types to do for photons: vector of vector of enum type "
187 "The correction types to do for photons iso: vector of vector of enum type "
188 "Iso::IsolationCalo/TrackCorrection"
195 "The extra correction types to store but not apply for photons"
202 "The isolation types to do for Muons : vector of vector of enum type "
210 "The correction types to do for Muon iso: vector of vector of enum type "
211 "Iso::IsolationCalo/TrackCorrection"
218 "The extra correction types to store but not apply for muons"
225 "The isolation types to do for forward electron: vector of vector of enum "
226 "type Iso::IsolationType"
233 "The correction types to do for forward electron iso: vector of vector of "
234 "enum type Iso::IsolationCalo/TrackCorrection"
241 "The extra correction types to store but not apply for forward electrons"
251 void declare(IDataHandleHolder* owningAlg);
276 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>
278 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>
280 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>
282 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>
292 void declare(IDataHandleHolder* owningAlg);
313 std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>
315 std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>
317 std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>
325 std::vector<SG::WriteDecorHandle<xAOD::IParticleContainer, float>>
isoDeco;
330 std::vector<SG::WriteDecorHandle<xAOD::IParticleContainer, float>>>
340 std::vector<SG::WriteDecorHandle<xAOD::IParticleContainer, float>>
isoDeco;
341 std::vector<SG::WriteDecorHandle<xAOD::IParticleContainer, float>>
isoDecoV;
351 "CustomConfigurationNameEl",
353 "use a custom configuration for electron"
358 "CustomConfigurationNamePh",
360 "use a custom configuration for photon"
365 "CustomConfigurationNameFwd",
367 "use a custom configuration for forward electron"
372 "CustomConfigurationNameMu",
374 "use a custom configuration for muon"
382 std::set<xAOD::Iso::IsolationFlavour>& runIsoType,
383 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>*
385 std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>*
387 const std::string& containerName,
388 const std::vector<std::vector<int>>& isoInts,
389 const std::vector<std::vector<int>>& corInts,
390 const std::vector<std::vector<int>>& corIntsExtra,
391 const std::string& customConfig);
396 CaloIsoHelpKey& cisoH,
397 const std::vector<std::vector<int>>& corInts,
399 const std::string& prefix,
400 const std::string& customConfig);
406 TrackIsoHelpKey& tisoH,
407 const std::vector<std::vector<int>>& corInts,
409 const std::string& prefix,
410 const std::string& customConfig);
413 const std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>&
418 const std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>&
422 std::vector<std::pair<xAOD::Iso::IsolationFlavour, CaloIsoHelpKey>>&
425 std::vector<std::pair<xAOD::Iso::IsolationFlavour, TrackIsoHelpKey>>&
Base class for elements of a container that can have aux data.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Handle class for adding a decoration to an object.
An algorithm that can be simultaneously executed in multiple threads.
Container class for CaloCell.
void declareIso(std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > &caloIso)
Gaudi::Property< std::string > m_ElectronContainerName
Containers (Is it best to make them as strings? Used by multiple handles)
StatusCode addTrackIsoCorrections(size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, TrackIsoHelpKey &tisoH, const std::vector< std::vector< int > > &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
called by initializeIso
virtual StatusCode initialize() override final
Gaudi::Property< std::string > m_customConfigFwd
IsolationBuilder()
Default constructor:
virtual ~IsolationBuilder()
Destructor:
Gaudi::Property< std::vector< std::vector< int > > > m_elcorIntsExtra
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_elTrackIso
Gaudi::Property< std::string > m_customConfigPh
Gaudi::Property< std::vector< std::vector< int > > > m_phisoInts
Isolation types (for the alg.
ToolHandle< xAOD::INeutralEFlowIsolationTool > m_pflowIsolationTool
Tool for neutral pflow isolation calculation.
Gaudi::Property< std::string > m_customConfigMu
IsolationBuilder(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_muCaloIso
ToolHandle< xAOD::ICaloTopoClusterIsolationTool > m_topoIsolationTool
Tool for topo isolation calculation.
Gaudi::Property< std::vector< std::vector< int > > > m_fecorIntsExtra
Gaudi::Property< bool > m_useBremAssoc
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_phTrackIso
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_feCaloIso
Gaudi::Property< std::vector< std::vector< int > > > m_mucorIntsExtra
Gaudi::Property< std::vector< std::vector< int > > > m_muisoInts
Gaudi::Property< std::vector< std::vector< int > > > m_elisoInts
Isolation types.
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_elCaloIso
StatusCode executeTrackIso(const std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > &trackIsoMap) const
Gaudi::Property< std::vector< std::vector< int > > > m_fecorInts
virtual StatusCode execute(const EventContext &ctx) const override final
StatusCode addCaloIsoCorrections(size_t flavor, xAOD::Iso::IsolationFlavour isoFlav, CaloIsoHelpKey &cisoH, const std::vector< std::vector< int > > &corInts, bool corrsAreExtra, const std::string &prefix, const std::string &customConfig)
called by initializeIso
Gaudi::Property< std::vector< std::vector< int > > > m_mucorInts
Gaudi::Property< std::vector< std::vector< int > > > m_phcorIntsExtra
Gaudi::Property< bool > m_isTrigger
is the alg run at trigger level
Gaudi::Property< std::string > m_FwdElectronContainerName
Gaudi::Property< bool > m_storepileupCorrection
std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > m_muTrackIso
StatusCode initializeIso(std::set< xAOD::Iso::IsolationFlavour > &runIsoType, std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > *caloIsoMap, std::vector< std::pair< xAOD::Iso::IsolationFlavour, TrackIsoHelpKey > > *trackIsoMap, const std::string &containerName, const std::vector< std::vector< int > > &isoInts, const std::vector< std::vector< int > > &corInts, const std::vector< std::vector< int > > &corIntsExtra, const std::string &customConfig)
called by algorithm initialize per object (electron, photon, forward electron, muon)
ToolHandle< xAOD::ICaloCellIsolationTool > m_cellIsolationTool
Tool for cell isolation calculation.
StatusCode executeCaloIso(const std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > &caloIsoMap, const CaloCellContainer *cellColl) const
Gaudi::Property< std::string > m_MuonContainerName
ToolHandle< xAOD::ITrackIsolationTool > m_trackIsolationTool
Tool for neutral pflow isolation calculation.
Gaudi::Property< std::vector< std::vector< int > > > m_feisoInts
Gaudi::Property< std::string > m_customConfigEl
std::vector< std::pair< xAOD::Iso::IsolationFlavour, CaloIsoHelpKey > > m_phCaloIso
Gaudi::Property< std::vector< std::vector< int > > > m_elcorInts
SG::ReadHandleKey< CaloCellContainer > m_cellsKey
Cell container.
Gaudi::Property< bool > m_allTrackRemoval
static bool isCoreCor(xAOD::Iso::IsolationCaloCorrection corr)
virtual StatusCode finalize() override final
Gaudi::Property< std::vector< std::vector< int > > > m_phcorInts
Gaudi::Property< std::string > m_PhotonContainerName
Support class for PropertyMgr.
Property holding a SG store/key/clid from which a ReadHandle is made.
Property holding a SG store/key/clid/attr name from which a WriteDecorHandle is made.
Handle class for adding a decoration to an object.
=============================================================================
DecorHandleKeyArray< WriteDecorHandle< T, S >, WriteDecorHandleKey< T >, Gaudi::DataHandle::Writer > WriteDecorHandleKeyArray
IsolationFlavour
Enumeration for different ways of calculating isolation in xAOD files.
IsolationCaloCorrection
Enumeration for different ways of correcting isolation in xAOD files.
std::map< xAOD::Iso::IsolationCaloCorrection, SG::WriteDecorHandle< xAOD::IParticleContainer, float > > coreCorDeco
std::map< xAOD::Iso::IsolationCaloCorrection, std::vector< SG::WriteDecorHandle< xAOD::IParticleContainer, float > > > noncoreCorDeco
SG::WriteDecorHandle< xAOD::IParticleContainer, uint32_t > corrBitsetDeco
std::vector< SG::WriteDecorHandle< xAOD::IParticleContainer, float > > isoDeco
CaloIsoHelpHandles(const CaloIsoHelpKey &keys)
void declare(IDataHandleHolder *owningAlg)
only to be called after placed in the final location, to propagate dependencies
xAOD::CaloCorrection CorrList
to keep track of the corrections
SG::WriteDecorHandleKeyArray< xAOD::IParticleContainer > isoDeco
The actual isolations.
std::map< xAOD::Iso::IsolationCaloCorrection, SG::WriteDecorHandleKey< xAOD::IParticleContainer > > coreCorDeco
The corrections (one per flavor)
std::vector< xAOD::Iso::IsolationType > isoTypes
the types of isolations to calculate
CaloIsoHelpKey(IDataHandleHolder *owningAlg)
constructor
SG::WriteDecorHandleKey< xAOD::IParticleContainer > corrBitsetDeco
std::map< xAOD::Iso::IsolationCaloCorrection, SG::WriteDecorHandleKeyArray< xAOD::IParticleContainer > > noncoreCorDeco
The corrections (one per flavor/type combination)
std::vector< SG::WriteDecorHandle< xAOD::IParticleContainer, float > > isoDecoV
std::map< xAOD::Iso::IsolationTrackCorrection, SG::WriteDecorHandle< xAOD::IParticleContainer, float > > coreCorDeco
TrackIsoHelpHandles(const TrackIsoHelpKey &keys)
SG::WriteDecorHandle< xAOD::IParticleContainer, uint32_t > corrBitsetDeco
std::vector< SG::WriteDecorHandle< xAOD::IParticleContainer, float > > isoDeco
std::vector< xAOD::Iso::IsolationType > isoTypes
the types of isolations to calculate
void declare(IDataHandleHolder *owningAlg)
only to be called after placed in the final location, to propagate dependencies
SG::WriteDecorHandleKeyArray< xAOD::IParticleContainer > isoDecoV
SG::WriteDecorHandleKeyArray< xAOD::IParticleContainer > isoDeco
The actual isolations.
std::map< xAOD::Iso::IsolationTrackCorrection, SG::WriteDecorHandleKey< xAOD::IParticleContainer > > coreCorDeco
The corrections.
TrackIsoHelpKey(IDataHandleHolder *owningAlg)
constructor
SG::WriteDecorHandleKey< xAOD::IParticleContainer > corrBitsetDeco
xAOD::TrackCorrection CorrList
to keep track of the corrections