File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
MC/config/examples/trigger Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments