diff --git a/DDG4/src/Geant4GeneratorWrapper.cpp b/DDG4/src/Geant4GeneratorWrapper.cpp index b40bec032674bf7f77a0da4eeaaea72a503367d2..858300e5f356cacfdc5c23a49323e24fa1b85363 100644 --- a/DDG4/src/Geant4GeneratorWrapper.cpp +++ b/DDG4/src/Geant4GeneratorWrapper.cpp @@ -70,13 +70,13 @@ void Geant4GeneratorWrapper::operator()(G4Event* event) { Geant4PrimaryMap* primaryMap = context()->event().extension<Geant4PrimaryMap>(); set<G4PrimaryVertex*> primaries; + // Now generate the new interaction + generator()->GeneratePrimaryVertex(event); + /// Collect all existing interactions (primary vertices) for(G4PrimaryVertex* v=event->GetPrimaryVertex(); v; v=v->GetNext()) primaries.insert(v); - // Now generate the new interaction - generator()->GeneratePrimaryVertex(event); - // Add all the missing interactions (primary vertices) to the primary event record. Geant4PrimaryInteraction* inter = createPrimary(m_mask, primaryMap, primaries); prim->add(m_mask, inter); diff --git a/DDG4/src/Geant4InputHandling.cpp b/DDG4/src/Geant4InputHandling.cpp index 279db4b6a2bd790638a4786c817b0be51e5e00fd..84c1a7a816be8e7740ec34cb497660753dccf209 100644 --- a/DDG4/src/Geant4InputHandling.cpp +++ b/DDG4/src/Geant4InputHandling.cpp @@ -88,6 +88,11 @@ static void collectPrimaries(Geant4PrimaryMap* pm, Geant4Vertex* particle_origine, G4PrimaryParticle* gp) { + //if the particle is in the map, we do not have to do anything + if ( pm->get(gp) ) { + return; + } + int pid = int(interaction->particles.size()); Geant4Particle* p = createPrimary(pid,particle_origine,gp); G4PrimaryParticle* dau = gp->GetDaughter();