ATLAS Offline Software
Loading...
Searching...
No Matches
xAODMaker::ElectronCnvTool Class Reference

Implementation for the tool creating ElectronContainer from an AOD. More...

#include <ElectronCnvTool.h>

Inheritance diagram for xAODMaker::ElectronCnvTool:
Collaboration diagram for xAODMaker::ElectronCnvTool:

Public Member Functions

 ElectronCnvTool (const std::string &type, const std::string &name, const IInterface *parent)
 Regular AlgTool constructor.
virtual StatusCode convert (const egammaContainer *aod, xAOD::ElectronContainer *xaod) const override
 Function that fills an existing xAOD::ElectronContainer (xaod or xaodForward can be NULL)
virtual StatusCode convert (const egammaContainer *aod, xAOD::ElectronContainer *xaod, xAOD::ElectronContainer *xaodFrwd) const override
 Function that fills an existing xAOD::ElectronContainer (xaod or xaodForward can be NULL)
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

Static Public Member Functions

static const InterfaceID & interfaceID ()
 Gaudi interface definition.

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< StoreGateSvcStoreGateSvc_t

Private Member Functions

void setParameters (const egamma &, xAOD::Electron &) const
 Fills in the shower shape variables.
void checkAndSetParameter (egammaParameters::ParamDef aodParameter, xAOD::EgammaParameters::ShowerShapeType xaodParameter, const egamma &, xAOD::Electron &) const
void setIsolations (const egamma &aodmuon, xAOD::Electron &xaodmuon) const
 Fills in the isolation variables.
void checkAndSetIsolation (egammaParameters::ParamDef aodParameter, xAOD::Iso::IsolationType xaodParameter, const egamma &, xAOD::Electron &) const
void setTrackMatch (const egamma &aodmuon, xAOD::Electron &xaodmuon) const
 Fills in the track match variables.
void checkAndSetTrackMatch (egammaParameters::ParamDef aodParameter, xAOD::EgammaParameters::TrackCaloMatchType xaodParameter, const egamma &, xAOD::Electron &) const
void setLinks (const egamma &, xAOD::Electron &) const
 Set the element links between the various particles.
ElementLink< xAOD::TrackParticleContainergetNewLink (const ElementLink< Rec::TrackParticleContainer > &oldLink, const std::string &name) const
void setDerivedParameters (xAOD::Electron &) const
 Fills in some extra derived shower shape variables.
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

std::string m_inDetTrackParticlesGSF
 Other Keys.
std::string m_inDetTrackParticles
 Location/Key for xAOD::TrackParticles from ID.
std::string m_caloClusters
 Location/Key for xAOD::CaloClusters for electrons and photons.
std::string m_caloClustersSofte
 Location/Key for xAOD::CaloClusters for softe electrons.
std::string m_caloClustersFrwd
 Location/Key for xAOD::CaloClusters for forward electrons.
std::string m_caloClustersOther
 Location/Key for xAOD::CaloClusters for other (trigger?) electrons.
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

Detailed Description

Implementation for the tool creating ElectronContainer from an AOD.

   This interface is implemented by the tool that converts the
   egamma (Electron) Container into an xAOD::ElectronContainer.
Author
Jovan Mitrevski Jovan.nosp@m..Mit.nosp@m.revsk.nosp@m.i@ce.nosp@m.rn.ch

Definition at line 34 of file ElectronCnvTool.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

◆ ElectronCnvTool()

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

Regular AlgTool constructor.

Definition at line 24 of file ElectronCnvTool.cxx.

