ATLAS Offline Software
Loading...
Searching...
No Matches
VertexTruthMatchTest.cxx File Reference
Include dependency graph for VertexTruthMatchTest.cxx:

Go to the source code of this file.

Functions

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

Function Documentation

◆ main()

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

Definition at line 24 of file VertexTruthMatchTest.cxx.

24 {
25
26 using namespace asg::msgUserCode;
27
28 const char * APP_NAME = argv[0];
29
30 //check for filename
31 if( argc < 2 ) {
32 Error( APP_NAME, "No file name argument" );
33 Error( APP_NAME, " Usage: %s xAOD_file_name [nEntries]",APP_NAME );
34 return 1;
35 }
36
37 //init app
38 bool result = xAOD::Init( APP_NAME );
39 if(!result) {
40 Error( APP_NAME, "Failed to init");
41 return 1;
42 }
43
44 //open file
45 const char * fileName = argv[1];
46 Info(APP_NAME, "Opening file: %s", fileName );
47 TFile * file = new TFile(fileName,"READ");
48
50 result = event.readFrom( file );
51 if(!result) {
52 Error( APP_NAME, "Failed to have TEvent read file");
53 return 1;
54 }
55
56 //create transient object store
58
59 Long64_t entries = event.getEntries();
60 if( argc > 2 ) {
61 const Long64_t e = atoll( argv[2] );
62 if( e < entries )
63 entries = e;
64 }
65
66 //Tool to test
67 InDetVertexTruthMatchTool matchTool("VertexTruthMatchTool");
68
69 //config
70 matchTool.msg().setLevel( MSG::DEBUG );
71 ATH_CHECK( matchTool.setProperty( "trackMatchProb", 0.7 ) );
72 ATH_CHECK( matchTool.setProperty( "vertexMatchWeight", 0.7 ) );
73 ATH_CHECK( matchTool.initialize() );
74
75 TFile fout("output.root","RECREATE");
76 fout.cd();
77
78 //some inclusive test plots
79 TH1F * h_cat = new TH1F("vertexMatchTypes","Number of vertices of each type",4,-0.5,3.5);
80 h_cat->GetXaxis()->SetBinLabel(1, "Matched");
81 h_cat->GetXaxis()->SetBinLabel(2, "Merged");
82 h_cat->GetXaxis()->SetBinLabel(3, "Split");
83 h_cat->GetXaxis()->SetBinLabel(4, "Fake");
84
85
86 //plot some things for the best reco match to hard-scatter event
87 TH1F * h_cat_hs = new TH1F("vertexTypes_hardScatter","Number of events of each type",5,-0.5,4.5);
88 h_cat_hs->GetXaxis()->SetBinLabel(1, "Clean");
89 h_cat_hs->GetXaxis()->SetBinLabel(2, "Low PU");
90 h_cat_hs->GetXaxis()->SetBinLabel(3, "High PU");
91 h_cat_hs->GetXaxis()->SetBinLabel(4, "Split");
92 h_cat_hs->GetXaxis()->SetBinLabel(5, "No match");
93
94 //Loop
95 for( Long64_t entry = 0; entry < entries; ++entry ) {
96
97 event.getEntry( entry );
98
99 const xAOD::EventInfo * ei = nullptr;
100 result = event.retrieve( ei, "EventInfo" );
101 if(!result) {
102 Error( APP_NAME, "Failed to retrieve EventInfo on entry %i", static_cast<int>(entry));
103 return 1;
104 }
105
106 if( entry % 100 == 0 ) {
107 Info( APP_NAME,
108 "===Start event %i, run %i; %i events processed so far===",
109 static_cast<int>( ei->eventNumber() ),
110 static_cast<int>( ei->runNumber() ),
111 static_cast<int>( entry ) );
112 }
113
114 //get vertices
115 const xAOD::VertexContainer * vxContainer = nullptr;
116 result = event.retrieve( vxContainer, "PrimaryVertices" );
117 if(!result) {
118 Error( APP_NAME, "Failed to retrieve PrimaryVertices on entry %i", static_cast<int>(entry));
119 return 1;
120 }
121
122 int status = matchTool.matchVertices( *vxContainer );
123 if(!status) {
124 Error( APP_NAME, "Bad status from matching tool on entry %i", static_cast<int>(entry));
125 continue;
126 }
127
128 //accessor for the matching type
130
131 //fill the category histogram for all vertices
132 for( auto vxit : *vxContainer ) {
133 h_cat->Fill( matchTypeDecor( *vxit ) );
134 }
135
136 //get the matching type for hard scatter and fill
137 h_cat_hs->Fill( InDetVertexTruthMatchUtils::classifyHardScatter( *vxContainer ) );
138
139 //get the best match for the hard scatter
140 //const xAOD::Vertex * hsMatch = InDetVertexTruthMatchUtils::bestHardScatterMatch( *vxContainer );
141
142 }
143
144 h_cat->Write();
145 h_cat_hs->Write();
146 fout.Close();
147
148 return 0;
149}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define APP_NAME
Class for vertex truth matching.
SG::Decorator< T, ALLOC > Decorator
class to provide type-safe access to aux data.
Definition AuxElement.h:135
uint32_t runNumber() const
The current event's run number.
uint64_t eventNumber() const
The current event's event number.
Tool for accessing xAOD files outside of Athena.
@ kClassAccess
Access auxiliary data using the aux containers.
A relatively simple transient store for objects created in analysis.
Definition TStore.h:45
double entries
Definition listroot.cxx:49
static TFile * fout
Definition listroot.cxx:40
HardScatterType classifyHardScatter(const xAOD::VertexContainer &vxContainer)
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition Error.h:16
TestStore store
Definition TestStore.cxx:23
@ Info
Definition ZDCMsg.h:20
status
Definition merge.py:16
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
Definition Init.cxx:31
EventInfo_v1 EventInfo
Definition of the latest event info version.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TFile * file