Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/Geant4/G4DNARuddIonisationDynamicModel.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 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 // Created 11.02.2025 V.Ivanchenko & M. Vologzhin
0027 //                    on base of previous Rudd models
0028 //
0029 // Rudd model of ion ionisation using dynamic mass and charge of an ion
0030 //
0031 
0032 #ifndef G4DNARuddIonisationDynamicModel_h
0033 #define G4DNARuddIonisationDynamicModel_h 1
0034 
0035 #include "G4VEmModel.hh"
0036 #include "G4VSIntegration.hh"
0037 #include "G4ParticleChangeForGamma.hh"
0038 
0039 #include "G4DNAWaterIonisationStructure.hh"
0040 #include <vector>
0041 
0042 class G4DNAChemistryManager;
0043 class G4VAtomDeexcitation;
0044 class G4ExtendedPhysicsVector;
0045 class G4Pow;
0046 class G4EmCorrections;
0047 
0048 class G4DNARuddIonisationDynamicModel : public G4VEmModel, public G4VSIntegration
0049 {
0050 public:
0051 
0052   explicit G4DNARuddIonisationDynamicModel(const G4ParticleDefinition* p = nullptr,
0053                    const G4String& nam = "DNARuddIonisationDynamicModel");
0054 
0055   ~G4DNARuddIonisationDynamicModel() override;
0056 
0057   void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
0058 
0059   G4double ProbabilityDensityFunction(G4double ekin) override;
0060 
0061   G4double CrossSectionPerVolume(const G4Material* material,
0062                                  const G4ParticleDefinition* p,
0063                  G4double ekin,
0064                  G4double emin,
0065                  G4double emax) override;
0066 
0067   void SampleSecondaries(std::vector<G4DynamicParticle*>*,
0068              const G4MaterialCutsCouple*,
0069              const G4DynamicParticle*,
0070              G4double tmin,
0071              G4double maxEnergy) override;
0072 
0073   void StartTracking(G4Track*) override;
0074 
0075   G4DNARuddIonisationDynamicModel & operator=
0076   (const  G4DNARuddIonisationDynamicModel &right) = delete;
0077   G4DNARuddIonisationDynamicModel(const G4DNARuddIonisationDynamicModel&) = delete;
0078 
0079 private:
0080 
0081   void LoadData();
0082   
0083   void SetParticle(const G4ParticleDefinition*);
0084 
0085   G4int SelectShell();
0086 
0087   G4double MaxEnergy();
0088 
0089   G4double SampleElectronEnergy();
0090 
0091   G4double CorrectionFactor();
0092 
0093   G4double S_1s(G4double t,
0094         G4double energyTransferred,
0095         G4double slaterEffectiveChg,
0096         G4double shellNumber);
0097 
0098   G4double S_2s(G4double t,
0099         G4double energyTransferred,
0100         G4double slaterEffectiveChg,
0101         G4double shellNumber);
0102 
0103 
0104   G4double S_2p(G4double t,
0105         G4double energyTransferred,
0106         G4double slaterEffectiveChg,
0107         G4double shellNumber);
0108 
0109   G4double Rh(G4double t, 
0110           G4double energyTransferred,
0111           G4double slaterEffectiveChg,
0112           G4double shellNumber);
0113 
0114 protected:
0115 
0116   G4ParticleChangeForGamma* fParticleChangeForGamma{nullptr};
0117 
0118 private:
0119 
0120   // Water density table
0121   static const std::vector<G4double>* fpWaterDensity;
0122 
0123   // cross section data
0124   static G4ExtendedPhysicsVector* xsdata_alpha;
0125   static G4ExtendedPhysicsVector* xsdata_alphap;
0126   static G4ExtendedPhysicsVector* xsdata_hydrogen;
0127   static G4ExtendedPhysicsVector* xsdata_helium;
0128   static G4ExtendedPhysicsVector* xsdata_p;
0129 
0130   // run time data
0131   G4ExtendedPhysicsVector* xsdata{nullptr};
0132 
0133   const G4ParticleDefinition* fParticle{nullptr};
0134   const G4Track* fTrack{nullptr};
0135 
0136   G4DNAChemistryManager* fChemistry{nullptr};
0137   G4EmCorrections* fEmCorrections;
0138   G4Pow* fGpow;
0139  
0140   //deexcitation manager to produce fluo photons and e-
0141   G4VAtomDeexcitation* fAtomDeexcitation{nullptr};
0142 
0143   // low-energy limit of proton x-section table
0144   G4double fLowestEnergy{0.0};
0145 
0146   // tracking cut
0147   G4double fAbsorptionEnergy{0.0};
0148 
0149   G4double fMass{0.0};
0150   G4double fMassRate{1.0};
0151   G4double fScaledEnergy{0.0};
0152 
0153   G4double slaterEffectiveCharge[3] = {0.0};
0154   G4double sCoefficient[3] = {0.0};
0155 
0156   G4double F1{0.0};
0157   G4double F2{0.0};
0158   G4double alphaConst{0.0};
0159   G4double bEnergy{0.0};
0160   G4double u{0.0};
0161   G4double v{0.0};
0162   G4double wc{0.0};
0163 
0164   G4int fSelectedShell{0};
0165   G4int verbose{0};
0166   std::size_t idx{0};
0167 
0168   G4bool isFirst{false};
0169   G4bool isInitialised{false};
0170   G4bool isIon{false};
0171   G4bool isHelium{false};
0172   G4bool statCode{false};
0173   G4bool useDNAWaterStructure{true};
0174 
0175   // energy levels of water molecule  
0176   G4DNAWaterIonisationStructure waterStructure;
0177 };
0178 
0179 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
0180 
0181 #endif