CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/FastSimulation/MaterialEffects/interface/MaterialEffects.h

Go to the documentation of this file.
00001 
00002 #ifndef MaterialEffects_h
00003 #define MaterialEffects_h
00004 
00028 //Framework Headers
00029 //#include "FWCore/ParameterSet/interface/ParameterSet.h"
00030 
00031 // Geometry Headers
00032 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00033 
00034 #include <vector>
00035 class FSimEvent;
00036 class TrackerLayer;
00037 class ParticlePropagator;
00038 class PairProductionSimulator;
00039 class BremsstrahlungSimulator;
00040 class EnergyLossSimulator;
00041 class NuclearInteractionSimulator;
00042 class RandomEngine;
00043 class MultipleScatteringSimulator;
00044 class MuonBremsstrahlungSimulator;
00045 
00046 namespace edm {
00047   class ParameterSet;
00048 }
00049 
00050 class MaterialEffects
00051 {
00052 
00053  public:
00054 
00056   MaterialEffects(const edm::ParameterSet& matEff,
00057                   const RandomEngine* engine);
00058 
00060   ~MaterialEffects();
00061 
00064   void interact(FSimEvent& simEvent,
00065                 const TrackerLayer& layer,
00066                 ParticlePropagator& PP,
00067                 unsigned i);
00068 
00070   void save();
00071 
00073   inline double thickness() const { return theThickness; }
00074 
00076   inline double energyLoss() const { return theEnergyLoss; }
00077 
00079   inline MultipleScatteringSimulator* multipleScatteringSimulator() const { 
00080     return MultipleScattering;
00081   }
00082 
00084   inline EnergyLossSimulator* energyLossSimulator() const { 
00085     return EnergyLoss;
00086   }
00087 
00089   inline MuonBremsstrahlungSimulator* muonBremsstrahlungSimulator() const {
00090     return MuonBremsstrahlung;
00091   }
00092 
00093  private:
00094 
00096   double radLengths(const TrackerLayer& layer,
00097                     ParticlePropagator& myTrack);
00098 
00100   GlobalVector normalVector(const TrackerLayer& layer,
00101                             ParticlePropagator& myTrack ) const;
00102 
00103  private:
00104 
00105   PairProductionSimulator* PairProduction;
00106   BremsstrahlungSimulator* Bremsstrahlung;
00108   MuonBremsstrahlungSimulator* MuonBremsstrahlung;
00109   MultipleScatteringSimulator* MultipleScattering;
00110   EnergyLossSimulator* EnergyLoss;
00111   NuclearInteractionSimulator* NuclearInteraction;
00112 
00113   // Cuts for material effects
00114   double pTmin;
00115   GlobalVector theNormalVector;
00116   double theThickness;
00117   double theEnergyLoss;
00118   double theTECFudgeFactor;
00119 
00120   // debugging
00121   //  double myEta;
00122 
00123   // The random engine
00124   const RandomEngine* random;
00125 
00126 };
00127 
00128 #endif