ATLAS Offline Software
Functions
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;
45  ANA_CHECK_SET_TYPE (int);
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::AuxElement::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 }
TestSUSYToolsAlg.ifile
ifile
Definition: TestSUSYToolsAlg.py:92
python.AtlRunQueryAMI.period
period
Definition: AtlRunQueryAMI.py:225
store
StoreGateSvc * store
Definition: fbtTestBasics.cxx:69
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
ST::SUSYObjDef_xAOD
Definition: SUSYObjDef_xAOD.h:141
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
CP::CorrectionCode::enableFailure
static void enableFailure() noexcept
Definition: CorrectionCode.h:64
xAOD::TEvent::kAthenaAccess
@ kAthenaAccess
Access containers/objects like Athena does.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:98
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:324
LArCellConditions.argv
argv
Definition: LArCellConditions.py:112
ZDCMsg::Info
@ Info
Definition: ZDCMsg.h:20
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
POOL::TEvent::kAthenaAccess
@ kAthenaAccess
Definition: PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h:46
POOL::TEvent::readFrom
StatusCode readFrom(TFile *file)
Definition: PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx:132
FortranAlgorithmOptions.fileName
fileName
Definition: FortranAlgorithmOptions.py:13
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
lumiFormat.i
int i
Definition: lumiFormat.py:92
POOL::TEvent::getEntries
long getEntries()
Definition: PhysicsAnalysis/POOLRootAccess/src/TEvent.cxx:123
APP_NAME
#define APP_NAME
Definition: BoostedXbbTag.cxx:23
DQHistogramMergeRegExp.argc
argc
Definition: DQHistogramMergeRegExp.py:20
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
POOL::TEvent
Definition: PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h:39
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::TStore
A relatively simple transient store for objects created in analysis.
Definition: TStore.h:44
ANA_CHECK_SET_TYPE
#define ANA_CHECK_SET_TYPE(TYPE)
set the type for ANA_CHECK to report failures
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:314
POOL::TEvent::retrieve
StatusCode retrieve(const T *&obj)
Definition: PhysicsAnalysis/POOLRootAccess/POOLRootAccess/TEvent.h:73
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
entries
double entries
Definition: listroot.cxx:49
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
L1Topo::Error
Error
The different types of error that can be flagged in the L1TopoRDO.
Definition: Error.h:16
xAOD::TEvent
Tool for accessing xAOD files outside of Athena.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:81
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37