ATLAS Offline Software
run_evtselection_tool_test.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifdef XAOD_STANDALONE
6 #include <memory>
7 #include <string>
8 #include "xAODRootAccess/Init.h"
10 #include "AsgMessaging/Check.h"
11 #include "CxxUtils/make_unique.h"
16 #include "TError.h"
17 #include "TFile.h"
18 
19 using std::string;
20 using std::unique_ptr;
22 
23 int main(int argc, char* argv[])
24 {
25  string appName = argv[0];
26  if( !xAOD::Init(appName.data()).isSuccess() ) {
27  Error( appName.data(), "Could not call xAOD::Init()" );
28  return 1;
29  }
30 
31  string fileName;
32  // Check if we received a file name:
33  if( argc < 2 ) {
34  fileName = getenv("ROOTCORE_TEST_FILE");
35  if (fileName.empty()) {
36  Error( appName.data(), "No file name received!" );
37  Error( appName.data(), " Usage: %s [xAOD file name]", appName.data() );
38  return 1;
39  }
40  } else {
41  fileName = argv[ 1 ];
42  }
43 
44  unique_ptr<TFile> fin( TFile::Open( fileName.data(), "READ" ) );
45 
46  auto event = make_unique<xAOD::TEvent>( fin.get(), xAOD::TEvent::kClassAccess );
47  Long64_t entries = event->getEntries();
48  Info( appName.data(), "Number of events in file: %llu", entries );
49 
50  auto eventSelTool = make_unique< HI::HIEventSelectionTool >("EventSelectionTool");
51 
52  auto vertexSelTool = make_unique< HI::HIVertexSelectionTool >("vertexSelectionTool");
53 
54  auto vtxTrkTool = make_unique<InDet::InDetTrackSelectionTool>("vtxTrkTool", "HILoose");
55  ToolHandle< InDet::IInDetTrackSelectionTool > vtxTrkToolHandle = vtxTrkTool.get();
56  ASG_CHECK_SA( appName, vtxTrkTool->initialize() );
57  ASG_CHECK_SA( appName, vertexSelTool->setProperty( "TrackSelectionTool", vtxTrkToolHandle ) );
58 
59  ToolHandle< HI::IHIVertexSelectionTool > vertexSelToolHandle = vertexSelTool.get();
60 
61  ASG_CHECK_SA( appName, vertexSelTool->initialize() );
62  ASG_CHECK_SA( appName, eventSelTool->setProperty( "VertexSelectionTool", vertexSelToolHandle ) );
63  //ASG_CHECK_SA( appName, eventSelTool->setProperty( "TimeCut", 5 ) );
64 
65  ASG_CHECK_SA( appName, eventSelTool->initialize() );
66 
67  Long64_t nVtxPass = 0;
68  Long64_t nVtxFail = 0;
69  Long64_t nEvtPass = 0;
70  Long64_t nEvtFail = 0;
71  Long64_t nEvtTotal = 0;
72  Long64_t nVtxTotal = 0;
73 
74  for (Long64_t i_evt=0; i_evt<entries; ++i_evt) {
75  event->getEntry( i_evt );
76 
77  if( eventSelTool->accept()) {nEvtPass++; nEvtTotal++; }
78  else { nEvtFail++; nEvtTotal++; }
79 
80  const xAOD::VertexContainer* vertices = nullptr;
81  if ( !event->retrieve( vertices, "PrimaryVertices" ).isSuccess() ) {
82  Error( appName.data(), "Could not retrieve PrimaryVertices" );
83  return 1;
84  }
85 
86  for (const auto* vtx : *vertices) {
87  if (vertexSelTool->accept( *vtx )) { nVtxPass++; nVtxTotal++; }
88  else { nVtxFail++; nVtxTotal++; }
89  }
90 
91  }
92  Info( appName.data(), "%llu evt passed.", nEvtPass );
93  Info( appName.data(), "%llu evt failed.", nEvtFail );
94  Info( appName.data(), "%llu evt Total.", nEvtTotal );
95  Info( appName.data(), "%llu vtx passed.", nVtxPass );
96  Info( appName.data(), "%llu vtx failed.", nVtxFail );
97  Info( appName.data(), "%llu vtx Total.", nVtxTotal );
98 
99  ASG_CHECK_SA( appName, eventSelTool->finalize() );
100  ASG_CHECK_SA( appName, vertexSelTool->finalize() );
101  ASG_CHECK_SA( appName, vtxTrkTool->finalize() );
102  return 0;
103 }
104 #endif // XAOD_STANDALONE
Check.h
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
HIVertexSelectionTool.h
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
xAOD::TEvent::kClassAccess
@ kClassAccess
Access auxiliary data using the aux containers.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:97
ZDCMsg::Info
@ Info
Definition: ZDCMsg.h:20
main
int main(int, char **)
Main class for all the CppUnit test classes
Definition: CppUnit_SGtestdriver.cxx:141
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
TEvent.h
InDetTrackSelectionTool.h
Init.h
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
HIEventSelectionTool.h
VertexContainer.h
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
POOL::TEvent::retrieve
StatusCode retrieve(const T *&obj)
Definition: PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h:73
ASG_CHECK_SA
#define ASG_CHECK_SA(SOURCE, EXP)
Helper macro for checking the status code of a call outside of an ASG tool.
Definition: Check.h:69
entries
double entries
Definition: listroot.cxx:49
compute_lumi.fin
fin
Definition: compute_lumi.py:19
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
xAOD::Init
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
Definition: Init.cxx:31