9 double photonFractECut)
31 if (
xmin >=1. ||
xmin <=0. )
return;
39 unsigned int nPhotons =
poisson(bremProba, random);
42 if ( !nPhotons )
return;
51 for (
unsigned int i=0;
i<nPhotons; ++
i ) {
74 double emass = 0.0005109990615;
80 weight = 1. - xp + 3./4.*xp*xp;
81 }
while ( weight < random->flatShoot() );
107 const double alfa = 0.625;
109 const double d = 0.13*(0.8+1.3/
theZ())*(100.0+(1.0/ener))*(1.0+efrac);
110 const double w1 = 9.0/(9.0+
d);
111 const double umax = ener*
M_PI/partm;
131 while ( proba <= x ) {
132 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