Skip to content

Commit 39eea94

Browse files
hscheidalcaliva
authored andcommitted
PWGEM: Lmee add generator flags (#1657)
* Add possibility to flag external generators. * Add external trigger ID to .ini files * Add ID to generator implementation (cherry picked from commit dbd0e2e)
1 parent d3f0119 commit 39eea94

16 files changed

+69
-55
lines changed

MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C

Lines changed: 54 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,31 @@
1313

1414
using namespace Pythia8;
1515

16-
class GeneratorPythia8GapTriggeredHFLepton : public o2::eventgen::GeneratorPythia8{
16+
class GeneratorPythia8GapTriggeredHFLepton : public o2::eventgen::GeneratorPythia8
17+
{
1718
public:
1819
/// default constructor
1920
GeneratorPythia8GapTriggeredHFLepton() = default;
2021

2122
/// constructor
22-
GeneratorPythia8GapTriggeredHFLepton( TString configsignal, int quarkPdg = 4, int lInputTriggerRatio = 5){
23+
GeneratorPythia8GapTriggeredHFLepton(TString configsignal, int quarkPdg = 4, int lInputTriggerRatio = 5, int lInputExternalID = 0)
24+
{
2325

24-
lGeneratedEvents=0;
25-
lInverseTriggerRatio=lInputTriggerRatio;
26-
mQuarkPdg=quarkPdg;
26+
lGeneratedEvents = 0;
27+
lInverseTriggerRatio = lInputTriggerRatio;
28+
lExternalID = lInputExternalID;
29+
mQuarkPdg = quarkPdg;
2730

2831
auto seed = (gRandom->TRandom::GetSeed() % 900000000);
2932

30-
cout<<"Initalizing extra PYTHIA object used to generate min-bias events..."<<endl;
33+
cout << "Initalizing extra PYTHIA object used to generate min-bias events..." << endl;
3134
TString pathconfigMB = gSystem->ExpandPathName("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_MB_gapevent.cfg");
3235
pythiaObjectMinimumBias.readFile(pathconfigMB.Data());
3336
pythiaObjectMinimumBias.readString("Random:setSeed on");
3437
pythiaObjectMinimumBias.readString("Random:seed " + std::to_string(seed));
3538
pythiaObjectMinimumBias.init();
3639
cout << "Initalization complete" << endl;
37-
cout<<"Initalizing extra PYTHIA object used to generate signal events..."<<endl;
40+
cout << "Initalizing extra PYTHIA object used to generate signal events..." << endl;
3841
TString pathconfigSignal = gSystem->ExpandPathName(configsignal.Data());
3942
pythiaObjectSignal.readFile(pathconfigSignal.Data());
4043
pythiaObjectSignal.readString("Random:setSeed on");
@@ -44,13 +47,16 @@ public:
4447
// flag the generators using type
4548
// addCocktailConstituent(type, "interesting");
4649
// addCocktailConstitent(0, "minbias");
47-
4850
}
4951

5052
/// Destructor
5153
~GeneratorPythia8GapTriggeredHFLepton() = default;
5254

53-
void addTriggerOnDaughter(int nb, int pdg) { mNbDaughter = nb; mPdgDaughter = pdg; };
55+
void addTriggerOnDaughter(int nb, int pdg)
56+
{
57+
mNbDaughter = nb;
58+
mPdgDaughter = pdg;
59+
};
5460
void setQuarkRapidity(float yMin, float yMax)
5561
{
5662
mQuarkRapidityMin = yMin;
@@ -64,27 +70,30 @@ public:
6470

6571
protected:
6672
//__________________________________________________________________
67-
Bool_t generateEvent() override {
73+
Bool_t generateEvent() override
74+
{
6875
/// reset event
6976
mPythia.event.reset();
7077

7178
// Simple straightforward check to alternate generators
72-
if( lGeneratedEvents % lInverseTriggerRatio == 0 ){
79+
if (lGeneratedEvents % lInverseTriggerRatio == 0) {
7380
// Generate event of interest
7481
Bool_t lGenerationOK = kFALSE;
75-
while (!lGenerationOK){
82+
while (!lGenerationOK) {
7683
if (pythiaObjectSignal.next()) {
77-
lGenerationOK = selectEvent(pythiaObjectSignal.event);
84+
lGenerationOK = selectEvent(pythiaObjectSignal.event);
7885
}
7986
}
8087
mPythia.event = pythiaObjectSignal.event;
81-
}else{
88+
notifySubGenerator(lExternalID);
89+
} else {
8290
// Generate minimum-bias event
8391
Bool_t lGenerationOK = kFALSE;
8492
while (!lGenerationOK) {
8593
lGenerationOK = pythiaObjectMinimumBias.next();
8694
}
8795
mPythia.event = pythiaObjectMinimumBias.event;
96+
notifySubGenerator(0);
8897
}
8998

9099
lGeneratedEvents++;
@@ -93,22 +102,22 @@ protected:
93102
return true;
94103
}
95104

96-
bool selectEvent(const Pythia8::Event& event)
105+
bool selectEvent(const Pythia8::Event& event)
97106
{
98107
bool isGoodAtPartonLevel = false, isGoodAtDaughterLevel = (mPdgDaughter != 0) ? false : true;
99-
int nbDaughter = 0;
108+
int nbDaughter = 0;
100109
for (auto iPart{0}; iPart < event.size(); ++iPart) {
101110
// search for Q-Qbar mother with at least one Q in rapidity window
102111
if (!isGoodAtPartonLevel) {
103112
auto daughterList = event[iPart].daughterList();
104113
bool hasQ = false, hasQbar = false, atSelectedY = false;
105114
for (auto iDau : daughterList) {
106115
if (event[iDau].id() == mQuarkPdg) {
107-
hasQ = true;
108-
}
116+
hasQ = true;
117+
}
109118
if (event[iDau].id() == -mQuarkPdg) {
110-
hasQbar = true;
111-
}
119+
hasQbar = true;
120+
}
112121
if ((std::abs(event[iDau].id()) == mQuarkPdg) && (event[iDau].y() > mQuarkRapidityMin) && (event[iDau].y() < mQuarkRapidityMax))
113122
atSelectedY = true;
114123
}
@@ -121,21 +130,21 @@ protected:
121130
int id = std::abs(event[iPart].id());
122131
float rap = event[iPart].y();
123132
if (id == mPdgDaughter) {
124-
int motherindexa = event[iPart].mother1();
125-
if (motherindexa > 0) {
126-
int idmother = std::abs(event[motherindexa].id());
127-
if (int(std::abs(idmother)/100.) == 4 || int(std::abs(idmother)/1000.) == 4 || int(std::abs(idmother)/100.) == 5 || int(std::abs(idmother)/1000.) == 5) {
128-
if (rap > mDaughterRapidityMin && rap < mDaughterRapidityMax) {
129-
nbDaughter++;
130-
if (nbDaughter >= mNbDaughter) isGoodAtDaughterLevel = true;
131-
}
133+
int motherindexa = event[iPart].mother1();
134+
if (motherindexa > 0) {
135+
int idmother = std::abs(event[motherindexa].id());
136+
if (int(std::abs(idmother) / 100.) == 4 || int(std::abs(idmother) / 1000.) == 4 || int(std::abs(idmother) / 100.) == 5 || int(std::abs(idmother) / 1000.) == 5) {
137+
if (rap > mDaughterRapidityMin && rap < mDaughterRapidityMax) {
138+
nbDaughter++;
139+
if (nbDaughter >= mNbDaughter) isGoodAtDaughterLevel = true;
132140
}
133-
}
141+
}
142+
}
134143
}
135144
}
136145
// we send the trigger
137146
if (isGoodAtPartonLevel && isGoodAtDaughterLevel) {
138-
return true;
147+
return true;
139148
}
140149
}
141150
return false;
@@ -157,46 +166,51 @@ private:
157166
// Control gap-triggering
158167
Long64_t lGeneratedEvents;
159168
int lInverseTriggerRatio;
169+
// ID for different generators
170+
int lExternalID;
160171

161172
// Base event generators
162173
Pythia pythiaObjectMinimumBias; ///Minimum bias collision generator
163-
Pythia pythiaObjectSignal; ///Signal collision generator
174+
Pythia pythiaObjectSignal; ///Signal collision generator
164175
};
165176

166177
// Predefined generators:
167178

168179
// Charm-enriched forced decay
169-
FairGenerator *GeneratorPythia8GapTriggeredCharmLepton(int inputTriggerRatio, float yMin=-1.5, float yMax=1.5) {
170-
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_pp_cr2_forceddecayscharm.cfg", 4, inputTriggerRatio);
180+
FairGenerator* GeneratorPythia8GapTriggeredCharmLepton(int inputTriggerRatio, int inputExternalID, float yMin = -1.5, float yMax = 1.5)
181+
{
182+
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_pp_cr2_forceddecayscharm.cfg", 4, inputTriggerRatio, inputExternalID);
171183
auto seed = (gRandom->TRandom::GetSeed() % 900000000);
172184
myGen->readString("Random:setSeed on");
173185
myGen->readString("Random:seed " + std::to_string(seed));
174186
myGen->setQuarkRapidity(yMin, yMax);
175187
myGen->addTriggerOnDaughter(2, 11);
176-
myGen->setDaughterRapidity(-1.,1.);
188+
myGen->setDaughterRapidity(-1., 1.);
177189
return myGen;
178190
}
179191

180192
// Beauty-enriched forced decay
181-
FairGenerator *GeneratorPythia8GapTriggeredBeautyForcedDecays(int inputTriggerRatio, float yMin=-1.5, float yMax=1.5) {
182-
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_bbbar_forceddecayscharmbeauty.cfg", 5, inputTriggerRatio);
193+
FairGenerator* GeneratorPythia8GapTriggeredBeautyForcedDecays(int inputTriggerRatio, int inputExternalID, float yMin = -1.5, float yMax = 1.5)
194+
{
195+
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_bbbar_forceddecayscharmbeauty.cfg", 5, inputTriggerRatio, inputExternalID);
183196
auto seed = (gRandom->TRandom::GetSeed() % 900000000);
184197
myGen->readString("Random:setSeed on");
185198
myGen->readString("Random:seed " + std::to_string(seed));
186199
myGen->setQuarkRapidity(yMin, yMax);
187200
myGen->addTriggerOnDaughter(2, 11);
188-
myGen->setDaughterRapidity(-1.,1.);
201+
myGen->setDaughterRapidity(-1., 1.);
189202
return myGen;
190203
}
191204

192205
// Beauty-enriched no forced decay
193-
FairGenerator *GeneratorPythia8GapTriggeredBeautyNoForcedDecays(int inputTriggerRatio, float yMin=-1.5, float yMax=1.5) {
194-
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_bbbar.cfg", 5, inputTriggerRatio);
206+
FairGenerator* GeneratorPythia8GapTriggeredBeautyNoForcedDecays(int inputTriggerRatio, int inputExternalID, float yMin = -1.5, float yMax = 1.5)
207+
{
208+
auto myGen = new GeneratorPythia8GapTriggeredHFLepton("$O2DPG_ROOT/MC/config/PWGEM/pythia8/generator/pythia8_bbbar.cfg", 5, inputTriggerRatio, inputExternalID);
195209
auto seed = (gRandom->TRandom::GetSeed() % 900000000);
196210
myGen->readString("Random:setSeed on");
197211
myGen->readString("Random:seed " + std::to_string(seed));
198212
myGen->setQuarkRapidity(yMin, yMax);
199213
myGen->addTriggerOnDaughter(2, 11);
200-
myGen->setDaughterRapidity(-1.,1.);
214+
myGen->setDaughterRapidity(-1., 1.);
201215
return myGen;
202216
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(3)
3+
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(3,2)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(4)
3+
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(4,2)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(5)
3+
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(5,2)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(6)
3+
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(6,2)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(7)
3+
funcName = GeneratorPythia8GapTriggeredBeautyForcedDecays(7,2)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(3)
3+
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(3,3)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(4)
3+
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(4,3)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(5)
3+
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(5,3)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[GeneratorExternal]
22
fileName = ${O2DPG_ROOT}/MC/config/PWGEM/external/generator/Generator_pythia8_GapTriggered_HFLepton.C
3-
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(6)
3+
funcName = GeneratorPythia8GapTriggeredBeautyNoForcedDecays(6,3)
44

55
[GeneratorPythia8]
66
config = ${O2DPG_ROOT}/MC/config/PWGEM/pythia8/generator/configPythiaEmpty.cfg

0 commit comments

Comments
 (0)