ATLAS Offline Software
EgammaFactory.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifdef XAOD_STANDALONE
7 
8 #include <AthLinks/ElementLink.h>
12 #include <xAODRootAccess/Init.h>
13 #include <xAODRootAccess/TEvent.h>
14 #include <xAODRootAccess/TStore.h>
15 
16 #include <cassert>
17 #include <cmath>
18 #include <string>
19 #include <vector>
20 
22 #include "xAODTracking/Vertex.h"
25 
26 void EgammaFactory::create_structure() {
27  ATH_MSG_DEBUG("Creating calo cluster container");
28  m_clusters = new xAOD::CaloClusterContainer();
29  m_clAux = new xAOD::CaloClusterAuxContainer();
30  m_clusters->setStore(m_clAux);
31  if (!m_store.record(m_clusters, "Clusters").isSuccess()) {
32  ATH_MSG_ERROR("Cannot create cluster collection");
33  }
34  if (!m_store.record(m_clAux, "ClustersAux.").isSuccess()) {
35  ATH_MSG_ERROR("Canno create cluster aux collection");
36  };
37 
38  ATH_MSG_DEBUG("Creating vertex container");
39  m_vertexes = new xAOD::VertexContainer();
40  m_vxAux = new xAOD::VertexAuxContainer();
41  m_vertexes->setStore(m_vxAux);
42  if (!m_store.record(m_vertexes, "Vertexes").isSuccess()) {
43  ATH_MSG_ERROR("Cannot create vertex collection");
44  };
45  if (!m_store.record(m_vxAux, "VertexesAux.").isSuccess()) {
46  ATH_MSG_ERROR("Cannot create vertex aux collection");
47  };
48 
49  ATH_MSG_DEBUG("Creating track container");
50  m_tracks = new xAOD::TrackParticleContainer();
51  m_tracksAux = new xAOD::TrackParticleAuxContainer();
52  m_tracks->setStore(m_tracksAux);
53  if (!m_store.record(m_tracks, "Tracks").isSuccess()) {
54  ATH_MSG_ERROR("Cannot create track collection");
55  };
56  if (!m_store.record(m_tracksAux, "TracksAux.").isSuccess()) {
57  ATH_MSG_ERROR("Cannot create track aux collection");
58  };
59 
60  ATH_MSG_DEBUG("Creating photon container");
61  m_photons = new xAOD::PhotonContainer();
62  m_photonsAux = new xAOD::PhotonAuxContainer();
63  m_photons->setStore(m_photonsAux);
64  if (!m_store.record(m_photons, "Photons").isSuccess()) {
65  ATH_MSG_ERROR("Cannot create photon collection");
66  };
67  if (!m_store.record(m_photonsAux, "PhotonsAux.").isSuccess()) {
68  ATH_MSG_ERROR("Cannot create photon aux collection");
69  };
70 
71  ATH_MSG_DEBUG("Creating electron container");
72  m_electrons = new xAOD::ElectronContainer();
73  m_electronsAux = new xAOD::ElectronAuxContainer();
74  m_electrons->setStore(m_electronsAux);
75  if (!m_store.record(m_electrons, "Electrons").isSuccess()) {
76  ATH_MSG_ERROR("Cannot create electron collection");
77  };
78  if (!m_store.record(m_electronsAux, "ElectronsAux.").isSuccess()) {
79  ATH_MSG_ERROR("Cannot create electron aux collection");
80  };
81 }
82 
83 EgammaFactory::EgammaFactory() : asg::AsgMessaging("EgammaFactory") {
84  create_structure();
85 
86  TFile* f = TFile::Open(
88  "ElectronPhotonFourMomentumCorrection/v8/average_layers.root")
89  .c_str(),
90  "READ");
91  if (not f) {
93  "cannot open file "
95  "ElectronPhotonFourMomentumCorrection/v8/average_layers.root")
96  .c_str());
97  } else {
98  m_fave.reset(f);
99  }
100  m_histos_electron = std::array<TProfile2D*, 4>{
101  static_cast<TProfile2D*>(m_fave->Get("histo_electron_ratio_Es0_true_E")),
102  static_cast<TProfile2D*>(m_fave->Get("histo_electron_ratio_Es1_true_E")),
103  static_cast<TProfile2D*>(m_fave->Get("histo_electron_ratio_Es2_true_E")),
104  static_cast<TProfile2D*>(m_fave->Get("histo_electron_ratio_Es3_true_E"))};
105  m_histos_conv = std::array<TProfile2D*, 4>{
106  static_cast<TProfile2D*>(m_fave->Get("histo_conv_ratio_Es0_true_E")),
107  static_cast<TProfile2D*>(m_fave->Get("histo_conv_ratio_Es1_true_E")),
108  static_cast<TProfile2D*>(m_fave->Get("histo_conv_ratio_Es2_true_E")),
109  static_cast<TProfile2D*>(m_fave->Get("histo_conv_ratio_Es3_true_E"))};
110  m_histos_unconv = std::array<TProfile2D*, 4>{
111  static_cast<TProfile2D*>(m_fave->Get("histo_unconv_ratio_Es0_true_E")),
112  static_cast<TProfile2D*>(m_fave->Get("histo_unconv_ratio_Es1_true_E")),
113  static_cast<TProfile2D*>(m_fave->Get("histo_unconv_ratio_Es2_true_E")),
114  static_cast<TProfile2D*>(m_fave->Get("histo_unconv_ratio_Es3_true_E"))};
115  m_histo_rconv = static_cast<TProfile2D*>(m_fave->Get("histo_conv_ph_Rconv"));
116  m_histo_zconv = static_cast<TProfile2D*>(m_fave->Get("histo_conv_ph_zconv"));
117 }
118 
119 std::array<double, 4> EgammaFactory::get_layers_fraction(
120  const std::array<TProfile2D*, 4>& prof, double eta, double pt) const {
121  std::array<double, 4> result;
122  for (int i = 0; i != 4; ++i) {
123  TProfile2D* p = prof[i];
124  assert(p);
125  result[i] = p->GetBinContent(p->FindBin(pt, std::abs(eta)));
126  }
127  return result;
128 }
129 
130 void EgammaFactory::clear() {
131  m_store.clear();
132  create_structure();
133 }
134 
135 EgammaFactory::~EgammaFactory() {
136  m_store.clear();
137 }
138 
139 xAOD::EventInfo* EgammaFactory::create_eventinfo(
140  bool simulation, int runnumber, int eventnumber,
141  int average_interaction_per_crossing) {
142  xAOD::EventInfo* ei = new xAOD::EventInfo();
143  ei->makePrivateStore();
144  ei->setRunNumber(runnumber);
145  ei->setEventNumber(eventnumber);
146  ei->setEventTypeBitmask(simulation);
147  ei->setAverageInteractionsPerCrossing(average_interaction_per_crossing);
148  return ei;
149 }
150 
151 xAOD::CaloCluster* EgammaFactory::create_cluster(float eta, float phi, float e0,
152  float e1, float e2, float e3,
153  float e) {
154  ATH_MSG_DEBUG("creating cluster");
155  // create cluster
156  xAOD::CaloCluster* cluster = new xAOD::CaloCluster();
157  cluster->makePrivateStore();
158 
159  ATH_MSG_DEBUG("setting cluster properties");
160  // set cluster properties
161 
162  {
163  // set eta, phi for all the layers (barrel / endcap)
164  const std::set<CaloSampling::CaloSample> samplings{
169  unsigned sampling_pattern = 0;
170  for (auto sample : samplings) {
171  sampling_pattern |= 0x1U << sample;
172  }
173  ATH_MSG_DEBUG("setting sampling pattern");
174  cluster->setSamplingPattern(sampling_pattern);
175  ATH_MSG_DEBUG("nsamples = " << cluster->nSamples());
176  for (auto sample : samplings) {
177  ATH_MSG_DEBUG("setting eta sampling");
178  cluster->setEta(sample, eta);
179  cluster->setPhi(sample, phi);
180  }
181 
182  ATH_MSG_DEBUG("setting energies sampling");
183 
184  if (std::abs(eta) < 1.45) {
186  cluster->setEnergy(CaloSampling::EMB1, e1);
187  cluster->setEnergy(CaloSampling::EMB2, e2);
188  cluster->setEnergy(CaloSampling::EMB3, e3);
189  } else {
191  cluster->setEnergy(CaloSampling::EME1, e1);
192  cluster->setEnergy(CaloSampling::EME2, e2);
193  cluster->setEnergy(CaloSampling::EME3, e3);
194  }
195  ATH_MSG_DEBUG("setting energy cluster");
196  cluster->setE(e > 0 ? e : e0 + e1 + e2 + e3);
197  ATH_MSG_DEBUG("setting eta cluster");
198  cluster->setEta(eta);
199  ATH_MSG_DEBUG("setting phi cluster");
200  cluster->setPhi(phi);
201  ATH_MSG_DEBUG("decorate cluster for etaCalo, phiCalo");
202  static const SG::Decorator<float> etaCaloDecor("etaCalo");
203  static const SG::Decorator<float> phiCaloDecor("phiCalo");
204  etaCaloDecor(*cluster) = eta;
205  phiCaloDecor(*cluster) = phi;
206  // void insertMoment( MomentType type, double value );
209  }
210  ATH_MSG_DEBUG("pushing cluster collection");
211  m_clusters->push_back(cluster);
212  return cluster;
213 }
214 
215 xAOD::Photon* EgammaFactory::create_unconverted_photon(float eta, float phi,
216  float e) {
217  return create_photon(eta, phi, e, 0., 0.);
218 }
219 
220 xAOD::Photon* EgammaFactory::create_converted_photon(float eta, float phi,
221  float e) {
222  assert(m_histo_rconv);
223  assert(m_histo_zconv);
224  const int bin = m_histo_rconv->FindBin(e / cosh(eta), std::abs(eta));
225  if (m_histo_rconv->IsBinOverflow(bin)) {
226  return create_photon(eta, phi, e, 0, 0);
227  } else {
228  const double rconv = m_histo_rconv->GetBinContent(bin);
229  const double zconv = m_histo_zconv->GetBinContent(
230  m_histo_zconv->FindBin(e / cosh(eta), std::abs(eta)));
231  assert(rconv > 0);
232  return create_photon(eta, phi, e, rconv, zconv);
233  }
234 }
235 
236 xAOD::Photon* EgammaFactory::create_photon(float eta, float phi, float e,
237  float rconv, float zconv) {
238  const bool isconv = (rconv > 0 and rconv < 800);
239  const auto l = get_layers_fraction(isconv ? m_histos_conv : m_histos_unconv,
240  eta, e / cosh(eta));
241  return create_photon(eta, phi, l[0] * e, l[1] * e, l[2] * e, l[3] * e, e,
242  rconv, zconv);
243 }
244 
245 xAOD::Electron* EgammaFactory::create_electron(float eta, float phi, float e) {
246  const auto l = get_layers_fraction(m_histos_electron, eta, e / cosh(eta));
247  return create_electron(eta, phi, l[0] * e, l[1] * e, l[2] * e, l[3] * e, e);
248 }
249 
250 xAOD::Photon* EgammaFactory::create_photon(float eta, float phi, float e0,
251  float e1, float e2, float e3,
252  float e, float rconv, float zconv) {
253  xAOD::CaloCluster* cluster = create_cluster(eta, phi, e0, e1, e2, e3, e);
254  // create Vertex
255  xAOD::Vertex* vertex = nullptr;
256  if (rconv > 0 and rconv < 800) {
257  ATH_MSG_DEBUG("creating vertex");
258  vertex = new xAOD::Vertex();
259  vertex->makePrivateStore();
260  vertex->setZ(zconv);
261  vertex->setX(rconv);
262  vertex->setY(0);
263  // decorate with pt1, pt2
264  SG::Decorator<float> pt1Decor("pt1");
265  SG::Decorator<float> pt2Decor("pt2");
266  pt1Decor(*vertex) = e / cosh(eta) * 0.7;
267  pt2Decor(*vertex) = e / cosh(eta) * 0.3;
268  m_vertexes->push_back(vertex);
269  }
270 
271  ATH_MSG_DEBUG("creating photon");
272  xAOD::Photon* ph = new xAOD::Photon();
273  ph->makePrivateStore();
274  m_photons->push_back(ph);
275 
276  ATH_MSG_DEBUG("link cluster to photon");
277  // set link to clusters
278  std::vector<ElementLink<xAOD::CaloClusterContainer>> links_clusters;
279  ATH_MSG_DEBUG("push back cluster = " << cluster);
280  links_clusters.push_back(
281  ElementLink<xAOD::CaloClusterContainer>(cluster, *m_clusters));
282  ATH_MSG_DEBUG("set link");
283  ph->setCaloClusterLinks(links_clusters);
284 
285  // set link to vertex
286  if (vertex) {
287  ATH_MSG_DEBUG("link vertex to photon");
288  std::vector<ElementLink<xAOD::VertexContainer>> links_vertexes;
289  links_vertexes.push_back(
291  ph->setVertexLinks(links_vertexes);
292  } else {
293  ATH_MSG_DEBUG("not converted");
294  }
295 
296  // set particle properties
297 
298  ph->setEta(eta);
299  ph->setPhi(phi);
300  ph->setM(0);
301  ph->setPt(e / cosh(eta));
302 
303  return ph;
304 }
305 
306 xAOD::Electron* EgammaFactory::create_electron(float eta, float phi, float e0,
307  float e1, float e2, float e3,
308  float e) {
309  ATH_MSG_DEBUG("creating cluster");
310  xAOD::CaloCluster* cluster = create_cluster(eta, phi, e0, e1, e2, e3, e);
311 
312  ATH_MSG_DEBUG("creating track");
314  track->makePrivateStore();
315  track->setDefiningParameters(0., 0., phi, 2 * atan(exp(-eta)), 1.);
316  m_tracks->push_back(track);
317 
318  ATH_MSG_DEBUG("creating electron");
320  el->makePrivateStore();
321  m_electrons->push_back(el);
322 
323  ATH_MSG_DEBUG("link track to electron");
324  std::vector<ElementLink<xAOD::TrackParticleContainer>> links_tracks;
325  links_tracks.push_back(
327  el->setTrackParticleLinks(links_tracks);
328 
329  ATH_MSG_DEBUG("link cluster to electron");
330  std::vector<ElementLink<xAOD::CaloClusterContainer>> links_clusters;
331  ATH_MSG_DEBUG("push back cluster = " << cluster);
332  links_clusters.push_back(
333  ElementLink<xAOD::CaloClusterContainer>(cluster, *m_clusters));
334  ATH_MSG_DEBUG("set link");
335  el->setCaloClusterLinks(links_clusters);
336 
337  // set particle properties
338 
339  el->setEta(eta);
340  el->setPhi(phi);
341  el->setM(0);
342  el->setPt(e / cosh(eta));
343 
344  return el;
345 }
346 #endif
xAOD::CaloCluster_v1::nSamples
unsigned nSamples() const
Definition: CaloCluster_v1.h:884
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
get_generator_info.result
result
Definition: get_generator_info.py:21
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
xAOD::EventInfo_v1::setEventNumber
void setEventNumber(uint64_t value)
Set the current event's event number.
xAOD::EventInfo
EventInfo_v1 EventInfo
Definition of the latest event info version.
Definition: IEventInfoCnvTool.h:17
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition: Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
egammaEnergyPositionAllSamples::e1
double e1(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 1st sampling
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
xAOD::TrackParticleAuxContainer
TrackParticleAuxContainer_v5 TrackParticleAuxContainer
Definition of the current TrackParticle auxiliary container.
Definition: TrackParticleAuxContainer.h:19
xAOD::Egamma_v1::setM
void setM(float m)
set the Mass
Definition: Egamma_v1.cxx:130
xAOD::Photon_v1::setVertexLinks
void setVertexLinks(const VxELVec_t &links)
set Pointer to the xAOD::vertex/vertices that match the photon candidate
asg
Definition: DataHandleTestTool.h:28
test_pyathena.pt
pt
Definition: test_pyathena.py:11
xAOD::TrackParticleContainer
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticleContainer.h:14
bin
Definition: BinsDiffFromStripMedian.h:43
xAOD::CaloCluster_v1::insertMoment
void insertMoment(MomentType type, double value)
Definition: CaloCluster_v1.cxx:754
xAOD::PhotonAuxContainer
PhotonAuxContainer_v3 PhotonAuxContainer
Definition of the current photon auxiliary container.
Definition: PhotonAuxContainer.h:22
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:158
xAOD::CaloCluster_v1::setSamplingPattern
void setSamplingPattern(const unsigned sp, const bool clearSamplingVars=false)
Set sampling pattern (one bit per sampling.
Definition: CaloCluster_v1.cxx:81
xAOD::CaloCluster_v1::setEnergy
bool setEnergy(const CaloSample sampling, const float e)
Set energy for a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:526
CaloClusterAuxContainer.h
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
xAOD::VertexContainer
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Definition: VertexContainer.h:14
xAOD::CaloCluster
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloCluster.h:19
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
xAOD::TrackParticle
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Definition: Event/xAOD/xAODTracking/xAODTracking/TrackParticle.h:13
xAOD::CaloCluster_v1::setE
void setE(flt_t)
Definition: CaloCluster_v1.cxx:375
xAOD::CaloClusterContainer
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloClusterContainer.h:17
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
xAOD::EventInfo_v1::setEventTypeBitmask
void setEventTypeBitmask(uint32_t value)
Set the event type bitmask.
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
SG::Decorator< float >
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:113
xAOD::VertexAuxContainer
VertexAuxContainer_v1 VertexAuxContainer
Definition of the current jet auxiliary container.
Definition: VertexAuxContainer.h:19
lumiFormat.i
int i
Definition: lumiFormat.py:85
CaloCluster.h
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::Egamma_v1::setPhi
void setPhi(float phi)
set the phi
Definition: Egamma_v1.cxx:125
TEvent.h
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
Init.h
hist_file_dump.f
f
Definition: hist_file_dump.py:135
Vertex.h
xAOD::Egamma_v1::setCaloClusterLinks
void setCaloClusterLinks(const CLELVec_t &links)
set Pointer to the xAOD::CaloCluster
DeMoScan.runnumber
runnumber
Definition: DeMoScan.py:266
xAOD::ElectronAuxContainer
ElectronAuxContainer_v3 ElectronAuxContainer
Definition of the current electron auxiliary container.
Definition: ElectronAuxContainer.h:22
xAOD::ElectronContainer
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/ElectronContainer.h:17
xAOD::Egamma_v1::setPt
void setPt(float pt)
set the Pt
Definition: Egamma_v1.cxx:115
PathResolver.h
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
xAOD::PhotonContainer
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/PhotonContainer.h:17
xAOD::CaloClusterAuxContainer
CaloClusterAuxContainer_v2 CaloClusterAuxContainer
Define the latest version of the calorimeter cluster auxiliary container.
Definition: CaloClusterAuxContainer.h:16
xAOD::EventInfo_v1::setAverageInteractionsPerCrossing
void setAverageInteractionsPerCrossing(float value)
Set average interactions per crossing for all BCIDs.
Definition: EventInfo_v1.cxx:408
xAOD::Egamma_v1::setEta
void setEta(float eta)
set the eta
Definition: Egamma_v1.cxx:120
SG::AuxElement::makePrivateStore
void makePrivateStore()
Create a new (empty) private store for this object.
Definition: AuxElement.cxx:192
xAOD::Electron_v1
Definition: Electron_v1.h:34
xAOD::CaloCluster_v1::PHICALOFRAME
@ PHICALOFRAME
Phi in the calo frame (for egamma)
Definition: CaloCluster_v1.h:188
EgammaFactory.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
VertexContainer.h
VKalVrtAthena::varHolder_detail::clear
void clear(T &var)
Definition: NtupleVars.h:48
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::Photon_v1
Definition: Photon_v1.h:37
egammaEnergyPositionAllSamples::e2
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
xAOD::EventInfo_v1::setRunNumber
void setRunNumber(uint32_t value)
Set the current event's run number.
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
CaloClusterContainer.h
xAOD::CaloCluster_v1::setPhi
bool setPhi(const CaloSample sampling, const float phi)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:556
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
egammaEnergyPositionAllSamples::e0
double e0(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in pre-sampler
xAOD::CaloCluster_v1::setEta
bool setEta(const CaloSample sampling, const float eta)
Set in a given sampling. Returns false if the sample isn't part of the cluster.
Definition: CaloCluster_v1.cxx:541
xAOD::CaloCluster_v1::ETACALOFRAME
@ ETACALOFRAME
Eta in the calo frame (for egamma)
Definition: CaloCluster_v1.h:187
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
TStore.h
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
VertexAuxContainer.h