![]() |
|
|||
File indexing completed on 2023-03-17 11:00:46
0001 #ifndef BREMSSTRAHLUNGSIMULATOR_H 0002 #define BREMSSTRAHLUNGSIMULATOR_H 0003 0004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h" 0005 0006 /** 0007 * This class computes the number, energy and angles of Bremsstrahlung 0008 * photons emitted by electrons and positrons (under the form of a 0009 * ParticlePropagator, i.e., a RawParticle) in the tracker layer, 0010 * and returns the RawParticle modified after radiation as well as 0011 * a list of photons (i.e., a list of RawParticles as well). 0012 * The fraction of radiation lengths traversed by the particle 0013 * in this tracker layer is determined in MaterialEffectsSimulator. 0014 * 0015 * This version (a la PDG) of a dE/dx generator replaces the buggy 0016 * GEANT3 Fortran -> C++ former version (up to FAMOS_0_8_0_pre7). 0017 * 0018 * \author Patrick Janot 0019 * $Date: 25-Dec-2003 0020 */ 0021 0022 class ParticlePropagator; 0023 class RandomEngineAndDistribution; 0024 0025 class BremsstrahlungSimulator : public MaterialEffectsSimulator { 0026 public: 0027 /// Constructor 0028 BremsstrahlungSimulator(double photonEnergyCut, double photonFractECut); 0029 0030 /// Default destructor 0031 ~BremsstrahlungSimulator() override {} 0032 0033 private: 0034 /// The minimum photon energy to be radiated, in GeV 0035 double photonEnergy; 0036 0037 /// The minimum photon fractional energy (wrt that of the electron) 0038 double photonFractE; 0039 0040 /// The fractional photon energy cut (determined from the above two) 0041 double xmin; 0042 0043 /// Generate numbers according to a Poisson distribution of mean ymu. 0044 unsigned int poisson(double ymu, RandomEngineAndDistribution const*); 0045 0046 /// Generate Bremsstrahlung photons 0047 void compute(ParticlePropagator& Particle, RandomEngineAndDistribution const*) override; 0048 0049 /// Compute Brem photon energy and angles, if any. 0050 XYZTLorentzVector brem(ParticlePropagator& p, RandomEngineAndDistribution const*) const; 0051 0052 /// A universal angular distribution - still from GEANT. 0053 double gbteth(const double ener, const double partm, const double efrac, RandomEngineAndDistribution const*) const; 0054 }; 0055 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |