Skip to content

Commit 6afe4e9

Browse files
committed
allow selection of signed PDG
1 parent 9b2b612 commit 6afe4e9

1 file changed

Lines changed: 18 additions & 4 deletions

File tree

‎MC/config/PWGLF/pythia8/generator_pythia8_coalescence.C‎

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,19 @@ class GeneratorPythia8Coalescence : public o2::eventgen::GeneratorPythia8
2525
{
2626
public:
2727
/// Constructor
28-
GeneratorPythia8Coalescence(std::vector<unsigned int> pdgList, int input_trigger_ratio = 1, double coal_momentum = 0.4)
28+
GeneratorPythia8Coalescence(std::vector<int> pdgList, int input_trigger_ratio = 1, double coal_momentum = 0.4)
2929
: o2::eventgen::GeneratorPythia8()
3030
{
3131
fmt::printf(">> Coalescence generator %d\n", input_trigger_ratio);
3232
mInverseTriggerRatio = input_trigger_ratio;
3333
mCoalMomentum = coal_momentum;
34-
mPdgList = pdgList;
34+
mRequestedPdgList = pdgList;
35+
for (auto pdg : pdgList) {
36+
unsigned int absPdg = static_cast<unsigned int>(std::abs(pdg));
37+
if (std::find(mPdgList.begin(), mPdgList.end(), absPdg) == mPdgList.end()) {
38+
mPdgList.push_back(absPdg);
39+
}
40+
}
3541
}
3642
/// Destructor
3743
~GeneratorPythia8Coalescence() = default;
@@ -57,7 +63,14 @@ protected:
5763
{
5864
if (GeneratorPythia8::generateEvent())
5965
{
60-
genOk = CoalescencePythia8(mPythia.event, mPdgList, false, mCoalMomentum);
66+
if (CoalescencePythia8(mPythia.event, mPdgList, false, mCoalMomentum)) {
67+
for (int i = 0; i < mPythia.event.size(); i++) {
68+
if (mPythia.event[i].isFinal() && std::find(mRequestedPdgList.begin(), mRequestedPdgList.end(), mPythia.event[i].id()) != mRequestedPdgList.end()) {
69+
genOk = true;
70+
break;
71+
}
72+
}
73+
}
6174
}
6275
localCounter++;
6376
}
@@ -82,14 +95,15 @@ protected:
8295

8396

8497
private:
98+
std::vector<int> mRequestedPdgList; /// signed pdg codes to be generated
8599
std::vector<unsigned int> mPdgList; /// list of pdg codes to be generated
86100
float mCoalMomentum = 0.4; /// coalescence momentum
87101
uint64_t mGeneratedEvents = 0; /// number of events generated so far
88102
int mInverseTriggerRatio = 1; /// injection gap
89103
};
90104

91105
///___________________________________________________________
92-
FairGenerator *generateCoalescence(std::vector<unsigned int> pdgList, int input_trigger_ratio, double coal_momentum = 0.4)
106+
FairGenerator *generateCoalescence(std::vector<int> pdgList, int input_trigger_ratio, double coal_momentum = 0.4)
93107
{
94108
auto myGen = new GeneratorPythia8Coalescence(pdgList, input_trigger_ratio, coal_momentum);
95109
auto seed = (gRandom->TRandom::GetSeed() % 900000000);

0 commit comments

Comments
 (0)