CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/FastSimulation/MaterialEffects/interface/MuonBremsstrahlungSimulator.h

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 // Returns the actual Muon brem Energy
00045   inline const XYZTLorentzVector& deltaP_BremMuon() const { return deltaPMuon ; }
00046 
00047 // Returns the actual photon brem Energy
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; //distance
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   // The actual Muon Brem
00082    XYZTLorentzVector deltaPMuon;
00083    //The photon brem
00084    XYZTLorentzVector brem_photon;
00085 
00086 
00087 
00088 };
00089 #endif