00001 #ifndef FullConvolutionWithMaterial_h_ 00002 #define FullConvolutionWithMaterial_h_ 00003 00004 #include "TrackingTools/GsfTracking/interface/GsfMaterialEffectsUpdator.h" 00005 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h" 00006 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" 00007 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h" 00008 00009 // #include "Utilities/Notification/interface/TimingReport.h" 00010 00015 class FullConvolutionWithMaterial { 00016 00017 public: 00019 FullConvolutionWithMaterial(const GsfMaterialEffectsUpdator& aMEUpdator) : 00020 theMEUpdator(aMEUpdator.clone()) {} 00021 00022 ~FullConvolutionWithMaterial() {}; 00023 00025 TrajectoryStateOnSurface operator() (const TrajectoryStateOnSurface&, 00026 const PropagationDirection) const; 00027 00029 inline const GsfMaterialEffectsUpdator& materialEffectsUpdator () const 00030 { 00031 return *theMEUpdator; 00032 } 00033 00035 FullConvolutionWithMaterial* clone() const 00036 { 00037 return new FullConvolutionWithMaterial(*this); 00038 } 00039 00040 private: 00041 // Material effects 00042 DeepCopyPointerByClone<GsfMaterialEffectsUpdator> theMEUpdator; 00043 00044 // static TimingReport::Item* theTimer1; 00045 // static TimingReport::Item* theTimer2; 00046 00047 }; 00048 #endif