00001 #ifndef GsfMultipleScatteringUpdator_h_ 00002 #define GsfMultipleScatteringUpdator_h_ 00003 00004 #include "TrackingTools/GsfTracking/interface/GsfMaterialEffectsUpdator.h" 00005 00014 class GsfMultipleScatteringUpdator : public GsfMaterialEffectsUpdator { 00015 00016 public: 00017 // /// default constructor (mass from configurable) 00018 // GsfMultipleScatteringUpdator() : 00019 // GsfMaterialEffectsUpdator(), 00020 // theLastDz(0.), 00021 // theLastP(0.), 00022 // theLastPropDir(alongMomentum), 00023 // theLastRadLength(0.) {} 00025 GsfMultipleScatteringUpdator(float mass) : 00026 GsfMaterialEffectsUpdator(mass), 00027 theLastDz(0.), 00028 theLastP(0.), 00029 theLastPropDir(alongMomentum), 00030 theLastRadLength(0.) {} 00031 00032 virtual GsfMultipleScatteringUpdator* clone() const 00033 { 00034 return new GsfMultipleScatteringUpdator(*this); 00035 } 00036 00037 00038 private: 00040 virtual void compute (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00041 00042 protected: 00043 // check of arguments for use with cached values 00044 virtual bool newArguments (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00045 // storage of arguments for later use of 00046 virtual void storeArguments (const TrajectoryStateOnSurface&, const PropagationDirection) const; 00047 00048 private: 00049 mutable float theLastDz; 00050 mutable float theLastP; 00051 mutable PropagationDirection theLastPropDir; 00052 mutable float theLastRadLength; 00053 }; 00054 00055 #endif