27 : AthAlgTool( type, name, parent )
28 {
29 // Declare the interface(s) provided by the tool:
30 declareInterface< IElectronCnvTool >(this);
31
32 declareProperty( "xAODElectronTrackContainerName", m_inDetTrackParticlesGSF = "GSFTrackParticles" );
33 declareProperty( "xAODElectronOrigTrackContainerName", m_inDetTrackParticles = "InDetTrackParticles" );
34 declareProperty( "xAODCaloClusterContainerName", m_caloClusters = "egClusterCollection");
35 declareProperty( "xAODCaloClusterSofteContainerName", m_caloClustersSofte = "LArClusterEMSofte");
36 declareProperty( "xAODCaloClusterFrwdContainerName", m_caloClustersFrwd = "LArClusterEMFrwd");
37 declareProperty( "xAODCaloClusterOtherContainerName", m_caloClustersOther = "egClusterCollection",
38 "Most likely used for trigger objects");
39
40 }
AthAlgTool()
Default constructor:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_inDetTrackParticles
Location/Key for xAOD::TrackParticles from ID.
std::string m_caloClustersSofte
Location/Key for xAOD::CaloClusters for softe electrons.
std::string m_caloClusters
Location/Key for xAOD::CaloClusters for electrons and photons.
std::string m_caloClustersFrwd
Location/Key for xAOD::CaloClusters for forward electrons.
std::string m_inDetTrackParticlesGSF
Other Keys.
std::string m_caloClustersOther
Location/Key for xAOD::CaloClusters for other (trigger?) electrons.

Member Function Documentation

◆ checkAndSetIsolation()

void xAODMaker::ElectronCnvTool::checkAndSetIsolation ( egammaParameters::ParamDef aodParameter,
xAOD::Iso::IsolationType xaodParameter,
const egamma & aodel,
xAOD::Electron & xaodel ) const
private

Definition at line 209 of file ElectronCnvTool.cxx.

211 {
212 double result = aodel.detailValue(aodParameter);
213 float isolation = static_cast<float>(result);
214 xaodel.setIsolationValue(isolation, xaodParameter);
215 }
double detailValue(egammaParameters::ParamDef key, const std::string &name="", unsigned int index=0) const
get the float value of key in the container name
Definition egamma.cxx:899
bool setIsolationValue(float value, const Iso::IsolationType information)
old set method for Isolation values.
Definition Egamma_v1.h:262

◆ checkAndSetParameter()

void xAODMaker::ElectronCnvTool::checkAndSetParameter ( egammaParameters::ParamDef aodParameter,
xAOD::EgammaParameters::ShowerShapeType xaodParameter,
const egamma & aodel,
xAOD::Electron & xaodel ) const
private

Definition at line 190 of file ElectronCnvTool.cxx.

192 {
193 double result = aodel.detailValue(aodParameter);
194 float parameter = static_cast<float>(result);
195 xaodel.setShowerShapeValue(parameter, xaodParameter);
196 }
bool setShowerShapeValue(float value, const EgammaParameters::ShowerShapeType information)
Set method for Shower Shape values.

◆ checkAndSetTrackMatch()

void xAODMaker::ElectronCnvTool::checkAndSetTrackMatch ( egammaParameters::ParamDef aodParameter,
xAOD::EgammaParameters::TrackCaloMatchType xaodParameter,
const egamma & aodel,
xAOD::Electron & xaodel ) const
private

Definition at line 232 of file ElectronCnvTool.cxx.

234 {
235 double result = aodel.detailValue(aodParameter);
236 float isolation = static_cast<float>(result);
237 xaodel.setTrackCaloMatchValue(isolation, xaodParameter);
238 }
bool setTrackCaloMatchValue(const float value, const EgammaParameters::TrackCaloMatchType information)
Set method for Track to Calo Match values.

◆ convert() [1/2]

StatusCode xAODMaker::ElectronCnvTool::convert ( const egammaContainer * aod,
xAOD::ElectronContainer * xaod ) const
overridevirtual

Function that fills an existing xAOD::ElectronContainer (xaod or xaodForward can be NULL)

Implements xAODMaker::IElectronCnvTool.

Definition at line 42 of file ElectronCnvTool.cxx.

