00001 #ifndef _CR_COMBINEDMATERIALEFFECTSUPDATOR_H_ 00002 #define _CR_COMBINEDMATERIALEFFECTSUPDATOR_H_ 00003 00015 #include "TrackingTools/MaterialEffects/interface/MultipleScatteringUpdator.h" 00016 #include "TrackingTools/MaterialEffects/interface/EnergyLossUpdator.h" 00017 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h" 00018 00019 class CombinedMaterialEffectsUpdator : public MaterialEffectsUpdator 00020 { 00021 public: 00022 #ifndef CMS_NO_RELAXED_RETURN_TYPE 00023 virtual CombinedMaterialEffectsUpdator* clone() const 00024 #else 00025 virtual MaterialEffectsUpdator* clone() const 00026 #endif 00027 { 00028 return new CombinedMaterialEffectsUpdator(*this); 00029 } 00030 00031 public: 00033 CombinedMaterialEffectsUpdator( float mass ) : 00034 MaterialEffectsUpdator(mass), 00035 theMSUpdator(mass), 00036 theELUpdator(mass) {} 00037 00038 private: 00039 // here comes the actual computation of the values 00040 virtual void compute (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00041 00042 private: 00043 // objects used for calculations of multiple scattering and energy loss 00044 MultipleScatteringUpdator theMSUpdator; 00045 EnergyLossUpdator theELUpdator; 00046 }; 00047 00048 #endif