00001 #ifndef BREMSSTRAHLUNGSIMULATOR_H 00002 #define BREMSSTRAHLUNGSIMULATOR_H 00003 00004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h" 00005 00023 class ParticlePropagator; 00024 class RandomEngine; 00025 00026 class BremsstrahlungSimulator : public MaterialEffectsSimulator 00027 { 00028 public: 00029 00031 BremsstrahlungSimulator(double photonEnergyCut, 00032 double photonFractECut, 00033 const RandomEngine* engine); 00034 00036 ~BremsstrahlungSimulator() {} 00037 00038 private: 00039 00041 double photonEnergy; 00042 00044 double photonFractE; 00045 00047 double xmin; 00048 00050 unsigned int poisson(double ymu); 00051 00053 void compute(ParticlePropagator &Particle); 00054 00056 XYZTLorentzVector brem(ParticlePropagator& p) const; 00057 00059 double gbteth(const double ener, 00060 const double partm, 00061 const double efrac) const; 00062 00063 }; 00064 #endif