44 {
45 if (!aod) {
46 ATH_MSG_WARNING("No input Electron Collection passed");
47 return StatusCode::SUCCESS;
48 }
49 //Create the container for forward electrons
51
52 return convert(aod,xaod,&xaodFrwd);
53 }
#define ATH_MSG_WARNING(x)
virtual StatusCode convert(const egammaContainer *aod, xAOD::ElectronContainer *xaod) const override
Function that fills an existing xAOD::ElectronContainer (xaod or xaodForward can be NULL)
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".

◆ convert() [2/2]

StatusCode xAODMaker::ElectronCnvTool::convert ( const egammaContainer * aod,
xAOD::ElectronContainer * xaod,
xAOD::ElectronContainer * xaodFrwd ) const
overridevirtual

Function that fills an existing xAOD::ElectronContainer (xaod or xaodForward can be NULL)

Implements xAODMaker::IElectronCnvTool.

Definition at line 55 of file ElectronCnvTool.cxx.

58 {
59 if (!aod) {
60 ATH_MSG_WARNING("No input Electron Collection passed");
61 return StatusCode::SUCCESS;
62 }
63
64 // Create the xAOD objects:
65 for(const egamma* eg : *aod) {
66
67 // ATH_MSG_DEBUG("Electron author = " << eg->author()
68 // << ", container = " << eg->clusterElementLink().proxy()->name());
69
70 //special treatment for forward electrons
71 if(eg->author(egammaParameters::AuthorFrwd)) {
72 if (xaodFrwd) {
74 xaodFrwd->push_back( electron );
75 // p4
76 electron->setPtEtaPhi(eg->pt(),eg->eta(),eg->phi());
77 // author(s)
78 electron->setAuthor( eg->author() );
79 //OQ
80 electron->setOQ( eg->isgoodoq() );
81 //set Links
82 setLinks(*eg,*electron);
83 } else {
84 ATH_MSG_WARNING("Found a foward electron, but xaodFrwd == NULL");
85 }
86 }//end if forward electron
87 else{
88 if (xaod) {
90 // Create the xAOD object:
91 xaod->push_back( electron );
92 // p4
93 if (eg->trackParticle()) {
94 double clE = eg->cluster()->e();
95 double pt = sqrt(clE*clE - ParticleConstants::electronMassInMeV*ParticleConstants::electronMassInMeV)/cosh(eg->trackParticle()->eta());
96 double eta = eg->trackParticle()->eta();
97 double phi = eg->trackParticle()->phi();
98 electron->setPtEtaPhi(pt, eta, phi);
99 }
100 else
101 electron->setPtEtaPhi(eg->pt(),eg->eta(),eg->phi());
102
103 // author(s)
104 electron->setAuthor( eg->author() );
105 //OQ
106 electron->setOQ( eg->isgoodoq() );
107 // charge
108 electron->setCharge( eg->charge() );
109
110 // Error Matrix
111 if(eg->errors()){
112
113 const ErrorMatrixEEtaPhiM* oldMatrix = eg->errors()->eEtaPhiMMatrix();
114 if(oldMatrix){
115 Eigen::Matrix<double,4,4> matrix;
116 for(int i(0);i<4;++i){
117 for(int j(0);j<4;++j){
118 matrix(i,j) = (*oldMatrix)(i,j);
119 }
120 }
121 Eigen::Matrix<double,4,4> jacobian (EigenP4JacobianEEtaPhiM2PtEtaPhiM(eg->e(),eg->eta(), eg->m()));
122 Eigen::Matrix<double,4,4> covMatrix= jacobian*matrix*jacobian.transpose();
123 electron->setCovMatrix(covMatrix.cast<float>());
124 }
125 }
126
127 //setParameters
128 setParameters(*eg,*electron);
129 //setIsolations
130 setIsolations(*eg,*electron);
131 //setTrackMatch
132 setTrackMatch(*eg,*electron);
133 // set Links
134 setLinks(*eg,*electron);
135 // set derived parameters - should be done last
136 setDerivedParameters(*electron);
137
138 } else {
139 ATH_MSG_WARNING("Found a regular electron, but xaod == NULL");
140 }
141
142 }//end If not forward
143 }
144 // Return gracefully:
145 return StatusCode::SUCCESS;
146 }
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
value_type push_back(value_type pElem)
Add an element to the end of the collection.
void setTrackMatch(const egamma &aodmuon, xAOD::Electron &xaodmuon) const
Fills in the track match variables.
void setParameters(const egamma &, xAOD::Electron &) const
Fills in the shower shape variables.
void setDerivedParameters(xAOD::Electron &) const
Fills in some extra derived shower shape variables.
void setIsolations(const egamma &aodmuon, xAOD::Electron &xaodmuon) const
Fills in the isolation variables.
void setLinks(const egamma &, xAOD::Electron &) const
Set the element links between the various particles.
constexpr double electronMassInMeV
the mass of the electron (in MeV)
const unsigned int AuthorFrwd
Electron reconstructed by the Forward cluster-based algorithm.
Electron_v1 Electron
Definition of the current "egamma version".

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ evtStore()

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.

