Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 11:00:46

0001 #ifndef MULTIPLESCATTERINGSIMULATOR_H
0002 #define MULTIPLESCATTERINGSIMULATOR_H
0003 
0004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h"
0005 
0006 /** 
0007  * This class computes the direction change by multiple scattering 
0008  * of a charged particle (under the form of a ParticlePropagator, 
0009  * i.e., a RawParticle) in the tracker layer, and returns the 
0010  * RawParticle with the modified momentum direction. The tracker 
0011  * material is assumed to be 100% Si and the Tracker layers are 
0012  * assumed infinitely thin. The fraction of radiation lengths 
0013  * traversed by the particle in this tracker layer is determined 
0014  * in MaterialEffectsSimulator.
0015  *
0016  * This version (a la PDG) of a multiple scattering simulator replaces 
0017  * the buggy GEANT3 Fortran -> C++ former version (up to FAMOS_0_8_0_pre7).
0018  *
0019  * \author Patrick Janot
0020  * $Date: 8-Jan-2004
0021  */
0022 
0023 class ParticlePropagator;
0024 class RandomEngineAndDistribution;
0025 
0026 class MultipleScatteringSimulator : public MaterialEffectsSimulator {
0027 public:
0028   /// Default Constructor
0029   MultipleScatteringSimulator(double A, double Z, double density, double radLen);
0030 
0031   /// Default Destructor
0032   ~MultipleScatteringSimulator() override{};
0033 
0034 private:
0035   /// The real dE/dx generation and particle update
0036   void compute(ParticlePropagator &Particle, RandomEngineAndDistribution const *) override;
0037 
0038 private:
0039   /// Save (a tiny bit of) time
0040   double sqr12;
0041 };
0042 
0043 #endif