Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef GsfMaterialEffectsUpdator_h_
0002 #define GsfMaterialEffectsUpdator_h_
0003 
0004 #include "TrackingTools/MaterialEffects/interface/MaterialEffectsUpdator.h"
0005 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
0006 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
0007 #include "DataFormats/GeometrySurface/interface/Surface.h"
0008 #include <cstdint>
0009 
0010 /**
0011  * Interface for adding material effects during propagation
0012  *   as a Gaussian mixture. Similar to MaterialEffectsUpdator,
0013  *   but returns MultiTrajectoryState.
0014  */
0015 class GsfMaterialEffectsUpdator {
0016 public:
0017   typedef materialEffect::Covariance Covariance;
0018   typedef materialEffect::Effect Effect;
0019   typedef materialEffect::CovIndex CovIndex;
0020 
0021   /** Constructor with explicit mass hypothesis
0022    */
0023   GsfMaterialEffectsUpdator(float mass, uint32_t is) : theMass(mass), m_size(is) {}
0024 
0025   virtual ~GsfMaterialEffectsUpdator() {}
0026 
0027   /** Updates TrajectoryStateOnSurface with material effects
0028    *    (momentum and covariance matrix are potentially affected.
0029    */
0030   virtual TrajectoryStateOnSurface updateState(const TrajectoryStateOnSurface& TSoS,
0031                                                const PropagationDirection propDir) const;
0032 
0033   /** Particle mass assigned at construction.
0034    */
0035   inline float mass() const { return theMass; }
0036 
0037   virtual GsfMaterialEffectsUpdator* clone() const = 0;
0038 
0039   // here comes the actual computation of the values
0040   virtual void compute(const TrajectoryStateOnSurface&, const PropagationDirection, Effect effects[]) const = 0;
0041 
0042   size_t size() const { return m_size; }
0043 
0044 protected:
0045   void resize(size_t is) { m_size = is; }
0046 
0047 private:
0048   float theMass;
0049   uint32_t m_size;
0050 };
0051 
0052 #endif