ATLAS Offline Software
Loading...
Searching...
No Matches
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>
10#include "AsgMessaging/Check.h"
11#include "CxxUtils/make_unique.h"
16#include "TError.h"
17#include "TFile.h"
18
19using std::string;
20using std::unique_ptr;
21using CxxUtils::make_unique;
22
23int 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
#define ASG_CHECK_SA(SOURCE, EXP)
Helper macro for checking the status code of a call outside of an ASG tool.
Definition Check.h:76
STL class.
@ kClassAccess
Access auxiliary data using the aux containers.
int main()
Definition hello.cxx:18
double entries
Definition listroot.cxx:49
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition Error.h:16
std::string getenv(const std::string &variableName)
get an environment variable
@ Info
Definition ZDCMsg.h:20
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
Definition Init.cxx:31
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".