◆ 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

◆ getNewLink()

ElementLink< xAOD::TrackParticleContainer > xAODMaker::ElectronCnvTool::getNewLink ( const ElementLink< Rec::TrackParticleContainer > & oldLink,
const std::string & name ) const
private

Definition at line 298 of file ElectronCnvTool.cxx.

299 {
300 ElementLink<xAOD::TrackParticleContainer> newLink;
301 std::string linkname = name;
302 // If not set, use same name as in original link.
303 if (linkname.empty())
304 linkname = oldLink.dataID();
305 newLink.resetWithKeyAndIndex( linkname, oldLink.index() );
306 return newLink;
307 }

◆ 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()

const InterfaceID & xAODMaker::IElectronCnvTool::interfaceID ( )
inlinestaticinherited

Gaudi interface definition.

Definition at line 49 of file IElectronCnvTool.h.

49 {
51 }
static const InterfaceID IID_IElectronCnvTool("xAODMaker::IElectronCnvTool", 1, 0)
The interface provided by IElectronCnvTool.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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.

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ setDerivedParameters()

void xAODMaker::ElectronCnvTool::setDerivedParameters ( xAOD::Electron & xaodel) const
private

Fills in some extra derived shower shape variables.

e237/e277

e233/e237

(emaxs1-e2tsts1)/(emaxs1+e2tsts1)

e2tsts1-emins1

ethad/et

ethad1/et

Definition at line 309 of file ElectronCnvTool.cxx.

309 {
310
311 // Set some extra derived variables:
313 float e237 = 0;
314 float e277 = 0;
317 float reta = (e277 != 0) ? e237/e277 : 0;
319 }
321 float e233 = 0;
323 float rphi = (e237 != 0) ? e233/e237 : 0;
325 }
327 // Eratio
328 float emaxs1 = 0;
329 float e2tsts1 = 0;
332 float dEmaxs1 = 0;
333 float esums1 = emaxs1 + e2tsts1;
334 if (fabs(esums1) > 0.0) dEmaxs1 = (emaxs1 - e2tsts1)/esums1;
336 }
337
339 float emins1 = 0;
341 float deltaE = e2tsts1 - emins1;
343 }
344
346 const xAOD::CaloCluster* el_cl = xaodel.caloCluster();
347 if(el_cl != nullptr) {
348 float elEta = fabs(el_cl->etaBE(2));
349 float elEt = el_cl->e()/cosh(elEta);
350 float ethad = 0;
352 float raphad = fabs(elEt) != 0. ? ethad/elEt : 0.;
354 }
355
357 float ethad1 = 0;
359 float raphad1 = fabs(elEt) != 0. ? ethad1/elEt : 0.;
361 }
362 } else {
363 ATH_MSG_WARNING("No xAOD::CaloCluster was found during the conversion egammaContainer -> xAOD::ElectronContainer");
364 }
365 }
virtual double e() const
The total energy of the particle.
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
bool showerShapeValue(float &value, const EgammaParameters::ShowerShapeType information) const
Accessor for ShowerShape values.
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
@ ethad1
transverse energy in the first sampling of the hadronic calorimeters behind the cluster calculated fr...
Definition EgammaEnums.h:43
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition EgammaEnums.h:81
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
Definition EgammaEnums.h:78
@ ethad
ET leakage into hadronic calorimeter with exclusion of energy in CaloSampling::TileGap3.
Definition EgammaEnums.h:46
@ Eratio
(emaxs1-e2tsts1)/(emaxs1+e2tsts1)
@ emaxs1
energy of strip with maximal energy deposit
@ DeltaE
e2tsts1-emins1
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
Definition EgammaEnums.h:69
@ e2tsts1
energy of the cell corresponding to second energy maximum in the first sampling
@ emins1
energy reconstructed in the strip with the minimal value between the first and second maximum
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.

