5#ifndef ISF_PUNCHTHROUGHTOOLS_SRC_PUNCHTHROUGHTOOL_H
6#define ISF_PUNCHTHROUGHTOOLS_SRC_PUNCHTHROUGHTOOL_H 1
22#include "GaudiKernel/IPartPropSvc.h"
31#include <libxml/xmlmemory.h>
32#include <libxml/parser.h>
33#include <libxml/tree.h>
34#include <libxml/xmlreader.h>
35#include <libxml/xpath.h>
36#include <libxml/xpathInternals.h>
45 class ParticleDataTable;
77 double minEnergy = 0.,
int maxNumParticles = -1,
78 double numParticlesFactor = 1.,
double energyFactor = 1.,
79 double posAngleFactor = 1.,
80 double momAngleFactor = 1.);
83 StatusCode
registerCorrelation(
int pdgID1,
int pdgID2,
double minCorrEnergy = 0.,
double fullCorrEnergy = 0.);
86 std::unique_ptr<ISF::PDFcreator>
readLookuptablePDF(
int pdgID,
const std::string& folderName);
112 std::vector<double>
inversePCA(
int pcaCdfIterator, std::vector<double> &variables)
const;
115 static double inverseCdfTransform(
double variable,
const std::map<double, double>& inverse_cdf_map) ;
118 static std::vector<double>
dotProduct(
const std::vector<std::vector<double>> &m,
const std::vector<double> &v) ;
124 double interpolateEnergy(
const double &energy, CLHEP::HepRandomEngine* rndmEngine)
const;
127 double interpolateEta(
const double &
eta, CLHEP::HepRandomEngine* rndmEngine)
const;
130 std::vector<std::map<std::string,std::string>>
getInfoMap(
const std::string& mainNode,
const std::string &xmlFilePath);
133 int passedParamIterator(
int pid,
double eta,
const std::vector<std::map<std::string,std::string>> &mapvect)
const;
173 StringProperty
m_filenameLookupTable{
this,
"FilenameLookupTable",
"CaloPunchThroughParametrisation.root",
"holds the filename of the lookup table"};
174 StringProperty
m_filenameInverseCDF{
this,
"FilenameInverseCdf",
"",
"holds the filename of inverse quantile transformer config"};
175 StringProperty
m_filenameInversePCA{
this,
"FilenameInversePca",
"",
"holds the filename of inverse PCA config"};
177 PublicToolHandle<IPunchThroughClassifier>
m_punchThroughClassifier{
this,
"PunchThroughClassifier",
"ISF_PunchThroughClassifier",
""};
178 IntegerArrayProperty
m_pdgInitiators{
this,
"PunchThroughInitiators", {},
"vector of punch-through initiator pgds"};
179 IntegerArrayProperty
m_initiatorsMinEnergy{
this,
"InitiatorsMinEnergy", {},
"vector of punch-through initiator min energies to create punch through"};
180 DoubleArrayProperty
m_initiatorsEtaRange{
this,
"InitiatorsEtaRange", {},
"vector of min and max abs eta range to allow punch through initiators"};
181 IntegerArrayProperty
m_punchThroughParticles{
this,
"PunchThroughParticles", {},
"vector of pdgs of the particles produced in punch-throughs"};
182 BooleanArrayProperty
m_doAntiParticles{
this,
"DoAntiParticles", {},
"vector of bools to determine if anti-particles are created for each punch-through particle type"};
183 IntegerArrayProperty
m_correlatedParticle{
this,
"CorrelatedParticle", {},
"holds the pdg of the correlated particle for each given pdg"};
184 DoubleArrayProperty
m_minCorrEnergy{
this,
"MinCorrelationEnergy", {},
"holds the energy threshold below which no particle correlation is computed"};
185 DoubleArrayProperty
m_fullCorrEnergy{
this,
"FullCorrelationEnergy", {},
"holds the energy threshold above which a particle correlation is fully developed"};
186 DoubleArrayProperty
m_posAngleFactor{
this,
"ScalePosDeflectionAngles", {},
"tuning parameter to scale the position deflection angles"};
187 DoubleArrayProperty
m_momAngleFactor{
this,
"ScaleMomDeflectionAngles", {},
"tuning parameter to scale the momentum deflection angles"};
188 DoubleArrayProperty
m_minEnergy{
this,
"MinEnergy", {},
"punch-through particles minimum energies"};
189 IntegerArrayProperty
m_maxNumParticles{
this,
"MaxNumParticles", {},
"maximum number of punch-through particles for each particle type"};
190 DoubleArrayProperty
m_numParticlesFactor{
this,
"NumParticlesFactor", {},
"scale the number of punch-through particles"};
191 DoubleArrayProperty
m_energyFactor{
this,
"EnergyFactor", {},
"scale the energy of the punch-through particles"};
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Scalar theta() const
theta method
The generic ISF particle definition,.
Creates random numbers with a distribution given as ROOT TF1.
This class holds information for different properties of a punch-through particle (energy,...
Eigen::Matrix< double, 3, 1 > Vector3D
std::vector< ISF::ISFParticle * > ISFParticleVector
ISFParticle vector.