CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Attributes
EGEnergyCorrector Class Reference

#include <EGEnergyCorrector.h>

Classes

struct  Initializer
 

Public Member Functions

std::pair< double, double > CorrectedEnergyWithError (const reco::Photon &p, const reco::VertexCollection &vtxcol, EcalClusterLazyTools &clustertools, CaloGeometry const &caloGeometry)
 
std::pair< double, double > CorrectedEnergyWithErrorV3 (const reco::Photon &p, const reco::VertexCollection &vtxcol, double rho, EcalClusterLazyTools &clustertools, CaloGeometry const &caloGeometry, bool applyRescale=false)
 
 EGEnergyCorrector ()=default
 
 EGEnergyCorrector (Initializer) noexcept
 
 ~EGEnergyCorrector ()=default
 

Protected Attributes

std::shared_ptr< const GBRForestfReadereb
 
std::shared_ptr< const GBRForestfReaderebvariance
 
std::shared_ptr< const GBRForestfReaderee
 
std::shared_ptr< const GBRForestfReadereevariance
 
std::array< float, 73 > fVals
 

Detailed Description

Definition at line 22 of file EGEnergyCorrector.h.

Constructor & Destructor Documentation

◆ ~EGEnergyCorrector()

EGEnergyCorrector::~EGEnergyCorrector ( )
default

◆ EGEnergyCorrector() [1/2]

EGEnergyCorrector::EGEnergyCorrector ( )
default

◆ EGEnergyCorrector() [2/2]

EGEnergyCorrector::EGEnergyCorrector ( Initializer  init)
explicitnoexcept

Definition at line 13 of file EGEnergyCorrector.cc.

References f.

14  : fReadereb(std::move(init.readereb_)),
15  fReaderebvariance(std::move(init.readerebvariance_)),
16  fReaderee(std::move(init.readeree_)),
17  fReadereevariance(std::move(init.readereevariance_)) {
18  fVals.fill(0.0f);
19 }
std::shared_ptr< const GBRForest > fReadereb
std::shared_ptr< const GBRForest > fReadereevariance
double f[11][100]
Definition: init.py:1
std::shared_ptr< const GBRForest > fReaderebvariance
std::array< float, 73 > fVals
std::shared_ptr< const GBRForest > fReaderee
def move(src, dest)
Definition: eostools.py:511

Member Function Documentation

◆ CorrectedEnergyWithError()

std::pair< double, double > EGEnergyCorrector::CorrectedEnergyWithError ( const reco::Photon p,
const reco::VertexCollection vtxcol,
EcalClusterLazyTools clustertools,
CaloGeometry const &  caloGeometry 
)

Definition at line 22 of file EGEnergyCorrector.cc.

References funct::abs(), b, b2, reco::deltaPhi(), EcalBarrel, reco::CaloCluster::energy(), reco::CaloCluster::eta(), GBRForest::GetResponse(), edm::Ptr< T >::isNonnull(), egammaTools::localEcalClusterCoordsEB(), dqm-mbProfile::log, AlCaHLTBitMon_ParallelJobs::p, reco::CaloCluster::phi(), DQM::reader, alignCSCRings::s, and mathSSE::sqrt().

Referenced by EGEnergyAnalyzer::analyze().

