diff --git a/DDG4/src/Geant4InputHandling.cpp b/DDG4/src/Geant4InputHandling.cpp index f8b7c41f1e6f8a35014413c507503c520681253d..7bf1e53c13c12763786c403e0a95ef729575237f 100644 --- a/DDG4/src/Geant4InputHandling.cpp +++ b/DDG4/src/Geant4InputHandling.cpp @@ -350,13 +350,13 @@ static G4PrimaryParticle* createG4Primary(const Geant4ParticleHandle p) { return g4; } -static map<Geant4Particle*,G4PrimaryParticle*> +static vector< pair<Geant4Particle*,G4PrimaryParticle*> > getRelevant(set<int>& visited, map<int,G4PrimaryParticle*>& prim, Geant4PrimaryInteraction::ParticleMap& pm, const Geant4ParticleHandle p) { - typedef map<Geant4Particle*,G4PrimaryParticle*> Primaries; + typedef vector< pair<Geant4Particle*,G4PrimaryParticle*> > Primaries; Primaries res; visited.insert(p->id); PropertyMask status(p->status); @@ -364,7 +364,7 @@ getRelevant(set<int>& visited, if ( prim.find(p->id) == prim.end() ) { G4PrimaryParticle* p4 = createG4Primary(p); prim[p->id] = p4; - res.insert(make_pair(p,p4)); + res.push_back(make_pair(p,p4)); } } else if ( p->daughters.size() > 0 ) { @@ -389,19 +389,19 @@ getRelevant(set<int>& visited, for(Geant4Particle::Particles::const_iterator i=dau.begin(); i!=dau.end(); ++i) { if ( visited.find(*i) == visited.end() ) { Primaries tmp = getRelevant(visited,prim,pm,pm[*i]); - daughters.insert(tmp.begin(),tmp.end()); + daughters.insert(daughters.end(), tmp.begin(),tmp.end()); } } for(Primaries::iterator i=daughters.begin(); i!=daughters.end(); ++i) p4->SetDaughter((*i).second); } - res.insert(make_pair(p,p4)); + res.push_back(make_pair(p,p4)); } else { for(Geant4Particle::Particles::const_iterator i=dau.begin(); i!=dau.end(); ++i) { if ( visited.find(*i) == visited.end() ) { Primaries tmp = getRelevant(visited,prim,pm,pm[*i]); - res.insert(tmp.begin(),tmp.end()); + res.insert(res.end(), tmp.begin(),tmp.end()); } } } @@ -414,7 +414,7 @@ int DD4hep::Simulation::generatePrimaries(const Geant4Action* caller, const Geant4Context* context, G4Event* event) { - typedef map<Geant4Particle*,G4PrimaryParticle*> Primaries; + typedef vector< pair<Geant4Particle*,G4PrimaryParticle*> > Primaries; typedef Geant4PrimaryInteraction Interaction; Geant4PrimaryMap* primaries = context->event().extension<Geant4PrimaryMap>(); Interaction* interaction = context->event().extension<Interaction>();