ATLAS Offline Software
ElectronDNNCalculator.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Dear emacs, this is -*-c++-*-
6 
7 #ifndef ELECTRONDNNCALCULATOR_H
8 #define ELECTRONDNNCALCULATOR_H
9 
10 // This include is needed at the top before any includes regarding lwtnn
11 // since it includes Eigen in a specific way which causes compilation errors
12 // if not included before lwtnn
14 
17 #include "TTree.h"
18 #include <vector>
19 #include <string>
20 #include "lwtnn/generic/FastGraph.hh"
21 
22 
23 namespace MVAEnum{
24  struct MVACalcVars{
25  double eta;
26  double et;
27  double f3;
28  double Rhad;
29  double Rhad1;
30  double Reta;
31  double weta2;
32  double f1;
33  double Eratio;
34  double deltaEta1;
35  double d0;
36  double qd0;
38  double Rphi;
39  double dPOverP;
41  double trans_TRTPID;
42  double wtots1;
43  double EoverP;
47  };
48 
49  struct QTVars{
50  std::vector<double> eta;
51  std::vector<double> et;
52  std::vector<double> f3;
53  std::vector<double> Rhad;
54  std::vector<double> Rhad1;
55  std::vector<double> Reta;
56  std::vector<double> weta2;
57  std::vector<double> f1;
58  std::vector<double> Eratio;
59  std::vector<double> deltaEta1;
60  std::vector<double> d0;
61  std::vector<double> qd0;
62  std::vector<double> d0significance;
63  std::vector<double> Rphi;
64  std::vector<double> dPOverP;
65  std::vector<double> deltaPhiRescaled2;
66  std::vector<double> trans_TRTPID;
67  std::vector<double> wtots1;
68  std::vector<double> EoverP;
69  std::vector<double> nPixHitsPlusDeadSensors;
70  std::vector<double> nSCTHitsPlusDeadSensors;
71  std::vector<double> SCTWeightedCharge;
72  };
73 
74 }
75 
76 
78 {
79 public:
82  const std::string& modelFileName,
83  const std::string& quantileFileName,
84  const std::vector<std::string>& variablesName,
85  const bool multiClass,
86  const bool newVars);
87 
90 
92  Eigen::Matrix<float, -1, 1> calculate( const MVAEnum::MVACalcVars& varsStruct ) const;
93 
94 private:
96  double transformInput( const std::vector<double>& quantiles, double value ) const;
98  int readQuantileTransformer( TTree* tree, const std::vector<std::string>& variables );
99 
101  std::unique_ptr<lwt::generic::FastGraph<float>> m_graph = 0;
102 
106  std::vector<double> m_references;
110  bool m_newVars;
111 
112 };
113 
114 #endif
AsgElectronSelectorTool
Electron selector tool to select signal electrons using the ElectronDNNCalculator retrieve a score ba...
Definition: AsgElectronSelectorTool.h:27
MVAEnum::QTVars::nSCTHitsPlusDeadSensors
std::vector< double > nSCTHitsPlusDeadSensors
Definition: ElectronDNNCalculator.h:70
ElectronDNNCalculator::~ElectronDNNCalculator
~ElectronDNNCalculator()
Standard destructor.
Definition: ElectronDNNCalculator.h:89
MVAEnum::QTVars::trans_TRTPID
std::vector< double > trans_TRTPID
Definition: ElectronDNNCalculator.h:66
MVAEnum::QTVars::weta2
std::vector< double > weta2
Definition: ElectronDNNCalculator.h:56
MVAEnum::MVACalcVars::nPixHitsPlusDeadSensors
double nPixHitsPlusDeadSensors
Definition: ElectronDNNCalculator.h:44
ElectronDNNCalculator::m_graph
std::unique_ptr< lwt::generic::FastGraph< float > > m_graph
DNN interface via lwtnn.
Definition: ElectronDNNCalculator.h:101
MVAEnum::QTVars::Rhad1
std::vector< double > Rhad1
Definition: ElectronDNNCalculator.h:54
MVAEnum::MVACalcVars::f3
double f3
Definition: ElectronDNNCalculator.h:27
ElectronDNNCalculator::transformInput
double transformInput(const std::vector< double > &quantiles, double value) const
transform the input variables according to a given QuantileTransformer.
Definition: ElectronDNNCalculator.cxx:166
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:13
asg::AsgMessagingForward
base class to forward messages to another class
Definition: AsgMessagingForward.h:29
MVAEnum::QTVars::et
std::vector< double > et
Definition: ElectronDNNCalculator.h:51
ElectronDNNCalculator::m_references
std::vector< double > m_references
Reference values for the QuantileTransformer. Basically just equidistant bins between 0 and 1.
Definition: ElectronDNNCalculator.h:106
MVAEnum::MVACalcVars::et
double et
Definition: ElectronDNNCalculator.h:26
MVAEnum::MVACalcVars::Reta
double Reta
Definition: ElectronDNNCalculator.h:30
MVAEnum::MVACalcVars::weta2
double weta2
Definition: ElectronDNNCalculator.h:31
ElectronDNNCalculator::m_multiClass
bool m_multiClass
Whether the used model is a multiclass model or not.
Definition: ElectronDNNCalculator.h:108
MVAEnum
Definition: ElectronDNNCalculator.h:23
MVAEnum::MVACalcVars::d0significance
double d0significance
Definition: ElectronDNNCalculator.h:37
ElectronDNNCalculator::m_newVars
bool m_newVars
Whether the model uses old or new set of variables.
Definition: ElectronDNNCalculator.h:110
tree
TChain * tree
Definition: tile_monitor.h:30
MVAEnum::QTVars::deltaEta1
std::vector< double > deltaEta1
Definition: ElectronDNNCalculator.h:59
MVAEnum::QTVars::d0
std::vector< double > d0
Definition: ElectronDNNCalculator.h:60
MVAEnum::MVACalcVars::d0
double d0
Definition: ElectronDNNCalculator.h:35
AsgMessagingForward.h
MVAEnum::QTVars::qd0
std::vector< double > qd0
Definition: ElectronDNNCalculator.h:61
athena.value
value
Definition: athena.py:122
MVAEnum::MVACalcVars::dPOverP
double dPOverP
Definition: ElectronDNNCalculator.h:39
MVAEnum::QTVars::EoverP
std::vector< double > EoverP
Definition: ElectronDNNCalculator.h:68
MVAEnum::QTVars::SCTWeightedCharge
std::vector< double > SCTWeightedCharge
Definition: ElectronDNNCalculator.h:71
MVAEnum::QTVars::Rhad
std::vector< double > Rhad
Definition: ElectronDNNCalculator.h:53
MVAEnum::MVACalcVars::Rphi
double Rphi
Definition: ElectronDNNCalculator.h:38
MVAEnum::QTVars::wtots1
std::vector< double > wtots1
Definition: ElectronDNNCalculator.h:67
AsgElectronSelectorTool.h
MVAEnum::QTVars::Reta
std::vector< double > Reta
Definition: ElectronDNNCalculator.h:55
MVAEnum::QTVars::f1
std::vector< double > f1
Definition: ElectronDNNCalculator.h:57
MVAEnum::QTVars::eta
std::vector< double > eta
Definition: ElectronDNNCalculator.h:50
MVAEnum::MVACalcVars
Definition: ElectronDNNCalculator.h:24
MVAEnum::MVACalcVars::eta
double eta
Definition: ElectronDNNCalculator.h:25
MVAEnum::QTVars::dPOverP
std::vector< double > dPOverP
Definition: ElectronDNNCalculator.h:64
RTTAlgmain.Matrix
list Matrix
Definition: RTTAlgmain.py:19
MVAEnum::QTVars::Rphi
std::vector< double > Rphi
Definition: ElectronDNNCalculator.h:63
MVAEnum::MVACalcVars::qd0
double qd0
Definition: ElectronDNNCalculator.h:36
ElectronDNNCalculator::ElectronDNNCalculator
ElectronDNNCalculator(AsgElectronSelectorTool *owner, const std::string &modelFileName, const std::string &quantileFileName, const std::vector< std::string > &variablesName, const bool multiClass, const bool newVars)
Constructor of the class.
Definition: ElectronDNNCalculator.cxx:26
MVAEnum::MVACalcVars::Eratio
double Eratio
Definition: ElectronDNNCalculator.h:33
MVAEnum::QTVars
Definition: ElectronDNNCalculator.h:49
MVAEnum::MVACalcVars::wtots1
double wtots1
Definition: ElectronDNNCalculator.h:42
MVAEnum::MVACalcVars::deltaEta1
double deltaEta1
Definition: ElectronDNNCalculator.h:34
MVAEnum::MVACalcVars::f1
double f1
Definition: ElectronDNNCalculator.h:32
EventPrimitives.h
MVAEnum::MVACalcVars::Rhad1
double Rhad1
Definition: ElectronDNNCalculator.h:29
MVAEnum::MVACalcVars::Rhad
double Rhad
Definition: ElectronDNNCalculator.h:28
MVAEnum::QTVars::Eratio
std::vector< double > Eratio
Definition: ElectronDNNCalculator.h:58
MVAEnum::QTVars::deltaPhiRescaled2
std::vector< double > deltaPhiRescaled2
Definition: ElectronDNNCalculator.h:65
MVAEnum::MVACalcVars::trans_TRTPID
double trans_TRTPID
Definition: ElectronDNNCalculator.h:41
ElectronDNNCalculator
Used by AsgElectronSelectorTool to calculate the score of a python trained DNN using lwtnn as interfa...
Definition: ElectronDNNCalculator.h:78
MVAEnum::QTVars::f3
std::vector< double > f3
Definition: ElectronDNNCalculator.h:52
MVAEnum::MVACalcVars::EoverP
double EoverP
Definition: ElectronDNNCalculator.h:43
MVAEnum::MVACalcVars::nSCTHitsPlusDeadSensors
double nSCTHitsPlusDeadSensors
Definition: ElectronDNNCalculator.h:45
ElectronDNNCalculator::m_quantiles
MVAEnum::QTVars m_quantiles
Quantile values for each variable that needs to be transformed with the QuantileTransformer.
Definition: ElectronDNNCalculator.h:104
MVAEnum::MVACalcVars::deltaPhiRescaled2
double deltaPhiRescaled2
Definition: ElectronDNNCalculator.h:40
MVAEnum::MVACalcVars::SCTWeightedCharge
double SCTWeightedCharge
Definition: ElectronDNNCalculator.h:46
MVAEnum::QTVars::d0significance
std::vector< double > d0significance
Definition: ElectronDNNCalculator.h:62
MVAEnum::QTVars::nPixHitsPlusDeadSensors
std::vector< double > nPixHitsPlusDeadSensors
Definition: ElectronDNNCalculator.h:69
ElectronDNNCalculator::calculate
Eigen::Matrix< float, -1, 1 > calculate(const MVAEnum::MVACalcVars &varsStruct) const
Get the prediction of the DNN model.
Definition: ElectronDNNCalculator.cxx:102
ElectronDNNCalculator::readQuantileTransformer
int readQuantileTransformer(TTree *tree, const std::vector< std::string > &variables)
read the bins and values of the QuantileTransformer to transform the input variables.
Definition: ElectronDNNCalculator.cxx:198
readCCLHist.float
float
Definition: readCCLHist.py:83