25  {
26  const SuperClusterRef s = p.superCluster();
27  const CaloClusterPtr b = s->seed(); //seed basic cluster
28 
29  //highest energy basic cluster excluding seed basic cluster
31  double ebcmax = -99.;
32  for (reco::CaloCluster_iterator bit = s->clustersBegin(); bit != s->clustersEnd(); ++bit) {
33  const CaloClusterPtr bc = *bit;
34  if (bc->energy() > ebcmax && bc != b) {
35  b2 = bc;
36  ebcmax = bc->energy();
37  }
38  }
39 
40  //lowest energy basic cluster excluding seed (for pileup mitigation)
41  CaloClusterPtr bclast;
42  double ebcmin = 1e6;
43  for (reco::CaloCluster_iterator bit = s->clustersBegin(); bit != s->clustersEnd(); ++bit) {
44  const CaloClusterPtr bc = *bit;
45  if (bc->energy() < ebcmin && bc != b) {
46  bclast = bc;
47  ebcmin = bc->energy();
48  }
49  }
50 
51  //2nd lowest energy basic cluster excluding seed (for pileup mitigation)
52  CaloClusterPtr bclast2;
53  ebcmin = 1e6;
54  for (reco::CaloCluster_iterator bit = s->clustersBegin(); bit != s->clustersEnd(); ++bit) {
55  const CaloClusterPtr bc = *bit;
56  if (bc->energy() < ebcmin && bc != b && bc != bclast) {
57  bclast2 = bc;
58  ebcmin = bc->energy();
59  }
60  }
61 
62  bool isbarrel = b->hitsAndFractions().at(0).first.subdetId() == EcalBarrel;
63  bool hasbc2 = b2.isNonnull() && b2->energy() > 0.;
64  bool hasbclast = bclast.isNonnull() && bclast->energy() > 0.;
65  bool hasbclast2 = bclast2.isNonnull() && bclast2->energy() > 0.;
66 
67  if (isbarrel) {
68  //basic supercluster variables
69  fVals[0] = s->rawEnergy();
70  fVals[1] = p.r9();
71  fVals[2] = s->eta();
72  fVals[3] = s->phi();
73  fVals[4] = p.e5x5() / s->rawEnergy();
74  fVals[5] = p.hadronicOverEm();
75  fVals[6] = s->etaWidth();
76  fVals[7] = s->phiWidth();
77 
78  //seed basic cluster variables
79  double bemax = clustertools.eMax(*b);
80  double be2nd = clustertools.e2nd(*b);
81  double betop = clustertools.eTop(*b);
82  double bebottom = clustertools.eBottom(*b);
83  double beleft = clustertools.eLeft(*b);
84  double beright = clustertools.eRight(*b);
85 
86  fVals[8] = b->eta() - s->eta();
87  fVals[9] = reco::deltaPhi(b->phi(), s->phi());
88  fVals[10] = b->energy() / s->rawEnergy();
89  fVals[11] = clustertools.e3x3(*b) / b->energy();
90  fVals[12] = clustertools.e5x5(*b) / b->energy();
91  fVals[13] = sqrt(clustertools.localCovariances(*b)[0]); //sigietaieta
92  fVals[14] = sqrt(clustertools.localCovariances(*b)[2]); //sigiphiiphi
93  fVals[15] = clustertools.localCovariances(*b)[1]; //sigietaiphi
94  fVals[16] = bemax / b->energy(); //crystal energy ratio gap variables
95  fVals[17] = log(be2nd / bemax);
96  fVals[18] = log(betop / bemax);
97  fVals[19] = log(bebottom / bemax);
98  fVals[20] = log(beleft / bemax);
99  fVals[21] = log(beright / bemax);
100  fVals[22] = (betop - bebottom) / (betop + bebottom);
101  fVals[23] = (beleft - beright) / (beleft + beright);
102 
103  double bc2emax = hasbc2 ? clustertools.eMax(*b2) : 0.;
104  double bc2e2nd = hasbc2 ? clustertools.e2nd(*b2) : 0.;
105  double bc2etop = hasbc2 ? clustertools.eTop(*b2) : 0.;
106  double bc2ebottom = hasbc2 ? clustertools.eBottom(*b2) : 0.;
107  double bc2eleft = hasbc2 ? clustertools.eLeft(*b2) : 0.;
108  double bc2eright = hasbc2 ? clustertools.eRight(*b2) : 0.;
109 
110  fVals[24] = hasbc2 ? (b2->eta() - s->eta()) : 0.;
111  fVals[25] = hasbc2 ? reco::deltaPhi(b2->phi(), s->phi()) : 0.;
112  fVals[26] = hasbc2 ? b2->energy() / s->rawEnergy() : 0.;
113  fVals[27] = hasbc2 ? clustertools.e3x3(*b2) / b2->energy() : 0.;
114  fVals[28] = hasbc2 ? clustertools.e5x5(*b2) / b2->energy() : 0.;
115  fVals[29] = hasbc2 ? sqrt(clustertools.localCovariances(*b2)[0]) : 0.;
116  fVals[30] = hasbc2 ? sqrt(clustertools.localCovariances(*b2)[2]) : 0.;
117  fVals[31] = hasbc2 ? clustertools.localCovariances(*b)[1] : 0.;
118  fVals[32] = hasbc2 ? bc2emax / b2->energy() : 0.;
119  fVals[33] = hasbc2 ? log(bc2e2nd / bc2emax) : 0.;
120  fVals[34] = hasbc2 ? log(bc2etop / bc2emax) : 0.;
121  fVals[35] = hasbc2 ? log(bc2ebottom / bc2emax) : 0.;
122  fVals[36] = hasbc2 ? log(bc2eleft / bc2emax) : 0.;
123  fVals[37] = hasbc2 ? log(bc2eright / bc2emax) : 0.;
124  fVals[38] = hasbc2 ? (bc2etop - bc2ebottom) / (bc2etop + bc2ebottom) : 0.;
125  fVals[39] = hasbc2 ? (bc2eleft - bc2eright) / (bc2eleft + bc2eright) : 0.;
126 
127  fVals[40] = hasbclast ? (bclast->eta() - s->eta()) : 0.;
128  fVals[41] = hasbclast ? reco::deltaPhi(bclast->phi(), s->phi()) : 0.;
129  fVals[42] = hasbclast ? bclast->energy() / s->rawEnergy() : 0.;
130  fVals[43] = hasbclast ? clustertools.e3x3(*bclast) / bclast->energy() : 0.;
131  fVals[44] = hasbclast ? clustertools.e5x5(*bclast) / bclast->energy() : 0.;
132  fVals[45] = hasbclast ? sqrt(clustertools.localCovariances(*bclast)[0]) : 0.;
133  fVals[46] = hasbclast ? sqrt(clustertools.localCovariances(*bclast)[2]) : 0.;
134  fVals[47] = hasbclast ? clustertools.localCovariances(*bclast)[1] : 0.;
135 
136  fVals[48] = hasbclast2 ? (bclast2->eta() - s->eta()) : 0.;
137  fVals[49] = hasbclast2 ? reco::deltaPhi(bclast2->phi(), s->phi()) : 0.;
138  fVals[50] = hasbclast2 ? bclast2->energy() / s->rawEnergy() : 0.;
139  fVals[51] = hasbclast2 ? clustertools.e3x3(*bclast2) / bclast2->energy() : 0.;
140  fVals[52] = hasbclast2 ? clustertools.e5x5(*bclast2) / bclast2->energy() : 0.;
141  fVals[53] = hasbclast2 ? sqrt(clustertools.localCovariances(*bclast2)[0]) : 0.;
142  fVals[54] = hasbclast2 ? sqrt(clustertools.localCovariances(*bclast2)[2]) : 0.;
143  fVals[55] = hasbclast2 ? clustertools.localCovariances(*bclast2)[1] : 0.;
144 
145  //local coordinates and crystal indices
146 
147  //seed cluster
148  float betacry, bphicry, bthetatilt, bphitilt;
149  int bieta, biphi;
150  egammaTools::localEcalClusterCoordsEB(*b, caloGeometry, betacry, bphicry, bieta, biphi, bthetatilt, bphitilt);
151 
152  fVals[56] = bieta; //crystal ieta
153  fVals[57] = biphi; //crystal iphi
154  fVals[58] = bieta % 5; //submodule boundary eta symmetry
155  fVals[59] = biphi % 2; //submodule boundary phi symmetry
156  fVals[60] = (std::abs(bieta) <= 25) * (bieta % 25) +
157  (std::abs(bieta) > 25) *
158  ((bieta - 25 * std::abs(bieta) / bieta) % 20); //module boundary eta approximate symmetry
159  fVals[61] = biphi % 20; //module boundary phi symmetry
160  fVals[62] = betacry; //local coordinates with respect to closest crystal center at nominal shower depth
161  fVals[63] = bphicry;
162 
163  //2nd cluster (meaningful gap corrections for converted photons)
164  float bc2etacry, bc2phicry, bc2thetatilt, bc2phitilt;
165  int bc2ieta, bc2iphi;
166  if (hasbc2)
168  *b2, caloGeometry, bc2etacry, bc2phicry, bc2ieta, bc2iphi, bc2thetatilt, bc2phitilt);
169 
170  fVals[64] = hasbc2 ? bc2ieta : 0.;
171  fVals[65] = hasbc2 ? bc2iphi : 0.;
172  fVals[66] = hasbc2 ? bc2ieta % 5 : 0.;
173  fVals[67] = hasbc2 ? bc2iphi % 2 : 0.;
174  fVals[68] = hasbc2 ? (std::abs(bc2ieta) <= 25) * (bc2ieta % 25) +
175  (std::abs(bc2ieta) > 25) * ((bc2ieta - 25 * std::abs(bc2ieta) / bc2ieta) % 20)
176  : 0.;
177  fVals[69] = hasbc2 ? bc2iphi % 20 : 0.;
178  fVals[70] = hasbc2 ? bc2etacry : 0.;
179  fVals[71] = hasbc2 ? bc2phicry : 0.;
180 
181  fVals[72] = vtxcol.size();
182 
183  } else {
184  fVals[0] = s->rawEnergy();
185  fVals[1] = p.r9();
186  fVals[2] = s->eta();
187  fVals[3] = s->phi();
188  fVals[4] = p.e5x5() / s->rawEnergy();
189  fVals[5] = s->etaWidth();
190  fVals[6] = s->phiWidth();
191  fVals[7] = vtxcol.size();
192  }
193 
194  const double varscale = 1.253;
195  double den;
196  const GBRForest *reader;
197  const GBRForest *readervar;
198  if (isbarrel) {
199  den = s->rawEnergy();
200  reader = fReadereb.get();
201  readervar = fReaderebvariance.get();
202  } else {
203  den = s->rawEnergy() + s->preshowerEnergy();
204  reader = fReaderee.get();
205  readervar = fReadereevariance.get();
206  }
207 
208  double ecor = reader->GetResponse(fVals.data()) * den;
209  double ecorerr = readervar->GetResponse(fVals.data()) * den * varscale;
210 
211  //printf("ecor = %5f, ecorerr = %5f\n",ecor,ecorerr);
212 
213  return {ecor, ecorerr};
214 }
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
void localEcalClusterCoordsEB(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt)
std::shared_ptr< const GBRForest > fReadereb
reader
Definition: DQM.py:105
double phi() const
azimuthal angle of cluster centroid
Definition: CaloCluster.h:184
T sqrt(T t)
Definition: SSEVec.h:19
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:146
std::shared_ptr< const GBRForest > fReadereevariance
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double energy() const
cluster energy
Definition: CaloCluster.h:149
double b
Definition: hdecay.h:118
std::shared_ptr< const GBRForest > fReaderebvariance
std::array< float, 73 > fVals
std::shared_ptr< const GBRForest > fReaderee
double GetResponse(const float *vector) const
Definition: GBRForest.h:48
double eta() const
pseudorapidity of cluster centroid
Definition: CaloCluster.h:181
static constexpr float b2

