@@ -25,13 +25,19 @@ class GeneratorPythia8Coalescence : public o2::eventgen::GeneratorPythia8
2525{
2626public :
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
8497private :
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