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 GCC11_FINAL : 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 // here comes the actual computation of the values 00032 virtual void compute (const TrajectoryStateOnSurface&, 00033 const PropagationDirection, Effect & effect) const; 00034 00035 private: 00036 // Internal routine for ionization acc. to Bethe-Bloch 00037 void computeBetheBloch (const LocalVector&, const MediumProperties&, Effect & effect) const dso_internal; 00038 // Internal routine for energy loss by electrons due to radiation 00039 void computeElectrons (const LocalVector&, const MediumProperties&, 00040 const PropagationDirection, Effect & effect) const dso_internal; 00041 00042 }; 00043 00044 #endif