◆ CorrectedEnergyWithErrorV3()

std::pair< double, double > EGEnergyCorrector::CorrectedEnergyWithErrorV3 ( const reco::Photon p,
const reco::VertexCollection vtxcol,
double  rho,
EcalClusterLazyTools clustertools,
CaloGeometry const &  caloGeometry,
bool  applyRescale = false 
)

Definition at line 217 of file EGEnergyCorrector.cc.

References funct::abs(), b, reco::deltaPhi(), EcalBarrel, GBRForest::GetResponse(), egammaTools::localEcalClusterCoordsEB(), SiStripPI::min, AlCaHLTBitMon_ParallelJobs::p, DQM::reader, alignCSCRings::s, and mathSSE::sqrt().

222  {
223  const SuperClusterRef s = p.superCluster();
224  const CaloClusterPtr b = s->seed(); //seed basic cluster
225 
226  bool isbarrel = b->hitsAndFractions().at(0).first.subdetId() == EcalBarrel;
227 
228  //basic supercluster variables
229  fVals[0] = s->rawEnergy();
230  fVals[1] = s->eta();
231  fVals[2] = s->phi();
232  fVals[3] = p.r9();
233  fVals[4] = p.e5x5() / s->rawEnergy();
234  fVals[5] = s->etaWidth();
235  fVals[6] = s->phiWidth();
236  fVals[7] = s->clustersSize();
237  fVals[8] = p.hadTowOverEm();
238  fVals[9] = rho;
239  fVals[10] = vtxcol.size();
240 
241  //seed basic cluster variables
242  double bemax = clustertools.eMax(*b);
243  double be2nd = clustertools.e2nd(*b);
244  double betop = clustertools.eTop(*b);
245  double bebottom = clustertools.eBottom(*b);
246  double beleft = clustertools.eLeft(*b);
247  double beright = clustertools.eRight(*b);
248 
249  double be2x5max = clustertools.e2x5Max(*b);
250  double be2x5top = clustertools.e2x5Top(*b);
251  double be2x5bottom = clustertools.e2x5Bottom(*b);
252  double be2x5left = clustertools.e2x5Left(*b);
253  double be2x5right = clustertools.e2x5Right(*b);
254 
255  fVals[11] = b->eta() - s->eta();
256  fVals[12] = reco::deltaPhi(b->phi(), s->phi());
257  fVals[13] = b->energy() / s->rawEnergy();
258  fVals[14] = clustertools.e3x3(*b) / b->energy();
259  fVals[15] = clustertools.e5x5(*b) / b->energy();
260  fVals[16] = sqrt(clustertools.localCovariances(*b)[0]); //sigietaieta
261  fVals[17] = sqrt(clustertools.localCovariances(*b)[2]); //sigiphiiphi
262  fVals[18] = clustertools.localCovariances(*b)[1]; //sigietaiphi
263  fVals[19] = bemax / b->energy(); //crystal energy ratio gap variables
264  fVals[20] = be2nd / b->energy();
265  fVals[21] = betop / b->energy();
266  fVals[22] = bebottom / b->energy();
267  fVals[23] = beleft / b->energy();
268  fVals[24] = beright / b->energy();
269  fVals[25] = be2x5max / b->energy(); //crystal energy ratio gap variables
270  fVals[26] = be2x5top / b->energy();
271  fVals[27] = be2x5bottom / b->energy();
272  fVals[28] = be2x5left / b->energy();
273  fVals[29] = be2x5right / b->energy();
274 
275  if (isbarrel) {
276  //local coordinates and crystal indices (barrel only)
277 
278  //seed cluster
279  float betacry, bphicry, bthetatilt, bphitilt;
280  int bieta, biphi;
281  egammaTools::localEcalClusterCoordsEB(*b, caloGeometry, betacry, bphicry, bieta, biphi, bthetatilt, bphitilt);
282 
283  fVals[30] = bieta; //crystal ieta
284  fVals[31] = biphi; //crystal iphi
285  fVals[32] = bieta % 5; //submodule boundary eta symmetry
286  fVals[33] = biphi % 2; //submodule boundary phi symmetry
287  fVals[34] = (std::abs(bieta) <= 25) * (bieta % 25) +
288  (std::abs(bieta) > 25) *
289  ((bieta - 25 * std::abs(bieta) / bieta) % 20); //module boundary eta approximate symmetry
290  fVals[35] = biphi % 20; //module boundary phi symmetry
291  fVals[36] = betacry; //local coordinates with respect to closest crystal center at nominal shower depth
292  fVals[37] = bphicry;
293 
294  } else {
295  //preshower energy ratio (endcap only)
296  fVals[30] = s->preshowerEnergy() / s->rawEnergy();
297  }
298 
299  // if (isbarrel) {
300  // for (int i=0; i<38; ++i) printf("%i: %5f\n",i,fVals[i]);
301  // }
302  // else for (int i=0; i<31; ++i) printf("%i: %5f\n",i,fVals[i]);
303 
304  double den;
305  const GBRForest *reader;
306  const GBRForest *readervar;
307  if (isbarrel) {
308  den = s->rawEnergy();
309  reader = fReadereb.get();
310  readervar = fReaderebvariance.get();
311  } else {
312  den = s->rawEnergy() + s->preshowerEnergy();
313  reader = fReaderee.get();
314  readervar = fReadereevariance.get();
315  }
316 
317  double ecor = reader->GetResponse(fVals.data()) * den;
318 
319  //apply shower shape rescaling - for Monte Carlo only, and only for calculation of energy uncertainty
320  if (applyRescale) {
321  if (isbarrel) {
322  fVals[3] = 1.0045 * p.r9() + 0.001; //r9
323  fVals[5] = 1.04302 * s->etaWidth() - 0.000618; //etawidth
324  fVals[6] = 1.00002 * s->phiWidth() - 0.000371; //phiwidth
325  fVals[14] = fVals[3] * s->rawEnergy() / b->energy(); //compute consistent e3x3/eseed after r9 rescaling
326  if (fVals[15] <= 1.0) // rescale e5x5/eseed only if value is <=1.0, don't allow scaled values to exceed 1.0
327  fVals[15] = std::min(1.0, 1.0022 * p.e5x5() / b->energy());
328 
329  fVals[4] =
330  fVals[15] * b->energy() / s->rawEnergy(); // compute consistent e5x5()/rawEnergy() after e5x5/eseed resacling
331 
332  fVals[16] = 0.891832 * sqrt(clustertools.localCovariances(*b)[0]) + 0.0009133; //sigietaieta
333  fVals[17] = 0.993 * sqrt(clustertools.localCovariances(*b)[2]); //sigiphiiphi
334 
335  fVals[19] = 1.012 * bemax / b->energy(); //crystal energy ratio gap variables
336  fVals[20] = 1.0 * be2nd / b->energy();
337  fVals[21] = 0.94 * betop / b->energy();
338  fVals[22] = 0.94 * bebottom / b->energy();
339  fVals[23] = 0.94 * beleft / b->energy();
340  fVals[24] = 0.94 * beright / b->energy();
341  fVals[25] = 1.006 * be2x5max / b->energy(); //crystal energy ratio gap variables
342  fVals[26] = 1.09 * be2x5top / b->energy();
343  fVals[27] = 1.09 * be2x5bottom / b->energy();
344  fVals[28] = 1.09 * be2x5left / b->energy();
345  fVals[29] = 1.09 * be2x5right / b->energy();
346 
347  } else {
348  fVals[3] = 1.0086 * p.r9() - 0.0007; //r9
349  fVals[4] = std::min(1.0, 1.0022 * p.e5x5() / s->rawEnergy()); //e5x5/rawenergy
350  fVals[5] = 0.903254 * s->etaWidth() + 0.001346; //etawidth
351  fVals[6] = 0.99992 * s->phiWidth() + 4.8e-07; //phiwidth
352  fVals[13] =
353  std::min(1.0, 1.0022 * b->energy() / s->rawEnergy()); //eseed/rawenergy (practically equivalent to e5x5)
354 
355  fVals[14] = fVals[3] * s->rawEnergy() / b->energy(); //compute consistent e3x3/eseed after r9 rescaling
356 
357  fVals[16] = 0.9947 * sqrt(clustertools.localCovariances(*b)[0]) + 0.00003; //sigietaieta
358 
359  fVals[19] = 1.005 * bemax / b->energy(); //crystal energy ratio gap variables
360  fVals[20] = 1.02 * be2nd / b->energy();
361  fVals[21] = 0.96 * betop / b->energy();
362  fVals[22] = 0.96 * bebottom / b->energy();
363  fVals[23] = 0.96 * beleft / b->energy();
364  fVals[24] = 0.96 * beright / b->energy();
365  fVals[25] = 1.0075 * be2x5max / b->energy(); //crystal energy ratio gap variables
366  fVals[26] = 1.13 * be2x5top / b->energy();
367  fVals[27] = 1.13 * be2x5bottom / b->energy();
368  fVals[28] = 1.13 * be2x5left / b->energy();
369  fVals[29] = 1.13 * be2x5right / b->energy();
370  }
371  }
372 
373  double ecorerr = readervar->GetResponse(fVals.data()) * den;
374 
375  //printf("ecor = %5f, ecorerr = %5f\n",ecor,ecorerr);
376 
377  return {ecor, ecorerr};
378 }
constexpr double deltaPhi(double phi1, double phi2)
Definition: deltaPhi.h:26
void localEcalClusterCoordsEB(const reco::CaloCluster &bclus, const CaloGeometry &geom, float &etacry, float &phicry, int &ieta, int &iphi, float &thetatilt, float &phitilt)
std::shared_ptr< const GBRForest > fReadereb
reader
Definition: DQM.py:105
T sqrt(T t)
Definition: SSEVec.h:19
std::shared_ptr< const GBRForest > fReadereevariance
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double b
Definition: hdecay.h:118
std::shared_ptr< const GBRForest > fReaderebvariance
std::array< float, 73 > fVals
std::shared_ptr< const GBRForest > fReaderee
double GetResponse(const float *vector) const
Definition: GBRForest.h:48

Member Data Documentation

◆ fReadereb

std::shared_ptr<const GBRForest> EGEnergyCorrector::fReadereb
protected

Definition at line 48 of file EGEnergyCorrector.h.

◆ fReaderebvariance

std::shared_ptr<const GBRForest> EGEnergyCorrector::fReaderebvariance
protected

Definition at line 49 of file EGEnergyCorrector.h.

◆ fReaderee

std::shared_ptr<const GBRForest> EGEnergyCorrector::fReaderee
protected

Definition at line 50 of file EGEnergyCorrector.h.

◆ fReadereevariance

std::shared_ptr<const GBRForest> EGEnergyCorrector::fReadereevariance
protected

Definition at line 51 of file EGEnergyCorrector.h.

◆ fVals

std::array<float, 73> EGEnergyCorrector::fVals
protected

Definition at line 53 of file EGEnergyCorrector.h.