Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
TForwardElectronLikelihoodTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 #include "TROOT.h"
7 #include "TSystem.h"
8 #include <cmath>
9 #include <format>
10 
11 const double Root::TForwardElectronLikelihoodTool::fIpBounds[IP_FBINS + 1] = {
12  0.,
13  500.
14 };
15 // These are the variables availalble in the likelihood.
16 const std::string
18  "el_secondLambda", "el_lateral", "el_longitudinal", "el_centerLambda",
19  "el_fracMax", "el_secondR", "el_significance", "el_secondDensity"
20  };
21 
23  const char* name)
24  : asg::AsgMessaging(std::string(name))
25  , m_doPileupCorrection(false)
26  , m_variableNames("")
27  , m_pdfFileName("")
28  , m_variableBitMask(0x0)
29  , m_cutPosition_kinematicEta(-9)
30  , m_cutPosition_kinematicEt(-9)
31  , m_cutPosition_LH(-9)
32 {
33 }
34 
37 {
38  ATH_MSG_DEBUG("TForwardElectronLikelihoodTool initialize.");
39  // use an int as a StatusCode
40  StatusCode sc(StatusCode::SUCCESS);
41 
42  // Check that all needed variables are setup
43  if (m_pdfFileName.empty()) {
45  "You need to specify the input PDF file name before you call "
46  "initialize() with setPDFFileName('your/file/name.root') ");
47  sc = StatusCode::FAILURE;
48  }
49 
50  unsigned int number_of_expected_bin = s_fnDiscEtBins * s_fnEtaBins;
51  if (m_cutLikelihood.size() != number_of_expected_bin) {
52  ATH_MSG_ERROR("Configuration issue : CutLikelihood expected size "
53  << number_of_expected_bin << " input size "
54  << m_cutLikelihood.size());
56  "Could NOT initialize! Please fix the errors mentioned above...");
57  sc = StatusCode::FAILURE;
58  return sc;
59  }
60 
61  // --------------------------------------------------------------------------
62  // Register the cuts and check that the registration worked:
63 
64  // Cut position for the kineatic pre-selection, separately for eta/Et
65  m_cutPosition_kinematicEta =
66  m_acceptInfo.addCut("kinematicEta", "pass kinematic eta");
67  if (m_cutPosition_kinematicEta < 0)
68  sc = StatusCode::FAILURE;
69  m_cutPosition_kinematicEt =
70  m_acceptInfo.addCut("kinematicEt", "pass kinematic Et ");
71  if (m_cutPosition_kinematicEt < 0)
72  sc = StatusCode::FAILURE;
73 
74  // Cut position for the likelihood selection - DO NOT CHANGE ORDER!
75  m_cutPosition_LH = m_acceptInfo.addCut("passLH", "pass Likelihood");
76  if (m_cutPosition_LH < 0) {
77  sc = StatusCode::FAILURE;
78  }
79 
80  // Check that we got everything OK
81  if (sc == StatusCode::FAILURE) {
83  "! Something went wrong with the setup of the return objects...");
84  return sc;
85  }
86 
87  // Get the correct bit mask for the current likelihood operating point
88  m_variableBitMask = getLikelihoodBitmask(m_variableNames);
89 
90  //----------File/Histo operation------------------------------------
91  // Load the ROOT file containing the PDFs
92  TString tmpString(m_pdfFileName);
93  gSystem->ExpandPathName(tmpString);
94  std::string fname(tmpString.Data());
95  m_pdfFile = TFile::Open(fname.c_str(), "READ");
96  // Check that we could load the ROOT file
97  if (!m_pdfFile) {
98  ATH_MSG_ERROR(" No ROOT file found here: " << m_pdfFileName);
99  return StatusCode::FAILURE;
100  }
101 
102  // Load the histograms
103  for (unsigned int varIndex = 0; varIndex < s_fnVariables; varIndex++) {
104  const std::string& vstr = fVariables[varIndex];
105  // Skip the loading of PDFs for variables we don't care about for this
106  // operating point. If the string is empty (which is true in the default
107  // 2012 case), load all of them.
108  if (m_variableNames.find(vstr) == std::string::npos &&
109  !m_variableNames.empty()) {
110  continue;
111  }
112  loadVarHistograms(vstr, varIndex);
113  }
114 
115  // TFile close does not free the memory
116  m_pdfFile->Close();
117  // We need the destructor to be called
118  delete m_pdfFile;
119  //----------End File/Histo operation------------------------------------
120 
121  ATH_MSG_DEBUG("Initialization complete for a LH tool with these specs:"
122  << "\n - PdfFileName : "
123  << m_pdfFileName
124  << "\n - Variable bitmask : "
125  << m_variableBitMask
126  << "\n - VariableNames : "
127  << m_variableNames);
128  return sc;
129 }
130 
131 int
133  unsigned int varIndex)
134 {
135  for (unsigned int s_or_b = 0; s_or_b < 2; ++s_or_b) {
136  for (unsigned int ip = 0; ip < IP_FBINS; ++ip) {
137  for (unsigned int et = 0; et < s_fnEtBinsHist; ++et) {
138  for (unsigned int eta = 0; eta < s_fnEtaBins; ++eta) {
139 
140  std::string sig_bkg = (s_or_b == 0) ? "sig" : "bkg";
141  // For the fwd LH PDFs and optimisation have matching eta bin
142  // boundaries unsigned int eta_tmp = (eta > 0) ? eta-1 : eta ;
143  unsigned int eta_tmp = eta;
144  unsigned int et_tmp = et;
145  std::string binname = getBinName(et_tmp, eta_tmp, ip, m_ipBinning);
146 
147  const std::string pdfdir = std::format("{}/{}", vstr, sig_bkg);
148  std::string pdf = std::format("{}_{}_smoothed_hist_from_KDE_{}",
149  vstr, sig_bkg, binname);
150 
151  if (!m_pdfFile->GetListOfKeys()->Contains(vstr.c_str())) {
152  ATH_MSG_INFO("Warning: skipping variable "
153  << vstr << " because the folder does not exist.");
154  return 1;
155  }
156  if (!((TDirectory*)m_pdfFile->Get(vstr.c_str()))
157  ->GetListOfKeys()
158  ->Contains(sig_bkg.c_str())) {
159  ATH_MSG_INFO("Warning: skipping variable "
160  << vstr << " because the folder does not exist.");
161  return 1;
162  }
163  // Use the first Et bin given in the root file for all Et ranges below
164  if (et == 0 && !((TDirectory*)m_pdfFile->Get(pdfdir.c_str()))
165  ->GetListOfKeys()
166  ->Contains(pdf.c_str())) {
167  ATH_MSG_INFO("using lowest GeV bin in place of all below.");
168  binname = getBinName(et_tmp + 1, eta_tmp, ip, m_ipBinning);
169  pdf = std::format("{}_{}_smoothed_hist_from_KDE_{}",
170  vstr, sig_bkg, binname);
171  }
172  if (((TDirectory*)m_pdfFile->Get(pdfdir.c_str()))
173  ->GetListOfKeys()
174  ->Contains(pdf.c_str())) {
175  TH1F* hist =
176  (TH1F*)(((TDirectory*)m_pdfFile->Get(pdfdir.c_str()))->Get(pdf.c_str()));
177  fPDFbins[s_or_b][ip][et][eta][varIndex] =
179  delete hist;
180  } else {
181  ATH_MSG_INFO("Warning: Object " << pdf << " does not exist.");
182  ATH_MSG_INFO("Skipping all other histograms with this variable.");
183  return 1;
184  }
185  }
186  }
187  }
188  }
189  return 1;
190 }
191 
194  double eta,
195  double eT,
196  double ip) const
197 {
199 
200  vars.likelihood = likelihood;
201  vars.eta = eta;
202  vars.eT = eT;
203  vars.ip = ip;
204 
205  return accept(vars);
206 }
207 
208 // This method calculates if the current electron passes the requested
209 // likelihood cut
212  LikeEnumForward::LHAcceptVars_t& vars_struct) const
213 {
214  // Setup return accept with AcceptInfo
215  asg::AcceptData acceptData(&m_acceptInfo);
216 
217  // Set up the individual cuts
218  bool passKineEta(true);
219  bool passKineEt(true);
220  bool passLH(true);
221 
222  if (fabs(vars_struct.eta) < 2.5) {
223  ATH_MSG_DEBUG("This forward electron has"
224  << vars_struct.eta
225  << ", which is fabs(eta)<2.5 Returning False.");
226  passKineEta = false;
227  }
228  // Return if the kinematic requirements are not fulfilled
229  acceptData.setCutResult(m_cutPosition_kinematicEta, passKineEta);
230  if (!passKineEta) {
231  return acceptData;
232  }
233 
234  unsigned int etbin = getLikelihoodEtHistBin(vars_struct.eT);
235  unsigned int etabin = getLikelihoodEtaBin(vars_struct.eta);
236 
237  if (etbin >= s_fnDiscEtBins) {
238  ATH_MSG_WARNING("Cannot evaluate likelihood for Et "
239  << vars_struct.eT << ". Returning false..");
240  passKineEt = false;
241  }
242 
243  // Return if the kinematic requirements are not fulfilled
244  acceptData.setCutResult(m_cutPosition_kinematicEt, passKineEt);
245  if (!passKineEt) {
246  return acceptData;
247  }
248 
249  double cutDiscriminant = -999.;
250  unsigned int ibin_combined = etbin * s_fnEtaBins + etabin;
251 
252  if (!m_cutLikelihood.empty()) {
253 
254  cutDiscriminant = m_cutLikelihood[ibin_combined];
255  // If doPileupCorrection, then correct the discriminant itself instead of
256  // the cut value
257  if (m_doPileupCorrection) {
258  cutDiscriminant +=
259  vars_struct.ip * m_cutLikelihoodPileupCorrectionA[ibin_combined] +
260  m_cutLikelihoodPileupCorrectionB[ibin_combined];
261  }
262  }
263 
264  // Determine if the calculated likelihood value passes the cut
265  ATH_MSG_DEBUG("Likelihood macro: Discriminant: ");
266  if (vars_struct.likelihood < cutDiscriminant) {
267  ATH_MSG_DEBUG("Likelihood macro: Disciminant Cut Failed.");
268  passLH = false;
269  }
270  acceptData.setCutResult(m_cutPosition_LH, passLH);
271  return acceptData;
272 }
273 
274 double
276  double eT,
277  double secondLambda,
278  double lateral,
279  double longitudinal,
280  double centerLambda,
281  double fracMax,
282  double secondR,
283  double significance,
284  double secondDensity,
285  double ip) const
286 {
288  vars.eta = eta;
289  vars.eT = eT;
290  vars.secondLambda = secondLambda;
291  vars.lateral = lateral;
292  vars.longitudinal = longitudinal;
293  vars.centerLambda = centerLambda;
294  vars.fracMax = fracMax;
295  vars.secondR = secondR;
296  vars.significance = significance;
297  vars.secondDensity = secondDensity;
298  vars.ip = ip;
299  return calculate(vars);
300 }
301 
302 // The main public method to actually calculate the likelihood value
303 double
305  LikeEnumForward::LHCalcVars_t& vars_struct) const
306 {
307  // Reset the results to defaul values
308  double result = -999;
309  double arr[] = { vars_struct.secondLambda, vars_struct.lateral,
310  vars_struct.longitudinal, vars_struct.centerLambda,
311  vars_struct.fracMax, vars_struct.secondR,
312  vars_struct.significance, vars_struct.secondDensity };
313  std::vector<double> vec(arr, arr + sizeof(arr) / sizeof(double));
314 
315  // Calculate the actual likelihood value and fill the return object
316  result = this->evaluateLikelihood(
317  vec, vars_struct.eT, vars_struct.eta, vars_struct.ip);
318  return result;
319 }
320 
321 double
323  std::vector<float>& varVector,
324  double et,
325  double eta,
326  double ip) const
327 {
328  std::vector<double> vec;
329  for (unsigned int var = 0; var < s_fnVariables; var++) {
330  vec.push_back(varVector[var]);
331  }
332  return evaluateLikelihood(vec, et, eta, ip);
333 }
334 
335 double
337  std::vector<double>& varVector,
338  double et,
339  double eta,
340  double ip) const
341 {
342  // const double GeV = 1000;
343  unsigned int etbin = getLikelihoodEtHistBin(et);
344  unsigned int etabin = getLikelihoodEtaBin(eta);
345  unsigned int ipbin = getIpBin(ip);
346 
347  if (etbin >= s_fnEtBinsHist) {
348  ATH_MSG_WARNING("skipping etbin " << etbin << ", et " << et);
349  return -999.;
350  }
351  if (etabin >= s_fnEtaBins) {
352  ATH_MSG_WARNING("skipping etabin " << etabin << ", eta " << eta);
353  return -999.;
354  }
355 
356  if (varVector.size() != s_fnVariables) {
357  ATH_MSG_WARNING("Error! Variable vector size mismatch! Check your vector!");
358  return -999.;
359  }
360 
361  double SigmaS = 1.;
362  double SigmaB = 1.;
363 
364  for (unsigned int var = 0; var < s_fnVariables; var++) {
365 
366  std::string varstr = fVariables[var];
367 
368  // Skip variables that are masked off (not used) in the likelihood
369  if (!(m_variableBitMask & (0x1 << var))) {
370  continue;
371  }
372 
373  for (unsigned int s_or_b = 0; s_or_b < 2; s_or_b++) {
374 
375  int bin =
376  fPDFbins[s_or_b][ipbin][etbin][etabin][var]->FindBin(varVector[var]);
377  double prob = 0;
378 
379  double integral =
380  double(fPDFbins[s_or_b][ipbin][etbin][etabin][var]->Integral());
381  if (integral == 0) { // currently, the crack always has integral == 0
383  "Error! PDF integral == 0!"); // changed it to debug message since we
384  // intend to run the tool in the
385  // derivations
386  return -1.35;
387  }
388 
389  prob = double(fPDFbins[s_or_b][ipbin][etbin][etabin][var]->GetBinContent(
390  bin)) /
391  integral;
392 
393  if (s_or_b == 0)
394  SigmaS *= prob;
395  else if (s_or_b == 1)
396  SigmaB *= prob;
397  }
398  }
399 
400  return TransformLikelihoodOutput(SigmaS, SigmaB);
401 }
402 
403 // --------------------------------------------
404 double
406  double pb) const
407 {
408  // returns transformed or non-transformed output
409  // (Taken mostly from TMVA likelihood code)
410  double fEpsilon = 1e-99;
411  // If both signal and bkg are 0, we want it to fail.
412  if (ps < fEpsilon)
413  ps = 0;
414  if (pb < fEpsilon)
415  pb = fEpsilon;
416  double disc = ps / double(ps + pb);
417 
418  if (disc >= 1.0)
419  disc = 1. - 1.e-15;
420  else if (disc <= 0.0)
421  disc = fEpsilon;
422 
423  double tau = 15.0;
424  disc = -log(1.0 / disc - 1.0) * (1. / double(tau));
425 
426  ATH_MSG_DEBUG("disc is " << disc);
427  return disc;
428 }
429 
430 // Gets the IP bin
431 unsigned int
433 {
434  for (unsigned int ipBin = 0; ipBin < IP_FBINS; ++ipBin) {
435  if (ip < fIpBounds[ipBin + 1])
436  return ipBin;
437  }
438  return 0;
439 }
440 
441 // Gets the Eta bin given the eta . Binning uses uper bound
442 unsigned int
444 {
445  const unsigned int nEtaBins = s_fnEtaBins;
446  const double etaBins[nEtaBins] = { 2.6, 2.7, 2.8, 2.9, 3.0,
447  3.1, 3.16, 3.35, 3.6, 4.9 };
448  for (unsigned int etaBin = 0; etaBin < nEtaBins; ++etaBin) {
449  if (fabs(eta) < etaBins[etaBin])
450  return etaBin;
451  }
452  return (nEtaBins - 1);
453 }
454 // Gets the histogram Et bin given the et (MeV). Binning uses upper bound
455 unsigned int
457 {
458  const double GeV = 1000;
459  const unsigned int nEtBins = s_fnDiscEtBins;
460  const double eTBins[nEtBins] = {
461  30 * GeV, 40 * GeV, 50 * GeV, 7000 * GeV
462  }; // removed 20 GeV bin since we're upper bound oriented
463  for (unsigned int eTBin = 0; eTBin < nEtBins; ++eTBin) {
464  if (eT < eTBins[eTBin]) {
465  return eTBin;
466  }
467  }
468  return (nEtBins - 1); // Return the last bin if > the last bin.
469 }
470 
471 // Gets the bin name. Given the HISTOGRAM bin naming used in the input file
472 // which seems to be lower bound oriented ...
473 std::string
475  int etbin,
476  int etabin,
477  int ipbin,
478  const std::string& iptype)
479 {
480  double eta_bounds[s_fnEtaBins] = { 2.5, 2.6, 2.7, 2.8, 2.9,
481  3.0, 3.1, 3.16, 3.35, 3.6 };
482  int et_bounds[s_fnEtBinsHist] = { 20, 30, 40, 50 };
483  if (!iptype.empty()) {
484  return std::format("{}{}et{:02}eta{:.2f}",
485  iptype, int(fIpBounds[ipbin]),
486  et_bounds[etbin], eta_bounds[etabin]);
487  } else {
488  return std::format("et{}eta{:.2f}",
489  et_bounds[etbin], eta_bounds[etabin]);
490  }
491 }
492 
493 unsigned int
495  const std::string& vars) const
496 {
497  unsigned int mask = 0x0;
498  ATH_MSG_DEBUG("Variables to be used: ");
499  for (unsigned int var = 0; var < s_fnVariables; var++) {
500  if (vars.find(fVariables[var]) != std::string::npos) {
501  ATH_MSG_DEBUG(fVariables[var]);
502  mask = mask | 0x1 << var;
503  }
504  }
505  ATH_MSG_DEBUG("mask: " << mask);
506  return mask;
507 }
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
Root::EGSelectors::SafeTH1
Definition: SafeTH1.h:12
LikeEnumForward::LHCalcVars_t::secondDensity
double secondDensity
Definition: TForwardElectronLikelihoodTool.h:78
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
et
Extra patterns decribing particle interation process.
LikeEnumForward::LHCalcVars_t::secondLambda
double secondLambda
Definition: TForwardElectronLikelihoodTool.h:72
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
get_generator_info.result
result
Definition: get_generator_info.py:21
vtune_athena.format
format
Definition: vtune_athena.py:14
keylayer_zslicemap.pb
pb
Definition: keylayer_zslicemap.py:188
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
TCS::KFMET::nEtaBins
constexpr unsigned nEtaBins
Definition: KalmanMETCorrectionConstants.h:18
Root::TForwardElectronLikelihoodTool::TransformLikelihoodOutput
double TransformLikelihoodOutput(double ps, double pb) const
Apply a transform to zoom into the LH output peaks.
Definition: TForwardElectronLikelihoodTool.cxx:405
integral
double integral(TH1 *h)
Definition: computils.cxx:58
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
LikeEnumForward::LHAcceptVars_t::eta
double eta
Definition: TForwardElectronLikelihoodTool.h:63
LikeEnumForward::LHCalcVars_t::eta
double eta
Definition: TForwardElectronLikelihoodTool.h:70
Root::TForwardElectronLikelihoodTool::loadVarHistograms
int loadVarHistograms(const std::string &vstr, unsigned int varIndex)
Load the variable histograms from the pdf file.
Definition: TForwardElectronLikelihoodTool.cxx:132
LikeEnumForward::LHCalcVars_t::longitudinal
double longitudinal
Definition: TForwardElectronLikelihoodTool.h:74
plotmaker.hist
hist
Definition: plotmaker.py:148
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
LikeEnumForward::LHCalcVars_t::eT
double eT
Definition: TForwardElectronLikelihoodTool.h:71
ConvertOldUJHistosToNewHistos.etaBins
list etaBins
Definition: ConvertOldUJHistosToNewHistos.py:145
asg
Definition: DataHandleTestTool.h:28
bin
Definition: BinsDiffFromStripMedian.h:43
Root::TForwardElectronLikelihoodTool::accept
asg::AcceptData accept() const
Return dummy accept with only info.
Definition: TForwardElectronLikelihoodTool.h:111
LikeEnumForward::LHAcceptVars_t::ip
double ip
Definition: TForwardElectronLikelihoodTool.h:65
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
covarianceTool.prob
prob
Definition: covarianceTool.py:678
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
Root::TForwardElectronLikelihoodTool::calculate
double calculate(LikeEnumForward::LHCalcVars_t &vars_struct) const
Definition: TForwardElectronLikelihoodTool.cxx:304
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
Root::TForwardElectronLikelihoodTool::getBinName
static std::string getBinName(int etbin, int etabin, int ipbin, const std::string &iptype)
Definition: TForwardElectronLikelihoodTool.cxx:474
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
Root::TForwardElectronLikelihoodTool::getIpBin
static unsigned int getIpBin(double ip)
Definition: TForwardElectronLikelihoodTool.cxx:432
xAOD::etaBin
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap etaBin
Definition: L2StandAloneMuon_v1.cxx:148
Root::TForwardElectronLikelihoodTool::fVariables
static const std::string fVariables[s_fnVariables]
Definition: TForwardElectronLikelihoodTool.h:240
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IDTPM::eT
float eT(const U &p)
Accessor utility function for getting the value of Tranverse energy.
Definition: TrackParametersHelper.h:122
Root::TForwardElectronLikelihoodTool::fIpBounds
static const double fIpBounds[IP_FBINS+1]
Definition: TForwardElectronLikelihoodTool.h:233
TForwardElectronLikelihoodTool.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LikeEnumForward::LHCalcVars_t::lateral
double lateral
Definition: TForwardElectronLikelihoodTool.h:73
LikeEnumForward::LHCalcVars_t::ip
double ip
Definition: TForwardElectronLikelihoodTool.h:80
LikeEnumForward::LHCalcVars_t::significance
double significance
Definition: TForwardElectronLikelihoodTool.h:79
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
Root::TForwardElectronLikelihoodTool::getLikelihoodEtaBin
static unsigned int getLikelihoodEtaBin(double eta)
Eta binning for pdfs and discriminant cuts.
Definition: TForwardElectronLikelihoodTool.cxx:443
find_tgc_unfilled_channelids.ip
ip
Definition: find_tgc_unfilled_channelids.py:3
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
Root::TForwardElectronLikelihoodTool::getLikelihoodEtHistBin
static unsigned int getLikelihoodEtHistBin(double eT)
Coarse Et binning. Used for the likelihood and discriminant pdfs.
Definition: TForwardElectronLikelihoodTool.cxx:456
EMFourMomBuilder::calculate
void calculate(xAOD::Electron &electron)
Definition: EMFourMomBuilder.cxx:68
Root::TForwardElectronLikelihoodTool::TForwardElectronLikelihoodTool
TForwardElectronLikelihoodTool(const char *name="TForwardElectronLikelihoodTool")
Standard constructor.
Definition: TForwardElectronLikelihoodTool.cxx:22
LikeEnumForward::LHAcceptVars_t::eT
double eT
Definition: TForwardElectronLikelihoodTool.h:64
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
LikeEnumForward::LHCalcVars_t::fracMax
double fracMax
Definition: TForwardElectronLikelihoodTool.h:75
LikeEnumForward::LHAcceptVars_t
Definition: TForwardElectronLikelihoodTool.h:61
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
Root::TForwardElectronLikelihoodTool::getLikelihoodBitmask
unsigned int getLikelihoodBitmask(const std::string &vars) const
Mask out the variables ,out of all possible ones, that are not employed in the current configuration ...
Definition: TForwardElectronLikelihoodTool.cxx:494
asg::AcceptData::setCutResult
void setCutResult(const std::string &cutName, bool cutResult)
Set the result of a cut, based on the cut name (safer)
Definition: AcceptData.h:134
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LikeEnumForward::LHCalcVars_t::centerLambda
double centerLambda
Definition: TForwardElectronLikelihoodTool.h:76
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
PowhegPythia8EvtGen_jetjet.pdf
pdf
Definition: PowhegPythia8EvtGen_jetjet.py:4
LikeEnumForward::LHCalcVars_t::secondR
double secondR
Definition: TForwardElectronLikelihoodTool.h:77
LikeEnumForward::LHAcceptVars_t::likelihood
double likelihood
Definition: TForwardElectronLikelihoodTool.h:62
LikeEnumForward::LHCalcVars_t
Definition: TForwardElectronLikelihoodTool.h:69
Root::TForwardElectronLikelihoodTool::evaluateLikelihood
double evaluateLikelihood(std::vector< double > &varVector, double et, double eta, double ip=0) const
Definition: TForwardElectronLikelihoodTool.cxx:336
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
asg::AcceptData
Definition: AcceptData.h:30
Root::TForwardElectronLikelihoodTool::initialize
StatusCode initialize()
Initialize this class.
Definition: TForwardElectronLikelihoodTool.cxx:36