![]() |
![]() |
00001 #ifndef _CR_MULTIPLESCATTERINGUPDATOR_H_ 00002 #define _CR_MULTIPLESCATTERINGUPDATOR_H_ 00003 00014 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h" 00015 00016 class MultipleScatteringUpdator : public MaterialEffectsUpdator 00017 { 00018 #ifndef CMS_NO_RELAXED_RETURN_TYPE 00019 virtual MultipleScatteringUpdator* clone() const 00020 #else 00021 virtual MaterialEffectsUpdator* clone() const 00022 #endif 00023 { 00024 return new MultipleScatteringUpdator(*this); 00025 } 00026 00027 public: 00028 MultipleScatteringUpdator( float mass ) : 00029 MaterialEffectsUpdator(mass), 00030 theLastDz(0.), 00031 theLastP(0.), 00032 theLastPropDir(alongMomentum), 00033 theLastRadLength(0.) {} 00035 ~MultipleScatteringUpdator() {} 00037 virtual double deltaP (const TrajectoryStateOnSurface&, const PropagationDirection) const { 00038 return 0.; 00039 } 00040 00041 private: 00042 // here comes the actual computation of the values 00043 virtual void compute (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00044 00045 protected: 00046 // check of arguments for use with cached values 00047 virtual bool newArguments (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00048 // storage of arguments for later use of 00049 virtual void storeArguments (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00050 00051 private: 00052 mutable float theLastDz; 00053 mutable float theLastP; 00054 mutable PropagationDirection theLastPropDir; 00055 mutable float theLastRadLength; 00056 }; 00057 00058 #endif