Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:31:31

0001 #ifndef FullConvolutionWithMaterial_h_
0002 #define FullConvolutionWithMaterial_h_
0003 
0004 #include "TrackingTools/GsfTracking/interface/GsfMaterialEffectsUpdator.h"
0005 #include "TrackingTools/GsfTools/interface/MultiTrajectoryStateAssembler.h"
0006 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
0007 #include "DataFormats/GeometryCommonDetAlgo/interface/DeepCopyPointerByClone.h"
0008 
0009 //  #include "Utilities/Notification/interface/TimingReport.h"
0010 
0011 /** \class FullConvolutionWithMaterial
0012  *  Convolute a set of trajectory states with
0013  *  material effects. 
0014  */
0015 class FullConvolutionWithMaterial {
0016 public:
0017   /// Constructor with GSF material effects updator and propagation direction.
0018   FullConvolutionWithMaterial(const GsfMaterialEffectsUpdator& aMEUpdator) : theMEUpdator(aMEUpdator.clone()) {}
0019 
0020   ~FullConvolutionWithMaterial(){};
0021 
0022   /// Convolution using the GsfMaterialEffectsUpdator
0023   TrajectoryStateOnSurface operator()(const TrajectoryStateOnSurface&, const PropagationDirection) const;
0024 
0025   /// Access to material effects updator
0026   inline const GsfMaterialEffectsUpdator& materialEffectsUpdator() const { return *theMEUpdator; }
0027 
0028   /// Clone
0029   FullConvolutionWithMaterial* clone() const { return new FullConvolutionWithMaterial(*this); }
0030 
0031 private:
0032   // Material effects
0033   DeepCopyPointerByClone<GsfMaterialEffectsUpdator> theMEUpdator;
0034 
0035   //    static TimingReport::Item* theTimer1;
0036   //    static TimingReport::Item* theTimer2;
0037 };
0038 #endif