CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/FastSimulation/MaterialEffects/interface/MaterialEffects.h

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