diff --git a/FastSimulation/SimplifiedGeometryPropagator/interface/ParticleManager.h b/FastSimulation/SimplifiedGeometryPropagator/interface/ParticleManager.h index 2654f68b24244..5f2f1cc87bb37 100644 --- a/FastSimulation/SimplifiedGeometryPropagator/interface/ParticleManager.h +++ b/FastSimulation/SimplifiedGeometryPropagator/interface/ParticleManager.h @@ -146,7 +146,8 @@ inline bool isExotic(int pdgid_) { return ((pdgid >= 1000000 && pdgid < 4000000 && pdgid != 3000022) || // SUSY, R-hadron, and technicolor particles pdgid == 17 || // 4th generation lepton pdgid == 34 || // W-prime - pdgid == 37); // charged Higgs + pdgid == 37 || // charged Higgs + pdgid == 39); // bulk graviton } #endif diff --git a/FastSimulation/SimplifiedGeometryPropagator/src/ParticleManager.cc b/FastSimulation/SimplifiedGeometryPropagator/src/ParticleManager.cc index a62571af2fdb5..509ef1cee4df6 100644 --- a/FastSimulation/SimplifiedGeometryPropagator/src/ParticleManager.cc +++ b/FastSimulation/SimplifiedGeometryPropagator/src/ParticleManager.cc @@ -216,19 +216,27 @@ std::unique_ptr fastsim::ParticleManager::nextGenParticle() { } // particles which do not descend from exotics must be produced within the beampipe int exoticRelativeId = 0; - if (productionVertex->position().perp2() * lengthUnitConversionFactor2_ > beamPipeRadius2_) // - { + const bool producedWithinBeamPipe = + productionVertex->position().perp2() * lengthUnitConversionFactor2_ < beamPipeRadius2_; + if (producedWithinBeamPipe) { exoticRelativesChecker(productionVertex, exoticRelativeId, 0); if (!isExotic(exoticRelativeId)) { continue; } } - // particle must not decay before it reaches the beam pipe - if (endVertex && endVertex->position().perp2() * lengthUnitConversionFactor2_ < beamPipeRadius2_) { + // FastSim will not make hits out of particles that decay before reaching the beam pipe + const bool decayedWithinBeamPipe = + endVertex && endVertex->position().perp2() * lengthUnitConversionFactor2_ < beamPipeRadius2_; + if (decayedWithinBeamPipe) { continue; } + // SM particles that descend from exotics and cross the beam pipe radius should make hits but not be decayed + if (producedWithinBeamPipe && !decayedWithinBeamPipe) { + exoticRelativesChecker(productionVertex, exoticRelativeId, 0); + } + // make the particle std::unique_ptr newParticle( new Particle(particle.pdg_id(),