Skip to content

Commit 9bc562a

Browse files
committed
Included deep trigger example with impact parameter
1 parent ebb4854 commit 9bc562a

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include "Generators/Trigger.h"
2+
#include "TParticle.h"
3+
#include <iostream>
4+
5+
// a very simple trigger example, examining generated particles
6+
o2::eventgen::Trigger trigger()
7+
{
8+
//
9+
return [](const std::vector<TParticle>& particles) -> bool {
10+
std::cout << "Running trigger on event with size " << particles.size() << "\n";
11+
if (particles.size() > 10000) {
12+
return true;
13+
}
14+
return false;
15+
};
16+
}
17+
18+
#include "Pythia8/Pythia.h"
19+
#include "Pythia8/HIInfo.h"
20+
#include <fairlogger/Logger.h>
21+
// a deep trigger example, looking into the internal generator state
22+
o2::eventgen::DeepTrigger
23+
trigger_impactb_pythia8(double bmin = 5., double bmax = 10.)
24+
{
25+
return [bmin, bmax](void* interface, std::string name) -> bool {
26+
if (!name.compare("pythia8")) {
27+
auto py8 = reinterpret_cast<Pythia8::Pythia*>(interface);
28+
#if PYTHIA_VERSION_INTEGER < 8300
29+
auto hiinfo = py8->info.hiinfo;
30+
#else
31+
auto hiinfo = py8->info.hiInfo;
32+
#endif
33+
if (!hiinfo) {
34+
LOG(fatal) << "Cannot define impact parameter: is \'pythia8\' running in heavy-ion mode?";
35+
}
36+
auto b = hiinfo->b();
37+
auto selected = (b > bmin && b < bmax);
38+
LOG(info) << "Impact parameter = " << b << " fm: " << (selected ? "selected" : "rejected");
39+
return selected;
40+
} else {
41+
LOG(fatal) << "Cannot define impact parameter for generator interface \'" << name << "\'";
42+
}
43+
return false;
44+
};
45+
}

0 commit comments

Comments
 (0)