ATLAS Offline Software
Macros | Functions
TauAnalysisToolsExample.cxx File Reference
#include <memory>
#include <cstdlib>
#include <iostream>
#include <TFile.h>
#include <TError.h>
#include <TString.h>
#include "xAODCore/ShallowCopy.h"
#include "xAODEventInfo/EventInfo.h"
#include "xAODTau/TauJetContainer.h"
#include "xAODTau/TauJetAuxContainer.h"
#include "AsgTools/ToolHandle.h"
#include "TauAnalysisTools/TauEfficiencyCorrectionsTool.h"
#include "TauAnalysisTools/TauSelectionTool.h"
#include "TauAnalysisTools/TauSmearingTool.h"
#include "TauAnalysisTools/TauTruthMatchingTool.h"
#include "TauAnalysisTools/TauTruthTrackMatchingTool.h"
#include "PileupReweighting/PileupReweightingTool.h"
#include "xAODCore/tools/IOStats.h"
#include "xAODCore/tools/ReadStats.h"

Go to the source code of this file.

Macros

#define CHECK(ARG)
 
#define RETRIEVE(TYPE, CONTAINER, NAME)
 

Functions

int main (int argc, char *argv[])
 

Macro Definition Documentation

◆ CHECK

#define CHECK (   ARG)
Value:
do { \
const bool result = ARG; \
if( ! result ) { \
::Error( "TauAnalysisToolsExample", "Failed to execute: \"%s\"", \
#ARG ); \
return 1; \
} \
} while( false )

Definition at line 46 of file TauAnalysisToolsExample.cxx.

◆ RETRIEVE

#define RETRIEVE (   TYPE,
  CONTAINER,
  NAME 
)
Value:
do { \
if (xEvent.contains<TYPE>(NAME)) \
CHECK( xEvent.retrieve( CONTAINER, NAME ) ); \
else \
Warning("TauAnalysisToolsExample","%s container is not available", NAME); \
} while(false) \

Definition at line 56 of file TauAnalysisToolsExample.cxx.

Function Documentation

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 63 of file TauAnalysisToolsExample.cxx.

