@@ -417,7 +417,10 @@ bool GeneratorHybrid::importParticles()
417417
418418 // Clear particles and event header
419419 mParticles .clear ();
420- mMCEventHeader .clearInfo ();
420+ // event header of underlying generator must be fully reset
421+ // this is important when using extKinO2 or event pools where the full header information is forwarded from the generator
422+ // otherwise some events might have mixed header information from different generators
423+ mMCEventHeader .Reset ();
421424 if (mCocktailMode ) {
422425 // in cocktail mode we need to merge the particles from the different generators
423426 bool baseGen = true ; // first generator of the cocktail is used as reference to update the event header information
@@ -445,6 +448,7 @@ bool GeneratorHybrid::importParticles()
445448 if (baseGen) {
446449 gens[subIndex]->updateHeader (&mMCEventHeader );
447450 baseGen = false ;
451+ mHeaderGeneratorIndex = subIndex; // store index of generator updating the header
448452 }
449453 mInputTaskQueue .push (subIndex);
450454 mTasksStarted ++;
@@ -467,6 +471,7 @@ bool GeneratorHybrid::importParticles()
467471
468472 // fetch the event Header information from the underlying generator
469473 gens[genIndex]->updateHeader (&mMCEventHeader );
474+ mHeaderGeneratorIndex = genIndex; // store index of generator updating the header
470475 mInputTaskQueue .push (genIndex);
471476 mTasksStarted ++;
472477 }
@@ -484,6 +489,11 @@ bool GeneratorHybrid::importParticles()
484489void GeneratorHybrid::updateHeader (o2::dataformats::MCEventHeader* eventHeader)
485490{
486491 if (eventHeader) {
492+ // Overwrite current vertex position only if extkinO2 is not used as underlying generator
493+ if (mGens [mHeaderGeneratorIndex ] != " extkinO2" ) {
494+ mMCEventHeader .SetVertex (eventHeader->GetX (), eventHeader->GetY (), eventHeader->GetZ ());
495+ }
496+ mHeaderGeneratorIndex = -1 ; // reset header generator index for next event
487497 // Forward the base class fields from FairMCEventHeader
488498 static_cast <FairMCEventHeader&>(*eventHeader) = static_cast <FairMCEventHeader&>(mMCEventHeader );
489499 // Copy the key-value store info
0 commit comments