◆ setIsolations()

void xAODMaker::ElectronCnvTool::setIsolations ( const egamma & aodmuon,
xAOD::Electron & xaodmuon ) const
private

Fills in the isolation variables.

Definition at line 198 of file ElectronCnvTool.cxx.

198 {
207 }
void checkAndSetIsolation(egammaParameters::ParamDef aodParameter, xAOD::Iso::IsolationType xaodParameter, const egamma &, xAOD::Electron &) const
@ topoetcone30
Topo cluster ET in a cone with half-opening angle 0.30.
@ ptcone40
summed pt of tracks in a cone with half-opening angle 0.4
@ etcone40
ET in a cone with half-opening angle 0.4, with exclusion of a window of size 7x5 in electromagnetic c...
@ topoetcone40
Topo cluster ET in a cone with half-opening angle 0.30.
@ ptcone30
summed pt of tracks in a cone with half-opening angle 0.3
@ etcone20
ET in a cone with half-opening angle 0.2, with exclusion of a window of size 7x5 in electromagnetic c...
@ etcone30
ET in a cone with half-opening angle 0.3, with exclusion of a window of size 7x5 in electromagnetic c...
@ topoetcone20
Topo cluster ET in a cone with half-opening angle 0.20.
@ topoetcone20
Topo-cluster ET-sum.
@ etcone20
Calorimeter isolation.

◆ setLinks()

void xAODMaker::ElectronCnvTool::setLinks ( const egamma & aodel,
xAOD::Electron & xaodel ) const
private

Set the element links between the various particles.

Definition at line 242 of file ElectronCnvTool.cxx.

