Warning, file /include/Geant4/G4mplIonisationWithDeltaModel.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 
0002 
0003 
0004 
0005 
0006 
0007 
0008 
0009 
0010 
0011 
0012 
0013 
0014 
0015 
0016 
0017 
0018 
0019 
0020 
0021 
0022 
0023 
0024 
0025 
0026 
0027 
0028 
0029 
0030 
0031 
0032 
0033 
0034 
0035 
0036 
0037 
0038 
0039 
0040 
0041 
0042 
0043 
0044 
0045 
0046 
0047 
0048 #ifndef G4mplIonisationWithDeltaModel_h
0049 #define G4mplIonisationWithDeltaModel_h 1
0050 
0051 #include "G4VEmModel.hh"
0052 #include "G4VEmFluctuationModel.hh"
0053 #include <vector>
0054 
0055 class G4ParticleChangeForLoss;
0056 
0057 class G4mplIonisationWithDeltaModel : public G4VEmModel, public G4VEmFluctuationModel
0058 {
0059 
0060 public:
0061 
0062   explicit G4mplIonisationWithDeltaModel(G4double mCharge, 
0063                                 const G4String& nam = "mplIonisationWithDelta");
0064 
0065   virtual ~G4mplIonisationWithDeltaModel();
0066 
0067   virtual void Initialise(const G4ParticleDefinition*, 
0068                           const G4DataVector&) override;
0069 
0070   virtual G4double ComputeDEDXPerVolume(const G4Material*,
0071                                         const G4ParticleDefinition*,
0072                                         G4double kineticEnergy,
0073                                         G4double cutEnergy) override;
0074 
0075   virtual G4double ComputeCrossSectionPerElectron(
0076                                  const G4ParticleDefinition*,
0077                                  G4double kineticEnergy,
0078                                  G4double cutEnergy,
0079                                  G4double maxEnergy);
0080 
0081   virtual G4double ComputeCrossSectionPerAtom(
0082                                  const G4ParticleDefinition*,
0083                                  G4double kineticEnergy,
0084                                  G4double Z, G4double A,
0085                                  G4double cutEnergy,
0086                                  G4double maxEnergy) override;
0087 
0088   virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0089                                  const G4MaterialCutsCouple*,
0090                                  const G4DynamicParticle*,
0091                                  G4double tmin,
0092                                  G4double maxEnergy) override;
0093 
0094 
0095   virtual G4double SampleFluctuations(const G4MaterialCutsCouple*,
0096                                       const G4DynamicParticle*,
0097                                       const G4double tcut,
0098                                       const G4double tmax,
0099                                       const G4double length,
0100                                       const G4double meanLoss) override;
0101 
0102   virtual G4double Dispersion(const G4Material*,
0103                               const G4DynamicParticle*,
0104                               const G4double tcut,
0105                               const G4double tmax,
0106                               const G4double length) override;
0107 
0108   virtual G4double MinEnergyCut(const G4ParticleDefinition*,
0109                                 const G4MaterialCutsCouple* couple) override;
0110 
0111   void SetParticle(const G4ParticleDefinition* p);
0112 
0113 protected:
0114 
0115   virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
0116                                       G4double kinEnergy) override;
0117 
0118 private:
0119 
0120   G4double ComputeDEDXAhlen(const G4Material* material, G4double bg2, 
0121                             G4double cut);
0122 
0123   
0124   G4mplIonisationWithDeltaModel & 
0125     operator=(const  G4mplIonisationWithDeltaModel &right) = delete;
0126   G4mplIonisationWithDeltaModel(const  G4mplIonisationWithDeltaModel&) = delete;
0127 
0128   const G4ParticleDefinition* monopole;
0129   G4ParticleDefinition*       theElectron;
0130   G4ParticleChangeForLoss*    fParticleChange;
0131 
0132   G4double mass;
0133   G4double magCharge;
0134   G4double twoln10;
0135   G4double betalow;
0136   G4double betalim;
0137   G4double beta2lim;
0138   G4double bg2lim;
0139   G4double chargeSquare;
0140   G4double dedxlim;
0141   G4int    nmpl;
0142   G4double pi_hbarc2_over_mc2;
0143 
0144   static std::vector<G4double>* dedx0;
0145 };
0146 
0147 #endif
0148 
0149