Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:11:16

0001 #ifndef PAIRPRODUCTIONSIMULATOR_H
0002 #define PAIRPRODUCTIONSIMULATOR_H
0003 
0004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h"
0005 
0006 /** 
0007  * This class computes the probability for photons ( under the form 
0008  * of a ParticlePropagator, i.e., a RawParticle) to convert into an
0009  * e+e- pair in the tracker layer. In case, it returns a list of 
0010  * two RawParticle's (e+ and e-). The fraction of radiation lengths 
0011  * traversed by the particle in this tracker layer is determined in 
0012  * MaterialEffectsSimulator.
0013  *
0014  * This version (a la PDG) of a dE/dx generator replaces the buggy 
0015  * GEANT3 Fortran -> C++ former version (up to FAMOS_0_8_0_pre7).
0016  *
0017  * \author Patrick Janot
0018  * $Date: 24-Dec-2003
0019  */
0020 
0021 class ParticlePropagator;
0022 class RandomEngineAndDistribution;
0023 
0024 class PairProductionSimulator : public MaterialEffectsSimulator {
0025 public:
0026   /// Constructor
0027   PairProductionSimulator(double photonEnergyCut);
0028 
0029   /// Default Destructor
0030   ~PairProductionSimulator() override {}
0031 
0032 private:
0033   /// The minimal photon energy for possible conversion
0034   double photonEnergy;
0035 
0036   /// Generate an e+e- pair according to the probability that it happens
0037   void compute(ParticlePropagator& Particle, RandomEngineAndDistribution const*) override;
0038 
0039   /// A universal angular distribution - still from GEANT.
0040   double gbteth(double ener, double partm, double efrac, RandomEngineAndDistribution const*);
0041 };
0042 #endif  // PAIRPRODUCTIONSIMULATOR