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::ProducesCollector) 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] = {nullptr} |
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 101 of file NuclearInteractionFTF.cc.
fastsim::NuclearInteractionFTF::NuclearInteractionFTF | ( | const std::string & | name, |
const edm::ParameterSet & | cfg | ||
) |
Constructor.
Definition at line 298 of file NuclearInteractionFTF.cc.
References currIdx, currParticle, currTrack, dummyStep, edm::ParameterSet::getParameter(), GeV, mps_fire::i, index, fastsim::initializeOnce, intLengthElastic, intLengthInelastic, MeV, npoints, numHadrons, targetNucleus, theBertiniCascade, theBertiniLimit, theDiffuseElastic, theDistCut, theEnergyLimit, theG4Hadron, theHadronicModel, theId, theLund, theStringDecay, theStringModel, and vect.
|
override |
Default destructor.
Definition at line 386 of file NuclearInteractionFTF.cc.
|
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 393 of file NuclearInteractionFTF.cc.
References funct::abs(), fastsim::Particle::charge(), corrfactors_el, corrfactors_inel, funct::cos(), DeadROC_duringRun::dir, alignCSCRings::e, RandomEngineAndDistribution::flatShoot(), fastsim::Particle::getMotherDeltaR(), fastsim::Particle::getMotherPdgId(), fastsim::SimplifiedGeometry::getNuclearInteractionThicknessFactor(), fastsim::SimplifiedGeometry::getThickness(), GeV, dqmiolumiharvest::j, ResonanceBuilder::mass, fastsim::Particle::momentum(), npoints, nuclElLength, nuclInelLength, numHadrons, fastsim::Particle::pdgId(), fastsim::Particle::position(), mps_fire::result, fastsim::Particle::simTrackIndex(), funct::sin(), and mathSSE::sqrt().
|
private |
elastic interaction length corrections per particle and energy
Definition at line 220 of file NuclearInteractionFTF.cc.
|
private |
inelastic interaction length corrections per particle and energy
Definition at line 160 of file NuclearInteractionFTF.cc.
|
private |
Definition at line 144 of file NuclearInteractionFTF.cc.
|
private |
Index of particle in vector of Geant4 particles.
Definition at line 156 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 140 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 139 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 138 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Index for energy of particle (vectors parametrized as a function of energy)
Definition at line 157 of file NuclearInteractionFTF.cc.
Referenced by BeautifulSoup.PageElement::_invert(), and NuclearInteractionFTF().
|
private |
Elastic interaction length.
Definition at line 153 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Inelastic interaction length.
Definition at line 154 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
staticprivate |
Number of steps to cover range of particle energies.
Definition at line 123 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
elastic interaction length in Silicon at 1 TeV per particle
Definition at line 285 of file NuclearInteractionFTF.cc.
|
private |
inelastic interaction length in Silicon at 1 TeV per particle
Definition at line 279 of file NuclearInteractionFTF.cc.
|
staticprivate |
Number of G4 hadrons.
Definition at line 122 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 142 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 135 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Bertini cascade for low-energy hadrons.
Definition at line 148 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 146 of file NuclearInteractionFTF.cc.
|
private |
Definition at line 133 of file NuclearInteractionFTF.cc.
|
private |
Definition at line 136 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Cut on deltaR for ClosestChargedDaughter algorithm (FastSim tracking)
Definition at line 151 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Minimum energy of interacting particle.
Definition at line 149 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
staticprivate |
The Geant4 particles.
Definition at line 125 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 129 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
staticprivate |
The pdgIDs of the Geant4 particles.
Definition at line 126 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 132 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 143 of file NuclearInteractionFTF.cc.
|
private |
Definition at line 131 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 130 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 128 of file NuclearInteractionFTF.cc.
Referenced by NuclearInteractionFTF().
|
private |
Definition at line 145 of file NuclearInteractionFTF.cc.