ATLAS Offline Software
Loading...
Searching...
No Matches
SUSYTruthTester.cxx File Reference
#include <memory>
#include <cstdlib>
#include <string>
#include <iostream>
#include <TFile.h>
#include <TError.h>
#include <TString.h>
#include <TStopwatch.h>
#include <TSystem.h>
#include "TObjArray.h"
#include "TObjString.h"
#include "xAODRootAccess/Init.h"
#include "xAODRootAccess/TStore.h"
#include "POOLRootAccess/TEvent.h"
#include "PATInterfaces/CorrectionCode.h"
#include "xAODEventInfo/EventInfo.h"
#include "xAODTruth/TruthParticleAuxContainer.h"
#include "xAODTruth/TruthParticleContainer.h"
#include "xAODTruth/TruthEventContainer.h"
#include "xAODTruth/TruthEvent.h"
#include "xAODCore/ShallowCopy.h"
#include "xAODBase/IParticleHelpers.h"
#include "xAODTruth/xAODTruthHelpers.h"
#include "SUSYTools/SUSYObjDef_xAOD.h"

Go to the source code of this file.

Functions

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

Function Documentation

◆ main()

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

READ CONFIG ---------—

Definition at line 42 of file SUSYTruthTester.cxx.

42 {
43
44 using namespace asg::msgUserCode;
46
48
49 // The application's name:
50 const char* APP_NAME = argv[ 0 ];
51
52 // Check if we received a file name:
53 if ( argc < 2 ) {
54 Error( APP_NAME, "No file name received!" );
55 Error( APP_NAME, " Usage: %s [xAOD file name] [maxEvents] [Debug] [ConfigFile=<cfile.conf>] ", APP_NAME );
56 return 1;
57 }
58
60 int debug = 1;
61 Long64_t entries=-1;
62 std::string config_file = "SUSYTools/SUSYTools_Default.conf";
63
64 for (int i = 1 ; i < argc ; i++) {
65 const char* key = strtok(argv[i], "=") ;
66 const char* val = strtok(0, " ") ;
67
68 Info( APP_NAME, "processing key %s with value %s", key, val );
69
70 if (strcmp(key, "Debug") == 0) debug = atoi(val);
71 if (strcmp(key, "ConfigFile") == 0) config_file = std::string(val);
72 if (strcmp(key, "maxEvents") == 0) entries = atoi(val);
73 }
74
76 static SG::Accessor<int> acc_susyid("SUSY_procID");
77
78 // Initialise the application:
79 //ANA_CHECK( xAOD::Init( APP_NAME ) ); //NOT WORKING? //MT,WB
80
81 // Open the input file:
82 TString fileName;
83 fileName = argv[1];
84 Info( APP_NAME, "Opening file: %s", fileName.Data() );
85 std::unique_ptr< TFile > ifile( TFile::Open( fileName, "READ" ) );
86 ANA_CHECK( ifile.get() );
87
88 // Create a TEvent object:
89
90
91#ifdef ROOTCORE
93#else
95#endif
96
97 //xAOD::TEvent event( xAOD::TEvent::kBranchAccess );
98 //xAOD::TEvent event( xAOD::TEvent::kClassAccess );
99 ANA_CHECK( event.readFrom( ifile.get() ) );
100 Info( APP_NAME, "Number of events in the file: %i",
101 static_cast< int >( event.getEntries() ) );
102
103 TString xStream=""; //identify SUSY DxAOD flavour (inside entry loop now /MT)
104
106
107 // If we haven't set the number of events, then run over the whole tree
108 if (entries<0){
109 entries = event.getEntries();
110 }
111
112 // Create the tool(s) to test:
113 ST::SUSYObjDef_xAOD objTool("SUSYObjDef_xAOD");
114
115 int period = debug ? 1 : 100;
116
117 // Loop over the events:
118 for ( Long64_t entry = 0; entry < entries; ++entry ) {
119
120 // Tell the object which entry to look at:
121 event.getEntry( entry );
122
123 // Print some event information for fun:
124 const xAOD::EventInfo* ei = 0;
125 ANA_CHECK( event.retrieve( ei, "EventInfo" ) );
126
127 if (entry % period == 0) {
128 Info( APP_NAME,
129 "===>>> start processing event #%i, "
130 "run #%i %i events processed so far <<<===",
131 static_cast< int >( ei->eventNumber() ),
132 static_cast< int >( ei->runNumber() ),
133 static_cast< int >( entry ) );
134 }
135
136 // Check SUSY Proc. ID for signal MC (only for first event for now!)
137 int pdgid1 = 0;
138 int pdgid2 = 0;
139
140 if( objTool.FindSusyHP(pdgid1, pdgid2) != StatusCode::SUCCESS ){
141 Error(APP_NAME, "--- SOMETHING IS WRONG WITH THE SUSY PROC FINDING... ---");
142 return 1;
143 }
144
145 if( pdgid1!=0 && pdgid2!=0){ //(just to avoid warnings)
146 Info(APP_NAME , "--- SIGNAL ID1 : %d", pdgid1);
147 Info(APP_NAME , " SIGNAL ID2 : %d", pdgid2);
148
149 if ( acc_susyid.isAvailable(*ei) ){
150 Info(APP_NAME , " SIGNAL PROC ID (DECO) : %d", acc_susyid(*ei) );
151 }
152 }
153 }
154
155 // CALLGRIND_TOGGLE_COLLECT;
156 // CALLGRIND_DUMP_STATS;
157 // ProfilerStop();
158
159 // Return gracefully:
160 return 0;
161}
#define APP_NAME
#define ANA_CHECK(EXP)
check whether the given expression was successful
#define ANA_CHECK_SET_TYPE(TYPE)
set the type for ANA_CHECK to report failures
const bool debug
static void enableFailure() noexcept
Helper class to provide type-safe access to aux data.
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.
@ kAthenaAccess
Access containers/objects like Athena does.
A relatively simple transient store for objects created in analysis.
Definition TStore.h:45
double entries
Definition listroot.cxx:49
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
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
EventInfo_v1 EventInfo
Definition of the latest event info version.