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