Go to the documentation of this file.00001 #ifndef MUONBREMSSTRAHLUNGSIMULATOR_H
00002 #define MUONBREMSSTRAHLUNGSIMULATOR_H
00003
00004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h"
00005
00023 #include <string>
00024
00025
00026 class TF1;
00027
00028 class ParticlePropagator;
00029 class RandomEngine;
00030
00031 class MuonBremsstrahlungSimulator : public MaterialEffectsSimulator
00032 {
00033 public:
00034
00036 MuonBremsstrahlungSimulator(const RandomEngine* engine,
00037 double A, double Z, double density,
00038 double radLen,double photonEnergyCut,double photonFractECut);
00039
00041 ~MuonBremsstrahlungSimulator() {}
00042
00043
00044
00045 inline const XYZTLorentzVector& deltaP_BremMuon() const { return deltaPMuon ; }
00046
00047
00048 inline const XYZTLorentzVector& deltaP_BremPhoton() const { return brem_photon ; }
00049
00050
00051 private:
00052
00053 TF1* f1 ;
00054
00055 int npar ;
00056
00058 double photonEnergy;
00059 double bremProba;
00061 double photonFractE;
00062
00064 double xmin,xmax,rand;
00065 double d;
00066
00068 unsigned int poisson(double ymu);
00069
00071 void compute(ParticlePropagator &Particle);
00072
00074 XYZTLorentzVector brem(ParticlePropagator& p)const;
00075
00077 double gbteth(const double ener,
00078 const double partm,
00079 const double efrac) const;
00080
00081
00082 XYZTLorentzVector deltaPMuon;
00083
00084 XYZTLorentzVector brem_photon;
00085
00086
00087
00088 };
00089 #endif