ATLAS Offline Software
TrigEgammaFastCaloHypoTool.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>
9 #include "GaudiKernel/SystemOfUnits.h"
11 
12 
13 using namespace TrigCompositeUtils;
14 
15 
17  const std::string& name,
18  const IInterface* parent )
19  : base_class( type, name, parent ),
20  m_decisionId( HLT::Identifier::fromToolName( name ) )
21 { }
22 
23 
25 
26 
27 
29 
30 
31  ATH_MSG_DEBUG( "Name: " << name() << " UseRinger: " << m_useRinger);
32 
33 
34  ATH_MSG_DEBUG( "AcceptAll = " << ( m_acceptAll==true ? "True" : "False" ) );
35  ATH_MSG_DEBUG( "EtaBins = " << m_etabin );
36  ATH_MSG_DEBUG( "ETthr = " << m_eTthr << "( lo )/" << m_eT2thr << "( hi )" );
37  ATH_MSG_DEBUG( "HADETthr = " << m_hadeTthr << "( lo )/" << m_hadeT2thr << "( hi )" );
38  ATH_MSG_DEBUG( "CARCOREthr = " << m_carcorethr );
39  ATH_MSG_DEBUG( "CAERATIOthr = " << m_caeratiothr );
40  ATH_MSG_DEBUG( "dPHICLUSTERthr = " << m_dphicluster );
41  ATH_MSG_DEBUG( "dETACLUSTERthr = " << m_detacluster );
42  ATH_MSG_DEBUG( "WETA2thr = " << m_WETA2thr );
43  ATH_MSG_DEBUG( "WSTOTthr = " << m_WSTOTthr );
44  ATH_MSG_DEBUG( "F3thr = " << m_F3thr );
45 
46  if ( m_etabin.size() == 0 ) {
47  ATH_MSG_ERROR( " There are no cuts set (EtaBins property is an empty list)" );
48  return StatusCode::FAILURE;
49  }
50 
51  unsigned int nEtaBin = m_etabin.size();
52  #define CHECK_SIZE( __n) if ( m_##__n.size() != (nEtaBin - 1) ) \
53  { ATH_MSG_DEBUG(" __n size is " << m_##__n.size() << " but needs to be " << (nEtaBin - 1) ); return StatusCode::FAILURE; }
54 
55  CHECK_SIZE( eTthr );
56  CHECK_SIZE( eT2thr );
57  CHECK_SIZE( hadeTthr );
58  CHECK_SIZE( hadeT2thr );
59  CHECK_SIZE( carcorethr );
60  CHECK_SIZE( caeratiothr );
61  CHECK_SIZE( WETA2thr );
62  CHECK_SIZE( WSTOTthr );
63  CHECK_SIZE( F3thr );
64  #undef CHECK_SIZE
65 
66  ATH_MSG_DEBUG( "Tool configured for chain/id: " << m_decisionId );
67 
68  if ( not m_monTool.name().empty() )
69  CHECK( m_monTool.retrieve() );
70 
71 
72 
73  ATH_MSG_DEBUG( "Initialization completed successfully" );
74 
75  return StatusCode::SUCCESS;
76 }
77 
78 
79 StatusCode TrigEgammaFastCaloHypoTool::decide( std::vector<FastClusterInfo>& input ) const
80 {
81  for ( auto& i: input ) {
82  if ( passed ( m_decisionId.numeric(), i.previousDecisionIDs ) ) {
83  if ( decide( i ) ) {
84  addDecisionID( m_decisionId, i.decision );
85  }
86  }
87  }
88  return StatusCode::SUCCESS;
89 }
90 
91 
93 {
95 }
96 
97 
98 
100 {
101 
102  bool pass = false;
103 
104  auto mon_dEta = Monitored::Scalar( "dEta", -1.0 );
105  auto mon_dPhi = Monitored::Scalar( "dPhi", -1.0 );
106  auto mon_eT_T2Calo = Monitored::Scalar( "Et_em", -1.0 );
107  auto mon_hadET_T2Calo = Monitored::Scalar( "Et_had", -1.0 );
108  auto mon_rCore = Monitored::Scalar( "RCore", -1.0 );
109  auto mon_energyRatio = Monitored::Scalar( "Eratio", -1.0 );
110  auto mon_etaBin = Monitored::Scalar( "EtaBin", -1.0 );
111  auto mon_Eta = Monitored::Scalar( "Eta", -99. );
112  auto mon_Phi = Monitored::Scalar( "Phi", -99. );
113  auto mon_F1 = Monitored::Scalar( "F1", -1.0 );
114  auto mon_Weta2 = Monitored::Scalar( "Weta2", -1.0 );
115  auto mon_Wstot = Monitored::Scalar( "Wstot", -1.0 );
116  auto mon_F3 = Monitored::Scalar( "F3", -1.0 );
117  auto PassedCuts = Monitored::Scalar<int>( "CutCounter", -1 );
118  auto monitorIt = Monitored::Group( m_monTool,
119  mon_dEta, mon_dPhi, mon_eT_T2Calo, mon_hadET_T2Calo,
120  mon_rCore, mon_energyRatio, mon_etaBin, mon_Eta,
121  mon_Phi, mon_F1, mon_Weta2, mon_Wstot, mon_F3, PassedCuts );
122  // when leaving scope it will ship data to monTool
123  PassedCuts = PassedCuts + 1; //got called (data in place)
124 
125  float dEta(0), dPhi(0), eT_T2Calo(0), rCore(0), hadET_T2Calo(0), energyRatio(0), eta(0), phi(0), F1(0), Weta2(0), Wstot(0), F3(0);
126 
127  if ( m_acceptAll ) {
128  pass = true;
129  ATH_MSG_DEBUG( "AcceptAll property is set: taking all events" );
130  } else {
131  pass = false;
132  ATH_MSG_DEBUG( "AcceptAll property not set: applying selection" );
133  }
134 
135  auto roiDescriptor = input.roi;
136 
137  if ( fabs( roiDescriptor->eta() ) > 2.6 ) {
138  ATH_MSG_DEBUG( "REJECT The cluster had eta coordinates beyond the EM fiducial volume : " << roiDescriptor->eta() << "; stop the chain now" );
139  pass=false; // special case
140  return pass;
141  }
142 
143  ATH_MSG_DEBUG( "; RoI ID = " << roiDescriptor->roiId()
144  << ": Eta = " << roiDescriptor->eta()
145  << ", Phi = " << roiDescriptor->phi() );
146 
147  // fill local variables for RoI reference position
148  double etaRef = roiDescriptor->eta();
149  double phiRef = roiDescriptor->phi();
150  // correct phi the to right range ( probably not needed anymore )
151  if ( fabs( phiRef ) > M_PI ) phiRef -= 2*M_PI; // correct phi if outside range
152 
153  auto pClus = input.cluster;
154  float absEta = fabs( pClus->eta() );
155 
156  eta = pClus->eta();
157  phi = pClus->phi();
158  const int cutIndex = findCutIndex( absEta );
159 
160  // find if electron is in calorimeter crack
161  bool inCrack = ( absEta > 2.37 || ( absEta > 1.37 && absEta < 1.52 ) );
162  dEta = pClus->eta() - etaRef;
163 
164  // Deal with angle diferences greater than Pi
165  dPhi = fabs( pClus->phi() - phiRef );
166  dPhi = ( dPhi < M_PI ? dPhi : 2*M_PI - dPhi ); // TB why only <
167 
168  // calculate cluster quantities // definition taken from TrigElectron constructor
169  if ( pClus->emaxs1() + pClus->e2tsts1() > 0 )
170  energyRatio = ( pClus->emaxs1() - pClus->e2tsts1() ) / ( pClus->emaxs1() + pClus->e2tsts1() );
171 
172  // ( VD ) here the definition is a bit different to account for the cut of e277 @ EF
173  if ( pClus->e277()!= 0. ) rCore = pClus->e237() / pClus->e277();
174 
175  //fraction of energy deposited in 1st sampling
176  if ( fabs( pClus->energy() ) > 0.00001 ) F1 = ( pClus->energy( CaloSampling::EMB1 )+pClus->energy( CaloSampling::EME1 ) )/pClus->energy();
177  eT_T2Calo = pClus->et();
178  if ( eT_T2Calo!=0 && pClus->eta()!=0 ) hadET_T2Calo = pClus->ehad1()/cosh( fabs( pClus->eta() ) )/eT_T2Calo;
179 
180  //extract Weta2 varable
181  Weta2 = pClus->weta2();
182 
183  //extract Wstot varable
184  Wstot = pClus->wstot();
185 
186  //extract F3 ( backenergy i EM calorimeter
187  float e0 = pClus->energy( CaloSampling::PreSamplerB ) + pClus->energy( CaloSampling::PreSamplerE );
188  float e1 = pClus->energy( CaloSampling::EMB1 ) + pClus->energy( CaloSampling::EME1 );
189  float e2 = pClus->energy( CaloSampling::EMB2 ) + pClus->energy( CaloSampling::EME2 );
190  float e3 = pClus->energy( CaloSampling::EMB3 ) + pClus->energy( CaloSampling::EME3 );
191  float eallsamples = e0+e1+e2+e3;
192  F3 = fabs( eallsamples )>0. ? e3/eallsamples : 0.;
193 
194  // apply cuts: DeltaEta( clus-ROI )
195  ATH_MSG_DEBUG( "TrigEMCluster: eta=" << pClus->eta()
196  << " roi eta=" << etaRef << " DeltaEta=" << dEta
197  << " cut: <" << m_detacluster );
198 
199  if ( fabs( pClus->eta() - etaRef ) > m_detacluster ) {
200  ATH_MSG_DEBUG("REJECT Cluster dEta cut failed");
201  return pass;
202  }
203  mon_dEta = dEta;
204  mon_Eta = eta;
205  PassedCuts = PassedCuts + 1; //Deta
206 
207  // DeltaPhi( clus-ROI )
208  ATH_MSG_DEBUG( ": phi=" << pClus->phi()
209  << " roi phi="<< phiRef << " DeltaPhi="<< dPhi
210  << " cut: <" << m_dphicluster );
211 
212  if( dPhi > m_dphicluster ) {
213  ATH_MSG_DEBUG("REJECT Clsuter dPhi cut failed");
214  return pass;
215  }
216  mon_dPhi = dPhi;
217  mon_Phi = phi;
218  PassedCuts = PassedCuts + 1; //DPhi
219 
220  // eta range
221  if ( cutIndex == -1 ) { // VD
222  ATH_MSG_DEBUG( "Cluster eta: " << absEta << " outside eta range " << m_etabin[m_etabin.size()-1] );
223  return pass;
224  }
225  else {
226  ATH_MSG_DEBUG( "eta bin used for cuts " << cutIndex );
227  }
228  mon_etaBin = m_etabin[cutIndex];
229  PassedCuts = PassedCuts + 1; // passed eta cut
230 
231  // Rcore
232  ATH_MSG_DEBUG ( "TrigEMCluster: Rcore=" << rCore
233  << " cut: >" << m_carcorethr[cutIndex] );
234  if ( rCore < m_carcorethr[cutIndex] ) {
235  ATH_MSG_DEBUG("REJECT rCore cut failed");
236  return pass;
237  }
238  mon_rCore = rCore;
239  PassedCuts = PassedCuts + 1; //Rcore
240 
241  // Eratio
242  ATH_MSG_DEBUG( " cut: >" << m_caeratiothr[cutIndex] );
243  if ( inCrack || F1 < m_F1thr[0] ) {
244  ATH_MSG_DEBUG ( "TrigEMCluster: InCrack= " << inCrack << " F1=" << F1 );
245  }
246  else {
247  if ( energyRatio < m_caeratiothr[cutIndex] ) {
248  ATH_MSG_DEBUG("REJECT e ratio cut failed");
249  return pass;
250  }
251  }
252  PassedCuts = PassedCuts + 1; //Eratio
253  if( inCrack ) energyRatio = -1; //Set default value in crack for monitoring.
254  mon_energyRatio = energyRatio;
255 
256  // ET_em
257  ATH_MSG_DEBUG( "TrigEMCluster: ET_em=" << eT_T2Calo << " cut: >" << m_eTthr[cutIndex] );
258  if ( eT_T2Calo < m_eTthr[cutIndex] ) {
259  ATH_MSG_DEBUG("REJECT et cut failed");
260  return pass;
261  }
262  mon_eT_T2Calo = eT_T2Calo;
263  PassedCuts = PassedCuts + 1; // ET_em
264 
265  float hadET_cut = 0.0;
266  // find which ET_had to apply : this depends on the ET_em and the eta bin
267  if ( eT_T2Calo > m_eT2thr[cutIndex] ) {
268  hadET_cut = m_hadeT2thr[cutIndex] ;
269  ATH_MSG_DEBUG ( "ET_em>" << m_eT2thr[cutIndex] << ": use high ET_had cut: <" << hadET_cut );
270  }
271  else {
272  hadET_cut = m_hadeTthr[cutIndex];
273  ATH_MSG_DEBUG ( "ET_em<" << m_eT2thr[cutIndex] << ": use low ET_had cut: <" << hadET_cut );
274  }
275 
276  // ET_had
277  ATH_MSG_DEBUG ( "TrigEMCluster: ET_had=" << hadET_T2Calo << " cut: <" << hadET_cut );
278  if ( hadET_T2Calo > hadET_cut ) {
279  ATH_MSG_DEBUG("REJECT et had cut failed");
280  return pass;
281  }
282  mon_hadET_T2Calo = hadET_T2Calo;
283  PassedCuts = PassedCuts + 1; //ET_had
284 
285  // F1
286  ATH_MSG_DEBUG ( "TrigEMCluster: F1=" << F1 << " cut: >" << m_F1thr[0] );
287  mon_F1 = F1;
288  PassedCuts = PassedCuts + 1; //F1
289 
290  //Weta2
291  ATH_MSG_DEBUG ( "TrigEMCluster: Weta2=" << Weta2 << " cut: <" << m_WETA2thr[cutIndex] );
292  if ( Weta2 > m_WETA2thr[cutIndex] ) {
293  ATH_MSG_DEBUG("REJECT weta 2 cut failed");
294  return pass;
295  }
296  mon_Weta2 = Weta2;
297  PassedCuts = PassedCuts + 1; //Weta2
298 
299  //Wstot
300  ATH_MSG_DEBUG ( "TrigEMCluster: Wstot=" <<Wstot << " cut: <" << m_WSTOTthr[cutIndex] );
301  if ( Wstot >= m_WSTOTthr[cutIndex] ) {
302  ATH_MSG_DEBUG("REJECT wstot cut failed");
303  return pass;
304  }
305  mon_Wstot = Wstot;
306  PassedCuts = PassedCuts + 1; //Wstot
307 
308  //F3
309  ATH_MSG_DEBUG( "TrigEMCluster: F3=" << F3 << " cut: <" << m_F3thr[cutIndex] );
310  if ( F3 > m_F3thr[cutIndex] ) {
311  ATH_MSG_DEBUG("REJECT F3 cut failed");
312  return pass;
313  }
314  mon_F3 = F3;
315  PassedCuts = PassedCuts + 1; //F3
316 
317  // got this far => passed!
318  pass = true;
319 
320  // Reach this point successfully
321  ATH_MSG_DEBUG( "pass = " << pass );
322 
323 
324 
325  return pass;
326 
327 }
328 
329 
330 
332 {
333 
334  auto mon_et = Monitored::Scalar("Et",-100);
335  auto mon_eta = Monitored::Scalar("Eta",-100);
336  auto mon_phi = Monitored::Scalar("Phi",-100);
337  auto mon_NNOutput = Monitored::Scalar("NNOutput",-100);
338 
339  auto mon = Monitored::Group(m_monTool,mon_et,mon_eta,mon_phi,mon_NNOutput);
340 
341  float et(0), eta(0), phi(0), NNOutput(0);
342 
343  if ( m_acceptAll ) {
344  ATH_MSG_DEBUG( "AcceptAll property is set: taking all events" );
345  return true;
346  } else {
347  ATH_MSG_DEBUG( "AcceptAll property not set: applying selection" );
348  }
349 
350  auto ringerShape = input.ringerShape;
351  const xAOD::TrigEMCluster *emCluster = nullptr;
352 
353  if(ringerShape){
354  emCluster = ringerShape->emCluster();
355  if(!emCluster){
356  ATH_MSG_DEBUG("There is no link to xAOD::TrigEMCluster into the Ringer object.");
357  return false;
358  }
359  }
360  else{
361  ATH_MSG_WARNING( "There is no xAOD::TrigRingerRings link into the rnnOutput object.");
362  return false;
363  }
364 
365 
366  et = emCluster->et();
367  eta = emCluster->eta();
368  phi = emCluster->phi();
369 
370  if(et < m_emEtCut){
371  ATH_MSG_DEBUG( "Event reproved by Et threshold. Et = " << et << ", EtCut = " << m_emEtCut/Gaudi::Units::GeV);
372  return false;
373  }
374  mon_et = et;
375  mon_eta = eta;
376  mon_phi = phi;
377 
378  bool pass = false;
379  if( input.pidDecorator.count(m_pidName)){
380  NNOutput = input.valueDecorator.at(m_pidName+"NNOutput");
381  pass = input.pidDecorator.at(m_pidName);
382  ATH_MSG_DEBUG( "ET Cut " << m_emEtCut <<" Get the decision for " << m_pidName << ": " << (pass?"Yes":"No") );
383  }else{
384  ATH_MSG_DEBUG( "Pid name " << m_pidName << " not found into the decorator. Probably this decision was not computed by the hypo alg." );
385  }
386  mon_NNOutput = NNOutput;
387 
388  return pass;
389 }
390 
391 
393 {
394  const float absEta = std::abs(eta);
395  auto binIterator = std::adjacent_find( m_etabin.begin(), m_etabin.end(), [=](float left, float right){ return left < absEta and absEta < right; } );
396  if ( binIterator == m_etabin.end() ) {
397  return -1;
398  }
399  return binIterator - m_etabin.begin();
400 }
401 
402 
ITrigEgammaFastCaloHypoTool::FastClusterInfo
Definition: ITrigEgammaFastCaloHypoTool.h:28
TrigEgammaFastCaloHypoTool::m_pidName
Gaudi::Property< std::string > m_pidName
Definition: TrigEgammaFastCaloHypoTool.h:45
TrigEgammaFastCaloHypoTool::TrigEgammaFastCaloHypoTool
TrigEgammaFastCaloHypoTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TrigEgammaFastCaloHypoTool.cxx:16
TrigEgammaFastCaloHypoTool::m_carcorethr
Gaudi::Property< std::vector< float > > m_carcorethr
Definition: TrigEgammaFastCaloHypoTool.h:54
et
Extra patterns decribing particle interation process.
TrigDefs::Group
Group
Properties of a chain group.
Definition: GroupProperties.h:13
xAOD::TrigEMCluster_v1::eta
float eta() const
get Eta (calibrated)
constants.EMB1
int EMB1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:53
TrigEgammaFastCaloHypoTool::m_WSTOTthr
Gaudi::Property< std::vector< float > > m_WSTOTthr
Definition: TrigEgammaFastCaloHypoTool.h:58
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
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
HLT::Identifier::numeric
TrigCompositeUtils::DecisionID numeric() const
numeric ID
Definition: TrigCompositeUtils/TrigCompositeUtils/HLTIdentifier.h:47
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
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:79
TrigEgammaFastCaloHypoTool::decide
virtual StatusCode decide(std::vector< ITrigEgammaFastCaloHypoTool::FastClusterInfo > &input) const override
TrigEgammaFastCaloHypoTool.h
TrigCompositeUtils::addDecisionID
void addDecisionID(DecisionID id, Decision *d)
Appends the decision (given as ID) to the decision object.
Definition: TrigCompositeUtilsRoot.cxx:61
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrigEgammaFastCaloHypoTool::m_decisionId
HLT::Identifier m_decisionId
Definition: TrigEgammaFastCaloHypoTool.h:43
TrigEgammaFastCaloHypoTool::m_dphicluster
Gaudi::Property< float > m_dphicluster
Definition: TrigEgammaFastCaloHypoTool.h:61
TrigEgammaFastCaloHypoTool::findCutIndex
int findCutIndex(float eta) const
Definition: TrigEgammaFastCaloHypoTool.cxx:392
TrigEgammaFastCaloHypoTool::m_hadeT2thr
Gaudi::Property< std::vector< float > > m_hadeT2thr
Definition: TrigEgammaFastCaloHypoTool.h:53
xAOD::TrigEMCluster_v1::phi
float phi() const
get Phi (calibrated)
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
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:92
TrigEgammaFastCaloHypoTool::initialize
virtual StatusCode initialize() override
Definition: TrigEgammaFastCaloHypoTool.cxx:28
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:530
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
test_pyathena.parent
parent
Definition: test_pyathena.py:15
constants.EME1
int EME1
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:55
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.
TrigEgammaFastCaloHypoTool::m_F1thr
Gaudi::Property< std::vector< float > > m_F1thr
Definition: TrigEgammaFastCaloHypoTool.h:56
TrigEgammaFastCaloHypoTool::decide_cutbased
bool decide_cutbased(const ITrigEgammaFastCaloHypoTool::FastClusterInfo &i) const
Definition: TrigEgammaFastCaloHypoTool.cxx:99
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CaloCell_ID_FCS::EME3
@ EME3
Definition: FastCaloSim_CaloCell_ID.h:26
TrigEgammaFastCaloHypoTool::m_emEtCut
Gaudi::Property< float > m_emEtCut
Definition: TrigEgammaFastCaloHypoTool.h:63
TrigEgammaFastCaloHypoTool::m_useRinger
Gaudi::Property< bool > m_useRinger
Definition: TrigEgammaFastCaloHypoTool.h:46
TrigEgammaFastCaloHypoTool::decide_ringer
bool decide_ringer(const ITrigEgammaFastCaloHypoTool::FastClusterInfo &i) const
Definition: TrigEgammaFastCaloHypoTool.cxx:331
TrigEgammaFastCaloHypoTool::m_monTool
ToolHandle< GenericMonitoringTool > m_monTool
Definition: TrigEgammaFastCaloHypoTool.h:66
Combinators.h
egammaEnergyPositionAllSamples::e2
double e2(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in 2nd sampling
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TrigEgammaFastCaloHypoTool::m_etabin
Gaudi::Property< std::vector< float > > m_etabin
selection variable for L2 calo selection:eta bins
Definition: TrigEgammaFastCaloHypoTool.h:49
CaloCell_ID_FCS::PreSamplerE
@ PreSamplerE
Definition: FastCaloSim_CaloCell_ID.h:23
CaloCell_ID_FCS::PreSamplerB
@ PreSamplerB
Definition: FastCaloSim_CaloCell_ID.h:19
TrigEgammaFastCaloHypoTool::m_hadeTthr
Gaudi::Property< std::vector< float > > m_hadeTthr
Definition: TrigEgammaFastCaloHypoTool.h:52
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
TrigEgammaFastCaloHypoTool::m_acceptAll
Gaudi::Property< bool > m_acceptAll
Definition: TrigEgammaFastCaloHypoTool.h:62
plotBeamSpotMon.mon
mon
Definition: plotBeamSpotMon.py:67
HLTIdentifier.h
TauGNNUtils::Variables::absEta
bool absEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:232
TrigEgammaFastCaloHypoTool::m_eT2thr
Gaudi::Property< std::vector< float > > m_eT2thr
Definition: TrigEgammaFastCaloHypoTool.h:51
TrigEgammaFastCaloHypoTool::m_eTthr
Gaudi::Property< std::vector< float > > m_eTthr
Definition: TrigEgammaFastCaloHypoTool.h:50
TrigCompositeUtils
Definition: Event/xAOD/xAODTrigger/xAODTrigger/TrigComposite.h:19
CHECK_SIZE
#define CHECK_SIZE(__n)
TrigEgammaFastCaloHypoTool::m_detacluster
Gaudi::Property< float > m_detacluster
Definition: TrigEgammaFastCaloHypoTool.h:60
xAOD::TrigEMCluster_v1::et
float et() const
get Et (calibrated)
egammaEnergyPositionAllSamples::e0
double e0(const xAOD::CaloCluster &cluster)
return the uncorrected cluster energy in pre-sampler
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
xAOD::TrigEMCluster_v1
Description of a trigger EM cluster.
Definition: TrigEMCluster_v1.h:28
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:525
TrigEgammaFastCaloHypoTool::~TrigEgammaFastCaloHypoTool
virtual ~TrigEgammaFastCaloHypoTool()
Definition: TrigEgammaFastCaloHypoTool.cxx:24
CaloCell_ID_FCS::EMB3
@ EMB3
Definition: FastCaloSim_CaloCell_ID.h:22
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
constants.EME2
int EME2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:56
TrigEgammaFastCaloHypoTool::m_F3thr
Gaudi::Property< std::vector< float > > m_F3thr
Definition: TrigEgammaFastCaloHypoTool.h:59
TrigEgammaFastCaloHypoTool::m_WETA2thr
Gaudi::Property< std::vector< float > > m_WETA2thr
Definition: TrigEgammaFastCaloHypoTool.h:57
TrigEgammaFastCaloHypoTool::m_caeratiothr
Gaudi::Property< std::vector< float > > m_caeratiothr
Definition: TrigEgammaFastCaloHypoTool.h:55