Loading [MathJax]/extensions/tex2jax.js
 |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef G4ATLASTOOLS_PUNCHTHROUGHG4TOOL_H
6 #define G4ATLASTOOLS_PUNCHTHROUGHG4TOOL_H
22 #include <libxml/xmlmemory.h>
23 #include <libxml/parser.h>
24 #include <libxml/tree.h>
25 #include <libxml/xmlreader.h>
26 #include <libxml/xpath.h>
27 #include <libxml/xpathInternals.h>
30 #include "G4ParticleTable.hh"
32 #include "G4TrackVector.hh"
33 #include "G4FastTrack.hh"
34 #include "G4FastStep.hh"
63 virtual std::vector<std::map<std::string, double>>
computePunchThroughParticles(
const G4FastTrack& fastTrack, CLHEP::HepRandomEngine* rndmEngine,
double punchThroughProbability,
double punchThroughClassifierRand)
override;
66 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;
80 int pdg,
bool doAntiparticle =
false,
81 double minEnergy = 0.,
82 int maxNumParticles = -1,
83 double numParticlesFactor = 1.,
84 double energyFactor = 1.,
85 double posAngleFactor = 1.,
86 double momAngleFactor = 1.);
108 const std::vector<std::pair<double, double>>* rzCalo);
115 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);
120 std::vector<std::map<std::string, double>>
checkEnergySumFromSecondaries(
double mainEnergyInit, std::vector<std::map<std::string, double>> &secKinematicsMapVect);
122 G4Track*
createSecondaryTrack( G4ParticleTable &ptable, G4FastStep& fastStep,
double currentTime,
int secondarySignedPDG,
123 double energy,
double theta,
double phi,
double momTheta,
double momPhi,
const std::vector<double> &caloMSVars);
128 int getCorrelatedParticles(
const G4Track& g4PrimaryTrack, std::vector<std::map<std::string, double>> &secKinematicsMapVect,
int pdg,
int corrParticles, CLHEP::HepRandomEngine* rndmEngine,
double interpEnergy,
double interpEta);
131 std::map<std::string, double>
getOneParticleKinematics(CLHEP::HepRandomEngine* rndmEngine,
int secondaryPDG,
float initParticleTheta,
float initParticlePhi,
double interpEnergy,
double interpEta)
const;
143 static std::vector<double>
dotProduct(
const std::vector<std::vector<double>> &
m,
const std::vector<double> &
v) ;
152 double interpolateEta(
const double &
eta, CLHEP::HepRandomEngine* rndmEngine)
const;
155 std::vector<std::map<std::string,std::string>>
getInfoMap(
const std::string& mainNode,
const std::string &xmlFilePath);
191 StringProperty
m_filenameLookupTable{
this,
"FilenameLookupTable",
"CaloPunchThroughParametrisation.root",
"holds the filename of the lookup table"};
192 StringProperty
m_filenameInverseCDF{
this,
"FilenameInverseCdf",
"",
"holds the filename of inverse quantile transformer config"};
193 StringProperty
m_filenameInversePCA{
this,
"FilenameInversePca",
"",
"holds the filename of inverse PCA config"};
195 IntegerArrayProperty
m_pdgInitiators{
this,
"PunchThroughInitiators", {},
"vector of punch-through initiator pgds"};
196 IntegerArrayProperty
m_initiatorsMinEnergy{
this,
"InitiatorsMinEnergy", {},
"vector of punch-through initiator min energies to create punch through"};
197 DoubleArrayProperty
m_initiatorsEtaRange{
this,
"InitiatorsEtaRange", {},
"vector of min and max abs eta range to allow punch through initiators"};
198 IntegerArrayProperty
m_punchThroughParticles{
this,
"PunchThroughParticles", {},
"vector of pdgs of the particles produced in punch-throughs"};
199 BooleanArrayProperty
m_doAntiParticles{
this,
"DoAntiParticles", {},
"vector of bools to determine if anti-particles are created for each punch-through particle type"};
200 IntegerArrayProperty
m_correlatedParticle{
this,
"CorrelatedParticle", {},
"holds the pdg of the correlated particle for each given pdg"};
201 DoubleArrayProperty
m_minCorrEnergy{
this,
"MinCorrelationEnergy", {},
"holds the energy threshold below which no particle correlation is computed"};
202 DoubleArrayProperty
m_fullCorrEnergy{
this,
"FullCorrelationEnergy", {},
"holds the energy threshold above which a particle correlation is fully developed"};
203 DoubleArrayProperty
m_posAngleFactor{
this,
"ScalePosDeflectionAngles", {},
"tuning parameter to scale the position deflection angles"};
204 DoubleArrayProperty
m_momAngleFactor{
this,
"ScaleMomDeflectionAngles", {},
"tuning parameter to scale the momentum deflection angles"};
205 DoubleArrayProperty
m_minEnergy{
this,
"MinEnergy", {},
"punch-through particles minimum energies"};
206 IntegerArrayProperty
m_maxNumParticles{
this,
"MaxNumParticles", {},
"maximum number of punch-through particles for each particle type"};
207 DoubleArrayProperty
m_numParticlesFactor{
this,
"NumParticlesFactor", {},
"scale the number of punch-through particles"};
208 DoubleArrayProperty
m_energyFactor{
this,
"EnergyFactor", {},
"scale the energy of the punch-through particles"};
236 #endif // G4ATLASTOOLS_PUNCHTHROUGHG4TOOL_H
Scalar phi() const
phi method
Scalar eta() const
pseudorapidity method
Scalar theta() const
theta method
::StatusCode StatusCode
StatusCode definition for legacy code.