Implementation of nuclear interactions of hadrons in the tracker layers (based on FTF model of Geant4). More...
Public Member Functions | |
void | interact (fastsim::Particle &particle, const SimplifiedGeometry &layer, std::vector< std::unique_ptr< fastsim::Particle > > &secondaries, const RandomEngineAndDistribution &random) override |
Perform the interaction. More... | |
NuclearInteractionFTF (const std::string &name, const edm::ParameterSet &cfg) | |
Constructor. More... | |
~NuclearInteractionFTF () override | |
Default destructor. More... | |
Public Member Functions inherited from fastsim::InteractionModel | |
const std::string | getName () |
Return (unique) name of this interaction. More... | |
InteractionModel (std::string name) | |
Constructor. More... | |
virtual void | registerProducts (edm::ProducerBase &producer) const |
In case interaction produces and stores content in the event (e.g. TrackerSimHits). More... | |
virtual void | storeProducts (edm::Event &iEvent) |
In case interaction produces and stores content in the event (e.g. TrackerSimHits). More... | |
virtual | ~InteractionModel () |
Default destructor. More... | |
Private Attributes | |
const double | corrfactors_el [numHadrons][npoints] |
elastic interaction length corrections per particle and energy More... | |
const double | corrfactors_inel [numHadrons][npoints] |
inelastic interaction length corrections per particle and energy More... | |
G4LorentzVector | curr4Mom |
int | currIdx |
Index of particle in vector of Geant4 particles. More... | |
const G4ParticleDefinition * | currParticle |
G4Track * | currTrack |
G4Step * | dummyStep |
size_t | index |
Index for energy of particle (vectors parametrized as a function of energy) More... | |
double | intLengthElastic |
Elastic interaction length. More... | |
double | intLengthInelastic |
Inelastic interaction length. More... | |
const double | nuclElLength [numHadrons] |
elastic interaction length in Silicon at 1 TeV per particle More... | |
const double | nuclInelLength [numHadrons] |
inelastic interaction length in Silicon at 1 TeV per particle More... | |
G4Nucleus | targetNucleus |
G4CascadeInterface * | theBertiniCascade |
double | theBertiniLimit |
Bertini cascade for low-energy hadrons. More... | |
G4ThreeVector | theBoost |
G4GeneratorPrecompoundInterface * | theCascade |
G4DiffuseElastic * | theDiffuseElastic |
double | theDistCut |
Cut on deltaR for ClosestChargedDaughter algorithm (FastSim tracking) More... | |
double | theEnergyLimit |
Minimum energy of interacting particle. More... | |
G4TheoFSGenerator * | theHadronicModel |
G4LundStringFragmentation * | theLund |
G4HadProjectile | theProjectile |
G4ExcitedStringDecay * | theStringDecay |
G4FTFModel * | theStringModel |
G4PhysicsLogVector * | vect |
G4ThreeVector | vectProj |
Static Private Attributes | |
static const int | npoints = 21 |
Number of steps to cover range of particle energies. More... | |
static const int | numHadrons = 30 |
Number of G4 hadrons. More... | |
static const G4ParticleDefinition * | theG4Hadron [numHadrons] = { 0 } |
The Geant4 particles. More... | |
static int | theId [numHadrons] = {0} |
The pdgIDs of the Geant4 particles. More... | |
Implementation of nuclear interactions of hadrons in the tracker layers (based on FTF model of Geant4).
Computes the probability for hadrons to interact with a nucleon of the tracker material (inelastically) and then sample nuclear interaction using FTF model of Geant4 Also, another implementation of nuclear interactions can be used that is based on FullSim events (NuclearInteraction).
Definition at line 104 of file NuclearInteractionFTF.cc.
fastsim::NuclearInteractionFTF::NuclearInteractionFTF | ( | const std::string & | name, |
const edm::ParameterSet & | cfg | ||
) |
Constructor.
Definition at line 246 of file NuclearInteractionFTF.cc.
References currIdx, currParticle, currTrack, dummyStep, edm::ParameterSet::getParameter(), GeV, mps_fire::i, index, fastsim::initializeOnce, intLengthElastic, intLengthInelastic, BPhysicsValidation_cfi::Lambda, MeV, npoints, numHadrons, phase2TrackerDigitizer_cfi::SigmaZero, targetNucleus, theBertiniCascade, theBertiniLimit, theDiffuseElastic, theDistCut, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theLund, theStringDecay, theStringModel, and vect.
|
override |
Default destructor.
Definition at line 339 of file NuclearInteractionFTF.cc.
References theLund, theStringDecay, theStringModel, and vect.
|
overridevirtual |
Perform the interaction.
particle | The particle that interacts with the matter. |
layer | The detector layer that interacts with the particle. |
secondaries | Particles that are produced in the interaction (if any). |
random | The Random Engine. |
Implements fastsim::InteractionModel.
Definition at line 347 of file NuclearInteractionFTF.cc.
References funct::abs(), fastsim::Particle::charge(), corrfactors_el, corrfactors_inel, funct::cos(), curr4Mom, currIdx, currParticle, currTrack, DEFINE_EDM_PLUGIN, dir, reco::dp, dummyStep, MillePedeFileConverter_cfg::e, reco::e1, reco::e2, RandomEngineAndDistribution::flatShoot(), fastsim::Particle::getMotherDeltaR(), fastsim::Particle::getMotherPdgId(), fastsim::SimplifiedGeometry::getNuclearInteractionThicknessFactor(), fastsim::SimplifiedGeometry::getThickness(), GeV, index, intLengthElastic, intLengthInelastic, ResonanceBuilder::mass, fastsim::Particle::momentum(), npoints, nuclElLength, nuclInelLength, numHadrons, fastsim::Particle::pdgId(), fastsim::Particle::position(), mps_fire::result, fastsim::Particle::simTrackIndex(), funct::sin(), mathSSE::sqrt(), targetNucleus, theBertiniCascade, theBertiniLimit, theBoost, theDiffuseElastic, theDistCut, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theProjectile, vect, and vectProj.
|
private |
elastic interaction length corrections per particle and energy
Definition at line 195 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
inelastic interaction length corrections per particle and energy
Definition at line 161 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
Definition at line 145 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
Index of particle in vector of Geant4 particles.
Definition at line 157 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 141 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 140 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 139 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Index for energy of particle (vectors parametrized as a function of energy)
Definition at line 158 of file NuclearInteractionFTF.cc.
Referenced by BeautifulSoup.PageElement::insert(), interact(), and NuclearInteractionFTF().
|
private |
Elastic interaction length.
Definition at line 154 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Inelastic interaction length.
Definition at line 155 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
staticprivate |
Number of steps to cover range of particle energies.
Definition at line 124 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
elastic interaction length in Silicon at 1 TeV per particle
Definition at line 234 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
inelastic interaction length in Silicon at 1 TeV per particle
Definition at line 229 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
staticprivate |
Number of G4 hadrons.
Definition at line 123 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 143 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 136 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Bertini cascade for low-energy hadrons.
Definition at line 149 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 147 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
Definition at line 134 of file NuclearInteractionFTF.cc.
|
private |
Definition at line 137 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Cut on deltaR for ClosestChargedDaughter algorithm (FastSim tracking)
Definition at line 152 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Minimum energy of interacting particle.
Definition at line 150 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
staticprivate |
The Geant4 particles.
Definition at line 126 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 130 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
staticprivate |
The pdgIDs of the Geant4 particles.
Definition at line 127 of file NuclearInteractionFTF.cc.
Referenced by interact(), and NuclearInteractionFTF().
|
private |
Definition at line 133 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF(), and ~NuclearInteractionFTF().
|
private |
Definition at line 144 of file NuclearInteractionFTF.cc.
Referenced by interact().
|
private |
Definition at line 132 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF(), and ~NuclearInteractionFTF().
|
private |
Definition at line 131 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF(), and ~NuclearInteractionFTF().
|
private |
Definition at line 129 of file NuclearInteractionFTF.cc.
Referenced by interact(), NuclearInteractionFTF(), and ~NuclearInteractionFTF().
|
private |
Definition at line 146 of file NuclearInteractionFTF.cc.
Referenced by interact().