Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef ENERGYLOSSSIMULATOR_H
0002 #define ENERGYLOSSSIMULATOR_H
0003 
0004 #include "FastSimulation/MaterialEffects/interface/MaterialEffectsSimulator.h"
0005 
0006 /** 
0007  * This class computes the most probable energy loss by ionization,
0008  * from a charged particle (under the form of a ParticlePropagator, 
0009  * i.e., a RawParticle) in the tracker layer, smears it with Landau
0010  * fluctuations and returns the RawParticle with modified energy. 
0011  * The tracker material is assumed to be 100% Si - crude approximation - 
0012  * and 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: 8-Jan-2004
0020  */
0021 
0022 class RandomEngineAndDistribution;
0023 class LandauFluctuationGenerator;
0024 
0025 class EnergyLossSimulator : public MaterialEffectsSimulator {
0026 public:
0027   /// Constructor
0028   EnergyLossSimulator(double A, double Z, double density, double radLen);
0029 
0030   /// Default Destructor
0031   ~EnergyLossSimulator() override;
0032 
0033   /// Return most probable energy loss
0034   inline double mostLikelyLoss() const { return mostProbableLoss; }
0035 
0036   /// Returns the actual energy lost
0037   inline const XYZTLorentzVector& deltaMom() const { return deltaP; }
0038 
0039 private:
0040   /// The Landau Fluctuation generator
0041   LandauFluctuationGenerator* theGenerator;
0042 
0043   /// The real dE/dx generation and particle update
0044   void compute(ParticlePropagator& Particle, RandomEngineAndDistribution const*) override;
0045 
0046   /// The most probable enery loss
0047   double mostProbableLoss;
0048 
0049   /// The actual energy loss
0050   XYZTLorentzVector deltaP;
0051 };
0052 
0053 #endif