ATLAS Offline Software
TrigEgammaPrecisionElectronHypoTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include <algorithm>
6 #include <cmath>
12 #include "xAODEgamma/Electron.h"
14 
15 namespace TCU = TrigCompositeUtils;
16 
18  const std::string& name,
19  const IInterface* parent )
20  : base_class( type, name, parent ),
21  m_decisionId( HLT::Identifier::fromToolName( name ) ) {
22 }
23 
24 
26 {
27  ATH_MSG_DEBUG( "Initialization completed successfully" );
28  ATH_MSG_DEBUG( "EtaBins = " << m_etabin );
29  ATH_MSG_DEBUG( "ETthr = " << m_eTthr );
30  ATH_MSG_DEBUG( "dPHICLUSTERthr = " << m_dphicluster );
31  ATH_MSG_DEBUG( "dETACLUSTERthr = " << m_detacluster );
32  ATH_MSG_DEBUG( "d0Cut = " << m_d0 );
33  ATH_MSG_DEBUG( "DoNoPid = " << m_doNoPid );
34 
35  if ( m_etabin.empty() ) {
36  ATH_MSG_ERROR( " There are no cuts set (EtaBins property is an empty list)" );
37  return StatusCode::FAILURE;
38  }
39 
40  unsigned int nEtaBin = m_etabin.size();
41  ATH_CHECK( m_eTthr.size() == nEtaBin-1 );
42 
43  ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_decisionId );
44 
45  if ( not m_monTool.name().empty() )
46  CHECK( m_monTool.retrieve() );
47 
48  return StatusCode::SUCCESS;
49 }
50 
51 
53 
54  bool pass = true;
55 
56  auto mon_ET = Monitored::Scalar( "Et_em" , -1.0 );
57  auto mon_dEta = Monitored::Scalar( "dEta", -1. );
58  auto mon_dPhi = Monitored::Scalar( "dPhi", -1. );
59  auto mon_etaBin = Monitored::Scalar( "EtaBin", -1. );
60  auto mon_Eta = Monitored::Scalar( "Eta", -99. );
61  auto mon_Phi = Monitored::Scalar( "Phi", -99. );
62  auto PassedCuts = Monitored::Scalar<int>( "CutCounter", -1 );
63  auto mon_lhval = Monitored::Scalar("LikelihoodRatio", -99.);
64  auto mon_mu = Monitored::Scalar("mu", -1.);
65  auto mon_ptvarcone20 = Monitored::Scalar("ptvarcone20", -99.);
66  auto mon_relptvarcone20 = Monitored::Scalar("relptvarcone20", -99.);
67  auto mon_ptcone20 = Monitored::Scalar("ptcone20", -99.);
68  auto mon_relptcone20 = Monitored::Scalar("relptcone20", -99.);
69  auto mon_trk_d0 = Monitored::Scalar("trk_d0", -1.);
70  auto monitorIt = Monitored::Group( m_monTool, mon_ET, mon_dEta, mon_dPhi,
71  mon_etaBin, mon_Eta,
72  mon_Phi,PassedCuts,mon_lhval,mon_mu,
73  mon_ptvarcone20, mon_relptvarcone20,
74  mon_ptcone20, mon_relptcone20, mon_trk_d0);
75 
76  float ET(0), dEta(0), dPhi(0), eta(0), phi(0), lhval(0), mu(0), trk_d0(0);
77 
78  // when leaving scope it will ship data to monTool
79  PassedCuts = PassedCuts + 1; //got called (data in place)
80 
81  auto roiDescriptor = input.roi;
82 
83 
84  if ( std::abs( roiDescriptor->eta() ) > 2.6 ) {
85  ATH_MSG_DEBUG( "REJECT The electron had eta coordinates beyond the EM fiducial volume : " << roiDescriptor->eta() << "; stop the chain now" );
86  return false;
87  }
88 
89  ATH_MSG_DEBUG( "; RoI ID = " << roiDescriptor->roiId()
90  << ": Eta = " << roiDescriptor->eta()
91  << ", Phi = " << roiDescriptor->phi() );
92 
93  // fill local variables for RoI reference position
94  double etaRef = roiDescriptor->eta();
95  double phiRef = roiDescriptor->phi();
96  ATH_MSG_DEBUG("etaRef: "<<etaRef);
97  // correct phi the to right range ( probably not needed anymore )
98  if ( std::abs( phiRef ) > M_PI ) phiRef -= 2*M_PI; // correct phi if outside range
99 
100  ATH_MSG_DEBUG("AcceptAll: "<<m_acceptAll);
101 
102  if(!m_acceptAll){
103 
104  pass = false;
105  auto pClus = input.electron->caloCluster();
106 
107  float absEta = std::abs( pClus->eta() );
108 
109  ATH_MSG_DEBUG("absEta: "<<absEta);
110 
111  const int cutIndex = findCutIndex( absEta );
112  ATH_MSG_DEBUG("cutIndex: "<<cutIndex);
113 
114 
115  dEta = pClus->eta() - etaRef;
116  // Deal with angle diferences greater than Pi
117  dPhi = std::abs( pClus->phi() - phiRef );
118  dPhi = ( dPhi < M_PI ? dPhi : 2*M_PI - dPhi ); // TB why only <
119  ET = pClus->et();
120  eta = pClus->eta();
121  phi = pClus->phi();
122 
123  trk_d0 = std::abs(input.electron->trackParticle()->d0());
124 
125  // apply cuts: DeltaEta( clus-ROI )
126  ATH_MSG_DEBUG( "Electron : eta=" << pClus->eta()
127  << " roi eta=" << etaRef << " DeltaEta=" << dEta
128  << " cut: <" << m_detacluster );
129 
130 
131  if ( std::abs( pClus->eta() - etaRef ) > m_detacluster ) {
132  ATH_MSG_DEBUG("REJECT Electron dEta cut failed");
133  return pass;
134  }
135  mon_Eta = eta;
136  mon_dEta = dEta;
137  PassedCuts = PassedCuts + 1; //Deta
138 
139  // DeltaPhi( clus-ROI )
140  ATH_MSG_DEBUG( ": phi=" << pClus->phi()
141  << " roi phi="<< phiRef << " DeltaPhi="<< dPhi
142  << " cut: <" << m_dphicluster );
143 
144  if( dPhi > m_dphicluster ) {
145  ATH_MSG_DEBUG("REJECT Clsuter dPhi cut failed");
146  return pass;
147  }
148  mon_Phi = phi;
149  mon_dPhi = dPhi;
150  PassedCuts = PassedCuts + 1; //DPhi
151 
152  // eta range
153  if ( cutIndex == -1 ) { // VD
154  ATH_MSG_DEBUG( "Electron : " << absEta << " outside eta range " << m_etabin[m_etabin.size()-1] );
155  return pass;
156  } else {
157  ATH_MSG_DEBUG( "eta bin used for cuts " << cutIndex );
158  }
159  mon_etaBin = m_etabin[cutIndex];
160  PassedCuts = PassedCuts + 1; // passed eta cut
161 
162  // ET_em
163  ATH_MSG_DEBUG( "Electron: ET_em=" << ET << " cut: >" << m_eTthr[cutIndex] );
164  if ( ET < m_eTthr[cutIndex] ) {
165  ATH_MSG_DEBUG("REJECT et cut failed");
166  return pass;
167  }
168  mon_ET = ET;
169  PassedCuts = PassedCuts + 1; // ET_em
170 
171  if(m_doNoPid){
172  pass = true;
173  return pass;
174  }
175  // d0 for LRT
176  if (m_d0 and m_d0>0.)
177  {
178  ATH_MSG_DEBUG( "Electron: trk_d0=" << trk_d0 << " cut: >" << m_d0 );
179  if ( trk_d0 < m_d0 ) {
180  ATH_MSG_DEBUG("REJECT d0 cut failed");
181  return pass;
182  }
183  PassedCuts = PassedCuts + 1; // d0
184  }
185  mon_trk_d0 = trk_d0;
186 
187  // This is the last step. So pass is going to be the result of LH
188  // get average luminosity information to calculate LH
189  if(input.valueDecorator.count("avgmu")){
190  mu = input.valueDecorator.at("avgmu");
191  }
192  mon_mu = mu;
193 
194  float Rhad1(0), Rhad(0), Reta(0), Rphi(0), e277(0), weta2c(0), //emax2(0),
195  Eratio(0), DeltaE(0), f1(0), weta1c(0), wtot(0), fracm(0);
196 
197  float ptvarcone20(999), ptvarcone30(999), ptcone20(999), ptcone30(999), ptcone40(999), etcone20(999), etcone30(999),
198  etcone40(999), topoetcone20(999), topoetcone30(999), topoetcone40(999), relptcone20(999), relptvarcone20(999);
199 
200  bool ispt20 = input.electron->isolationValue(ptvarcone20, xAOD::Iso::ptvarcone20);
201  if (!ispt20) {
202  ATH_MSG_WARNING("ptvarcone20 not available. Will not cut on isolation");
203  }
204 
205  // variables based on HCAL
206  // transverse energy in 1st scintillator of hadronic calorimeter/ET
207  input.electron->showerShapeValue(Rhad1, xAOD::EgammaParameters::Rhad1);
208  // transverse energy in hadronic calorimeter/ET
209  input.electron->showerShapeValue(Rhad, xAOD::EgammaParameters::Rhad);
210 
211  // variables based on S2 of EM CAL
212  // E(7*7) in 2nd sampling
213  input.electron->showerShapeValue(e277, xAOD::EgammaParameters::e277);
214  // E(3*7)/E(7*7) in 2nd sampling
215  input.electron->showerShapeValue(Reta, xAOD::EgammaParameters::Reta);
216  // E(3*3)/E(3*7) in 2nd sampling
217  input.electron->showerShapeValue(Rphi, xAOD::EgammaParameters::Rphi);
218  // shower width in 2nd sampling
219  input.electron->showerShapeValue(weta2c, xAOD::EgammaParameters::weta2);
220 
221  // variables based on S1 of EM CAL
222  // fraction of energy reconstructed in the 1st sampling
223  input.electron->showerShapeValue(f1, xAOD::EgammaParameters::f1);
224  // shower width in 3 strips in 1st sampling
225  input.electron->showerShapeValue(weta1c, xAOD::EgammaParameters::weta1);
226  // E of 2nd max between max and min in strips [NOT USED]
227  // eg->showerShapeValue(emax2, xAOD::EgammaParameters::e2tsts1);
228  // (E of 1st max in strips-E of 2nd max)/(E of 1st max+E of 2nd max)
229  input.electron->showerShapeValue(Eratio, xAOD::EgammaParameters::Eratio);
230  // E(2nd max)-E(min) in strips
231  input.electron->showerShapeValue(DeltaE, xAOD::EgammaParameters::DeltaE);
232  // total shower width in 1st sampling
233  input.electron->showerShapeValue(wtot, xAOD::EgammaParameters::wtots1);
234  // E(+/-3)-E(+/-1)/E(+/-1)
235  input.electron->showerShapeValue(fracm, xAOD::EgammaParameters::fracs1);
236 
237  input.electron->isolationValue(ptcone20, xAOD::Iso::ptcone20);
238 
239  input.electron->isolationValue(ptcone30, xAOD::Iso::ptcone30);
240 
241  input.electron->isolationValue(ptcone40, xAOD::Iso::ptcone40);
242 
243  input.electron->isolationValue(etcone20, xAOD::Iso::etcone20);
244 
245  input.electron->isolationValue(etcone30, xAOD::Iso::etcone30);
246 
247  input.electron->isolationValue(etcone40, xAOD::Iso::etcone40);
248 
249  input.electron->isolationValue(topoetcone20, xAOD::Iso::topoetcone20);
250 
251  input.electron->isolationValue(topoetcone30, xAOD::Iso::topoetcone30);
252 
253  input.electron->isolationValue(topoetcone40, xAOD::Iso::topoetcone40);
254 
255  ATH_MSG_DEBUG(" electron Cluster Et "<<ET);
256  ATH_MSG_DEBUG( " Rhad1 " << Rhad1 ) ;
257  ATH_MSG_DEBUG( " Rhad " << Rhad ) ;
258  ATH_MSG_DEBUG( " e277 " << e277 ) ;
259  ATH_MSG_DEBUG( " Reta " << Reta ) ;
260  ATH_MSG_DEBUG( " Rphi " << Rphi ) ;
261  ATH_MSG_DEBUG( " weta2c " << weta2c ) ;
262  ATH_MSG_DEBUG( " f1 " << f1 ) ;
263  ATH_MSG_DEBUG( " weta1c " << weta1c ) ;
264  ATH_MSG_DEBUG( " Eratio " << Eratio ) ;
265  ATH_MSG_DEBUG( " DeltaE " << DeltaE ) ;
266  ATH_MSG_DEBUG( " wtot " << wtot ) ;
267  ATH_MSG_DEBUG( " fracm " << fracm ) ;
268  ATH_MSG_DEBUG( " trackPT "<<input.electron->trackParticle()->pt());
269  ATH_MSG_DEBUG( " d0 "<<input.electron->trackParticle()->d0());
270  ATH_MSG_DEBUG( " z0 "<<input.electron->trackParticle()->z0());
271  ATH_MSG_DEBUG( " ptvarcone20 " << ptvarcone20 ) ;
272  ATH_MSG_DEBUG( " ptvarcone30 " << ptvarcone30 ) ;
273  ATH_MSG_DEBUG( " ptcone20 " << ptcone20 ) ;
274  ATH_MSG_DEBUG( " ptcone30 " << ptcone30 ) ;
275  ATH_MSG_DEBUG( " ptcone40 " << ptcone40 ) ;
276  ATH_MSG_DEBUG( " etcone20 " << etcone20 ) ;
277  ATH_MSG_DEBUG( " etcone30 " << etcone30 ) ;
278  ATH_MSG_DEBUG( " etcone40 " << etcone40 ) ;
279  ATH_MSG_DEBUG( " topoetcone20 " << topoetcone20 ) ;
280  ATH_MSG_DEBUG( " topoetcone30 " << topoetcone30 ) ;
281  ATH_MSG_DEBUG( " topoetcone40 " << topoetcone40 ) ;
282  // Monitor showershapes
283 
284  relptcone20 = ptcone20/input.electron->pt();
285  relptvarcone20 = ptvarcone20/input.electron->pt();
286 
287  mon_ptvarcone20 = ptvarcone20;
288  mon_relptvarcone20 = relptvarcone20;
289  mon_ptcone20 = ptcone20;
290  mon_relptcone20 = relptcone20;
291 
292  ATH_MSG_DEBUG("relptvarcone20 = " << relptvarcone20 );
293  ATH_MSG_DEBUG("relptcone20 = " << relptcone20 );
294  ATH_MSG_DEBUG("m_RelPtConeCut = " << m_RelPtConeCut );
295 
296  // Only for LH
297  if( input.valueDecorator.count(m_pidName+"LHValue")){
298  lhval = input.valueDecorator.at(m_pidName+"LHValue");
299  }
300  mon_lhval = lhval;
301  // Should works for DNN and LH
302  if( input.pidDecorator.count(m_pidName) )
303  {
304  pass = input.pidDecorator.at(m_pidName);
305  }
306  // Evaluating lh *after* retrieving variables for monitoing and debuging purposes
307  ATH_MSG_DEBUG("AthenaLHSelectorTool: TAccept = " << pass);
308  if ( !pass ){
309  ATH_MSG_DEBUG("REJECT Likelihood failed");
310  return pass;
311  } else {
312  ATH_MSG_DEBUG("ACCEPT Likelihood passed");
313  }
314 
315  // Check if need to apply isolation
316  // First check logic. if cut is very negative, then no isolation cut is defined
317  // if m_RelPtConeCut <-100 then hypo is configured not to apply isolation
318  if (m_RelPtConeCut < -100){
319  ATH_MSG_DEBUG(" not applying isolation. Returning NOW");
320  ATH_MSG_DEBUG("TAccept = " << pass);
321  return pass;
322  }
323  // Then, It will pass if relptcone20 is less than cut:
324  pass = (relptvarcone20 < m_RelPtConeCut);
325 
326  } // end of if(!m_acceptAll)
327  ATH_MSG_DEBUG( "pass = " << pass );
328  return pass;
329 }
330 
331 
332 
334  const float absEta = std::abs(eta);
335  auto binIterator = std::adjacent_find( m_etabin.begin(), m_etabin.end(), [=](float left, float right){ return left < absEta and absEta < right; } );
336  if ( binIterator == m_etabin.end() ) {
337  return -1;
338  }
339  return binIterator - m_etabin.begin();
340 }
341 
342 
343 StatusCode TrigEgammaPrecisionElectronHypoTool::decide( std::vector<ElectronInfo>& input) const {
344  for ( auto& i: input ) {
345  if ( TCU::passed ( m_decisionId.numeric(), i.previousDecisionIDs ) ) {
346  if ( decide( i ) ) {
347  TCU::addDecisionID( m_decisionId, i.decision );
348  }
349  }
350  }
351  return StatusCode::SUCCESS;
352 }
353 
xAOD::Iso::ptvarcone30
@ ptvarcone30
Definition: IsolationType.h:56
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
xAOD::Iso::topoetcone20
@ topoetcone20
Topo-cluster ET-sum.
Definition: IsolationType.h:48
xAOD::Iso::ptvarcone20
@ ptvarcone20
Mini-Isolation http://arxiv.org/abs/1007.2221.
Definition: IsolationType.h:55
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
TrigCompositeUtils::passed
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Definition: TrigCompositeUtilsRoot.cxx:117
xAOD::EgammaParameters::Reta
@ Reta
e237/e277
Definition: EgammaEnums.h:154
HLT::Identifier::numeric
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:47
TrigEgammaPrecisionElectronHypoTool::m_d0
Gaudi::Property< float > m_d0
Definition: TrigEgammaPrecisionElectronHypoTool.h:40
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
TrigCompositeUtils::addDecisionID
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
Definition: TrigCompositeUtilsRoot.cxx:61
xAOD::Iso::ptcone30
@ ptcone30
Definition: IsolationType.h:41
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::Iso::ptcone20
@ ptcone20
Track isolation.
Definition: IsolationType.h:40
xAOD::Iso::etcone40
@ etcone40
Definition: IsolationType.h:34
xAOD::Iso::topoetcone30
@ topoetcone30
Definition: IsolationType.h:49
TrigEgammaPrecisionElectronHypoTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigEgammaPrecisionElectronHypoTool.h:44
xAOD::Iso::etcone30
@ etcone30
Definition: IsolationType.h:33
xAOD::EgammaParameters::Rphi
@ Rphi
e233/e237
Definition: EgammaEnums.h:156
TrigEgammaPrecisionElectronHypoTool::initialize
virtual StatusCode initialize() override
Definition: TrigEgammaPrecisionElectronHypoTool.cxx:25
xAOD::EgammaParameters::wtots1
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
Definition: EgammaEnums.h:140
TrigCompositeUtils.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TrigEgammaPrecisionElectronHypoTool::m_dphicluster
Gaudi::Property< float > m_dphicluster
Definition: TrigEgammaPrecisionElectronHypoTool.h:38
xAOD::EgammaParameters::f1
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition: EgammaEnums.h:52
HLT
It used to be useful piece of code for replacing actual SG with other store of similar functionality ...
Definition: HLTResultReader.h:26
lumiFormat.i
int i
Definition: lumiFormat.py:85
xAOD::Iso::etcone20
@ etcone20
Calorimeter isolation.
Definition: IsolationType.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:538
TrigEgammaPrecisionElectronHypoTool::m_RelPtConeCut
Gaudi::Property< float > m_RelPtConeCut
Definition: TrigEgammaPrecisionElectronHypoTool.h:39
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
xAOD::EgammaParameters::Rhad1
@ Rhad1
ethad1/et
Definition: EgammaEnums.h:162
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
TrigEgammaPrecisionElectronHypoTool::m_decisionId
HLT::Identifier m_decisionId
Definition: TrigEgammaPrecisionElectronHypoTool.h:32
TrigEgammaPrecisionElectronHypoTool::m_pidName
Gaudi::Property< std::string > m_pidName
Definition: TrigEgammaPrecisionElectronHypoTool.h:41
xAOD::Iso::ptcone40
@ ptcone40
Definition: IsolationType.h:42
Combinators.h
TrigEgammaPrecisionElectronHypoTool::findCutIndex
int findCutIndex(float eta) const
Definition: TrigEgammaPrecisionElectronHypoTool.cxx:333
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
HLTIdentifier.h
TrigEgammaPrecisionElectronHypoTool::m_acceptAll
Gaudi::Property< bool > m_acceptAll
Definition: TrigEgammaPrecisionElectronHypoTool.h:42
TauGNNUtils::Variables::absEta
bool absEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:234
TrigCompositeUtils
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:19
xAOD::EgammaParameters::e277
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition: EgammaEnums.h:80
ITrigEgammaPrecisionElectronHypoTool::ElectronInfo
Definition: ITrigEgammaPrecisionElectronHypoTool.h:25
TrigRoiDescriptor.h
Electron.h
xAOD::EgammaParameters::weta1
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
Definition: EgammaEnums.h:97
xAOD::EgammaParameters::Eratio
@ Eratio
(emaxs1-e2tsts1)/(emaxs1+e2tsts1)
Definition: EgammaEnums.h:158
TrigEgammaPrecisionElectronHypoTool::m_doNoPid
Gaudi::Property< bool > m_doNoPid
Definition: TrigEgammaPrecisionElectronHypoTool.h:43
TrigEgammaPrecisionElectronHypoTool::m_detacluster
Gaudi::Property< float > m_detacluster
Definition: TrigEgammaPrecisionElectronHypoTool.h:37
xAOD::Iso::topoetcone40
@ topoetcone40
Definition: IsolationType.h:50
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
TrigEgammaPrecisionElectronHypoTool::m_etabin
Gaudi::Property< std::vector< float > > m_etabin
selection variable for PRECISION electron selection:eta bins
Definition: TrigEgammaPrecisionElectronHypoTool.h:35
TrigEgammaPrecisionElectronHypoTool::m_eTthr
Gaudi::Property< std::vector< float > > m_eTthr
Definition: TrigEgammaPrecisionElectronHypoTool.h:36
TrigEgammaPrecisionElectronHypoTool::TrigEgammaPrecisionElectronHypoTool
TrigEgammaPrecisionElectronHypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TrigEgammaPrecisionElectronHypoTool.cxx:17
xAOD::EgammaParameters::Rhad
@ Rhad
ethad/et
Definition: EgammaEnums.h:160
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:527
xAOD::EgammaParameters::DeltaE
@ DeltaE
e2tsts1-emins1
Definition: EgammaEnums.h:164
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
TrigEgammaPrecisionElectronHypoTool.h
TrigEgammaPrecisionElectronHypoTool::decide
virtual StatusCode decide(std::vector< ITrigEgammaPrecisionElectronHypoTool::ElectronInfo > &input) const override
xAOD::EgammaParameters::fracs1
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
Definition: EgammaEnums.h:111
read_hist_ntuple.f1
f1
Definition: read_hist_ntuple.py:4
xAOD::EgammaParameters::weta2
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
Definition: EgammaEnums.h:103
Identifier
Definition: IdentifierFieldParser.cxx:14