8 double photonFractECut,
29 if (
radLengths > 4. ) Particle.SetXYZT(0.,0.,0.,0.);
34 if (
xmin >=1. ||
xmin <=0. )
return;
42 unsigned int nPhotons =
poisson(bremProba);
45 if ( !nPhotons )
return;
48 double chi = Particle.theta();
49 double psi = Particle.phi();
54 for (
unsigned int i=0;
i<nPhotons; ++
i ) {
77 double emass = 0.0005109990615;
83 weight = 1. - xp + 3./4.*xp*xp;
84 }
while ( weight < random->flatShoot() );
93 const double theta =
gbteth(pp.e(),emass,xp)*emass/pp.e();
108 const double efrac)
const {
109 const double alfa = 0.625;
111 const double d = 0.13*(0.8+1.3/
theZ())*(100.0+(1.0/ener))*(1.0+efrac);
112 const double w1 = 9.0/(9.0+d);
113 const double umax = ener*
M_PI/partm;
133 while ( proba <= x ) {
134 prob *= ymu / double(++n);
void compute(ParticlePropagator &Particle)
Generate Bremsstrahlung photons.
Sin< T >::type sin(const T &t)
Geom::Theta< T > theta() const
ROOT::Math::RotationZ RotationZ
std::map< std::string, int, std::less< std::string > > psi
const XYZTLorentzVector & momentum() const
the momentum fourvector
const T & max(const T &a, const T &b)
unsigned int poisson(double ymu)
Generate numbers according to a Poisson distribution of mean ymu.
Cos< T >::type cos(const T &t)
ROOT::Math::RotationY RotationY
const RandomEngine * random
void rotate(double rphi, const XYZVector &raxis)
XYZTLorentzVector brem(ParticlePropagator &p) const
Compute Brem photon energy and angles, if any.
double gbteth(const double ener, const double partm, const double efrac) const
A universal angular distribution - still from GEANT.
double flatShoot(double xmin=0.0, double xmax=1.0) const
double xmin
The fractional photon energy cut (determined from the above two)
std::vector< RawParticle > _theUpdatedState
BremsstrahlungSimulator(double photonEnergyCut, double photonFractECut, const RandomEngine *engine)
Constructor.
double photonEnergy
The minimum photon energy to be radiated, in GeV.
double photonFractE
The minimum photon fractional energy (wrt that of the electron)
math::XYZTLorentzVector XYZTLorentzVector