Implementation of nuclear interactions of hadrons in the tracker layers (based on fully simulated interactions). 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... | |
NuclearInteraction (const std::string &name, const edm::ParameterSet &cfg) | |
Constructor. More... | |
~NuclearInteraction () 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 Member Functions | |
unsigned | index (int thePid) |
Return a hashed index for a given particle ID. More... | |
XYZVector | orthogonal (const XYZVector &aVector) const |
Return an orthogonal vector. More... | |
bool | read (std::string inputFile) |
Read the nuclear interactions from a file, so you can reproduce the events (e.g. in case of a crash). More... | |
void | save () |
Save the nuclear interactions to a file, so you can reproduce the events (e.g. in case of a crash). More... | |
Private Attributes | |
const std::vector< int > | antineutronsID = {-2112, -3122, -3112, -3312, -3322} |
PdgID of anti-neutrons. More... | |
const std::vector< int > | antiprotonsID = {-2212, -3222} |
PdgID of anti-protons. More... | |
bool | currentValuesWereSet |
Read data from file that was created in a previous run. More... | |
unsigned | ien4 |
Find the index for which EN = 4. More... | |
std::string | inputFile |
Directory/Name of input file in case you want to read interactions from file. More... | |
const std::vector< int > | K0LsID = {130, 310} |
PdgID of K0. More... | |
const std::vector< int > | KminussesID = {-321} |
PdgID of K-. More... | |
const std::vector< int > | KplussesID = {321} |
PdgID of K+. More... | |
unsigned | myOutputBuffer |
Needed to save interactions to file. More... | |
std::ofstream | myOutputFile |
Output file to save interactions. More... | |
const std::vector< int > | neutronsID = {2112, 3122, 3112, 3312, 3322, 3334, -3334} |
PdgID of neutrons. More... | |
const std::vector< int > | PiminussesID = {-211} |
PdgID of pi-. More... | |
const std::vector< int > | PiplussesID = {211} |
PdgID of pt+. More... | |
const std::vector< int > | protonsID = {2212, 3222, -101, -102, -103, -104} |
PdgID of protons. More... | |
std::vector< std::vector< TBranch * > > | theBranches |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< unsigned > > | theCurrentEntry |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< unsigned > > | theCurrentInteraction |
Necessary to read the FullSim interactions. More... | |
double | theDistCut |
Cut on deltaR for the FastSim Tracking (ClosestChargedDaughter algorithm) More... | |
TFile * | theFile = 0 |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< std::string > > | theFileNames |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< double > > | theHadronCM |
Necessary to read the FullSim interactions. More... | |
const std::vector< double > | theHadronEN = {1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 12.0, 15.0, 20.0, 30.0, 50.0, 100.0, 200.0, 300.0, 500.0, 700.0, 1000.0} |
Filled into 'theRatiosMap' (evolution of the interaction lengths with energy) More... | |
double | theHadronEnergy |
Minimum energy for nuclear interaction. More... | |
const std::vector< int > | theHadronID = {211, -211, 130, 321, -321, 2212, -2212, 2112, -2112} |
ID of the hadrons. More... | |
const std::vector< double > | theHadronMA = {0.13957, 0.13957, 0.497648, 0.493677, 0.493677, 0.93827, 0.93827, 0.939565, 0.939565} |
Masses of the hadrons. More... | |
const std::vector< std::string > | theHadronNA = {"piplus", "piminus", "K0L", "Kplus", "Kminus", "p", "pbar", "n", "nbar"} |
Names of the hadrons. More... | |
const std::vector< double > | theHadronPMin = {0.7, 0.0, 1.0, 1.0, 0.0, 1.1, 0.0, 1.1, 0.0} |
Smallest momentum for inelastic interactions. More... | |
const std::vector< double > | theLengthRatio |
Inelastic interaction length at p(Hadron) = 5 GeV/c (relativ to radionLength of material) More... | |
std::vector< std::vector< NUEvent * > > | theNUEvents |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< unsigned > > | theNumberOfEntries |
Necessary to read the FullSim interactions. More... | |
std::vector< std::vector< unsigned > > | theNumberOfInteractions |
Necessary to read the FullSim interactions. More... | |
const std::vector< double > | theRatios |
Filled into 'theRatiosMap' (evolution of the interaction lengths with energy) More... | |
std::vector< std::vector< TTree * > > | theTrees |
Necessary to read the FullSim interactions. More... | |
Static Private Attributes | |
static std::map< int, int > | theIDMap |
Build the ID map (i.e., what is to be considered as a proton, etc...) More... | |
static std::vector< std::vector< double > > | theRatiosMap |
The evolution of the interaction lengths with energy. More... | |
Implementation of nuclear interactions of hadrons in the tracker layers (based on fully simulated interactions).
Computes the probability for hadrons to interact with a nucleon of the tracker material (inelastically) and then reads a nuclear interaction randomly from multiple fully simulated files. Also, another implementation of nuclear interactions can be used that is based on G4 (NuclearInteractionFTF).
Definition at line 61 of file NuclearInteraction.cc.
fastsim::NuclearInteraction::NuclearInteraction | ( | const std::string & | name, |
const edm::ParameterSet & | cfg | ||
) |
Constructor.
Definition at line 210 of file NuclearInteraction.cc.
References antineutronsID, antiprotonsID, looper::cfg, gather_cfg::cout, currentValuesWereSet, Exception, corrVsCorr::filename, edm::FileInPath::fullPath(), mps_fire::i, triggerObjects_cff::id, ien4, inputFile, K0LsID, KminussesID, KplussesID, myOutputBuffer, myOutputFile, neutronsID, PiminussesID, PiplussesID, protonsID, read(), TrajectoryFactories_cff::Reference, mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, theBranches, theCurrentEntry, theCurrentInteraction, theDistCut, theFile, theFileNames, theHadronCM, theHadronEN, theHadronEnergy, theHadronID, theHadronMA, theHadronNA, theNUEvents, theNumberOfEntries, theNumberOfInteractions, theRatios, and theTrees.
|
override |
Default destructor.
Definition at line 349 of file NuclearInteraction.cc.
References myOutputFile, save(), theFile, and theNUEvents.
|
private |
Return a hashed index for a given particle ID.
Definition at line 770 of file NuclearInteraction.cc.
References theHadronID.
Referenced by BeautifulSoup.PageElement::insert(), and interact().
|
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 369 of file NuclearInteraction.cc.
References patCaloMETCorrections_cff::A, funct::abs(), fastsim::Particle::charge(), currentValuesWereSet, randomXiThetaGunProducer_cfi::energy, JetChargeProducer_cfi::exp, NUEvent::NUInteraction::first, RandomEngineAndDistribution::flatShoot(), fastsim::SimplifiedGeometry::getNuclearInteractionThicknessFactor(), fastsim::SimplifiedGeometry::getThickness(), NUEvent::NUParticle::id, ien4, index(), NUEvent::NUInteraction::last, cmsBatch::log, M_PI, NUEvent::NUParticle::mass, fastsim::Particle::momentum(), orthogonal(), common_cff::pdgId, fastsim::Particle::pdgId(), ALCARECOTkAlMinBias_cff::pMin, fastsim::Particle::position(), funct::pow(), NUEvent::NUParticle::px, NUEvent::NUParticle::py, NUEvent::NUParticle::pz, fastsim::Particle::simTrackIndex(), funct::sin(), slope, mathSSE::sqrt(), theCurrentEntry, theCurrentInteraction, theDistCut, theHadronCM, theHadronEN, theHadronEnergy, theHadronNA, theHadronPMin, theIDMap, theLengthRatio, theNUEvents, theNumberOfEntries, theNumberOfInteractions, theRatiosMap, theta(), theTrees, and MetAnalyzer::zAxis.
Return an orthogonal vector.
Definition at line 779 of file NuclearInteraction.cc.
References DEFINE_EDM_PLUGIN, x, y, and z.
Referenced by interact().
|
private |
Read the nuclear interactions from a file, so you can reproduce the events (e.g. in case of a crash).
Definition at line 711 of file NuclearInteraction.cc.
References mps_update::results, findQualityFiles::size, trackingPlots::stat, theCurrentEntry, and theCurrentInteraction.
Referenced by edmIntegrityCheck.PublishToFileSystem::get(), Vispa.Plugins.EdmBrowser.EdmDataAccessor.EdmDataAccessor::goto(), NuclearInteraction(), and Vispa.Plugins.EdmBrowser.EdmDataAccessor.EdmDataAccessor::setFilterBranches().
|
private |
Save the nuclear interactions to a file, so you can reproduce the events (e.g. in case of a crash).
Definition at line 664 of file NuclearInteraction.cc.
References myOutputBuffer, myOutputFile, findQualityFiles::size, theCurrentEntry, and theCurrentInteraction.
Referenced by Vispa.Main.TabController.TabController::allowClose(), Vispa.Main.TabController.TabController::checkModificationTimestamp(), and ~NuclearInteraction().
|
private |
PdgID of anti-neutrons.
Definition at line 194 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of anti-protons.
Definition at line 192 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Read data from file that was created in a previous run.
Definition at line 117 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Find the index for which EN = 4.
Definition at line 112 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Directory/Name of input file in case you want to read interactions from file.
Definition at line 94 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of K0.
Definition at line 195 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of K-.
Definition at line 197 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of K+.
Definition at line 196 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Needed to save interactions to file.
Definition at line 115 of file NuclearInteraction.cc.
Referenced by NuclearInteraction(), and save().
|
private |
Output file to save interactions.
Definition at line 114 of file NuclearInteraction.cc.
Referenced by NuclearInteraction(), save(), and ~NuclearInteraction().
|
private |
PdgID of neutrons.
Definition at line 193 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of pi-.
Definition at line 199 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of pt+.
Definition at line 198 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
PdgID of protons.
Definition at line 191 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 103 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 105 of file NuclearInteraction.cc.
Referenced by interact(), NuclearInteraction(), read(), and save().
|
private |
Necessary to read the FullSim interactions.
Definition at line 106 of file NuclearInteraction.cc.
Referenced by interact(), NuclearInteraction(), read(), and save().
|
private |
Cut on deltaR for the FastSim Tracking (ClosestChargedDaughter algorithm)
Definition at line 92 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 101 of file NuclearInteraction.cc.
Referenced by NuclearInteraction(), and ~NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 109 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 110 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Filled into 'theRatiosMap' (evolution of the interaction lengths with energy)
Definition at line 129 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Minimum energy for nuclear interaction.
Definition at line 93 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
ID of the hadrons.
Definition at line 134 of file NuclearInteraction.cc.
Referenced by index(), and NuclearInteraction().
|
private |
Masses of the hadrons.
Definition at line 138 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
private |
Names of the hadrons.
Definition at line 136 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Smallest momentum for inelastic interactions.
Definition at line 140 of file NuclearInteraction.cc.
Referenced by interact().
|
staticprivate |
Build the ID map (i.e., what is to be considered as a proton, etc...)
Definition at line 126 of file NuclearInteraction.cc.
Referenced by interact().
|
private |
Inelastic interaction length at p(Hadron) = 5 GeV/c (relativ to radionLength of material)
Definition at line 142 of file NuclearInteraction.cc.
Referenced by interact().
|
private |
Necessary to read the FullSim interactions.
Definition at line 104 of file NuclearInteraction.cc.
Referenced by interact(), NuclearInteraction(), and ~NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 107 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Necessary to read the FullSim interactions.
Definition at line 108 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().
|
private |
Filled into 'theRatiosMap' (evolution of the interaction lengths with energy)
Definition at line 148 of file NuclearInteraction.cc.
Referenced by NuclearInteraction().
|
staticprivate |
The evolution of the interaction lengths with energy.
Definition at line 124 of file NuclearInteraction.cc.
Referenced by interact().
|
private |
Necessary to read the FullSim interactions.
Definition at line 102 of file NuclearInteraction.cc.
Referenced by interact(), and NuclearInteraction().