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 }
32 std::string jets_name =
argv[2];
33 std::string linked_particles_name =
argv[3];
34
35
36 const std::string
APP_NAME =
"TestAssociatedIparticles";
37
38
40
41
43
44
45 std::unique_ptr<TFile>
ifile(TFile::Open(
file.c_str(),
"READ"));
47 std::cerr <<
"Couldn't open file: " <<
file << std::endl;
48 return 1;
49 }
50
51
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();
60
61 if (
event.getEntry(entry) < 0) {
62 std::cerr <<
"Couldn't load entry " <<
entry <<
" from file"
64 return 1;
65 }
69 std::vector<const xAOD::IParticle*>
particles;
70 if (!
jet->getAssociatedObjects(linked_particles_name, particles)){
71 nbad++;
72 } else {
73 ngood++;
75 for (const auto* part: particles) {
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}
Tool for accessing xAOD files outside of Athena.
@ kClassAccess
Access auxiliary data using the aux containers.
Jet_v1 Jet
Definition of the current "jet version".
StatusCode Init(const char *appname)
Function initialising ROOT/PyROOT for using the ATLAS EDM.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
JetContainer_v1 JetContainer
Definition of the current "jet container version".