243 {
244 std::string clusterContainerName;
245
246 // Need to reset links from old CaloCluster to xAOD::CaloCluster
247 ElementLink<xAOD::CaloClusterContainer> newclusterElementLink;
249 clusterContainerName = m_caloClusters;
250
251 std::vector< ElementLink< xAOD::TrackParticleContainer > > linksToTracks;
252 for(unsigned int i(0); i<aodel.nTrackParticles(); ++i){
253 linksToTracks.push_back( getNewLink(aodel.trackParticleElementLink(i), m_inDetTrackParticlesGSF) );
254 }
255 xaodel.setTrackParticleLinks( linksToTracks );
256
257 }
258 else if ( aodel.author(egammaParameters::AuthorSofte) ) {
259 clusterContainerName = m_caloClustersSofte;
260
261 //softe do not use GSF Tracks
262 std::vector< ElementLink< xAOD::TrackParticleContainer > > linksToTracks;
263 for(unsigned int i(0); i<aodel.nTrackParticles(); ++i){
264 linksToTracks.push_back( getNewLink(aodel.trackParticleElementLink(i), m_inDetTrackParticles) );
265 }
266 xaodel.setTrackParticleLinks( linksToTracks );
267
268 }
269 else if ( aodel.author(egammaParameters::AuthorFrwd) ) {
270 clusterContainerName = m_caloClustersFrwd;
271 }
272 else { // assume a trigger object
273 clusterContainerName = m_caloClustersOther;
274
275 // trigger does not use GSF
276 std::vector< ElementLink< xAOD::TrackParticleContainer > > linksToTracks;
277 for(unsigned int i(0); i<aodel.nTrackParticles(); ++i){
278 linksToTracks.push_back( getNewLink(aodel.trackParticleElementLink(i), m_inDetTrackParticles) );
279 }
280 xaodel.setTrackParticleLinks( linksToTracks );
281 }
282
283 // If EL name not set, use the original name.
284 if (clusterContainerName.empty())
285 clusterContainerName = aodel.clusterElementLink().dataID();
286
287 newclusterElementLink.resetWithKeyAndIndex( clusterContainerName,
288 aodel.clusterElementLink().index() );
289
290 std::vector< ElementLink< xAOD::CaloClusterContainer > > linksToClusters;
291 linksToClusters.push_back(newclusterElementLink);
292 xaodel.setCaloClusterLinks(linksToClusters);
293
294 if (!newclusterElementLink.isValid()) ATH_MSG_WARNING("Invalid link to cluster");
295
296 }
unsigned int author() const
Reconstruction Author.
Definition egamma.h:244
ElementLink< Rec::TrackParticleContainer > trackParticleElementLink(unsigned int index=0) const
element link to trackParticle
Definition egamma.cxx:433
unsigned int nTrackParticles() const
Definition egamma.cxx:405
const ElementLink< CaloClusterContainer > & clusterElementLink() const
element link to cluster
Definition egamma.cxx:427
ElementLink< xAOD::TrackParticleContainer > getNewLink(const ElementLink< Rec::TrackParticleContainer > &oldLink, const std::string &name) const
void setCaloClusterLinks(const CLELVec_t &links)
set Pointer to the xAOD::CaloCluster
void setTrackParticleLinks(const TPELVec_t &links)
Set the ElementLinks to the xAOD::TrackParticle/s that match the electron candidate.
const unsigned int AuthorElectron
Electron reconstructed by standard cluster-based algorithm.
const unsigned int AuthorSofte
Electron reconstructed by the track-based algorithm.

◆ setParameters()

void xAODMaker::ElectronCnvTool::setParameters ( const egamma & aodel,
xAOD::Electron & xaodel ) const
private

Fills in the shower shape variables.

Definition at line 148 of file ElectronCnvTool.cxx.

