![]() |
ATLAS Offline Software
|
Punch through calculations. More...
#include <PunchThroughG4Tool.h>
Public Member Functions | |
| PunchThroughG4Tool (const std::string &, const std::string &, const IInterface *) | |
| virtual | ~PunchThroughG4Tool ()=default |
| virtual StatusCode | initialize () override |
| AlgTool initialize method. | |
| virtual StatusCode | finalize () override |
| AlgTool finalize method. | |
| StatusCode | initializePhysics () override |
| virtual std::vector< std::map< std::string, double > > | computePunchThroughParticles (const G4FastTrack &fastTrack, CLHEP::HepRandomEngine *rndmEngine, double punchThroughProbability, double punchThroughClassifierRand) override |
| interface function: fill a vector with the punch-through particles | |
| virtual void | createAllSecondaryTracks (G4ParticleTable &ptable, G4FastStep &fastStep, const G4Track &g4PrimaryTrack, std::vector< std::map< std::string, double > > &secKinematicsMapVect, G4TrackVector &secTrackCont, const std::vector< double > &caloMSVars) override |
| create all secondary tracks from kinematics map | |
| virtual std::vector< double > | getCaloMSVars () override |
Private Member Functions | |
| void | checkParticleTable (G4ParticleTable &ptable, int secondarySignedPDG) |
| StatusCode | registerPunchThroughParticle (G4ParticleTable &ptable, int pdg, bool doAntiparticle=false, double minEnergy=0., int maxNumParticles=-1, double numParticlesFactor=1., double energyFactor=1., double posAngleFactor=1., double momAngleFactor=1.) |
| registers a type of punch-through particles which will be simulated | |
| StatusCode | initializeRegisterPunchThroughParticles () |
| initialize register all the punch-through particles which will be simulated | |
| StatusCode | registerCorrelation (int pdgID1, int pdgID2, double minCorrEnergy=0., double fullCorrEnergy=0.) |
| register a correlation for the two given types of punch-through particles with a given energy threshold above which we will have full correlation | |
| StatusCode | initializeRegisterCorrelations () |
| initialize register all correlations between particles | |
| std::unique_ptr< PunchThroughPDFCreator > | readLookuptablePDF (int pdgID, TFile *fileLookupTable, const std::string &folderName) |
| reads out the lookuptable for the given type of particle | |
| StatusCode | checkCaloMSBoundaries (const std::vector< std::pair< double, double > > *rzMS, const std::vector< std::pair< double, double > > *rzCalo) |
| Check calo-MS boundaries. | |
| int | getAllParticles (const G4Track &g4PrimaryTrack, std::vector< std::map< std::string, double > > &secKinematicsMapVect, CLHEP::HepRandomEngine *rndmEngine, int pdg, double interpEnergy, double interpEta, int numParticles=-1) |
| create the right number of punch-through particles for the given pdg and return the number of particles which was created. | |
| G4ThreeVector | punchTroughPosPropagator (double theta, double phi, double R1, double R2, double z1, double z2) const |
| get particle through the calorimeter | |
| std::vector< std::map< std::string, double > > | checkEnergySumFromSecondaries (double mainEnergyInit, std::vector< std::map< std::string, double > > &secKinematicsMapVect) |
| check the energies satisfying energy condition | |
| G4Track * | createSecondaryTrack (G4ParticleTable &ptable, G4FastStep &fastStep, double currentTime, int secondarySignedPDG, double energy, double theta, double phi, double momTheta, double momPhi, const std::vector< double > &caloMSVars) |
| create secondary track for each given the kinematics | |
| int | getCorrelatedParticles (const G4Track &g4PrimaryTrack, std::vector< std::map< std::string, double > > &secKinematicsMapVect, int pdg, int corrParticles, CLHEP::HepRandomEngine *rndmEngine, double interpEnergy, double interpEta) |
| get the right number of particles for the given pdg while considering the correlation to an other particle type, which has already created 'corrParticles' number of particles | |
| std::map< std::string, double > | getOneParticleKinematics (CLHEP::HepRandomEngine *rndmEngine, int secondaryPDG, float initParticleTheta, float initParticlePhi, double interpEnergy, double interpEta) const |
| create exactly one punch-through particle with the given pdg and the given max energy | |
| double | getFloatAfterPatternInStr (const char *str, const char *pattern) |
| get the floating point number in a string, after the given pattern | |
| std::vector< double > | inversePCA (int pcaCdfIterator, std::vector< double > &variables) const |
| double | interpolateEnergy (const double &energy, CLHEP::HepRandomEngine *rndmEngine) const |
| double | interpolateEta (const double &eta, CLHEP::HepRandomEngine *rndmEngine) const |
| std::vector< std::map< std::string, std::string > > | getInfoMap (const std::string &mainNode, const std::string &xmlFilePath) |
| int | passedParamIterator (int pid, double eta, const std::vector< std::map< std::string, std::string > > &mapvect) const |
| StatusCode | initializeInverseCDF (const std::string &quantileTransformerConfigFile) |
| StatusCode | initializeInversePCA (const std::string &inversePCAConfigFile) |
Static Private Member Functions | |
| static double | inverseCdfTransform (double variable, const std::map< double, double > &inverse_cdf_map) |
| static std::vector< double > | dotProduct (const std::vector< std::vector< double > > &m, const std::vector< double > &v) |
| static double | normal_cdf (double x) |
| static std::map< double, double > | getVariableCDFmappings (xmlNodePtr &nodeParent) |
Private Attributes | |
| std::vector< double > | m_energyPoints |
| energy and eta points in param | |
| std::vector< double > | m_etaPoints |
| double | m_R1 {0.} |
| calo-MS borders | |
| double | m_R2 {0.} |
| double | m_z1 {0.} |
| double | m_z2 {0.} |
| TFile * | m_fileLookupTable {nullptr} |
| ROOT objects. | |
| std::map< int, PunchThroughParticle * > | m_particles |
| needed to initially create punch-through particles with the right distributions | |
| StringProperty | m_filenameLookupTable {this, "FilenameLookupTable", "CaloPunchThroughParametrisation.root", "holds the filename of the lookup table"} |
| StringProperty | m_filenameInverseCDF {this, "FilenameInverseCdf", "", "holds the filename of inverse quantile transformer config"} |
| StringProperty | m_filenameInversePCA {this, "FilenameInversePca", "", "holds the filename of inverse PCA config"} |
| IntegerArrayProperty | m_pdgInitiators {this, "PunchThroughInitiators", {}, "vector of punch-through initiator pgds"} |
| IntegerArrayProperty | m_initiatorsMinEnergy {this, "InitiatorsMinEnergy", {}, "vector of punch-through initiator min energies to create punch through"} |
| DoubleArrayProperty | m_initiatorsEtaRange {this, "InitiatorsEtaRange", {}, "vector of min and max abs eta range to allow punch through initiators"} |
| IntegerArrayProperty | m_punchThroughParticles {this, "PunchThroughParticles", {}, "vector of pdgs of the particles produced in punch-throughs"} |
| BooleanArrayProperty | m_doAntiParticles {this, "DoAntiParticles", {}, "vector of bools to determine if anti-particles are created for each punch-through particle type"} |
| IntegerArrayProperty | m_correlatedParticle {this, "CorrelatedParticle", {}, "holds the pdg of the correlated particle for each given pdg"} |
| DoubleArrayProperty | m_minCorrEnergy {this, "MinCorrelationEnergy", {}, "holds the energy threshold below which no particle correlation is computed"} |
| DoubleArrayProperty | m_fullCorrEnergy {this, "FullCorrelationEnergy", {}, "holds the energy threshold above which a particle correlation is fully developed"} |
| DoubleArrayProperty | m_posAngleFactor {this, "ScalePosDeflectionAngles", {}, "tuning parameter to scale the position deflection angles"} |
| DoubleArrayProperty | m_momAngleFactor {this, "ScaleMomDeflectionAngles", {}, "tuning parameter to scale the momentum deflection angles"} |
| DoubleArrayProperty | m_minEnergy {this, "MinEnergy", {}, "punch-through particles minimum energies"} |
| IntegerArrayProperty | m_maxNumParticles {this, "MaxNumParticles", {}, "maximum number of punch-through particles for each particle type"} |
| DoubleArrayProperty | m_numParticlesFactor {this, "NumParticlesFactor", {}, "scale the number of punch-through particles"} |
| DoubleArrayProperty | m_energyFactor {this, "EnergyFactor", {}, "scale the energy of the punch-through particles"} |
| ServiceHandle< ISF::IGeoIDSvc > | m_geoIDSvc {this, "GeoIDSvc", "ISF::GeoIDSvc"} |
| ServiceHandle< IEnvelopeDefSvc > | m_envDefSvc {this, "EnvelopeDefSvc", "AtlasGeometry_EnvelopeDefSvc"} |
| DoubleProperty | m_beamPipe {this, "BeamPipeRadius", 500.} |
| beam pipe radius | |
| std::vector< std::vector< std::vector< double > > > | m_inverse_PCA_matrix |
| pca vectors | |
| std::vector< std::vector< double > > | m_PCA_means |
| std::vector< std::map< std::string, std::string > > | m_xml_info_pca |
| infoMaps | |
| std::vector< std::map< std::string, std::string > > | m_xml_info_cdf |
| std::vector< std::map< double, double > > | m_variable0_inverse_cdf |
| (vector of map) for CDF mappings | |
| std::vector< std::map< double, double > > | m_variable1_inverse_cdf |
| std::vector< std::map< double, double > > | m_variable2_inverse_cdf |
| std::vector< std::map< double, double > > | m_variable3_inverse_cdf |
| std::vector< std::map< double, double > > | m_variable4_inverse_cdf |
Punch through calculations.
Definition at line 50 of file PunchThroughG4Tool.h.
| PunchThroughG4Tool::PunchThroughG4Tool | ( | const std::string & | type, |
| const std::string & | name, | ||
| const IInterface * | parent ) |
Definition at line 39 of file PunchThroughG4Tool.cxx.
|
virtualdefault |
|
private |
Check calo-MS boundaries.
Definition at line 205 of file PunchThroughG4Tool.cxx.
|
private |
check the energies satisfying energy condition
Definition at line 736 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 277 of file PunchThroughG4Tool.cxx.
|
overridevirtual |
interface function: fill a vector with the punch-through particles
Definition at line 284 of file PunchThroughG4Tool.cxx.
|
overridevirtual |
create all secondary tracks from kinematics map
Definition at line 782 of file PunchThroughG4Tool.cxx.
|
private |
create secondary track for each given the kinematics
Definition at line 832 of file PunchThroughG4Tool.cxx.
|
staticprivate |
Definition at line 865 of file PunchThroughG4Tool.cxx.
|
overridevirtual |
AlgTool finalize method.
Definition at line 265 of file PunchThroughG4Tool.cxx.
|
private |
create the right number of punch-through particles for the given pdg and return the number of particles which was created.
also create these particles with the right distributions (energy, theta, phi). if a second argument is given, create exactly this number of particles (also with the right energy,theta,phi distributions
Definition at line 472 of file PunchThroughG4Tool.cxx.
|
overridevirtual |
Definition at line 197 of file PunchThroughG4Tool.cxx.
|
private |
get the right number of particles for the given pdg while considering the correlation to an other particle type, which has already created 'corrParticles' number of particles
Definition at line 529 of file PunchThroughG4Tool.cxx.
|
private |
get the floating point number in a string, after the given pattern
Definition at line 1464 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 929 of file PunchThroughG4Tool.cxx.
|
private |
create exactly one punch-through particle with the given pdg and the given max energy
Definition at line 603 of file PunchThroughG4Tool.cxx.
|
staticprivate |
Definition at line 1112 of file PunchThroughG4Tool.cxx.
|
overridevirtual |
AlgTool initialize method.
Definition at line 45 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 1047 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 984 of file PunchThroughG4Tool.cxx.
|
override |
Definition at line 105 of file PunchThroughG4Tool.cxx.
|
private |
initialize register all correlations between particles
Definition at line 162 of file PunchThroughG4Tool.cxx.
|
private |
initialize register all the punch-through particles which will be simulated
Definition at line 73 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 1148 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 1209 of file PunchThroughG4Tool.cxx.
|
staticprivate |
Definition at line 1133 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 975 of file PunchThroughG4Tool.cxx.
|
staticprivate |
Definition at line 861 of file PunchThroughG4Tool.cxx.
|
private |
Definition at line 900 of file PunchThroughG4Tool.cxx.
|
private |
get particle through the calorimeter
Definition at line 1483 of file PunchThroughG4Tool.cxx.
|
private |
reads out the lookuptable for the given type of particle
Definition at line 1397 of file PunchThroughG4Tool.cxx.
|
private |
register a correlation for the two given types of punch-through particles with a given energy threshold above which we will have full correlation
Definition at line 1349 of file PunchThroughG4Tool.cxx.
|
private |
registers a type of punch-through particles which will be simulated
Definition at line 1276 of file PunchThroughG4Tool.cxx.
|
private |
beam pipe radius
Definition at line 220 of file PunchThroughG4Tool.h.
|
private |
Definition at line 203 of file PunchThroughG4Tool.h.
|
private |
Definition at line 202 of file PunchThroughG4Tool.h.
|
private |
Definition at line 211 of file PunchThroughG4Tool.h.
|
private |
energy and eta points in param
Definition at line 176 of file PunchThroughG4Tool.h.
|
private |
Definition at line 217 of file PunchThroughG4Tool.h.
|
private |
Definition at line 177 of file PunchThroughG4Tool.h.
|
private |
ROOT objects.
the punch-through lookup table file
Definition at line 186 of file PunchThroughG4Tool.h.
|
private |
Definition at line 195 of file PunchThroughG4Tool.h.
|
private |
Definition at line 196 of file PunchThroughG4Tool.h.
|
private |
Definition at line 194 of file PunchThroughG4Tool.h.
|
private |
Definition at line 205 of file PunchThroughG4Tool.h.
|
private |
Definition at line 216 of file PunchThroughG4Tool.h.
|
private |
Definition at line 200 of file PunchThroughG4Tool.h.
|
private |
Definition at line 199 of file PunchThroughG4Tool.h.
|
private |
pca vectors
Definition at line 223 of file PunchThroughG4Tool.h.
|
private |
Definition at line 209 of file PunchThroughG4Tool.h.
|
private |
Definition at line 204 of file PunchThroughG4Tool.h.
|
private |
Definition at line 208 of file PunchThroughG4Tool.h.
|
private |
Definition at line 207 of file PunchThroughG4Tool.h.
|
private |
Definition at line 210 of file PunchThroughG4Tool.h.
|
private |
needed to initially create punch-through particles with the right distributions
store all punch-through information for each particle id
Definition at line 189 of file PunchThroughG4Tool.h.
|
private |
Definition at line 224 of file PunchThroughG4Tool.h.
|
private |
Definition at line 198 of file PunchThroughG4Tool.h.
|
private |
Definition at line 206 of file PunchThroughG4Tool.h.
|
private |
Definition at line 201 of file PunchThroughG4Tool.h.
|
private |
|
private |
Definition at line 181 of file PunchThroughG4Tool.h.
|
private |
(vector of map) for CDF mappings
Definition at line 231 of file PunchThroughG4Tool.h.
|
private |
Definition at line 232 of file PunchThroughG4Tool.h.
|
private |
Definition at line 233 of file PunchThroughG4Tool.h.
|
private |
Definition at line 234 of file PunchThroughG4Tool.h.
|
private |
Definition at line 235 of file PunchThroughG4Tool.h.
|
private |
Definition at line 228 of file PunchThroughG4Tool.h.
|
private |
infoMaps
Definition at line 227 of file PunchThroughG4Tool.h.
|
private |
Definition at line 182 of file PunchThroughG4Tool.h.
|
private |
Definition at line 183 of file PunchThroughG4Tool.h.