00001 #ifndef _CR_ENERGYLOSSUPDATOR_H_ 00002 #define _CR_ENERGYLOSSUPDATOR_H_ 00003 00014 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h" 00015 #include "DataFormats/GeometryVector/interface/LocalVector.h" 00016 #include "FWCore/Utilities/interface/Visibility.h" 00017 00018 class MediumProperties; 00019 00020 class EnergyLossUpdator : public MaterialEffectsUpdator 00021 { 00022 public: 00023 virtual EnergyLossUpdator* clone() const { 00024 return new EnergyLossUpdator(*this); 00025 } 00026 00027 public: 00028 EnergyLossUpdator( double mass ) : 00029 MaterialEffectsUpdator(mass) {} 00030 00031 private: 00032 // here comes the actual computation of the values 00033 virtual void compute (const TrajectoryStateOnSurface&, 00034 const PropagationDirection) const dso_internal; 00035 // Internal routine for ionization acc. to Bethe-Bloch 00036 void computeBetheBloch (const LocalVector&, const MediumProperties&) const dso_internal; 00037 // Internal routine for energy loss by electrons due to radiation 00038 void computeElectrons (const LocalVector&, const MediumProperties&, 00039 const PropagationDirection) const dso_internal; 00040 00041 }; 00042 00043 #endif