34 unsigned int nPhotons =
poisson(bremProba, random);
47 for (
unsigned int i = 0;
i < nPhotons; ++
i) {
68 double emass = 0.0005109990615;
74 weight = 1. - xp + 3. / 4. * xp * xp;
75 }
while (weight < random->flatShoot());
98 const double alfa = 0.625;
100 const double d = 0.13 * (0.8 + 1.3 /
theZ()) * (100.0 + (1.0 / ener)) * (1.0 + efrac);
101 const double w1 = 9.0 / (9.0 +
d);
102 const double umax = ener *
M_PI / partm;
106 double beta = (random->
flatShoot() <= w1) ? alfa : 3.0 * alfa;
120 prob *= ymu / double(++n);
void setMomentum(const XYZTLorentzVector &vtx)
set the momentum
const HepPDT::ParticleDataTable * particleDataTable() const
void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *) override
Generate Bremsstrahlung photons.
double flatShoot(double xmin=0.0, double xmax=1.0) const
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
RawParticle const & particle() const
The particle being propagated.
std::map< std::string, int, std::less< std::string > > psi
ROOT::Math::RotationZ RotationZ
RawParticle makeParticle(HepPDT::ParticleDataTable const *, int id, const math::XYZTLorentzVector &p)
double phi() const
phi of momentum vector
unsigned int poisson(double ymu, RandomEngineAndDistribution const *)
Generate numbers according to a Poisson distribution of mean ymu.
const XYZTLorentzVector & momentum() const
the momentum fourvector
double e() const
energy of the momentum
Cos< T >::type cos(const T &t)
ROOT::Math::RotationY RotationY
BremsstrahlungSimulator(double photonEnergyCut, double photonFractECut)
Constructor.
void rotate(double rphi, const XYZVector &raxis)
double gbteth(const double ener, const double partm, const double efrac, RandomEngineAndDistribution const *) const
A universal angular distribution - still from GEANT.
double theta() const
theta of momentum vector
double xmin
The fractional photon energy cut (determined from the above two)
std::vector< RawParticle > _theUpdatedState
double photonEnergy
The minimum photon energy to be radiated, in GeV.
XYZTLorentzVector brem(ParticlePropagator &p, RandomEngineAndDistribution const *) const
Compute Brem photon energy and angles, if any.
double photonFractE
The minimum photon fractional energy (wrt that of the electron)
math::XYZTLorentzVector XYZTLorentzVector