ATLAS Offline Software
Loading...
Searching...
No Matches
test-associated-iparticles.cxx File Reference
#include "xAODRootAccess/Init.h"
#include "xAODRootAccess/tools/ReturnCheck.h"
#include "xAODRootAccess/TEvent.h"
#include "xAODJet/JetContainer.h"
#include "xAODTracking/TrackParticle.h"
#include "AsgMessaging/MessageCheck.h"
#include "TFile.h"
#include "TTree.h"
#include "TError.h"
Include dependency graph for test-associated-iparticles.cxx:

Go to the source code of this file.

Functions

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

Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

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

Definition at line 15 of file test-associated-iparticles.cxx.

15 {
16
18 using namespace asg::msgUserCode;
20
21 if (argc != 4) {
22 std::cerr << "usage: " << argv[0] << ": <DAOD> <jet collection> <associated collection>"
23 << "\n\n"
24 << "Return codes:\n"
25 << " -1: usage error\n"
26 << " 1: broken association\n"
27 << " 2: some associated objects are not tracks\n"
28 << " 0: association works, is all tracks" << std::endl;
29 return -1;
30 }
31 std::string file = argv[1];
32 std::string jets_name = argv[2];
33 std::string linked_particles_name = argv[3];
34
35 // The name of the application:
36 const std::string APP_NAME = "TestAssociatedIparticles";
37
38 // Set up the environment:
40
41 // Set up the event object:
43
44 // Open the file:
45 std::unique_ptr<TFile> ifile(TFile::Open(file.c_str(), "READ"));
46 if ( ! ifile.get() || ifile->IsZombie()) {
47 std::cerr << "Couldn't open file: " << file << std::endl;
48 return 1;
49 }
50
51 // Connect the event object to it:
52 ANA_CHECK( event.readFrom(ifile.get()) );
53
54 unsigned long long nbad = 0;
55 unsigned long long ngood = 0;
56 unsigned long long nIParticle = 0;
57 unsigned long long nTrack = 0;
58 unsigned long long entries = event.getEntries();
59 for (unsigned long long entry = 0; entry < entries; ++entry) {
60 // Load the event:
61 if (event.getEntry(entry) < 0) {
62 std::cerr << "Couldn't load entry " << entry << " from file"
63 << file << std::endl;
64 return 1;
65 }
66 const xAOD::JetContainer *jets = nullptr;
67 ANA_CHECK( event.retrieve(jets, jets_name) );
68 for (const xAOD::Jet *const jet : *jets) {
69 std::vector<const xAOD::IParticle*> particles;
70 if (!jet->getAssociatedObjects(linked_particles_name, particles)){
71 nbad++;
72 } else {
73 ngood++;
74 nIParticle += particles.size();
75 for (const auto* part: particles) {
76 if (dynamic_cast<const xAOD::TrackParticle*>(part)) {
77 nTrack++;
78 }
79 }
80 }
81 }
82 }
83 std::cout << "Summary: found " << ngood << " out of " << nbad + ngood <<" jets with valid links to associated particles " << std::endl;
84 std::cout << "Found " << nIParticle << " associated xAOD::IParticles, "
85 << nTrack << " of which were tracks" << std::endl;
86 if (nbad > 0) return 1;
87 if (nIParticle > nTrack) return 2;
88 return 0;
89}
#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
Tool for accessing xAOD files outside of Athena.
@ kClassAccess
Access auxiliary data using the aux containers.
double entries
Definition listroot.cxx:49
Jet_v1 Jet
Definition of the current "jet version".
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
Definition Init.cxx:31
TrackParticle_v1 TrackParticle
Reference the current persistent version:
JetContainer_v1 JetContainer
Definition of the current "jet container version".
TFile * file