64 {
65  StatusCode::enableFailure();
66 
67  // Check if we received a file name:
68  if( argc < 2 )
69  {
70  Error( "TauAnalysisToolsExample", "No file name received!" );
71  Error( "TauAnalysisToolsExample", " Usage: %s [xAOD file name]", "TauAnalysisToolsExample" );
72  return 1;
73  }
74 
75  // Initialise the application:
76  CHECK( xAOD::Init( "TauAnalysisToolsExample" ) );
77 
78  // Open the input file:
79  const TString sInputFileName = argv[ 1 ];
80  Info( "TauAnalysisToolsExample", "Opening input file: %s", sInputFileName.Data() );
81  std::unique_ptr< TFile > fInputFile( TFile::Open( sInputFileName, "READ" ) );
82  CHECK( fInputFile.get() );
83 
84  // Create the output file:
85  TString sOutputFileName = "output.root";
86  if (argc>3)
87  sOutputFileName = TString(argv[3]);
88 
89  //Do the trigger efficiency tools, requires correct ilumicalc
90  bool m_doTrigger = bool(argc>4);
91 
92  Info( "TauAnalysisToolsExample", "Opening output file: %s", sOutputFileName.Data() );
93  std::unique_ptr< TFile > fOutputFile( TFile::Open( sOutputFileName, "RECREATE" ) );
94  CHECK( fOutputFile.get() );
95 
96  // Create a TEvent object:
97  // xAOD::TEvent xEvent( xAOD::TEvent::kClassAccess );
99  CHECK( xEvent.readFrom( fInputFile.get() ) );
100 
101  // Connect TEvent with output file :
102  CHECK( xEvent.writeTo( fOutputFile.get() ) );
103 
104  Info( "TauAnalysisToolsExample", "Number of events in the file: %i",
105  static_cast< int >( xEvent.getEntries() ) );
106 
107  // Decide how many events to run over:
108  Long64_t iEntries = xEvent.getEntries();
109  if( argc > 2 )
110  {
111  const Long64_t iMaxEntries = atoll( argv[ 2 ] );
112  if( iMaxEntries < iEntries )
113  {
114  iEntries = iMaxEntries;
115  }
116  }
117 
118  // defining needed Container
119  const xAOD::EventInfo* xEventInfo = 0;
120  const xAOD::TauJetContainer* xTauJetContainer = 0;
121 
122  CP::PileupReweightingTool* m_tPRWTool = new CP::PileupReweightingTool("PileupReweightingTool");
123  if (m_doTrigger){//dont initialize tool if not requested
124  std::vector<std::string> vLumiCalcFiles = {"/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data15_13TeV/20200803/ilumicalc_histograms_None_282026-282457_OflLumi-13TeV-009.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data16_13TeV/20190708/ilumicalc_histograms_None_297730-311481_OflLumi-13TeV-010.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data18_13TeV/20190318/ilumicalc_histograms_None_348885-364292_OflLumi-13TeV-010.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data22_13p6TeV/20221025/ilumicalc_histograms_None_428648-436169_OflLumi-Run3-001.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data22_13p6TeV/20221025/ilumicalc_histograms_None_430536-436169_OflLumi-Run3-001.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/20190609/ilumicalc_histograms_None_276262-284484_OflLumi-13TeV-010.root","/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/20190609/ilumicalc_histograms_None_325713-340453_OflLumi-13TeV-010.root"};
125  CHECK(m_tPRWTool->setProperty("LumiCalcFiles", vLumiCalcFiles));
126  // CHECK(m_tPRWTool->setProperty("DefaultChannel", "" ));
127  CHECK(m_tPRWTool->initialize());
128  }
129  ToolHandle<CP::IPileupReweightingTool> m_tPRWToolHandle = m_tPRWTool;
130  // ===========================================================================
131  // TauSelectionTool
132  // ===========================================================================
133  TauAnalysisTools::TauSelectionTool* TauSelTool = new TauAnalysisTools::TauSelectionTool( "TauSelectionTool" );
134  TauSelTool->msg().setLevel( MSG::DEBUG );
135  // preparation for control hisograms
136  TauSelTool->setOutFile( fOutputFile.get() );
137  CHECK(TauSelTool->setProperty("CreateControlPlots", true ));
138  CHECK(TauSelTool->setProperty("JetIDWP", int(JETIDRNNMEDIUM) ));
139  CHECK(TauSelTool->setProperty("EleIDWP", int(ELEIDRNNLOOSE) ));
140  CHECK(TauSelTool->setProperty("EleIDVersion", 1 ));
141  CHECK(TauSelTool->setProperty("PtMin", 20. ));
142  CHECK(TauSelTool->setProperty("ConfigPath", "" ));
143  CHECK(TauSelTool->setProperty("SelectionCuts", int(CutPt|CutJetIDWP|CutEleIDWP) ));
144  CHECK(TauSelTool->initialize());
145 
146  ToolHandle<TauAnalysisTools::ITauSelectionTool> TauSelToolHandle = TauSelTool;
147 
148  // ===========================================================================
149  // TauSmearingTool
150  // ===========================================================================
151  TauAnalysisTools::TauSmearingTool TauSmeTool( "TauSmearingTool" );
152  TauSmeTool.msg().setLevel( MSG::DEBUG );
153  CHECK(TauSmeTool.setProperty("RecommendationTag","2022-prerec"));
154  CHECK(TauSmeTool.setProperty("Campaign","mc21"));
155  CHECK(TauSmeTool.initialize());
156 
157  // restructure all recommended systematic variations for smearing tool
158  std::vector<CP::SystematicSet> vSmearingSystematicSet;
159  for (auto SystematicsVariation : TauSmeTool.recommendedSystematics())
160  {
161  vSmearingSystematicSet.push_back(CP::SystematicSet());
162  vSmearingSystematicSet.back().insert(SystematicsVariation);
163  }
164 
165  // ===========================================================================
166  // TauEfficiencyCorrectionsTool
167  // ===========================================================================
168  TauAnalysisTools::TauEfficiencyCorrectionsTool TauEffCorrTool( "TauEfficiencyCorrectionsTool" );
169  TauEffCorrTool.msg().setLevel( MSG::VERBOSE );
170  CHECK(TauEffCorrTool.setProperty("TauSelectionTool",TauSelToolHandle));
171  CHECK(TauEffCorrTool.setProperty("RecommendationTag","2022-prerec"));
172  CHECK(TauEffCorrTool.initialize());
173 
174  // restructure all recommended systematic variations for efficiency tools
175  std::vector<CP::SystematicSet> vEfficiencyCorrectionsSystematicSet;
176  vEfficiencyCorrectionsSystematicSet.push_back(CP::SystematicSet());
177  for (auto SystematicsVariation : TauEffCorrTool.recommendedSystematics())
178  {
179  vEfficiencyCorrectionsSystematicSet.push_back(CP::SystematicSet());
180  vEfficiencyCorrectionsSystematicSet.back().insert(SystematicsVariation);
181  }
182 
183  // ===========================================================================
184  // TauEfficiencyCorrectionsTriggerTool
185  // ===========================================================================
186  TauAnalysisTools::TauEfficiencyCorrectionsTool TauEffTrigTool( "TauEfficiencyCorrectionsTriggerTool" );
187  // restructure all recommended systematic variations for efficiency tools
188  std::vector<CP::SystematicSet> vEfficiencyCorrectionsTriggerSystematicSet;
189  if (m_doTrigger){
190 
191  TauEffTrigTool.msg().setLevel( MSG::DEBUG );
192  CHECK(TauEffTrigTool.setProperty("EfficiencyCorrectionTypes", std::vector<int>({SFTriggerHadTau}) ));
193  CHECK(TauEffTrigTool.setProperty("TriggerName", "HLT_tau25_medium1_tracktwo" ));
194  CHECK(TauEffTrigTool.setProperty("JetIDLevel", (int)JETIDRNNTIGHT ));
195  CHECK(TauEffTrigTool.setProperty("PileupReweightingTool", m_tPRWToolHandle ));
196  CHECK(TauEffTrigTool.setProperty("TriggerSFMeasurement", "combined"));
197  CHECK(TauEffTrigTool.initialize());
198 
199  vEfficiencyCorrectionsTriggerSystematicSet.push_back(CP::SystematicSet());
200  for (auto SystematicsVariation : TauEffTrigTool.recommendedSystematics())
201  {
202  vEfficiencyCorrectionsTriggerSystematicSet.push_back(CP::SystematicSet());
203  vEfficiencyCorrectionsTriggerSystematicSet.back().insert(SystematicsVariation);
204  }
205  }
206  // ===========================================================================
207  // TauTruthMatchingTool
208  // ===========================================================================
209  TauAnalysisTools::TauTruthMatchingTool T2MT( "TauTruthMatchingTool");
210  T2MT.msg().setLevel( MSG::INFO );
211  CHECK(T2MT.setProperty("TruthJetContainerName", "AntiKt4TruthDressedWZJets"));
212  CHECK(T2MT.initialize());
213 
214  // ===========================================================================
215  // TauTruthTrackMatchingTool
216  // ===========================================================================
217  TauAnalysisTools::TauTruthTrackMatchingTool T3MT( "TauTruthTrackMatchingTool");
218  T3MT.msg().setLevel( MSG::INFO );
219  CHECK(T3MT.initialize());
220 
221  // Loop over the events:
222  for( Long64_t iEntry = 0; iEntry < iEntries; ++iEntry )
223  {
224 
225  //Check TauJet Container Name
226  const char * m_tauJetContainerName = "TauJets";
227 
228 
229 
230  // Tell the object which entry to look at:
231  xEvent.getEntry( iEntry );
232 
233  // Print some event information for fun:
234  RETRIEVE(xAOD::EventInfo, xEventInfo, "EventInfo");
235  if (xEventInfo)
236  Info( "TauAnalysisToolsExample",
237  "===>>> start processing event #%i, "
238  "run #%i %i events processed so far <<<===",
239  static_cast< int >( xEventInfo->eventNumber() ),
240  static_cast< int >( xEventInfo->runNumber() ),
241  static_cast< int >( iEntry ) );
242 
243  if (xEvent.contains<xAOD::TauJetContainer>(m_tauJetContainerName)){
244  RETRIEVE(xAOD::TauJetContainer, xTauJetContainer, m_tauJetContainerName);
245  }else{
246  m_tauJetContainerName = "AnalysisTauJets";
247  RETRIEVE(xAOD::TauJetContainer, xTauJetContainer, m_tauJetContainerName);
248  }
249  std::pair< xAOD::TauJetContainer*, xAOD::ShallowAuxContainer* >xTauShallowContainer = xAOD::shallowCopyContainer(*xTauJetContainer);
250  if(iEntry==0){
251  Info( "TauAnalysisToolsExample:: TauJetContainer = ",m_tauJetContainerName);
252  }
253 
254  // // copy truth particles to get truthparticle link for truth taus to work
255  if (xEvent.contains<xAOD::TruthParticleContainer>("TruthParticles"))
256  CHECK( xEvent.copy("TruthParticles") );
257 
258  // copy taus
259  CHECK( xEvent.copy(m_tauJetContainerName) );
260 
261  // copy tracks
262  CHECK( xEvent.copy("InDetTrackParticles") );
263 
264  // Print tau properties, using the tools:
265  for ( auto xTau : *xTauShallowContainer.first )
266  {
267  // perform truth matching
268  auto xTruthTau = T2MT.getTruth(*xTau);
269  // if (xTau->pt() < 25*1000) continue;
270 
271  if ((bool)xTau->auxdata<char>("IsTruthMatched"))
272  {
273  if (xTruthTau->isTau())
274  {
275  if ((bool)xTruthTau->auxdata<char>("IsHadronicTau"))
276  Info( "TauAnalysisToolsExample",
277  "Tau was matched to a truth hadronic tau, which has %i prongs and a charge of %i",
278  int(xTruthTau->auxdata<size_t>("numCharged")),
279  int(xTruthTau->charge()));
280  else
281  Info( "TauAnalysisToolsExample",
282  "Tau was matched to a truth leptonic tau, which has a charge of %i",
283  int(xTruthTau->charge()));
284  }
285  else if (xTruthTau->isElectron())
286  Info( "TauAnalysisToolsExample",
287  "Tau was matched to a truth electron");
288  else if (xTruthTau->isMuon())
289  Info( "TauAnalysisToolsExample",
290  "Tau was matched to a truth muon");
291  }
292  else
293  Info( "TauAnalysisToolsExample", "Tau was not matched to truth" );
294 
295  auto xTruthJetLink = xTau->auxdata< ElementLink< xAOD::JetContainer > >("truthJetLink");
296  if (xTruthJetLink.isValid())
297  {
298  const xAOD::Jet* xTruthJet = *xTruthJetLink;
299  Info( "TauAnalysisToolsExample",
300  "Tau was matched to a truth jet, which has pt=%g, eta=%g, phi=%g, m=%g",
301  xTruthJet->p4().Pt(),
302  xTruthJet->p4().Eta(),
303  xTruthJet->p4().Phi(),
304  xTruthJet->p4().M());
305  }
306  else
307  Info( "TauAnalysisToolsExample", "Tau was not matched to truth jet" );
308 
309  Info( "TauAnalysisToolsExample",
310  "Un-Smeared tau pt: %g ",
311  xTau->ptFinalCalib());
312  CHECK( TauSmeTool.applyCorrection(*xTau) );
313  Info( "TauAnalysisToolsExample",
314  "Smeared tau pt: %g ",
315  xTau->pt());
316 
317  for (auto sSystematicSet: vSmearingSystematicSet)
318  {
319  CHECK( TauSmeTool.applySystematicVariation(sSystematicSet)) ;
320  CHECK( TauSmeTool.applyCorrection(*xTau) );
321  //Skip TES uncertainty print out for non-had taus
322  if ((bool)xTau->auxdata<char>("IsTruthMatched") && xTruthTau->isTau() && (bool)xTruthTau->auxdata<char>("IsHadronicTau")){
323  Info( "TauAnalysisToolsExample",
324  "Smeared tau pt: %g for type %s ",
325  xTau->pt(),
326  sSystematicSet.name().c_str());
327  }
328  }
329 
330  // Select "good" taus:
331  if( ! TauSelTool->accept( *xTau ) ){
332  Info( "TauAnalysisToolsExample",
333  "Tau does not pass selection tool: pt %g ",
334  xTau->pt());
335  continue;
336  }
337 
338  for (auto sSystematicSet: vEfficiencyCorrectionsSystematicSet)
339  {
340  CHECK( TauEffCorrTool.applySystematicVariation(sSystematicSet));
341  CHECK( TauEffCorrTool.applyEfficiencyScaleFactor(*xTau) );
342  Info( "TauAnalysisToolsExample",
343  "SystType %s: RecoSF: %g JetIDSF: %g EleOLRSFHadTau: %g EleRNNSFElectron: %g",
344  sSystematicSet.name().c_str(),
345  xTau->auxdata< double >( "TauScaleFactorReconstructionHadTau" ),
346  xTau->auxdata< double >( "TauScaleFactorJetIDHadTau" ),
347  xTau->auxdata< double >( "TauScaleFactorEleIDHadTau" ),
348  xTau->auxdata< double >( "TauScaleFactorEleIDElectron" ));
349  }
350 
351  for (auto sSystematicSet: vEfficiencyCorrectionsTriggerSystematicSet)
352  {
353  CHECK( TauEffTrigTool.applySystematicVariation(sSystematicSet));
354  CHECK( TauEffTrigTool.applyEfficiencyScaleFactor(*xTau) );
355  Info( "TauAnalysisToolsExample",
356  "SystType %s: Trigger: %g",
357  sSystematicSet.name().c_str(),
358  xTau->auxdata< double >( "TauScaleFactorTriggerHadTau" ));
359  }
360  // print some info about the selected tau:
361  Info( "TauAnalysisToolsExample", "Selected tau: pt = %g MeV, eta = %g, phi = %g, prong = %i, charge = %i",
362  xTau->pt(), xTau->eta(), xTau->phi(), int(xTau->nTracks()), int(xTau->charge()));
363 
364 
365  // for (size_t iTrack = 1; iTrack < xTau->nTracks(); iTrack++)
366  // {
367  // const TAUTRACKPARTICLE* xTrack = xTau->track(iTrack);
368 
369  // CHECK(T3MT.classifyTrack(*xTrack));
370  // if (xTrack->auxdata<char>("IsHadronicTrack"))
371  // Info( "TauAnalysisToolsExample", "Track is matched to a hadronic tau decay, with decay depth %i",xTrack->auxdata<int>("IsHadronicTrackDecayDepth"));
372  // else
373  // Info( "TauAnalysisToolsExample", "Track is not matched to a hadronic tau decay");
374  // Info ("TauAnalysisToolsExample", "The track decay history is: %s", (xTrack->auxdata<std::string>("DecayHistory")).c_str());
375  // Info ("TauAnalysisToolsExample", "The spurious type is: %i", xTrack->auxdata<int>("TrackType") );
376  // }
377  }
378  if (xTauJetContainer->empty())
379  CHECK (T2MT.retrieveTruthTaus());
380  xEvent.fill();
381  }
382 
383  TauSelTool->writeControlHistograms();
384  delete TauSelTool;
385  CHECK( xEvent.finishWritingTo(fOutputFile.get()));
386  fOutputFile.get()->Close();
387  Info( "TauAnalysisToolsExample", "Finished writing to file: %s", sOutputFileName.Data() );
388 
389  // smart slimming
391 
392  return 0;
393 }
get_generator_info.result
result
Definition: get_generator_info.py:21
TauAnalysisTools::TauTruthTrackMatchingTool
Definition: TauTruthTrackMatchingTool.h:42
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
xAOD::IOStats::stats
ReadStats & stats()
Access the object belonging to the current thread.
Definition: IOStats.cxx:17
TauAnalysisTools::JETIDRNNTIGHT
@ JETIDRNNTIGHT
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:22
TauAnalysisTools::TauSelectionTool
Definition: TauSelectionTool.h:53
TauAnalysisTools::JETIDRNNMEDIUM
@ JETIDRNNMEDIUM
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:21
xAOD::TEvent::kAthenaAccess
@ kAthenaAccess
Access containers/objects like Athena does.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:98
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
CHECK
#define CHECK(ARG)
Definition: TauAnalysisToolsExample.cxx:45
TauAnalysisTools::TauSelectionTool::setOutFile
virtual void setOutFile(TFile *fOutFile) override
Set output file for control histograms.
Definition: TauSelectionTool.cxx:468
TauAnalysisTools::TauSelectionTool::initialize
virtual StatusCode initialize() override
Function initialising the tool.
Definition: TauSelectionTool.cxx:72
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
TauAnalysisTools::CutJetIDWP
@ CutJetIDWP
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:47
ZDCMsg::Info
@ Info
Definition: ZDCMsg.h:20
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TauAnalysisTools::ELEIDRNNLOOSE
@ ELEIDRNNLOOSE
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:33
TauAnalysisTools::TauSmearingTool
Definition: TauSmearingTool.h:32
TauAnalysisTools::TauEfficiencyCorrectionsTool
Definition: TauEfficiencyCorrectionsTool.h:34
TauAnalysisTools::TauSelectionTool::writeControlHistograms
virtual void writeControlHistograms() override
Write control histograms to output file.
Definition: TauSelectionTool.cxx:474
TauAnalysisTools::TauTruthMatchingTool
Definition: TauTruthMatchingTool.h:25
CP::PileupReweightingTool
Implementation of the PileupReweighting tool.
Definition: PileupReweightingTool.h:34
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
CP::PileupReweightingTool::initialize
virtual StatusCode initialize()
Function initialising the tool.
Definition: PileupReweightingTool.cxx:169
xAOD::IOStats::instance
static IOStats & instance()
Singleton object accessor.
Definition: IOStats.cxx:11
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::ReadStats::printSmartSlimmingBranchList
void printSmartSlimmingBranchList(bool autoIncludeLinks=false) const
Print the accessed variables, formatted for smart slimming.
TYPE
#define TYPE(CODE, TYP, IOTYP)
TauAnalysisTools::TauSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const override
Get the decision using a generic IParticle pointer.
Definition: TauSelectionTool.cxx:383
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
TauAnalysisTools::CutEleIDWP
@ CutEleIDWP
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:49
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
xAOD::Jet_v1::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: Jet_v1.cxx:71
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
RETRIEVE
#define RETRIEVE(TYPE, CONTAINER, NAME)
Definition: TauAnalysisToolsExample.cxx:55
TauAnalysisTools::CutPt
@ CutPt
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/TauAnalysisTools/Enums.h:42
python.Constants.VERBOSE
int VERBOSE
Definition: Control/AthenaCommon/python/Constants.py:14
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
xAOD::TEvent
Tool for accessing xAOD files outside of Athena.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:81
xAOD::Init
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
Definition: Init.cxx:31