Skip to content

Commit dcc9c0f

Browse files
aimeric-landousawenzel
authored andcommitted
add test
1 parent b742824 commit dcc9c0f

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
int External() {
2+
std::string path{"o2sim_Kine.root"};
3+
4+
float ratioTrigger = 1./5; // one event triggered out of 5
5+
6+
7+
TFile file(path.c_str(), "READ");
8+
if (file.IsZombie()) {
9+
std::cerr << "Cannot open ROOT file " << path << "\n";
10+
return 1;
11+
}
12+
13+
auto tree = (TTree *)file.Get("o2sim");
14+
std::vector<o2::MCTrack> *tracks{};
15+
tree->SetBranchAddress("MCTrack", &tracks);
16+
o2::dataformats::MCEventHeader *eventHeader = nullptr;
17+
tree->SetBranchAddress("MCEventHeader.", &eventHeader);
18+
19+
int nEventsMB{}, nEventsJetJet{};
20+
float sumWeightsMB{}, sumWeightsJetJet{};
21+
int sumTracks{};
22+
auto nEvents = tree->GetEntries();
23+
24+
for (int i = 0; i < nEvents; i++) {
25+
tree->GetEntry(i);
26+
27+
// check subgenerator information and event weights
28+
if (eventHeader->hasInfo(o2::mcgenid::GeneratorProperty::SUBGENERATORID)) {
29+
bool isValid = false;
30+
int subGeneratorId = eventHeader->getInfo<int>(o2::mcgenid::GeneratorProperty::SUBGENERATORID, isValid);
31+
if (eventHeader->hasInfo(o2::dataformats::MCInfoKeys::weight)) {
32+
float weight = eventHeader->getInfo<float>(o2::dataformats::MCInfoKeys::weight,isValid);
33+
if (subGeneratorId == 0) {
34+
nEventsMB++;
35+
sumWeightsMB += weight;
36+
}
37+
else if (subGeneratorId == 1) {
38+
nEventsJetJet++;
39+
sumWeightsJetJet += weight;
40+
}
41+
}
42+
}
43+
sumTracks += tracks->size();
44+
}
45+
46+
std::cout << "--------------------------------\n";
47+
std::cout << "# Events: " << nEvents << "\n";
48+
std::cout << "# MB events: " << nEventsMB << "\n";
49+
std::cout << " sum of weights for MB events: " << sumWeightsMB << "\n";
50+
std::cout << "# Jet-jet events " << nEventsJetJet << "\n";
51+
std::cout << " sum of weights jet-jet events: " << sumWeightsJetJet << "\n";
52+
std::cout << "# tracks summed over all events (jet-jet + MB): " << sumTracks << "\n";
53+
54+
if (nEventsMB < nEvents * (1 - ratioTrigger) * 0.95 || nEventsMB > nEvents * (1 - ratioTrigger) * 1.05) { // we put some tolerance since the number of generated events is small
55+
std::cerr << "Number of generated MB events different than expected\n";
56+
return 1;
57+
}
58+
if (nEventsJetJet < nEvents * ratioTrigger * 0.95 || nEventsJetJet > nEvents * ratioTrigger * 1.05) {
59+
std::cerr << "Number of jet-jet generated events different than expected\n";
60+
return 1;
61+
}
62+
if(nEventsMB < sumWeightsMB * 0.95 || nEventsMB > sumWeightsMB * 1.05) {
63+
std::cerr << "Weights of MB events do not = 1 as expected\n";
64+
return 1;
65+
}
66+
if(sumTracks < 1) {
67+
std::cerr << "No tracks in simulated events\n";
68+
return 1;
69+
}
70+
return 0;
71+
}

0 commit comments

Comments
 (0)