ATLAS Offline Software
Loading...
Searching...
No Matches
G4Atlas/G4AtlasTools/src/PunchThroughParticle.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
6// PunchThroughParticle.h, (c) ATLAS Detector software
8
9#ifndef G4ATLASTOOLS_PUNCHTHROUGHPARTICLE_H
10#define G4ATLASTOOLS_PUNCHTHROUGHPARTICLE_H
11
12//
14
15// C++
16#include <memory>
17
18// forward declarations
19class TH2F;
20
29
31{
32public:
33 PunchThroughParticle(int pdg, bool doAnti = false);
35
37 void setMinEnergy(double minEnergy);
38 void setMaxNumParticles(int maxNum);
39 void setNumParticlesFactor(double numFactor);
40 void setEnergyFactor(double energyFactor);
41 void setPosAngleFactor(double momAngleFactor);
42 void setMomAngleFactor(double momAngleFactor);
43 void setNumParticlesPDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
44 void setCorrelation(int corrPdg, TH2F *histLowE, TH2F *histHighE,
45 double minCorrE = 0., double fullCorrE = 0., double lowE = 0.,
46 double midE = 0., double upperE = 0.);
49 void setPCA0PDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
50 void setPCA1PDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
51 void setPCA2PDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
52 void setPCA3PDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
53 void setPCA4PDF(std::unique_ptr<PunchThroughPDFCreator> pdf);
54
55
57 inline int getId() { return m_pdgId; };
58 inline bool getdoAnti() { return m_doAnti; };
59 inline double getMinEnergy() { return m_minEnergy; };
60 inline double getNumParticlesFactor() { return m_numParticlesFactor; };
61 inline double getEnergyFactor() { return m_energyFactor; };
62 inline double getPosAngleFactor() { return m_posAngleFactor; };
63 inline double getMomAngleFactor() { return m_momAngleFactor; };
64
65 inline int getMaxNumParticles() { return m_maxNum; };
66 inline int getCorrelatedPdg() { return m_corrPdg; };
67 inline int getMinCorrelationEnergy() { return m_corrMinEnergy; };
68 inline int getFullCorrelationEnergy() { return m_corrFullEnergy; };
69 inline TH2F *getCorrelationLowEHist() { return m_histCorrLowE; };
70 inline TH2F *getCorrelationHighEHist() { return m_histCorrHighE; };
71 inline double *getCorrelationHistDomains(){ return m_corrHistDomains; };
73 inline PunchThroughPDFCreator * getPCA0PDF() { return m_pdf_pca0.get(); };
74 inline PunchThroughPDFCreator * getPCA1PDF() { return m_pdf_pca1.get(); };
75 inline PunchThroughPDFCreator * getPCA2PDF() { return m_pdf_pca2.get(); };
76 inline PunchThroughPDFCreator * getPCA3PDF() { return m_pdf_pca3.get(); };
77 inline PunchThroughPDFCreator * getPCA4PDF() { return m_pdf_pca4.get(); };
78
79private:
80 int m_pdgId;
81 bool m_doAnti;
82
84 double m_minEnergy;
86
92
98
102 std::unique_ptr<PunchThroughPDFCreator> m_pdfNumParticles;
103 std::unique_ptr<PunchThroughPDFCreator> m_pdf_pca0;
104 std::unique_ptr<PunchThroughPDFCreator> m_pdf_pca1;
105 std::unique_ptr<PunchThroughPDFCreator> m_pdf_pca2;
106 std::unique_ptr<PunchThroughPDFCreator> m_pdf_pca3;
107 std::unique_ptr<PunchThroughPDFCreator> m_pdf_pca4;
108
109}; // class PunchThroughParticle
110
111#endif
Creates random numbers with a distribution given as ROOT TF1.
int m_maxNum
the maximum number of particles which will be created
void setPCA4PDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the momentumDeltaPhi distribution
int m_corrPdg
all following stores the right distributions for all properties of the punch-through particles
int getMinCorrelationEnergy()
the correlated particle id
double * getCorrelationHistDomains()
the correlation histogram (high energies)
double * m_corrHistDomains
correlation histogram domains
PunchThroughPDFCreator * getPCA1PDF()
distribution parameters for the exit energy
double m_minEnergy
some cut-parameters which will be set via python
void setPCA1PDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the deltaTheta distribution
double m_corrFullEnergy
holds the energy threshold above which a particle correlation is fully developed
std::unique_ptr< PunchThroughPDFCreator > m_pdf_pca0
energy of punch-through particles
void setNumParticlesPDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the number of exit particles distribution
std::unique_ptr< PunchThroughPDFCreator > m_pdfNumParticles
number of punch-through particles
PunchThroughPDFCreator * getNumParticlesPDF()
correlation histogram domains [lowE,midE,upperE]
int getCorrelatedPdg()
the maximum number of particles which will be created
PunchThroughPDFCreator * getPCA0PDF()
distribution parameters for the number of particles
PunchThroughParticle(int pdg, bool doAnti=false)
set this particle's pdg code and if anti-particle should be done or not
PunchThroughPDFCreator * getPCA2PDF()
distribution parameters for the exit delta theta
double getEnergyFactor()
to scale the number of punch-through particles
std::unique_ptr< PunchThroughPDFCreator > m_pdf_pca4
delta phi angle of punch-through particle momentum
void setCorrelation(int corrPdg, TH2F *histLowE, TH2F *histHighE, double minCorrE=0., double fullCorrE=0., double lowE=0., double midE=0., double upperE=0.)
set the correlated particle type + correlation histograms
void setPosAngleFactor(double momAngleFactor)
to scale the position deflection angles
PunchThroughPDFCreator * getPCA3PDF()
distribution parameters for the exit delta phi
double getMomAngleFactor()
to scale the position deviation angles
void setMomAngleFactor(double momAngleFactor)
to scale the momentum deviation of created particles
PunchThroughPDFCreator * getPCA4PDF()
distribution parameters for the momentum delta theta
void setPCA3PDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the momentumDeltaTheta distribution
double getMinEnergy()
get if anti-particles should be done or not
TH2F * getCorrelationLowEHist()
the full correlation energy
TH2F * m_histCorrLowE
low energy correlation histogram (x:this particle, y:the correlated particle)
void setEnergyFactor(double energyFactor)
to scale the energy of created particles
std::unique_ptr< PunchThroughPDFCreator > m_pdf_pca3
delta theta angle of punch-through particle momentum
double getPosAngleFactor()
to scale the energy of created particles
TH2F * getCorrelationHighEHist()
the correlation histogram (low energies)
void setMaxNumParticles(int maxNum)
the maximum number of particles which will be created
int getMaxNumParticles()
to scale the momentum deviation of created particles
void setNumParticlesFactor(double numFactor)
to scale the number of punch-through particles
int m_pdgId
distribution parameters for the momentum delta phi
double m_energyFactor
scale the energy of this particle type
double m_momAngleFactor
scale the momentum deviation
TH2F * m_histCorrHighE
high energy correlation histogram (x:this particle, y:the correlated particle)
bool getdoAnti()
get this particle's pdg code
double m_numParticlesFactor
some tuning-parameters which will be set via python
double m_posAngleFactor
scale the position deflection angles
double m_corrMinEnergy
below this energy threshold, no particle correlation is computed
std::unique_ptr< PunchThroughPDFCreator > m_pdf_pca2
phi deviation of punch-through particles
double getNumParticlesFactor()
the minimum energy with which these particles should be created
void setPCA2PDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the deltaPhi distribution
void setPCA0PDF(std::unique_ptr< PunchThroughPDFCreator > pdf)
set the PunchThroughPDFCreator for the energy distribution
int getFullCorrelationEnergy()
minimum energy for correlation
std::unique_ptr< PunchThroughPDFCreator > m_pdf_pca1
theta deviation of punch-through particles