00001 #ifndef ENERGYLOSSSIMULATOR_H 00002 #define ENERGYLOSSSIMULATOR_H 00003 00004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h" 00005 00023 class RandomEngine; 00024 class LandauFluctuationGenerator; 00025 00026 class EnergyLossSimulator : public MaterialEffectsSimulator 00027 { 00028 public: 00029 00031 EnergyLossSimulator(const RandomEngine* engine, 00032 double A, double Z, double density, double radLen); 00033 00035 ~EnergyLossSimulator(); 00036 00038 inline double mostLikelyLoss() const { return mostProbableLoss; } 00039 00041 inline const XYZTLorentzVector& deltaMom() const { return deltaP; } 00042 00043 private: 00045 LandauFluctuationGenerator* theGenerator; 00046 00048 void compute(ParticlePropagator &Particle); 00049 00051 double mostProbableLoss; 00052 00054 XYZTLorentzVector deltaP; 00055 00056 }; 00057 00058 #endif