ATLAS Offline Software
TrigEgammaMonitorTagAndProbeAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 /**********************************************************************
6  * AsgTool: TrigEgammaNavTPBaseTool
7  * Authors:
8  * Joao Victor Pinto <jodafons@cern.ch>
9  * Edmar de Souza <edmar.egidio@cern.ch>
10  * Description:
11  * Trigger e/gamma Zee Tag&Probe Base tool class. Inherits from TrigEgammaAnalysisBaseTool.
12  * Provides methods for selecting T&P pairs,
13  * matching probes to objects in TE containers.
14  * Creates a vector of pairs with
15  * offline electrons probes and the last TE with a match.
16  * Relies heavily on TrigNavigation, since we use the TriggerDecision.
17  * All derived classes work with list of probes for a given trigger.
18  * As input property, pass a list of triggers to study.
19  **********************************************************************/
20 
22 #include "GaudiKernel/SystemOfUnits.h"
23 #include "string"
24 #include <algorithm>
25 #include "boost/algorithm/string.hpp"
26 #include <boost/tokenizer.hpp>
28 #include "StoreGate/ReadHandle.h"
30 
31 //**********************************************************************
32 using namespace Trig;
33 using namespace xAOD;
34 using namespace boost;
35 
38 
39 
40 {}
41 
42 
44 {}
45 
46 
48 
49  ATH_MSG_INFO("TrigEgammaMonitorTagAndProbeAlgorithm::initialize()...");
51 
53  ATH_CHECK(m_jetKey.initialize());
54  ATH_CHECK(m_eventInfoDecorKey.initialize() );
56 
57  ATH_MSG_INFO("Now configuring chains for analysis: " << name() );
58  for(auto& trigName : m_trigInputList)
59  {
60  if(getTrigInfoMap().count(trigName) != 0){
61  ATH_MSG_DEBUG("Trigger already booked, removing from trigger list " << trigName);
62  }else {
63  m_trigList.push_back(trigName);
64  setTrigInfo(trigName);
65  }
66  }
67  return StatusCode::SUCCESS;
68 }
69 
70 
71 
73 
74  std::vector<std::shared_ptr<const xAOD::Electron>> probes;
75 
76  // Select TP Pairs
77  ATH_MSG_DEBUG("Execute TP selection");
78 
79  if( !executeTandP(ctx, probes) ){
80  ATH_MSG_DEBUG("Tag and Probe event failed.");
81  return StatusCode::SUCCESS;
82  }
83 
84 
85  // Check HLTResult
86  if(isHLTTruncated()){
87  ATH_MSG_DEBUG("HLTResult truncated, skip trigger analysis");
88  return StatusCode::SUCCESS;
89  }
90 
91  // Noise burst protection
93  ATH_CHECK(thisEvent.isValid());
95  ATH_MSG_DEBUG("LAr Noise Burst Veto, skip trigger analysis");
96  return StatusCode::SUCCESS;
97  }
98 
99  for(unsigned int ilist = 0; ilist != m_trigList.size(); ilist++) {
100 
101  std::string probeTrigger = m_trigList.at(ilist);
102 
104  std::vector<std::pair<const xAOD::Egamma*, const TrigCompositeUtils::Decision*>> pairObjs;
105 
106  ATH_MSG_DEBUG("Start Chain Analysis ============================= " << probeTrigger);
107 
108 
109  const TrigInfo info = getTrigInfo(probeTrigger);
110  const std::string& trigName=probeTrigger;
111 
112  ATH_MSG_DEBUG("Trigger " << probeTrigger << " pidword " << info.pidname << " threshold " << info.etthr);
113  matchObjects(trigName, probes, pairObjs);
114 
115 
116  // Just for counting
117  ATH_MSG_DEBUG("Probes " << probes.size() << " Pairs " << pairObjs.size() );
118 
119  // Include fill here
120  fillDistributions( pairObjs, info );
121  fillEfficiencies( pairObjs, info );
122  fillResolutions( pairObjs, info );
123 
124  } // End loop over trigger list
125 
126  return StatusCode::SUCCESS;
127 }
128 
129 
130 
131 bool TrigEgammaMonitorTagAndProbeAlgorithm::executeTandP( const EventContext& ctx, std::vector<std::shared_ptr<const xAOD::Electron>> &probeElectrons) const
132 {
133 
134  auto monGroup = getGroup( m_anatype );
135 
136  fillLabel(monGroup, "CutCounter", "Events");
137 
138 
140  if( !eventInfo.isValid() ){
141  ATH_MSG_DEBUG("Failed to retrieve EventInfo");
142  return false;
143  }
144 
145 
147  ATH_MSG_DEBUG("Event not passing LAr");
148  return false;
149  }
150 
151  fillLabel(monGroup, "CutCounter", "LAr");
153 
154  if(!offElectrons.isValid())
155  {
156  ATH_MSG_DEBUG("Failed to retrieve offline Electrons ");
157  return false;
158  }
159 
160  fillLabel(monGroup, "CutCounter", "RetrieveElectrons");
161 
162  ATH_MSG_DEBUG( "Electron size is " << offElectrons->size() );
163 
164  // Check Size of Electron Container
165  if ( offElectrons->size() < 2 ) { // Not enough events for T&P
166  ATH_MSG_DEBUG("Not enough Electrons for T&P");
167  return false;
168  }
169 
170  fillLabel(monGroup, "CutCounter", "TwoElectrons");
171 
172 
174  if(!jets.isValid() && m_applyJetNearProbeSelection){
175  ATH_MSG_DEBUG("Failed to retrieve JetContainer");
176  return false;
177  }
178 
179  ATH_MSG_DEBUG( "Jet size is " << jets->size());
180 
181  if(!m_tagTrigList.empty()){
183  if ( !minimalTriggerRequirement() )
184  return false;
185  }
186  fillLabel(monGroup, "CutCounter", "PassTrigger");
187 
188  }else{
189  ATH_MSG_DEBUG("Disable trigger tags because trigger tags list is empty.");
190  }
191 
192 
193 
194 
195 
196 
197 
198 
199 
200 
201  ATH_MSG_DEBUG("Execute TandP BaseTool " << offElectrons->size());
202  for(const auto *const elTag : *offElectrons)
203  {
204  if( ! isTagElectron( monGroup, elTag) ) continue;
205 
206  for(const auto *const elProbe : *offElectrons)
207  { // Dress the probes with updated Pid decision
208 
209  fillLabel(monGroup, "ProbeCutCounter", "Electrons");
210 
211  if(elProbe==elTag) continue;
212  fillLabel(monGroup, "ProbeCutCounter", "NotTag");
213  // Check opposite charge
214  if(m_oppositeCharge && (elProbe->charge() == elTag->charge()) ) continue;
215  fillLabel(monGroup, "ProbeCutCounter", "OS");
216  if(!m_oppositeCharge && (elProbe->charge() != elTag->charge()) ) continue;
217  fillLabel(monGroup, "ProbeCutCounter", "SS");
218 
219  ATH_MSG_DEBUG("Execute TandP BaseTool OS");
220 
221  if(m_doJpsiee){
222 
223  float Jpsieelifetime = getPseudoLifetime(elTag,elProbe);
224 
225  if( dR(elTag->caloCluster()->eta(),elTag->caloCluster()->phi(),
226  elProbe->caloCluster()->eta(),elProbe->caloCluster()->phi()) <= 0.2 ){
227  ATH_MSG_DEBUG("dR(elTag,elProbe)<0.2");
228  continue;
229 
230  }
231  else if(Jpsieelifetime<-1 || 0.2<Jpsieelifetime){
232  ATH_MSG_DEBUG("tag and probe pair not in Jpsi lifetime window");
233  continue;
234  }
235 
236  }
237  //Must be an easy way with IParticle
238  TLorentzVector el1;
239  TLorentzVector el2;
240  el1.SetPtEtaPhiE(elTag->pt(), elTag->trackParticle()->eta(), elTag->trackParticle()->phi(), elTag->e());
241  el2.SetPtEtaPhiE(elProbe->pt(), elProbe->trackParticle()->eta(), elProbe->trackParticle()->phi(), elProbe->e());
242  float tpPairMass = (el1 + el2).M();
243  if( !((tpPairMass > m_ZeeMassMin*1.e3) && (tpPairMass < m_ZeeMassMax*1.e3))){
244  ATH_MSG_DEBUG("tag and probe pair not in Z mass window");
245  continue;
246  } else {
247  //fill( monGroup, m_anatype+"_ProbeCutCounter", "ZMass");
248  fillLabel(monGroup, "ProbeCutCounter", "ZMass");
249 
250  ATH_MSG_DEBUG("tag and probe pair in Z mass window");
251  // Probe available. Good Probe?
252  if(!isGoodProbeElectron(monGroup, elProbe, jets.cptr())) continue;
253  ATH_MSG_DEBUG("is good probe Electron");
254  //fill( monGroup, m_anatype+"_ProbeCutCounter", "GoodProbe");
255 
256  auto selProbe = std::make_shared<const xAOD::Electron>(*elProbe);
257  dressPid(selProbe.get());
258 
259  probeElectrons.emplace_back(std::move(selProbe));
260 
261  auto mon_count_probe= Monitored::Scalar<std::string>("ProbeCutCounter","GoodProbe");
262  auto mon_mee = Monitored::Scalar<float>("Mee" , tpPairMass/1.e3 );
263  fill( monGroup , mon_count_probe, mon_mee );
264  ATH_MSG_DEBUG("Fill TP Mee and count");
265  }
266  } // end of for in Probe
267  } // end of for in Tags
268 
269 
270  ATH_MSG_DEBUG( "Number of probes found is " << probeElectrons.size() );
271  return true;
272 }
273 
274 
275 
277 
278  ATH_MSG_DEBUG("Apply Minimal trigger requirements");
279  for(unsigned int ilist = 0; ilist != m_tagTrigList.size(); ilist++) {
280  std::string tag = m_tagTrigList[ilist];
281  if ( tdt()->isPassed(tag) )
282  return true;
283  }
284 
285  return false;
286 }
287 
288 
289 
290 void TrigEgammaMonitorTagAndProbeAlgorithm::matchObjects(const std::string& probeTrigItem,
291  std::vector<std::shared_ptr<const xAOD::Electron>>& probeElectrons,
292  std::vector<std::pair<const xAOD::Egamma*, const TrigCompositeUtils::Decision *>> &pairObj ) const
293 {
294  for( const auto& el : probeElectrons)
295  {
296  const TrigCompositeUtils::Decision *dec=nullptr;
297  match()->match(el.get(), probeTrigItem, dec, TrigDefs::includeFailedDecisions);
298  //match()->match(el, probeTrigItem, dec);
299  pairObj.emplace_back(el.get(), dec);
300  }
301 }
302 
303 
304 
305 bool TrigEgammaMonitorTagAndProbeAlgorithm::isTagElectron( const ToolHandle<GenericMonitoringTool>& monGroup,
306  const xAOD::Electron *el) const
307 {
308  fillLabel(monGroup, "TagCutCounter", "Electrons");
309 
310  // Tag the event
311  // Require offline tight electron
312  // Match to e24_tight1_L1EM20V
313  ATH_MSG_DEBUG("Selecting Tag Electron");
314 
315  //Check constituents
316  const xAOD::TrackParticle *trk = el->trackParticle();
317  if(!el->trackParticle()){
318  ATH_MSG_DEBUG("No track Particle");
319  return false;
320  }
321 
322  fillLabel(monGroup, "TagCutCounter", "HasTrack");
323 
324  ATH_MSG_DEBUG("Track pt " << trk->pt());
325  const xAOD::CaloCluster *clus = el->caloCluster();
326  if(!el->caloCluster()){
327  ATH_MSG_DEBUG("No caloCluster");
328  return false;
329  }
330 
331  fillLabel(monGroup, "TagCutCounter", "HasCluster");
332 
333  ATH_MSG_DEBUG("Cluster E "<<clus->e());
334  ATH_MSG_DEBUG("Selecting Tag Electron PID");
335  if (!ApplyElectronPid(el, m_offTagTightness)) return false;
336  fillLabel(monGroup, "TagCutCounter", "GoodPid");
337 
338  ATH_MSG_DEBUG("Selecting Tag Electron Et");
339  //Require Et > 25 GeV
340  if( !(el->e()/cosh(el->trackParticle()->eta()) > m_tagMinEt*Gaudi::Units::GeV) ){
341  return false;
342  }
343 
344  fillLabel(monGroup, "TagCutCounter", "Et");
345 
346  ATH_MSG_DEBUG("Selecting Tag Electron Eta");
347  //fiducial detector acceptance region
348  float absEta = fabs(el->caloCluster()->etaBE(2));
349  if ((absEta > 1.37 && absEta < 1.52) || absEta > 2.47) {
350  return false;
351  }
352 
353  fillLabel(monGroup, "TagCutCounter", "Eta");
354 
355  ATH_MSG_DEBUG("Checking electron object quality");
356  if (!el->isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON)) return false;
357 
358  fillLabel(monGroup, "TagCutCounter", "IsGoodOQ");
359 
360  if(m_tagTrigList.empty())
361  {
362  ATH_MSG_DEBUG("Found a tag electron");
363  return true;
364  }
365 
366  ATH_MSG_DEBUG("Selecting Tag Electron Decision");
367  // Check matching to a given trigger
368  // The statement below is more general
369  bool tagPassed=false;
370  for( auto& tag : m_tagTrigList){
371  if(tdt()->isPassed(tag)){
372  tagPassed=true;
373  break;
374  }
375  }
376 
377  if(!tagPassed) {
378  ATH_MSG_DEBUG("Failed tag trigger ");
379  return false;
380  }
381 
382  fillLabel(monGroup, "TagCutCounter", "PassTrigger");
383 
384  ATH_MSG_DEBUG("Matching Tag Electron FC");
385  bool tagMatched=false;
386  for(unsigned int ilist = 0; ilist != m_tagTrigList.size(); ilist++) {
387  std::string tag = m_tagTrigList[ilist];
388  if( match()->isPassed(el,tag) )
389  tagMatched=true;
390  }
391 
392  if(!tagMatched){
393  ATH_MSG_DEBUG("Failed a match ");
394  return false; // otherwise, someone matched!
395  }
396 
397  fillLabel(monGroup, "TagCutCounter", "MatchTrigger");
398 
399  ATH_MSG_DEBUG("Found a tag electron");
400  return true;
401 }
402 
403 
404 
405 bool TrigEgammaMonitorTagAndProbeAlgorithm::isGoodProbeElectron( const ToolHandle<GenericMonitoringTool>& monGroup,
406  const xAOD::Electron *el,
407  const xAOD::JetContainer *jets ) const
408 {
409 
410  //Check constituents
411  if(!el->trackParticle()){
412  ATH_MSG_DEBUG("No track Particle");
413  return false;
414  }
415 
416  fillLabel(monGroup,"ProbeCutCounter", "HasTrack");
417 
418  if(!el->caloCluster()){
419  ATH_MSG_DEBUG("No caloCluster");
420  return false;
421  }
422 
423  fillLabel(monGroup, "ProbeCutCounter", "HasCluster");
424 
425  //fiducial detector acceptance region
426  if(m_rmCrack){
427  float absEta = fabs(el->caloCluster()->etaBE(2));
428  if ((absEta > 1.37 && absEta < 1.52) || absEta > 2.47) {
429  return false;
430  }
431  }
432 
433  fillLabel(monGroup, "ProbeCutCounter", "Eta");
434 
435  ATH_MSG_DEBUG("Checking electron object quality");
436  if (!el->isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON)) return false;
437  fillLabel(monGroup, "ProbeCutCounter", "IsGoodOQ");
438 
439  fillLabel(monGroup, "ProbeCutCounter", "GoodPid");
440 
441 
443  TLorentzVector probeCandidate;
444  probeCandidate.SetPtEtaPhiE(el->pt(), el->trackParticle()->eta(), el->trackParticle()->phi(), el->e());
445  Int_t jetsAroundProbeElectron = 0;
446  for(const auto *const i_jet : *jets){
447  TLorentzVector jet;
448  jet.SetPtEtaPhiE(i_jet->pt(), i_jet->eta(), i_jet->phi(), i_jet->e());
449  if( (jet.Et() > 20*Gaudi::Units::GeV) && (jet.DeltaR(probeCandidate) < 0.4)) jetsAroundProbeElectron++;
450  }
451  //reject if more than 1 jet close to the probe electron
452  if ( jetsAroundProbeElectron >= 2 ) {
453  //ATH_MSG_DEBUG("too many jets around object");
454  return false;
455  }
456  }
457  fillLabel(monGroup, "ProbeCutCounter", "NearbyJet");
458 
459  return true; // Good probe electron
460 }
461 
462 
463 
465 {
466  const auto& ctx = Gaudi::Hive::currentContext() ;
467  for(int ipid=0;ipid<3;ipid++){
468  bool accept = (bool) this->m_electronIsEMTool[ipid]->accept(ctx,eg);
469  const std::string pidname="is"+m_isemname[ipid];
470  SG::Decorator<bool> decor(pidname);
471  decor(*eg)=static_cast<bool>(accept);
472  }
473  for(int ipid=0;ipid<4;ipid++){
474  bool accept = (bool) this->m_electronLHTool[ipid]->accept(ctx,eg);
475  const std::string pidname="is"+m_lhname[ipid];
476  SG::Decorator<bool> decor(pidname);
477  decor(*eg)=static_cast<bool>(accept);
478  }
479  for(int ipid=0;ipid<3;ipid++){
480  bool accept = (bool) this->m_electronDNNTool[ipid]->accept(ctx,eg);
481  const std::string pidname="is"+m_dnnname[ipid];
482  SG::Decorator<bool> decor(pidname);
483  decor(*eg)=static_cast<bool>(accept);
484  }
485  static const SG::Decorator<bool> IsolatedDec("Isolated");
486  IsolatedDec(*eg)=isIsolated(eg, m_offProbeIsolation);
487 }
488 
489 
490 
492 {
493 
494  TLorentzVector el1track;
495  TLorentzVector el2track;
496  float simple = -99999.;
497 
498  float Et1=hypot(el1->caloCluster()->m(),el1->caloCluster()->pt())/cosh(el1->trackParticle()->eta());
499  float Et2=hypot(el2->caloCluster()->m(),el2->caloCluster()->pt())/cosh(el1->trackParticle()->eta());
500 
501  el1track.SetPtEtaPhiM(Et1, el1->trackParticle()->eta(), el1->trackParticle()->phi(),0.511);
502  el2track.SetPtEtaPhiM(Et2, el2->trackParticle()->eta(), el2->trackParticle()->phi(), 0.511);
503 
504  float lxy=simple_lxy(0,
505  el1->trackParticle()->d0() , el2->trackParticle()->d0(),
506  el1->trackParticle()->phi(), el2->trackParticle()->phi(),
507  Et1, Et2,
508  0.0, 0.0);
509 
510  float ptEECalo = (el1track+el2track).Pt();
511 
512  float den = (0.299792458*ptEECalo);
513  if(fabs(den) < 1e-6) return simple;
514 
515  return lxy*3096.916/den;
516 
517 }
518 
519 double TrigEgammaMonitorTagAndProbeAlgorithm::simple_lxy(int flag, double d1, double d2, double phi1, double phi2,
520  double pt1, double pt2, double vx, double vy) const
521 {
522  double simple = -99999.;
523  double den = sin(phi2-phi1);
524 
525  //require minimum opening angle of 1 microradian.
526  if(fabs(phi1 - phi2) < 1e-6) return simple;
527  if(fabs(den) < 1e-6) return simple;
528 
529  double simpleXv = (-d2*cos(phi1) + d1*cos(phi2)) / den;
530  double simpleYv = (-d2*sin(phi1) + d1*sin(phi2)) / den;
531  double argxy = (simpleXv-vx)*(simpleXv-vx) + (simpleYv-vy)*(simpleYv-vy);
532 
533  if(argxy < 0) return simple;
534 
535  double rxy = sqrt(argxy);
536 
537  double f1 = (fabs(pt1)*cos(phi1)+fabs(pt2)*cos(phi2));
538  double f2 = (fabs(pt1)*sin(phi1)+fabs(pt2)*sin(phi2));
539  double argm = f1*f1 + f2*f2;
540 
541  if(argm < 0) return simple;
542 
543  double c = sqrt( argm );
544 
545  if ( fabs(c) < 1e-6 ) return simple;
546 
547  double a = (simpleXv-vx)*f1;
548  double b = (simpleYv-vy)*f2;
549 
550  if (flag == 1)
551  return rxy;
552  else
553  return (a+b)/c;
554 }
grepfile.info
info
Definition: grepfile.py:38
TrigEgammaMonitorTagAndProbeAlgorithm::m_anatype
Gaudi::Property< std::string > m_anatype
analysis name
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:91
TrigEgammaMonitorAnalysisAlgorithm::fillEfficiencies
void fillEfficiencies(const std::vector< std::pair< const xAOD::Egamma *, const TrigCompositeUtils::Decision * > > &, const TrigInfo &) const
Definition: TrigEgammaMonitorAnalysisAlgorithm.cxx:42
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
python.TIDAMonTool.monGroup
def monGroup(analysis_chain)
Definition: TIDAMonTool.py:295
TrigEgammaMonitorBaseAlgorithm::isIsolated
bool isIsolated(const xAOD::Electron *, const std::string &) const
Check if electron fulfils isolation criteria.
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:112
TrigEgammaMonitorBaseAlgorithm::dR
float dR(const float, const float, const float, const float) const
Get delta R.
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:272
TrigEgammaMonitorTagAndProbeAlgorithm::m_trigInputList
Gaudi::Property< std::vector< std::string > > m_trigInputList
Properties.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:63
TrigEgammaMonitorBaseAlgorithm::getTrigInfoMap
const std::map< std::string, TrigInfo > & getTrigInfoMap()
Helper methods.
Definition: TrigEgammaMonitorBaseAlgorithm.h:127
TrigEgammaMonitorTagAndProbeAlgorithm::m_doJpsiee
Gaudi::Property< bool > m_doJpsiee
do jpsiee tag and probe
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:89
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ParticleTest.eg
eg
Definition: ParticleTest.py:29
_triginfo
Definition: TrigEgammaMonitorBaseAlgorithm.h:42
Trig
The common trigger namespace for trigger analysis tools.
Definition: CaloTowerVecMon.h:44
TrigEgammaMonitorTagAndProbeAlgorithm::isGoodProbeElectron
bool isGoodProbeElectron(const ToolHandle< GenericMonitoringTool > &monGroup, const xAOD::Electron *el, const xAOD::JetContainer *) const
Probe selection.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:405
TrigEgammaMonitorTagAndProbeAlgorithm::m_ZeeMassMin
Gaudi::Property< float > m_ZeeMassMin
Zee lower mass cut.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:67
TrigEgammaMonitorTagAndProbeAlgorithm::TrigEgammaMonitorTagAndProbeAlgorithm
TrigEgammaMonitorTagAndProbeAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:36
TrigEgammaMonitorTagAndProbeAlgorithm::m_ZeeMassMax
Gaudi::Property< float > m_ZeeMassMax
Zee upper mass cut.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:69
TrigEgammaMonitorTagAndProbeAlgorithm::m_jetKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetKey
Jet container for probe selection.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:95
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
TrigEgammaMonitorTagAndProbeAlgorithm::simple_lxy
double simple_lxy(int, double, double, double, double, double, double, double, double) const
Calculate the displacement of the Jpsi vertex w.r.t.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:519
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:77
TrigEgammaMonitorTagAndProbeAlgorithm::dressPid
void dressPid(const xAOD::Electron *eg) const
Rerun offline selection.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:464
CutsMETMaker::accept
StatusCode accept(const xAOD::Muon *mu)
Definition: CutsMETMaker.cxx:18
TrigEgammaMonitorAnalysisAlgorithm::fillDistributions
void fillDistributions(const std::vector< std::pair< const xAOD::Egamma *, const TrigCompositeUtils::Decision * > > &, const TrigInfo &) const
Definition: TrigEgammaMonitorAnalysisAlgorithm.cxx:407
xAOD::CaloCluster_v1::m
virtual double m() const
The invariant mass of the particle.
Definition: CaloCluster_v1.cxx:261
TrigEgammaMonitorTagAndProbeAlgorithm::m_offTagTightness
Gaudi::Property< std::string > m_offTagTightness
Define the PID for tag electron.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:71
dq_defect_virtual_defect_validation.d1
d1
Definition: dq_defect_virtual_defect_validation.py:79
TrigEgammaMonitorTagAndProbeAlgorithm::m_eventInfoDecorKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:96
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
xAOD::Electron_v1::trackParticle
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
Definition: Electron_v1.cxx:55
xAOD::EgammaParameters::BADCLUSELECTRON
const uint32_t BADCLUSELECTRON
Definition: EgammaDefs.h:116
boost
Definition: DVLIterator.h:29
TrigEgammaMonitorBaseAlgorithm::tdt
const ToolHandle< Trig::TrigDecisionTool > & tdt() const
Get the TDT
Definition: TrigEgammaMonitorBaseAlgorithm.h:133
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
TrigEgammaMonitorTagAndProbeAlgorithm::~TrigEgammaMonitorTagAndProbeAlgorithm
virtual ~TrigEgammaMonitorTagAndProbeAlgorithm() override
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:43
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
xAOD::TrackParticle_v1::d0
float d0() const
Returns the parameter.
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
LArEventBitInfo.h
TrigEgammaMonitorTagAndProbeAlgorithm::m_offElectronKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_offElectronKey
Event Wise offline ElectronContainer Access and end iterator.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:93
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
read_hist_ntuple.f2
f2
Definition: read_hist_ntuple.py:20
TrigEgammaMonitorBaseAlgorithm::m_dnnname
Gaudi::Property< std::vector< std::string > > m_dnnname
dnn names
Definition: TrigEgammaMonitorBaseAlgorithm.h:117
TrigEgammaMonitorAnalysisAlgorithm::fillResolutions
void fillResolutions(const std::vector< std::pair< const xAOD::Egamma *, const TrigCompositeUtils::Decision * >> &pairObjs, const TrigInfo &info) const
*****************************************************************************************************...
Definition: TrigEgammaMonitorAnalysisAlgorithm.cxx:914
TrigEgammaMonitorBaseAlgorithm::isHLTTruncated
bool isHLTTruncated() const
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:733
LArEventBitInfo::NOISEBURSTVETO
@ NOISEBURSTVETO
Definition: LArEventBitInfo.h:13
TrigEgammaMonitorBaseAlgorithm::getTrigInfo
TrigInfo getTrigInfo(const std::string &) const
Get the trigger info parsed from the chain name (only single lepton triggers)
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:583
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
TrigEgammaMonitorTagAndProbeAlgorithm::m_tagMinEt
Gaudi::Property< float > m_tagMinEt
Minimum tag Et.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:77
SG::Decorator< bool >
TrigEgammaMonitorBaseAlgorithm::setTrigInfo
void setTrigInfo(const std::string &)
Set the trigger info parsed from the chain name.
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:591
TrigEgammaMonitorTagAndProbeAlgorithm::matchObjects
void matchObjects(const std::string &trigItem, std::vector< std::shared_ptr< const xAOD::Electron >> &, std::vector< std::pair< const xAOD::Egamma *, const TrigCompositeUtils::Decision * >> &) const
Match probes called by derived classes.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:290
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
TrigEgammaMonitorTagAndProbeAlgorithm::m_applyMinimalTrigger
Gaudi::Property< bool > m_applyMinimalTrigger
Enable the requirement of triggers.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:85
master.flag
bool flag
Definition: master.py:29
TrigEgammaMonitorTagAndProbeAlgorithm::executeTandP
bool executeTandP(const EventContext &ctx, std::vector< std::shared_ptr< const xAOD::Electron >> &) const
Tag and Probe method called by derived classes.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:131
xAOD::Egamma_v1::caloCluster
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
Definition: Egamma_v1.cxx:388
TrigEgammaMonitorTagAndProbeAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:47
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
TrigEgammaMonitorTagAndProbeAlgorithm::minimalTriggerRequirement
bool minimalTriggerRequirement() const
at least one chain should pass.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:276
TrigEgammaMonitorTagAndProbeAlgorithm::getPseudoLifetime
float getPseudoLifetime(const xAOD::Electron *, const xAOD::Electron *) const
Return pseudo-lifetime of Jpsi.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:491
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
TrigEgammaMonitorBaseAlgorithm::m_electronIsEMTool
ToolHandleArray< IAsgElectronIsEMSelector > m_electronIsEMTool
Offline isEM Selectors.
Definition: TrigEgammaMonitorBaseAlgorithm.h:94
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:52
TrigEgammaMonitorTagAndProbeAlgorithm::m_rmCrack
Gaudi::Property< bool > m_rmCrack
Remove crack region for Probe default True.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:83
TrigEgammaMonitorBaseAlgorithm::m_electronLHTool
ToolHandleArray< IAsgElectronLikelihoodTool > m_electronLHTool
Offline LH Selectors.
Definition: TrigEgammaMonitorBaseAlgorithm.h:96
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrigEgammaMonitorTagAndProbeAlgorithm::m_electronIsolationKeyPtCone20
SG::ReadDecorHandleKey< xAOD::ElectronContainer > m_electronIsolationKeyPtCone20
Ensure offline electron isolation decoration is retrieved after being created.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:98
TrigEgammaMonitorBaseAlgorithm::m_isemname
Gaudi::Property< std::vector< std::string > > m_isemname
isem names
Definition: TrigEgammaMonitorBaseAlgorithm.h:113
TrigEgammaMonitorTagAndProbeAlgorithm::m_trigList
std::vector< std::string > m_trigList
List of triggers from menu after filter.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:40
xAOD::CaloCluster_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle (negative for negative-energy clusters)
Definition: CaloCluster_v1.cxx:247
TrigEgammaMonitorBaseAlgorithm::ApplyElectronPid
bool ApplyElectronPid(const xAOD::Electron *eg, const std::string &) const
Get offline electron decision.
Definition: TrigEgammaMonitorBaseAlgorithm.cxx:49
TrigEgammaMonitorAnalysisAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigEgammaMonitorAnalysisAlgorithm.cxx:17
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
plotBeamSpotMon.b
b
Definition: plotBeamSpotMon.py:77
xAOD::Electron_v1
Definition: Electron_v1.h:34
TrigEgammaMonitorBaseAlgorithm::match
const ToolHandle< TrigEgammaMatchingToolMT > & match() const
Get the e/g match tool.
Definition: TrigEgammaMonitorBaseAlgorithm.h:135
TrigEgammaMonitorAnalysisAlgorithm::fillLabel
void fillLabel(const ToolHandle< GenericMonitoringTool > &groupHandle, const std::string &histname, const std::string &label) const
Definition: TrigEgammaMonitorAnalysisAlgorithm.cxx:30
TrigEgammaMonitorBaseAlgorithm::m_lhname
Gaudi::Property< std::vector< std::string > > m_lhname
lh names
Definition: TrigEgammaMonitorBaseAlgorithm.h:115
TrigEgammaMonitorBaseAlgorithm::m_electronDNNTool
ToolHandleArray< IAsgElectronLikelihoodTool > m_electronDNNTool
Offline DNN Selectors.
Definition: TrigEgammaMonitorBaseAlgorithm.h:98
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
a
TList * a
Definition: liststreamerinfos.cxx:10
TrigEgammaMonitorTagAndProbeAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:72
dq_defect_virtual_defect_validation.d2
d2
Definition: dq_defect_virtual_defect_validation.py:81
TauGNNUtils::Variables::absEta
bool absEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:232
xAOD::EventInfo_v1::errorState
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
Definition: EventInfo_v1.cxx:817
xAOD::EventInfo_v1::isEventFlagBitSet
bool isEventFlagBitSet(EventFlagSubDet subDet, size_t bit) const
Check one particular bit of one particular sub-detector.
Definition: EventInfo_v1.cxx:703
TrigEgammaMonitorTagAndProbeAlgorithm::isTagElectron
bool isTagElectron(const ToolHandle< GenericMonitoringTool > &monGroup, const xAOD::Electron *el) const
Tag Electron selection.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.cxx:305
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
TrigEgammaMonitorTagAndProbeAlgorithm::m_applyJetNearProbeSelection
Gaudi::Property< bool > m_applyJetNearProbeSelection
Apply nearby jet selection.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:87
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
ReadHandle.h
Handle class for reading from StoreGate.
TrigEgammaMonitorAnalysisAlgorithm
Definition: TrigEgammaMonitorAnalysisAlgorithm.h:11
TrigEgammaMonitorTagAndProbeAlgorithm::m_tagTrigList
Gaudi::Property< std::vector< std::string > > m_tagTrigList
Tag trigger list.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:65
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
python.compressB64.c
def c
Definition: compressB64.py:93
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
Decorator.h
Helper class to provide type-safe access to aux data.
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
TrigEgammaMonitorTagAndProbeAlgorithm::m_oppositeCharge
Gaudi::Property< bool > m_oppositeCharge
Select opposite or same-sign pairs – for background studies.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:75
AthMonitorAlgorithm::getGroup
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Definition: AthMonitorAlgorithm.cxx:164
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
TrigEgammaMonitorTagAndProbeAlgorithm.h
read_hist_ntuple.f1
f1
Definition: read_hist_ntuple.py:4
TrigEgammaMonitorTagAndProbeAlgorithm::m_offProbeIsolation
Gaudi::Property< std::string > m_offProbeIsolation
Probe isolation.
Definition: TrigEgammaMonitorTagAndProbeAlgorithm.h:81