148 {
149 // We're not doing all AOD parameters here because some are dropped, and some are moved elsewhere.
188 }
void checkAndSetParameter(egammaParameters::ParamDef aodParameter, xAOD::EgammaParameters::ShowerShapeType xaodParameter, const egamma &, xAOD::Electron &) const
@ ethad1
transverse energy in the first sampling of the hadronic calorimeters behind the cluster calculated fr...
@ ecore
core energy in em calo E(core) = E0(3x3) + E1(15x2) + E2(5x5) + E3(3x5)
@ ethad
ET leakage into hadronic calorimeter with exclusion of energy in CaloSampling::TileGap3.
@ barys1
barycentre in sampling 1 calculated in 3 strips
@ e2tsts1
energy of the cell corresponding to second energy maximum in the first sampling
@ poscs1
relative position in eta within cell in 1st sampling
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
@ e337
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x7
@ f1core
E1(3x1)/E = fraction of the energy reconstructed in the first longitudinal compartment of the electro...
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
@ e1152
uncalibrated energy (sum of cells) in strips in a 15x2 window in cells in eta X phi
@ e235
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x5
@ e033
uncalibrated energy (sum of cells) in presampler in a 3x3 window in cells in eta X phi
@ emaxs1
energy of strip with maximal energy deposit
@ f3core
E3(3x3)/E fraction of the energy reconstructed in the third compartment of the electromagnetic calori...
@ r33over37allcalo
1-ratio of energy in 3x3 over 3x7 cells; E(3x3) = E0(1x1) + E1(3x1) + E2(3x3) + E3(3x3); E(3x7) = E0(...
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ~0,2, corresponding typically to 20 strips ...
@ f3
fraction of energy reconstructed in 3rd sampling
@ e011
uncorrected energy in presampler in a 1x1 window in cells in eta X phi
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
@ e333
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x3
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
@ poscs2
relative position in eta within cell in 2nd sampling
@ widths1
same as egammaParameters::weta1 but without corrections on particle impact point inside the cell
@ e377
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in +- n stri...
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
@ emins1
energy reconstructed in the strip with the minimal value between the first and second maximum
@ e335
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x5
@ widths2
same as egammaParameters::weta2 but without corrections on particle impact point inside the cell
@ e132
uncalibrated energy (sum of cells) in strips in a 3x2 window in cells in eta X phi
@ e255
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 5x5
@ weta1
shower width using +/-1 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
@ ehad1
E leakage into 1st sampling of had calo (CaloSampling::HEC0 + CaloSampling::TileBar0 + CaloSampling::...
@ pos7
Difference between the track and the shower positions: sum_{i=i_m-7}^{i=i_m+7}E_i x (i-i_m) / sum_{i=...
@ e2ts1
2nd max in strips calc by summing 3 strips
@ pos
difference between shower cell and predicted track in +/- 1 cells
@ asy1
uncorr asymmetry in 3 strips in the 1st sampling
@ e235
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x5
Definition EgammaEnums.h:72
@ e337
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x7
Definition EgammaEnums.h:90
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
@ pos7
Difference between the track and the shower positions: sum_{i=i_m-7}^{i=i_m+7}E_i x (i-i_m) / sum_{i=...
@ f3core
E3(3x3)/E fraction of the energy reconstructed in the third compartment of the electromagnetic calori...
Definition EgammaEnums.h:66
@ e1152
uncalibrated energy (sum of cells) in strips in a 15x2 window in cells in eta X phi
Definition EgammaEnums.h:40
@ f3
fraction of energy reconstructed in 3rd sampling
Definition EgammaEnums.h:55
@ poscs2
relative position in eta within cell in 2nd sampling
@ ecore
core energy in em calo E(core) = E0(3x3) + E1(15x2) + E2(5x5) + E3(3x5)
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition EgammaEnums.h:53
@ pos
difference between shower cell and predicted track in +/- 1 cells
@ widths2
same as egammaParameters::weta2 but without corrections on particle impact point inside the cell
@ e2ts1
2nd max in strips calc by summing 3 strips
@ poscs1
relative position in eta within cell in 1st sampling
@ e335
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x5
Definition EgammaEnums.h:87
@ e377
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition EgammaEnums.h:93
@ e333
uncalibrated energy (sum of cells) of the third sampling in a rectangle of size 3x3
Definition EgammaEnums.h:84
@ e255
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 5x5
Definition EgammaEnums.h:75
@ ehad1
E leakage into 1st sampling of had calo (CaloSampling::HEC0 + CaloSampling::TileBar0 + CaloSampling::...
Definition EgammaEnums.h:49
@ barys1
barycentre in sampling 1 calculated in 3 strips
@ asy1
uncorr asymmetry in 3 strips in the 1st sampling
@ e033
uncalibrated energy (sum of cells) in presampler in a 3x3 window in cells in eta X phi
Definition EgammaEnums.h:34
@ e132
uncalibrated energy (sum of cells) in strips in a 3x2 window in cells in eta X phi
Definition EgammaEnums.h:37
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
@ r33over37allcalo
1-ratio of energy in 3x3 over 3x7 cells; E(3x3) = E0(1x1) + E1(3x1) + E2(3x3) + E3(3x3); E(3x7) = E0(...
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
@ e011
uncalibrated energy (sum of cells) in presampler in a 1x1 window in cells in eta X phi
Definition EgammaEnums.h:31
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
Definition EgammaEnums.h:98
@ widths1
same as egammaParameters::weta1 but without corrections on particle impact point inside the cell
@ f1core
E1(3x1)/E = fraction of the energy reconstructed in the first longitudinal compartment of the electro...
Definition EgammaEnums.h:61

◆ setTrackMatch()

void xAODMaker::ElectronCnvTool::setTrackMatch ( const egamma & aodmuon,
xAOD::Electron & xaodmuon ) const
private

Fills in the track match variables.

Definition at line 218 of file ElectronCnvTool.cxx.

218 {
229
230 }
void checkAndSetTrackMatch(egammaParameters::ParamDef aodParameter, xAOD::EgammaParameters::TrackCaloMatchType xaodParameter, const egamma &, xAOD::Electron &) const
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
@ deltaEta3
difference between the cluster eta (3rd sampling) and the eta of the track extrapolated to the 3rd sa...
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...
@ deltaPhiRescaled
difference between the cluster phi (sampling 2) and the phi of the track extrapolated from the perige...
@ deltaPhiFromLastMeasurement
difference between the cluster phi (sampling 2) and the eta of the track extrapolated from the last m...
@ deltaPhi0
difference between the cluster phi (presampler) and the eta of the track extrapolated to the presampl...
@ deltaEta0
difference between the cluster eta (presampler) and the eta of the track extrapolated to the presampl...
@ deltaPhi1
difference between the cluster eta (1st sampling) and the eta of the track extrapolated to the 1st sa...
@ deltaEta2
difference between the cluster eta (second sampling) and the eta of the track extrapolated to the sec...
@ deltaPhi3
difference between the cluster eta (3rd sampling) and the eta of the track extrapolated to the 3rd sa...
@ deltaPhi3
difference between the cluster eta (3rd sampling) and the eta of the track extrapolated to the 3rd sa...
@ deltaPhiFromLastMeasurement
difference between the cluster phi (sampling 2) and the eta of the track extrapolated from the last m...
@ deltaPhi1
difference between the cluster eta (1st sampling) and the eta of the track extrapolated to the 1st sa...
@ deltaEta2
difference between the cluster eta (second sampling) and the eta of the track extrapolated to the sec...
@ deltaEta0
difference between the cluster eta (presampler) and the eta of the track extrapolated to the presampl...
@ deltaPhi0
difference between the cluster phi (presampler) and the eta of the track extrapolated to the presampl...
@ deltaEta3
difference between the cluster eta (3rd sampling) and the eta of the track extrapolated to the 3rd sa...
@ deltaPhiRescaled2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...

◆ 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 asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_caloClusters

std::string xAODMaker::ElectronCnvTool::m_caloClusters
private

Location/Key for xAOD::CaloClusters for electrons and photons.

Definition at line 74 of file ElectronCnvTool.h.

◆ m_caloClustersFrwd

std::string xAODMaker::ElectronCnvTool::m_caloClustersFrwd
private

Location/Key for xAOD::CaloClusters for forward electrons.

Definition at line 76 of file ElectronCnvTool.h.

◆ m_caloClustersOther

std::string xAODMaker::ElectronCnvTool::m_caloClustersOther
private

Location/Key for xAOD::CaloClusters for other (trigger?) electrons.

Definition at line 77 of file ElectronCnvTool.h.

◆ m_caloClustersSofte

std::string xAODMaker::ElectronCnvTool::m_caloClustersSofte
private

Location/Key for xAOD::CaloClusters for softe electrons.

Definition at line 75 of file ElectronCnvTool.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_inDetTrackParticles

std::string xAODMaker::ElectronCnvTool::m_inDetTrackParticles
private

Location/Key for xAOD::TrackParticles from ID.

Definition at line 73 of file ElectronCnvTool.h.

◆ m_inDetTrackParticlesGSF

std::string xAODMaker::ElectronCnvTool::m_inDetTrackParticlesGSF
private

Other Keys.

Location/Key for xAOD::TrackParticles from ID

Definition at line 72 of file ElectronCnvTool.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.


The documentation for this class was generated from the following files: