Main Page
Namespaces
Classes
Package Documentation
FastSimulation
MaterialEffects
src
EnergyLossSimulator.cc
Go to the documentation of this file.
1
#include "
FastSimulation/MaterialEffects/interface/EnergyLossSimulator.h
"
2
//#include "FastSimulation/Utilities/interface/RandomEngine.h"
3
#include "
FastSimulation/Utilities/interface/LandauFluctuationGenerator.h
"
4
5
#include <cmath>
6
7
EnergyLossSimulator::EnergyLossSimulator
(
double
A
,
double
Z
,
double
density
,
double
radLen
)
8
:
MaterialEffectsSimulator
(A, Z, density, radLen) {
9
theGenerator
=
new
LandauFluctuationGenerator
();
10
}
11
12
EnergyLossSimulator::~EnergyLossSimulator
() {
delete
theGenerator
; }
13
14
void
EnergyLossSimulator::compute
(
ParticlePropagator
&
Particle
,
RandomEngineAndDistribution
const
* random) {
15
// FamosHistos* myHistos = FamosHistos::instance();
16
17
// double gamma_e = 0.577215664901532861; // Euler constant
18
19
// The thickness in cm
20
double
thick =
radLengths
*
radLenIncm
();
21
22
// This is a simple version (a la PDG) of a dE/dx generator.
23
// It replaces the buggy GEANT3 -> C++ former version.
24
// Author : Patrick Janot - 8-Jan-2004
25
26
double
p2
= Particle.
particle
().
Vect
().Mag2();
27
double
verySmallP2 = 0.0001;
28
if
(p2 <= verySmallP2) {
29
deltaP
.SetXYZT(0., 0., 0., 0.);
30
return
;
31
}
32
double
m2 = Particle.
particle
().
mass
() * Particle.
particle
().
mass
();
33
double
e2 = p2 + m2;
34
35
double
beta2 = p2 / e2;
36
double
gama2 = e2 / m2;
37
38
double
charge2 = Particle.
particle
().
charge
() * Particle.
particle
().
charge
();
39
40
// Energy loss spread in GeV
41
double
eSpread = 0.1536E-3 * charge2 * (
theZ
() /
theA
()) *
rho
() * thick / beta2;
42
43
// Most probable energy loss (from the integrated Bethe-Bloch equation)
44
mostProbableLoss
= eSpread * (
log
(2. *
eMass
() * beta2 * gama2 * eSpread / (
excitE
() *
excitE
())) - beta2 + 0.200);
45
46
// This one can be needed on output (but is not used internally)
47
// meanEnergyLoss = 2.*eSpread * ( log ( 2.*eMass()*beta2*gama2 /excitE() ) - beta2 );
48
49
// Generate the energy loss with Landau fluctuations
50
double
dedx =
mostProbableLoss
+ eSpread *
theGenerator
->
landau
(random);
51
52
// Compute the new energy and momentum
53
double
aBitAboveMass = Particle.
particle
().
mass
() * 1.0001;
54
double
newE =
std::max
(aBitAboveMass, Particle.
particle
().
e
() - dedx);
55
// double newE = std::max(Particle.particle().mass(),Particle.particle().e()-dedx);
56
double
fac =
std::sqrt
((newE * newE - m2) / p2);
57
58
// Update the momentum
59
deltaP
.SetXYZT(Particle.
particle
().
Px
() * (1. - fac),
60
Particle.
particle
().
Py
() * (1. - fac),
61
Particle.
particle
().
Pz
() * (1. - fac),
62
Particle.
particle
().
E
() - newE);
63
Particle.
particle
().
setMomentum
(
64
Particle.
particle
().
Px
() * fac, Particle.
particle
().
Py
() * fac, Particle.
particle
().
Pz
() * fac, newE);
65
}
RawParticle::setMomentum
void setMomentum(const XYZTLorentzVector &vtx)
set the momentum
Definition:
RawParticle.h:328
LandauFluctuationGenerator.h
RawParticle::Vect
XYZVector Vect() const
the momentum threevector
Definition:
RawParticle.h:323
EnergyLossSimulator::~EnergyLossSimulator
~EnergyLossSimulator() override
Default Destructor.
Definition:
EnergyLossSimulator.cc:12
Particle
Definition:
Particle.py:1
MaterialEffectsSimulator::theZ
double theZ() const
Z.
Definition:
MaterialEffectsSimulator.h:40
MaterialEffectsSimulator::rho
double rho() const
Density in g/cm3.
Definition:
MaterialEffectsSimulator.h:42
BaseParticlePropagator::particle
RawParticle const & particle() const
The particle being propagated.
Definition:
BaseParticlePropagator.h:164
RawParticle::mass
double mass() const
get the MEASURED mass
Definition:
RawParticle.h:295
EnergyLossSimulator::mostProbableLoss
double mostProbableLoss
The most probable enery loss.
Definition:
EnergyLossSimulator.h:47
ParticlePropagator
Definition:
ParticlePropagator.h:28
fastSimProducer_cff.radLen
radLen
Definition:
fastSimProducer_cff.py:62
RawParticle::e
double e() const
energy of the momentum
Definition:
RawParticle.h:305
mathSSE::sqrt
T sqrt(T t)
Definition:
SSEVec.h:19
LandauFluctuationGenerator
Definition:
LandauFluctuationGenerator.h:20
RawParticle::Py
double Py() const
y of the momentum
Definition:
RawParticle.h:300
MaterialEffectsSimulator::eMass
double eMass() const
Electron mass in GeV/c2.
Definition:
MaterialEffectsSimulator.h:48
RawParticle::Pz
double Pz() const
z of the momentum
Definition:
RawParticle.h:303
RawParticle::charge
double charge() const
get the MEASURED charge
Definition:
RawParticle.h:294
SiStripPI::max
Definition:
SiStripPayloadInspectorHelper.h:169
p2
double p2[4]
Definition:
TauolaWrapper.h:90
EnergyLossSimulator.h
EnergyLossSimulator::theGenerator
LandauFluctuationGenerator * theGenerator
The Landau Fluctuation generator.
Definition:
EnergyLossSimulator.h:41
LandauFluctuationGenerator::landau
double landau(RandomEngineAndDistribution const *random) const
Random generator of the dE/dX spread (Landau function)
Definition:
LandauFluctuationGenerator.h:29
EnergyLossSimulator::EnergyLossSimulator
EnergyLossSimulator(double A, double Z, double density, double radLen)
Constructor.
Definition:
EnergyLossSimulator.cc:7
MaterialEffects_cfi.A
A
Definition:
MaterialEffects_cfi.py:11
EnergyLossSimulator::compute
void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *) override
The real dE/dx generation and particle update.
Definition:
EnergyLossSimulator.cc:14
fastSimProducer_cff.density
density
Definition:
fastSimProducer_cff.py:61
MaterialEffectsSimulator::excitE
double excitE() const
Mean excitation energy (in GeV)
Definition:
MaterialEffectsSimulator.h:46
MaterialEffectsSimulator::radLengths
double radLengths
Definition:
MaterialEffectsSimulator.h:84
DOFs::Z
Definition:
AlignPCLThresholdsWriter.cc:37
RawParticle::Px
double Px() const
x of the momentum
Definition:
RawParticle.h:297
MaterialEffectsSimulator::radLenIncm
double radLenIncm() const
One radiation length in cm.
Definition:
MaterialEffectsSimulator.h:44
RawParticle::E
double E() const
energy of the momentum
Definition:
RawParticle.h:306
EnergyLossSimulator::deltaP
XYZTLorentzVector deltaP
The actual energy loss.
Definition:
EnergyLossSimulator.h:50
dqm-mbProfile.log
log
Definition:
dqm-mbProfile.py:17
MaterialEffectsSimulator::theA
double theA() const
A.
Definition:
MaterialEffectsSimulator.h:38
RandomEngineAndDistribution
Definition:
RandomEngineAndDistribution.h:18
MaterialEffectsSimulator
Definition:
MaterialEffectsSimulator.h:25
Generated for CMSSW Reference Manual by
1.8.11