Import Geant4 11.2.0 source tree

This commit is contained in:
Gabriele Cosmo
2023-12-08 10:43:34 +01:00
parent dd1f179cda
commit 860a2b92bf
3962 changed files with 139318 additions and 164259 deletions
@@ -0,0 +1,111 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
//
// Created by ngoc hoang tran on 03/08/2023.
//
#ifndef G4ChemEquilibrium_hh
#define G4ChemEquilibrium_hh 1
#include "globals.hh"
#include "G4MoleculeTable.hh"
#include "G4UnitsTable.hh"
class G4DNAMolecularReactionData;
class G4ChemEquilibrium //for each Equilibrium process
{
public:
using MolType = const G4MolecularConfiguration*;
using Reaction = const G4DNAMolecularReactionData*;
explicit G4ChemEquilibrium(const G4int& type, const G4double& time);
~G4ChemEquilibrium() = default;
void Initialize();
inline G4bool IsStatusChanged()
{
if(fStatus == fAddEquilibrium){
return false;
}else
{
fStatus = fAddEquilibrium;
if(fVerbose > 0)
{
PrintInfo();
}
return true;
}
}
inline void Reset()
{
fStatus = false;
fAddEquilibrium = false;
fEquilibriumTime = 0;
fGlobalTime = 0;
}
inline void SetVerbose(const G4int& verbose)
{
fVerbose = verbose;
}
inline void SetGlobalTime(const G4double& time)
{
fGlobalTime = time;
if(fGlobalTime - fEquilibriumTime > fEquilibriumDuration && fAddEquilibrium)
{
fAddEquilibrium = false;
if(fVerbose) {
G4cout << "SetEquilibrium : off " << fRectionType
<< " fGlobalTime : " << G4BestUnit(fGlobalTime, "Time")
<< " fEquilibriumTime8 : " << G4BestUnit(fEquilibriumTime, "Time")
<< " fAddEquilibrium : " << fAddEquilibrium << G4endl;
}
}
}
void SetEquilibrium(Reaction pReaction);
inline G4bool GetEquilibriumStatus() const
{
return fAddEquilibrium;
}
void PrintInfo() const;
private:
G4bool fStatus = false;
G4bool fAddEquilibrium = false;
G4double fEquilibriumTime = 0;
const G4double fEquilibriumDuration = 0;
G4int fRectionType = 0;
MolType fReactant1 = nullptr;
MolType fReactant2 = nullptr;
MolType fReactantB1 = nullptr;
MolType fReactantB2 = nullptr;
G4double fGlobalTime = 0;
G4int fVerbose = 1;
};
#endif //
@@ -37,7 +37,7 @@
#include "G4DNABornExcitationModel2.hh"
#ifndef G4DNABornExcitationModel
typedef G4DNABornExcitationModel1 G4DNABornExcitationModel;
using G4DNABornExcitationModel = G4DNABornExcitationModel1;
//typedef G4DNABornExcitationModel2 G4DNABornExcitationModel;
#endif
@@ -42,30 +42,33 @@
class G4DNABornExcitationModel1: public G4VEmModel
{
public:
G4DNABornExcitationModel1(const G4ParticleDefinition* p = 0,
G4DNABornExcitationModel1(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNABornExcitationModel");
virtual ~G4DNABornExcitationModel1();
~G4DNABornExcitationModel1() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNABornExcitationModel1 & operator=(const G4DNABornExcitationModel1 &right) = delete;
G4DNABornExcitationModel1(const G4DNABornExcitationModel1&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetPartialCrossSection(const G4Material*,
G4double GetPartialCrossSection(const G4Material*,
G4int level,
const G4ParticleDefinition*,
G4double kineticEnergy);
G4double kineticEnergy) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -80,23 +83,20 @@ private:
// Water density table
const std::vector<G4double>* fpMolWaterDensity;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
const G4ParticleDefinition* fParticleDefinition;
G4double fLowEnergy;
G4double fHighEnergy;
G4String fTableFile;
G4DNACrossSectionDataSet* fTableData;
G4DNACrossSectionDataSet* fTableData{nullptr};
// Partial cross section
G4int RandomSelect(G4double energy);
G4DNAWaterExcitationStructure waterStructure;
//
G4DNABornExcitationModel1 & operator=(const G4DNABornExcitationModel1 &right);
G4DNABornExcitationModel1(const G4DNABornExcitationModel1&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -44,30 +44,33 @@ class G4PhysicsVector;
class G4DNABornExcitationModel2: public G4VEmModel
{
public:
G4DNABornExcitationModel2(const G4ParticleDefinition* p = 0,
G4DNABornExcitationModel2(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNABornExcitationModel");
virtual ~G4DNABornExcitationModel2();
~G4DNABornExcitationModel2() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNABornExcitationModel2 & operator=(const G4DNABornExcitationModel2 &right) = delete;
G4DNABornExcitationModel2(const G4DNABornExcitationModel2&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetPartialCrossSection(const G4Material*,
G4double GetPartialCrossSection(const G4Material*,
G4int level,
const G4ParticleDefinition*,
G4double kineticEnergy);
G4double kineticEnergy) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -82,14 +85,14 @@ private:
// Water density table
const std::vector<G4double>* fpMolWaterDensity;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
const G4ParticleDefinition* fParticleDefinition;
G4double fLowEnergy;
G4double fHighEnergy;
G4PhysicsTable* fTableData;
G4PhysicsTable* fTableData{nullptr};
G4PhysicsVector* fTotalXS;
size_t fLastBinCallForFinalXS;
@@ -99,8 +102,6 @@ private:
G4DNAWaterExcitationStructure waterStructure;
//
G4DNABornExcitationModel2 & operator=(const G4DNABornExcitationModel2 &right);
G4DNABornExcitationModel2(const G4DNABornExcitationModel2&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -49,29 +49,32 @@ class G4DNABornIonisationModel1 : public G4VEmModel
public:
G4DNABornIonisationModel1(const G4ParticleDefinition* p = 0,
G4DNABornIonisationModel1(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNABornIonisationModel");
virtual ~G4DNABornIonisationModel1();
~G4DNABornIonisationModel1() override;
G4DNABornIonisationModel1 & operator=(const G4DNABornIonisationModel1 &right) = delete;
G4DNABornIonisationModel1(const G4DNABornIonisationModel1&) = delete;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector())) override;
virtual G4double CrossSectionPerVolume( const G4Material* material,
G4double CrossSectionPerVolume( const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
virtual G4double GetPartialCrossSection(const G4Material*,
G4double GetPartialCrossSection(const G4Material*,
G4int /*level*/,
const G4ParticleDefinition*,
G4double /*kineticEnergy*/);
G4double /*kineticEnergy*/) override;
G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
@@ -107,15 +110,15 @@ private:
// std::map<const G4ParticleDefinition*,std::pair<G4double,G4double> > fEnergyLimits;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
using MapFile = std::map<G4String, G4String, std::less<G4String>>;
MapFile tableFile; // useful ?
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
MapData tableData;
// Final state
@@ -141,7 +144,7 @@ private:
G4double t,
G4double e);
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap eDiffCrossSectionData[6];
TriDimensionMap eNrjTransfData[6]; // for cumulated dcs
@@ -152,7 +155,7 @@ private:
std::vector<G4double> eTdummyVec;
std::vector<G4double> pTdummyVec;
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap eVecm;
VecMap pVecm;
@@ -164,11 +167,6 @@ private:
G4int RandomSelect(G4double energy,const G4String& particle );
//
G4DNABornIonisationModel1 & operator=(const G4DNABornIonisationModel1 &right);
G4DNABornIonisationModel1(const G4DNABornIonisationModel1&);
};
inline void G4DNABornIonisationModel1::SelectFasterComputation (G4bool input)
@@ -49,29 +49,32 @@ class G4DNABornIonisationModel2 : public G4VEmModel
public:
G4DNABornIonisationModel2(const G4ParticleDefinition* p = 0,
G4DNABornIonisationModel2(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNABornIonisationModel");
virtual ~G4DNABornIonisationModel2();
~G4DNABornIonisationModel2() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector()));
G4DNABornIonisationModel2 & operator=(const G4DNABornIonisationModel2 &right) = delete;
G4DNABornIonisationModel2(const G4DNABornIonisationModel2&) = delete;
virtual G4double CrossSectionPerVolume( const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume( const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
virtual G4double GetPartialCrossSection(const G4Material*,
G4double GetPartialCrossSection(const G4Material*,
G4int /*level*/,
const G4ParticleDefinition*,
G4double /*kineticEnergy*/);
G4double /*kineticEnergy*/) override;
G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
@@ -104,7 +107,7 @@ private:
const G4ParticleDefinition* fParticleDef;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
@@ -134,14 +137,14 @@ private:
G4double t,
G4double e);
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap fDiffCrossSectionData[6];
TriDimensionMap fNrjTransfData[6]; // for cumulated dcs
std::vector<G4double> fTdummyVec;
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap fVecm;
VecMap fProbaShellMap[6]; // for cumulated dcs
@@ -150,11 +153,6 @@ private:
G4int RandomSelect(G4double energy);
//
G4DNABornIonisationModel2 & operator=(const G4DNABornIonisationModel2 &right);
G4DNABornIonisationModel2(const G4DNABornIonisationModel2&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -42,25 +42,28 @@ class G4DNAChampionElasticModel : public G4VEmModel
public:
G4DNAChampionElasticModel(const G4ParticleDefinition* p = 0,
G4DNAChampionElasticModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAChampionElasticModel");
virtual ~G4DNAChampionElasticModel();
~G4DNAChampionElasticModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
G4DNAChampionElasticModel & operator=(const G4DNAChampionElasticModel &right) = delete;
G4DNAChampionElasticModel(const G4DNAChampionElasticModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
void SetKillBelowThreshold(G4double threshold);
@@ -79,9 +82,9 @@ public:
private:
// Cross section
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap eVecm;
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap eDiffCrossSectionData;
std::vector<G4double> eTdummyVec;
@@ -96,7 +99,7 @@ protected:
private:
G4int verboseLevel;
G4bool isInitialised;
G4bool isInitialised{false};
// Final state
@@ -140,10 +143,6 @@ private:
G4double RandomizeCosTheta(G4double k);
//
G4DNAChampionElasticModel & operator=(const G4DNAChampionElasticModel &right);
G4DNAChampionElasticModel(const G4DNAChampionElasticModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -41,11 +41,14 @@ class G4DNADingfelderChargeDecreaseModel : public G4VEmModel
public:
G4DNADingfelderChargeDecreaseModel(const G4ParticleDefinition* p = 0,
G4DNADingfelderChargeDecreaseModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNADingfelderChargeDecreaseModel");
~G4DNADingfelderChargeDecreaseModel() override = default;
G4DNADingfelderChargeDecreaseModel & operator=(const G4DNADingfelderChargeDecreaseModel &right) = delete;
G4DNADingfelderChargeDecreaseModel(const G4DNADingfelderChargeDecreaseModel&) = delete;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
@@ -76,7 +79,7 @@ private:
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Partial cross section
@@ -109,11 +112,6 @@ private:
G4double OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
//
G4DNADingfelderChargeDecreaseModel & operator=(const G4DNADingfelderChargeDecreaseModel &right);
G4DNADingfelderChargeDecreaseModel(const G4DNADingfelderChargeDecreaseModel&);
// Reusable particle definitions
G4ParticleDefinition* protonDef = nullptr;
G4ParticleDefinition* alphaPlusPlusDef = nullptr;
@@ -43,6 +43,10 @@ public:
explicit G4DNADingfelderChargeIncreaseModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNADingfelderChargeIncreaseModel");
~G4DNADingfelderChargeIncreaseModel() override = default;
G4DNADingfelderChargeIncreaseModel & operator=(const G4DNADingfelderChargeIncreaseModel &right)= delete;
G4DNADingfelderChargeIncreaseModel(const G4DNADingfelderChargeIncreaseModel&) = delete;
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
@@ -96,8 +100,6 @@ private:
G4int NumberOfFinalStates(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4ParticleDefinition* OutgoingParticleDefinition(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4double IncomingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, G4int finalStateIndex);
G4DNADingfelderChargeIncreaseModel & operator=(const G4DNADingfelderChargeIncreaseModel &right)= delete;
G4DNADingfelderChargeIncreaseModel(const G4DNADingfelderChargeIncreaseModel&) = delete;
// Reusable particle definitions
G4ParticleDefinition* hydrogenDef = nullptr;
G4ParticleDefinition* alphaPlusPlusDef = nullptr;
@@ -52,19 +52,24 @@ class G4DNADiracRMatrixExcitationModel: public G4VEmModel
public:
G4DNADiracRMatrixExcitationModel(const G4ParticleDefinition* p = 0,
G4DNADiracRMatrixExcitationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNADiracRMatrixExcitationModel");
virtual ~G4DNADiracRMatrixExcitationModel();
~G4DNADiracRMatrixExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNADiracRMatrixExcitationModel & operator
=(const G4DNADiracRMatrixExcitationModel &right) = delete;
G4DNADiracRMatrixExcitationModel(const G4DNADiracRMatrixExcitationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetExtendedTotalCrossSection (const G4Material* material,
const G4ParticleDefinition*,
@@ -75,11 +80,11 @@ public:
const G4ParticleDefinition*,
G4double kineticEnergy);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -93,10 +98,6 @@ private:
const G4double paramFuncTCS_5dto6s2[3]={-3e-50 , 4.24498e-15, -0.674543}; // y = [0]+[1]/pow(x-[2],2)
const G4double paramFuncTCS_6sto6p1[3]={ 1.50018e-26, 2.459e-15 ,-40.8088 }; // y = [0]+[1]*log(x-[2])/(x-[2])
const G4double paramFuncTCS_6sto6p2[3]={ 1.26684e-25, 3.97221e-15,-55.6954 }; // y = [0]+[1]*log(x-[2])/(x-[2])
const G4int ShellEnumAu [4]={19 , 20 ,21 , 21 };
// 5d3/2 ,6s1/2 ,6s1/2 //from EADL
const G4double BindingEnergyAu [4]={12.16 ,10.46 , 8.3 , 8.3 };
// [eV] 5d3/2 ,6s1/2 ,6s1/2 //from EADL
const G4double ExcitationEnergyAu[4]={ 2.66 , 1.14 , 4.63 , 5.11};
// [eV] 5dto6s1,6sto6p1,6sto6p2
@@ -112,17 +113,12 @@ private:
G4DNACrossSectionDataSet* fTableData=nullptr;
const std::vector<G4double>* fpMaterialDensity=nullptr;
const G4ParticleDefinition* fParticleDefinition=nullptr;
G4VAtomDeexcitation* fAtomDeexcitation=nullptr;
G4int RandomSelect(const G4Material* material,
const G4ParticleDefinition*,
G4double kineticEnergy);
G4DNADiracRMatrixExcitationModel & operator
=(const G4DNADiracRMatrixExcitationModel &right);
G4DNADiracRMatrixExcitationModel(const G4DNADiracRMatrixExcitationModel&);
};
inline void G4DNADiracRMatrixExcitationModel::SelectStationary(G4bool input)
@@ -51,25 +51,28 @@ class G4DNAELSEPAElasticModel : public G4VEmModel
public:
G4DNAELSEPAElasticModel(const G4ParticleDefinition* particle = 0,
G4DNAELSEPAElasticModel(const G4ParticleDefinition* particle = nullptr,
const G4String& nam = "DNAELSEPAElasticModel");
virtual ~G4DNAELSEPAElasticModel();
~G4DNAELSEPAElasticModel() override;
virtual void Initialise(
const G4ParticleDefinition* particle, const G4DataVector&);
G4DNAELSEPAElasticModel & operator=(const G4DNAELSEPAElasticModel &right) = delete;
G4DNAELSEPAElasticModel(const G4DNAELSEPAElasticModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(
const G4ParticleDefinition* particle, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* particle,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
void SetMaximumEnergy (G4double input)
{fhighEnergyLimit = input; SetHighEnergyLimit(input);};
@@ -140,26 +143,22 @@ private:
G4double RandomizeCosTheta(G4int Z, G4double k);
typedef std::map<G4int,std::map<G4double,std::map<G4double,G4double>>>
TriDimensionMapZ;
using TriDimensionMapZ = std::map<G4int, std::map<G4double, std::map<G4double, G4double>>>;
TriDimensionMapZ fAngleDataZ;
std::map <G4int, std::vector<G4double> > eEdummyVecZ;
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap eCum_Au;
VecMap eCum_H2O;
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap fAngleData_Au;
TriDimensionMap fAngleData_H2O;
std::vector<G4double> eEdummyVec_Au;
std::vector<G4double> eEdummyVec_H2O;
G4DNAELSEPAElasticModel & operator=(const G4DNAELSEPAElasticModel &right);
G4DNAELSEPAElasticModel(const G4DNAELSEPAElasticModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -52,26 +52,29 @@ class G4DNAEmfietzoglouExcitationModel : public G4VEmModel
public:
G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition* p = 0,
G4DNAEmfietzoglouExcitationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam =
"DNAEmfietzoglouExcitationModel");
virtual ~G4DNAEmfietzoglouExcitationModel();
~G4DNAEmfietzoglouExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right) = delete;
G4DNAEmfietzoglouExcitationModel(const G4DNAEmfietzoglouExcitationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -89,15 +92,15 @@ private:
std::map<G4String, G4double, std::less<G4String> > lowEnergyLimit;
std::map<G4String, G4double, std::less<G4String> > highEnergyLimit;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
typedef std::map<G4String, G4String, std::less<G4String> > MapFile;
using MapFile = std::map<G4String, G4String, std::less<G4String>>;
MapFile tableFile;
typedef std::map<G4String, G4DNACrossSectionDataSet*, std::less<G4String> > MapData;
using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
MapData tableData;
// Partial cross section
@@ -108,11 +111,6 @@ private:
G4DNAEmfietzoglouWaterExcitationStructure waterStructure;
//
G4DNAEmfietzoglouExcitationModel & operator=(const G4DNAEmfietzoglouExcitationModel &right);
G4DNAEmfietzoglouExcitationModel(const G4DNAEmfietzoglouExcitationModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -54,26 +54,29 @@ class G4DNAEmfietzoglouIonisationModel : public G4VEmModel
public:
G4DNAEmfietzoglouIonisationModel(const G4ParticleDefinition* p = 0,
G4DNAEmfietzoglouIonisationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam =
"DNAEmfietzoglouIonisationModel");
virtual ~G4DNAEmfietzoglouIonisationModel();
~G4DNAEmfietzoglouIonisationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNAEmfietzoglouIonisationModel & operator=(const G4DNAEmfietzoglouIonisationModel &right) = delete;
G4DNAEmfietzoglouIonisationModel(const G4DNAEmfietzoglouIonisationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
G4double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition,
G4double k,
@@ -103,15 +106,15 @@ private:
std::map<G4String, G4double, std::less<G4String> > lowEnergyLimit;
std::map<G4String, G4double, std::less<G4String> > highEnergyLimit;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
typedef std::map<G4String, G4String, std::less<G4String> > MapFile;
using MapFile = std::map<G4String, G4String, std::less<G4String>>;
MapFile tableFile; // useful ?
typedef std::map<G4String, G4DNACrossSectionDataSet*, std::less<G4String> > MapData;
using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
MapData tableData;
// Final state
@@ -149,7 +152,7 @@ private:
G4double t,
G4double e);
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap eDiffCrossSectionData[6];
TriDimensionMap eNrjTransfData[6]; // for cumulated dcs
@@ -158,7 +161,7 @@ private:
std::vector<G4double> eTdummyVec;
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap eVecm;
@@ -168,11 +171,6 @@ private:
G4int RandomSelect(G4double energy, const G4String& particle);
//
G4DNAEmfietzoglouIonisationModel & operator=(const G4DNAEmfietzoglouIonisationModel &right);
G4DNAEmfietzoglouIonisationModel(const G4DNAEmfietzoglouIonisationModel&);
};
inline void G4DNAEmfietzoglouIonisationModel::SelectFasterComputation(G4bool input)
@@ -123,5 +123,7 @@ class G4DNAEventScheduler : public IEventScheduler
std::map<G4double /*time*/, MapCounter> fCounterMap;
std::set<G4double> fTimeToRecord;
std::set<G4double>::iterator fLastRecoredTime;
void ResetEventSet();
void LastRegisterForCounter();
};
#endif
@@ -37,6 +37,7 @@
class G4DNAMolecularReactionData;
class G4DNAScavengerMaterial;
class G4MolecularConfiguration;
class G4ChemEquilibrium;
class G4DNAGillespieDirectMethod
{
public:
@@ -55,7 +56,15 @@ class G4DNAGillespieDirectMethod
void SetTimeStep(const G4double& stepTime);
void Initialize();
void CreateEvent(const Index& index);
void CreateEvents();
void SetEventSet(G4DNAEventSet*);
inline void SetVerbose(const G4int& verbose)
{
fVerbose = verbose;
}
G4bool SetEquilibrium(const G4DNAMolecularReactionData* pReaction);
void ResetEquilibrium();
private:
G4double Reaction(const Voxel& voxel);
@@ -71,5 +80,8 @@ class G4DNAGillespieDirectMethod
std::map<G4double /*Propensity*/, JumpingData> fJumpingDataMap;
G4bool FindScavenging(const Voxel& voxel, MolType, G4double&);
G4DNAScavengerMaterial* fpScavengerMaterial = nullptr;
std::map<G4int,std::unique_ptr<G4ChemEquilibrium>> fEquilibriumProcesses;
G4bool IsEquilibrium(const G4int& reactionType) const;
};
#endif
@@ -35,27 +35,23 @@
#define G4DNAIRT_HH_
#include "globals.hh"
#include "G4ThreeVector.hh"
#include "G4DNAMolecularReaction.hh"
#include "G4DNAMolecularReactionTable.hh"
#include "G4MoleculeTable.hh"
#include "G4VDNAReactionModel.hh"
#include "G4VITReactionProcess.hh"
#include "G4ITReaction.hh"
#include "G4ITReactionTable.hh"
#include "G4ITTrackHolder.hh"
#include "G4ITReaction.hh"
#include "G4Molecule.hh"
#include "G4VITReactionProcess.hh"
#include "G4MoleculeTable.hh"
#include "G4ParticleChange.hh"
#include "G4ThreeVector.hh"
#include "G4VDNAReactionModel.hh"
#include "G4VITReactionProcess.hh"
#include "globals.hh"
#include "AddClone_def.hh"
#include <vector>
#include <map>
#include <vector>
class G4DNAMolecularReactionTable;
class G4VDNAReactionModel;
@@ -60,13 +60,13 @@ class G4DNAIRTMoleculeEncounterStepper : public G4VITTimeStepComputer
{
public:
G4DNAIRTMoleculeEncounterStepper();
virtual ~G4DNAIRTMoleculeEncounterStepper();
~G4DNAIRTMoleculeEncounterStepper() override;
G4DNAIRTMoleculeEncounterStepper(const G4DNAIRTMoleculeEncounterStepper&) = delete;
G4DNAIRTMoleculeEncounterStepper& operator=(const G4DNAIRTMoleculeEncounterStepper&) = delete;
virtual void Prepare();
virtual G4double CalculateStep(const G4Track&, const G4double&);
virtual G4double CalculateMinTimeStep(G4double, G4double);
void Prepare() override;
G4double CalculateStep(const G4Track&, const G4double&) override;
G4double CalculateMinTimeStep(G4double, G4double) override;
void SetReactionModel(G4VDNAReactionModel*);
G4VDNAReactionModel* GetReactionModel();
@@ -85,13 +85,13 @@ private:
#endif
G4KDTreeResultHandle&);
G4bool fHasAlreadyReachedNullTime;
G4bool fHasAlreadyReachedNullTime{false};
const G4DNAMolecularReactionTable*& fMolecularReactionTable;
G4VDNAReactionModel* fReactionModel;
G4VDNAReactionModel* fReactionModel{nullptr};
G4ITReactionSet* fReactionSet;
G4ITTrackHolder* fpTrackContainer;
G4int fVerbose;
G4int fVerbose{0};
class Utils
{
@@ -48,25 +48,29 @@ class G4DNAIonElasticModel : public G4VEmModel
public:
G4DNAIonElasticModel (const G4ParticleDefinition* p = 0,
G4DNAIonElasticModel (const G4ParticleDefinition* p = nullptr,
const G4String& nam ="DNAIonElasticModel");
virtual
~G4DNAIonElasticModel ();
~G4DNAIonElasticModel () override;
virtual void
G4DNAIonElasticModel &
operator= (const G4DNAIonElasticModel &right) = delete;
G4DNAIonElasticModel (const G4DNAIonElasticModel&) = delete;
void
Initialise (const G4ParticleDefinition* particuleDefinition,
const G4DataVector&);
const G4DataVector&) override;
virtual G4double
G4double
CrossSectionPerVolume (const G4Material* material,
const G4ParticleDefinition* p, G4double ekin,
G4double emin, G4double emax);
G4double emin, G4double emax) override;
virtual void
void
SampleSecondaries (std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*, const G4DynamicParticle*,
G4double tmin, G4double maxEnergy);
G4double tmin, G4double maxEnergy) override;
void
SetKillBelowThreshold (G4double threshold);
@@ -93,7 +97,7 @@ private:
G4double killBelowEnergy;
G4double lowEnergyLimit;
G4double highEnergyLimit;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
G4double fParticle_Mass;
@@ -124,23 +128,17 @@ private:
LinLinInterpolate (G4double e1, G4double e2, G4double e, G4double xs1,
G4double xs2);
typedef std::map<G4double, std::map<G4double, G4double> > TriDimensionMap;
using TriDimensionMap = std::map<G4double, std::map<G4double, G4double>>;
TriDimensionMap fDiffCrossSectionData;
std::vector<G4double> eTdummyVec;
typedef std::map<G4double, std::vector<G4double> > VecMap;
using VecMap = std::map<G4double, std::vector<G4double>>;
VecMap eVecm;
G4double
RandomizeThetaCM (G4double k, G4ParticleDefinition * aParticleDefinition);
//
G4DNAIonElasticModel &
operator= (const G4DNAIonElasticModel &right);
G4DNAIonElasticModel (const G4DNAIonElasticModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -43,24 +43,27 @@
class G4DNAMeltonAttachmentModel : public G4VEmModel
{
public:
G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = 0,
G4DNAMeltonAttachmentModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAMeltonAttachmentModel");
virtual ~G4DNAMeltonAttachmentModel();
~G4DNAMeltonAttachmentModel() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right) = delete;
G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SetDissociationFlag(G4bool);
inline G4bool GetDissociationFlag();
@@ -76,16 +79,13 @@ private:
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
G4bool fDissociationFlag;
// Cross section
G4DNACrossSectionDataSet* fData;
//
G4DNAMeltonAttachmentModel & operator=(const G4DNAMeltonAttachmentModel &right);
G4DNAMeltonAttachmentModel(const G4DNAMeltonAttachmentModel&);
};
inline void G4DNAMeltonAttachmentModel::SetDissociationFlag(G4bool flag)
@@ -45,29 +45,33 @@ class G4DNAMillerGreenExcitationModel : public G4VEmModel
public:
G4DNAMillerGreenExcitationModel(const G4ParticleDefinition* p = 0,
G4DNAMillerGreenExcitationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAMillerGreenExcitationModel");
virtual ~G4DNAMillerGreenExcitationModel();
~G4DNAMillerGreenExcitationModel() override;
G4DNAMillerGreenExcitationModel & operator=(const G4DNAMillerGreenExcitationModel &right) = delete;
G4DNAMillerGreenExcitationModel(const G4DNAMillerGreenExcitationModel&) = delete;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetPartialCrossSection(const G4Material*,
G4double GetPartialCrossSection(const G4Material*,
G4int /*level*/,
const G4ParticleDefinition*,
G4double /*kineticEnergy*/);
G4double /*kineticEnergy*/) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -85,7 +89,7 @@ private:
std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
@@ -127,10 +131,6 @@ private:
G4double sCoefficient[3][4];
//
G4DNAMillerGreenExcitationModel & operator=(const G4DNAMillerGreenExcitationModel &right);
G4DNAMillerGreenExcitationModel(const G4DNAMillerGreenExcitationModel&);
// Reusable particle definitions
G4ParticleDefinition* protonDef = nullptr;
G4ParticleDefinition* hydrogenDef = nullptr;
@@ -56,6 +56,9 @@ using MaterialParticleModelTable =
*/
~G4DNAModelInterface() override = default;
G4DNAModelInterface(const G4DNAModelInterface&) = delete; // prevent copy-construction
G4DNAModelInterface& operator=(const G4DNAModelInterface& right) = delete; // prevent assignement
/*!
* \brief Initialise
* Initialise method to call all the initialise methods of the registered models
@@ -140,9 +143,6 @@ using MaterialParticleModelTable =
G4double GetNumMolPerVolUnitForComponentInComposite(
const G4Material* component, const G4Material* composite);
// copy constructor and hide assignment operator
G4DNAModelInterface(const G4DNAModelInterface&) = delete; // prevent copy-construction
G4DNAModelInterface& operator=(const G4DNAModelInterface& right) = delete; // prevent assignement
const G4String fName; ///< name of the interaction
G4ParticleChangeForGamma* fpParticleChangeForGamma = nullptr;
std::vector<G4VEmModel*> fRegisteredModels; ///< vector containing all the registered models
@@ -71,13 +71,13 @@ class G4DNAMoleculeEncounterStepper : public G4VITTimeStepComputer
{
public:
G4DNAMoleculeEncounterStepper();
virtual ~G4DNAMoleculeEncounterStepper();
~G4DNAMoleculeEncounterStepper() override;
G4DNAMoleculeEncounterStepper(const G4DNAMoleculeEncounterStepper&) = delete;
G4DNAMoleculeEncounterStepper& operator=(const G4DNAMoleculeEncounterStepper&) = delete;
virtual void Prepare();
virtual G4double CalculateStep(const G4Track&, const G4double&);
virtual G4double CalculateMinTimeStep(G4double, G4double);
void Prepare() override;
G4double CalculateStep(const G4Track&, const G4double&) override;
G4double CalculateMinTimeStep(G4double, G4double) override;
void SetReactionModel(G4VDNAReactionModel*);
G4VDNAReactionModel* GetReactionModel();
@@ -96,12 +96,12 @@ private:
#endif
G4KDTreeResultHandle&);
G4bool fHasAlreadyReachedNullTime;
G4bool fHasAlreadyReachedNullTime{false};
const G4DNAMolecularReactionTable*& fMolecularReactionTable;
G4VDNAReactionModel* fReactionModel;
G4VDNAReactionModel* fReactionModel{nullptr};
G4ITTrackHolder* fpTrackContainer;
G4ITReactionSet* fReactionSet;
G4int fVerbose;
G4int fVerbose{0};
class Utils
{
@@ -137,25 +137,25 @@ template<typename MODEL=DNA::Penetration::Meesungnoen2002>
class G4TDNAOneStepThermalizationModel : public G4VEmModel
{
public:
typedef MODEL Model;
G4TDNAOneStepThermalizationModel(const G4ParticleDefinition* p = 0,
using Model = MODEL;
G4TDNAOneStepThermalizationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam =
"DNAOneStepThermalizationModel");
virtual ~G4TDNAOneStepThermalizationModel();
~G4TDNAOneStepThermalizationModel() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
virtual G4double CrossSectionPerVolume(const G4Material* material,
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SetVerbose(int flag){
fVerboseLevel = flag;
@@ -170,7 +170,7 @@ protected:
const std::vector<G4double>* fpWaterDensity;
G4ParticleChangeForGamma* fpParticleChangeForGamma;
G4bool fIsInitialised;
G4bool fIsInitialised{false};
G4int fVerboseLevel;
std::unique_ptr<G4Navigator> fpNavigator;
@@ -182,7 +182,7 @@ private:
#include "G4DNAOneStepThermalizationModel.hpp"
typedef G4TDNAOneStepThermalizationModel<DNA::Penetration::Meesungnoen2002> G4DNAOneStepThermalizationModel;
using G4DNAOneStepThermalizationModel = G4TDNAOneStepThermalizationModel<DNA::Penetration::Meesungnoen2002>;
// typedef G4TDNAOneStepThermalizationModel<DNA::Penetration::Terrisol1990> G4DNAOneStepThermalizationModel;
// Note: if you use the above distribution, it would be
@@ -35,16 +35,18 @@
//
// -------------------------------------------------------------------
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4DNAWaterExcitationStructure.hh"
#include "G4ParticleChangeForGamma.hh"
#include "G4NistManager.hh"
#include "G4DNAChemistryManager.hh"
#include "G4DNAMolecularMaterial.hh"
#include "G4TransportationManager.hh"
#include "G4DNAWaterExcitationStructure.hh"
#include "G4ITNavigator.hh"
#include "G4Navigator.hh"
#include "G4NistManager.hh"
#include "G4ParticleChangeForGamma.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "G4TransportationManager.hh"
#include <memory>
//#define MODEL_VERBOSE
@@ -54,24 +56,21 @@ template<typename MODEL>
G4TDNAOneStepThermalizationModel<MODEL>::
G4TDNAOneStepThermalizationModel(const G4ParticleDefinition*,
const G4String& nam) :
G4VEmModel(nam), fIsInitialised(false)
G4VEmModel(nam)
{
fVerboseLevel = 0;
SetLowEnergyLimit(0.);
G4DNAWaterExcitationStructure exStructure;
SetHighEnergyLimit(exStructure.ExcitationEnergy(0));
fpParticleChangeForGamma = 0;
fpWaterDensity = 0;
fpParticleChangeForGamma = nullptr;
fpWaterDensity = nullptr;
}
//------------------------------------------------------------------------------
template<typename MODEL>
G4TDNAOneStepThermalizationModel<MODEL>::~G4TDNAOneStepThermalizationModel()
{
// if(fpNavigator && fpNavigator->GetNavigatorState())
// delete fpNavigator->GetNavigatorState();
}
= default;
//------------------------------------------------------------------------------
template<typename MODEL>
@@ -105,11 +104,11 @@ Initialise(const G4ParticleDefinition* particleDefinition,
G4TransportationManager::GetTransportationManager()->
GetNavigatorForTracking();
fpNavigator.reset(new G4Navigator());
fpNavigator = std::make_unique<G4Navigator>();
if(navigator){ // add these checks for testing mode
if(navigator != nullptr){ // add these checks for testing mode
auto world=navigator->GetWorldVolume();
if(world){
if(world != nullptr){
fpNavigator->SetWorldVolume(world);
//fNavigator->NewNavigatorState();
}
@@ -74,7 +74,9 @@ public:
*/
virtual ~G4DNAPTBAugerModel();
G4DNAPTBAugerModel(G4DNAPTBAugerModel &) = delete; // prevent copy-construction
G4DNAPTBAugerModel & operator=(const G4DNAPTBAugerModel &right) = delete; // prevent assignement
/*!
* \brief Initialise
* Set the verbose value
@@ -128,10 +130,7 @@ private:
*/
G4int DetermineIonisedAtom(G4int atomId, const G4String &materialName, G4double bindingEnergy);
// copy constructor and hide assignment operator
G4DNAPTBAugerModel(G4DNAPTBAugerModel &); // prevent copy-construction
G4DNAPTBAugerModel & operator=(const G4DNAPTBAugerModel &right); // prevent assignement
};
#endif
@@ -68,6 +68,11 @@ class G4DNAPTBElasticModel : public G4VDNAModel
*/
~G4DNAPTBElasticModel() override = default;
// copy constructor and hide assignment operator
G4DNAPTBElasticModel(G4DNAPTBElasticModel&) = delete; // prevent copy-construction
G4DNAPTBElasticModel& operator=(
const G4DNAPTBElasticModel& right) = delete; // prevent assignement
/*!
* \brief Initialise
* Mandatory method for every model class. The material/particle for which the model
@@ -216,10 +221,6 @@ class G4DNAPTBElasticModel : public G4VDNAModel
*/
G4double RandomizeCosTheta(const G4double& k, const std::size_t& materialName);
// copy constructor and hide assignment operator
G4DNAPTBElasticModel(G4DNAPTBElasticModel&) = delete; // prevent copy-construction
G4DNAPTBElasticModel& operator=(
const G4DNAPTBElasticModel& right) = delete; // prevent assignement
};
#endif
@@ -67,6 +67,11 @@ class G4DNAPTBExcitationModel : public G4VDNAModel
*/
~G4DNAPTBExcitationModel() override = default;
// copy constructor and hide assignment operator
G4DNAPTBExcitationModel(const G4DNAPTBExcitationModel&) = delete; // prevent copy-construction
G4DNAPTBExcitationModel& operator=(
const G4DNAPTBExcitationModel& right) = delete; // prevent assignement
/*!
* \brief Initialise
* Set the materials for which the model can be used and defined the energy limits
@@ -113,11 +118,6 @@ class G4DNAPTBExcitationModel : public G4VDNAModel
MapMeanEnergy fTableMeanEnergyPTB; ///< map: [materialName]=energyValue
// copy constructor and hide assignment operator
G4DNAPTBExcitationModel(const G4DNAPTBExcitationModel&) = delete; // prevent copy-construction
G4DNAPTBExcitationModel& operator=(
const G4DNAPTBExcitationModel& right) = delete; // prevent assignement
G4Material* fpGuanine_PU = nullptr;
G4Material* fpTHF = nullptr;
G4Material* fpPY = nullptr;
@@ -76,6 +76,12 @@ class G4DNAPTBIonisationModel : public G4VDNAModel
*/
~G4DNAPTBIonisationModel() override = default;
// copy constructor and hide assignment operator
G4DNAPTBIonisationModel(const G4DNAPTBIonisationModel&) = delete; // prevent copy-construction
G4DNAPTBIonisationModel& operator=(
const G4DNAPTBIonisationModel& right) = delete; // prevent assignement
/*!
* \brief Initialise
* Method called once at the beginning of the simulation. It is used to setup the list of the
@@ -193,11 +199,6 @@ class G4DNAPTBIonisationModel : public G4VDNAModel
*/
G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
// copy constructor and hide assignment operator
G4DNAPTBIonisationModel(const G4DNAPTBIonisationModel&) = delete; // prevent copy-construction
G4DNAPTBIonisationModel& operator=(
const G4DNAPTBIonisationModel& right) = delete; // prevent assignement
G4Material* fpGuanine_PU = nullptr;
G4Material* fpTHF = nullptr;
G4Material* fpPY = nullptr;
@@ -43,29 +43,32 @@ class G4DNAQuinnPlasmonExcitationModel: public G4VEmModel
public:
G4DNAQuinnPlasmonExcitationModel(const G4ParticleDefinition* p = 0,
G4DNAQuinnPlasmonExcitationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAQuinnPlasmonExcitationModel");
virtual ~G4DNAQuinnPlasmonExcitationModel();
~G4DNAQuinnPlasmonExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNAQuinnPlasmonExcitationModel & operator=(const G4DNAQuinnPlasmonExcitationModel &right) = delete;
G4DNAQuinnPlasmonExcitationModel(const G4DNAQuinnPlasmonExcitationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetCrossSection(const G4Material* material,
const G4ParticleDefinition*,
G4double kineticEnergy);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -87,9 +90,6 @@ private:
G4int GetNValenceElectron(G4int z);
G4DNAQuinnPlasmonExcitationModel & operator=(const G4DNAQuinnPlasmonExcitationModel &right);
G4DNAQuinnPlasmonExcitationModel(const G4DNAQuinnPlasmonExcitationModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -46,38 +46,42 @@
class G4DNARelativisticIonisationModel: public G4VEmModel
{
public:
G4DNARelativisticIonisationModel(const G4ParticleDefinition* p = 0,
G4DNARelativisticIonisationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNARelativisticIonisationModel");
virtual ~G4DNARelativisticIonisationModel();
~G4DNARelativisticIonisationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector()));
G4DNARelativisticIonisationModel & operator
=(const G4DNARelativisticIonisationModel &right) = delete;
G4DNARelativisticIonisationModel(const G4DNARelativisticIonisationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector& = *(new G4DataVector())) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual G4double GetTotalCrossSection (const G4Material* material,
const G4ParticleDefinition*,
G4double kineticEnergy);
virtual G4double GetPartialCrossSection(const G4Material* material,
G4double GetPartialCrossSection(const G4Material* material,
G4int level,
const G4ParticleDefinition*,
G4double kineticEnergy);
G4double kineticEnergy) override;
virtual G4double GetDifferentialCrossSection(const G4Material* material,
const G4ParticleDefinition* particle,
G4double kineticEnergy,
G4double secondaryEnergy,
G4int level);
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
virtual void LoadAtomicStates(G4int z, const char *path);
inline void SelectStationary (G4bool input){statCode = input;};
inline void SelectFasterComputation(G4bool input){fasterCode = input;};
@@ -98,24 +102,17 @@ private:
std::map <G4int, std::vector<G4double> > eVecEZ;
typedef std::map <G4int, std::map<G4double, std::vector<G4double> > >
DeauxDimensionVecMapZ;
using DeauxDimensionVecMapZ = std::map<G4int, std::map<G4double, std::vector<G4double>>>;
DeauxDimensionVecMapZ eVecEjeEZ;
typedef std::map <G4int, std::map<G4int,std::map<G4double,
std::vector<G4double> > > > TriDimensionVecMapZ;
using TriDimensionVecMapZ = std::map<G4int, std::map<G4int, std::map<G4double, std::vector<G4double>>>>;
TriDimensionVecMapZ eProbaShellMapZ;
typedef std::map <G4int, std::map<G4int, std::map<G4double,
std::map<G4double, G4double> > > > QuadDimensionMapZ;
using QuadDimensionMapZ = std::map<G4int, std::map<G4int, std::map<G4double, std::map<G4double, G4double>>>>;
QuadDimensionMapZ eDiffCrossSectionDataZ;
QuadDimensionMapZ eEjectedEnergyDataZ;
G4DNARelativisticIonisationModel & operator
=(const G4DNARelativisticIonisationModel &right);
G4DNARelativisticIonisationModel(const G4DNARelativisticIonisationModel&);
G4double fLowEnergyLimit=0.;
G4double fHighEnergyLimit=0.;
@@ -47,24 +47,27 @@ class G4DNARuddIonisationModel : public G4VEmModel
public:
G4DNARuddIonisationModel(const G4ParticleDefinition* p = 0,
G4DNARuddIonisationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNARuddIonisationModel");
virtual ~G4DNARuddIonisationModel();
~G4DNARuddIonisationModel() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
G4DNARuddIonisationModel & operator=(const G4DNARuddIonisationModel &right) = delete;
G4DNARuddIonisationModel(const G4DNARuddIonisationModel&) = delete;
virtual G4double CrossSectionPerVolume( const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume( const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SelectStationary(G4bool input);
@@ -92,15 +95,15 @@ private:
G4double killBelowEnergyForZ1;
G4double killBelowEnergyForZ2;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
using MapFile = std::map<G4String, G4String, std::less<G4String>>;
MapFile tableFile;
typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
using MapData = std::map<G4String, G4DNACrossSectionDataSet *, std::less<G4String>>;
MapData tableData;
// Final state
@@ -150,11 +153,6 @@ private:
G4int RandomSelect(G4double energy,const G4String& particle );
//
G4DNARuddIonisationModel & operator=(const G4DNARuddIonisationModel &right);
G4DNARuddIonisationModel(const G4DNARuddIonisationModel&);
// Reusable particle definitions
G4ParticleDefinition* protonDef = nullptr;
G4ParticleDefinition* hydrogenDef = nullptr;
@@ -43,25 +43,28 @@
class G4DNASancheExcitationModel : public G4VEmModel
{
public:
G4DNASancheExcitationModel(const G4ParticleDefinition* p = 0,
G4DNASancheExcitationModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNASancheExcitationModel");
virtual ~G4DNASancheExcitationModel();
~G4DNASancheExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
G4DNASancheExcitationModel & operator=(const G4DNASancheExcitationModel &right) = delete;
G4DNASancheExcitationModel(const G4DNASancheExcitationModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
// Cross section
@@ -88,7 +91,7 @@ private:
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4bool isInitialised;
G4bool isInitialised{false};
G4int verboseLevel;
// Cross section
@@ -110,10 +113,6 @@ private:
std::vector<std::vector<G4double>> fEnergyLevelXS;
std::vector<G4double> fEnergyTotalXS;
//
G4DNASancheExcitationModel & operator=(const G4DNASancheExcitationModel &right);
G4DNASancheExcitationModel(const G4DNASancheExcitationModel&);
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -38,24 +38,28 @@
class G4DNAScreenedRutherfordElasticModel : public G4VEmModel
{
public:
G4DNAScreenedRutherfordElasticModel(const G4ParticleDefinition* p = 0,
G4DNAScreenedRutherfordElasticModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAScreenedRutherfordElasticModel");
virtual ~G4DNAScreenedRutherfordElasticModel();
~G4DNAScreenedRutherfordElasticModel() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
G4DNAScreenedRutherfordElasticModel& operator=
(const G4DNAScreenedRutherfordElasticModel &right) = delete;
G4DNAScreenedRutherfordElasticModel(const G4DNAScreenedRutherfordElasticModel&) = delete;
virtual G4double CrossSectionPerVolume(const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SetKillBelowThreshold (G4double threshold);
@@ -81,7 +85,7 @@ private:
G4int verboseLevel;
G4bool isInitialised;
G4bool isInitialised{false};
G4bool fasterCode;
// -- Cross section
@@ -96,10 +100,6 @@ private:
// -- Final state according to Screened Rutherford
G4double ScreenedRutherfordRandomizeCosTheta(G4double k, G4double z);
//
G4DNAScreenedRutherfordElasticModel& operator=
(const G4DNAScreenedRutherfordElasticModel &right);
G4DNAScreenedRutherfordElasticModel(const G4DNAScreenedRutherfordElasticModel&);
};
inline void
@@ -142,7 +142,7 @@ public:
double fXmaxDef;
double fXminDef;
double fToleranceY;
double fSum;
double fSum{0};
double fIncreasingCumulativeFunction;
enum PreviousAction
@@ -158,8 +158,7 @@ public:
double xmax,
double toleranceY) :
fXmax(xmax), fXmin(xmin),
fToleranceY(toleranceY),
fSum(0)
fToleranceY(toleranceY)
{
if(fXmax < fXmin)
{
@@ -309,7 +308,7 @@ public:
double GetInverseProbability(double proba) // returns sTransform
{
size_t index_low = (size_t) trunc(proba/fEpsilon);
auto index_low = (size_t) trunc(proba/fEpsilon);
if(index_low == 0) // assymptote en 0
{
@@ -64,23 +64,23 @@ class G4DNASmoluchowskiReactionModel : public G4VDNAReactionModel
{
public :
G4DNASmoluchowskiReactionModel();
virtual ~G4DNASmoluchowskiReactionModel();
~G4DNASmoluchowskiReactionModel() override;
G4DNASmoluchowskiReactionModel(const G4DNASmoluchowskiReactionModel&) = delete;
G4DNASmoluchowskiReactionModel& operator=(const G4DNASmoluchowskiReactionModel&) = delete;
virtual void Initialise(const G4MolecularConfiguration*, const G4Track&) ;
virtual void InitialiseToPrint(const G4MolecularConfiguration*) ;
virtual G4double GetReactionRadius(const G4MolecularConfiguration*,
const G4MolecularConfiguration*);
virtual G4double GetReactionRadius(const G4int&);
void Initialise(const G4MolecularConfiguration*, const G4Track&) override ;
void InitialiseToPrint(const G4MolecularConfiguration*) override ;
G4double GetReactionRadius(const G4MolecularConfiguration*,
const G4MolecularConfiguration*) override;
G4double GetReactionRadius(const G4int&) override;
virtual G4bool FindReaction(const G4Track&,
G4bool FindReaction(const G4Track&,
const G4Track&,
G4double /*reactionRadius*/,
G4double& /*separationDistance*/,
G4bool /*alongStepInteraction*/) ;
G4bool /*alongStepInteraction*/) override ;
private :
const std::vector<const G4DNAMolecularReactionData*>* fpReactionData ;
const std::vector<const G4DNAMolecularReactionData*>* fpReactionData{nullptr} ;
};
@@ -59,23 +59,26 @@
class G4DNATransformElectronModel: public G4VEmModel
{
public :
G4DNATransformElectronModel(const G4ParticleDefinition* p = 0,
G4DNATransformElectronModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNATransformElectronModel");
virtual ~G4DNATransformElectronModel();
~G4DNATransformElectronModel() override;
virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
G4DNATransformElectronModel & operator=(const G4DNATransformElectronModel &right) = delete;
G4DNATransformElectronModel(const G4DNATransformElectronModel&) = delete;
virtual G4double CrossSectionPerVolume( const G4Material* material,
void Initialise(const G4ParticleDefinition*, const G4DataVector&) override;
G4double CrossSectionPerVolume( const G4Material* material,
const G4ParticleDefinition* p,
G4double ekin,
G4double emin,
G4double emax);
G4double emax) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin,
G4double maxEnergy);
G4double maxEnergy) override;
inline void SetVerbose(int);
@@ -90,13 +93,10 @@ private:
// Water density table
const std::vector<G4double>* fpWaterDensity;
G4bool fIsInitialised;
G4bool fIsInitialised{false};
G4int fVerboseLevel;
G4double fEpsilon;
G4DNATransformElectronModel & operator=(const G4DNATransformElectronModel &right);
G4DNATransformElectronModel(const G4DNATransformElectronModel&);
};
inline void G4DNATransformElectronModel::SetVerbose(int flag)
@@ -36,7 +36,7 @@
class G4DNAUeharaScreenedRutherfordElasticModel : public G4VEmModel
{
public:
G4DNAUeharaScreenedRutherfordElasticModel(const G4ParticleDefinition* p = 0,
G4DNAUeharaScreenedRutherfordElasticModel(const G4ParticleDefinition* p = nullptr,
const G4String& nam = "DNAUeharaScreenedRutherfordElasticModel");
~G4DNAUeharaScreenedRutherfordElasticModel() override = default;
@@ -59,7 +59,10 @@ class G4DNAVacuumModel : public G4VDNAModel
* \brief ~G4DNAVacuumModel
* Destructor
*/
virtual ~G4DNAVacuumModel();
~G4DNAVacuumModel() override;
G4DNAVacuumModel(const G4DNAVacuumModel&) = delete; // prevent copy-construction
G4DNAVacuumModel& operator=(const G4DNAVacuumModel& right) = delete; // prevent assignement
/*!
* \brief Initialise
@@ -77,7 +80,7 @@ class G4DNAVacuumModel : public G4VDNAModel
* \param emax
* \return cross section value
*/
virtual G4double CrossSectionPerVolume(const G4Material* material,
G4double CrossSectionPerVolume(const G4Material* material,
const G4ParticleDefinition* p, G4double ekin, G4double emin, G4double emax) override;
/*!
@@ -92,9 +95,6 @@ class G4DNAVacuumModel : public G4VDNAModel
private:
G4int verboseLevel = 0; ///< verbose level
// copy constructor and hide assignment operator
G4DNAVacuumModel(const G4DNAVacuumModel&) = delete; // prevent copy-construction
G4DNAVacuumModel& operator=(const G4DNAVacuumModel& right) = delete; // prevent assignement
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -34,23 +34,23 @@ class G4LEPTSAttachmentModel : public G4VLEPTSModel
{
public:
G4LEPTSAttachmentModel(const G4String& processName ="G4LEPTSAttachmentModel");
~G4LEPTSAttachmentModel();
~G4LEPTSAttachmentModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -32,23 +32,23 @@ class G4LEPTSDissociationModel : public G4VLEPTSModel
{
public:
G4LEPTSDissociationModel(const G4String& modelName ="G4LEPTSDissociationModel");
~G4LEPTSDissociationModel();
~G4LEPTSDissociationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -32,23 +32,23 @@
class G4LEPTSElasticModel : public G4VLEPTSModel {
public:
G4LEPTSElasticModel(const G4String& modelName ="G4LEPTSElasticModel");
~G4LEPTSElasticModel();
~G4LEPTSElasticModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
@@ -35,8 +35,8 @@
#include <map>
class G4LEPTSDistribution;
typedef std::map<G4double, G4LEPTSDistribution*> mddist;
typedef std::map<G4double, mddist > mdmddist;
using mddist = std::map<G4double, G4LEPTSDistribution *>;
using mdmddist = std::map<G4double, mddist>;
class G4LEPTSElossDistr {
@@ -32,25 +32,25 @@ class G4LEPTSExcitationModel : public G4VLEPTSModel
{
public:
G4LEPTSExcitationModel(const G4String& modelName ="G4LEPTSExcitationModel");
~G4LEPTSExcitationModel();
~G4LEPTSExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual std::map<G4int,std::vector<G4double> > ReadIXS(G4String, const G4Material* aMaterial);
std::map<G4int,std::vector<G4double> > ReadIXS(G4String, const G4Material* aMaterial) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -32,23 +32,23 @@ class G4LEPTSIonisationModel : public G4VLEPTSModel
{
public:
G4LEPTSIonisationModel(const G4String& modelName ="G4LEPTSIonisationModel");
~G4LEPTSIonisationModel();
~G4LEPTSIonisationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -32,23 +32,23 @@ class G4LEPTSPositroniumModel : public G4VLEPTSModel
{
public:
G4LEPTSPositroniumModel(const G4String& modelName ="G4LEPTSPositroniumModel");
~G4LEPTSPositroniumModel();
~G4LEPTSPositroniumModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
};
@@ -32,23 +32,23 @@ class G4LEPTSRotExcitationModel : public G4VLEPTSModel
{
public:
G4LEPTSRotExcitationModel(const G4String& modelName ="G4LEPTSRotExcitationModel");
~G4LEPTSRotExcitationModel();
~G4LEPTSRotExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -32,23 +32,23 @@ class G4LEPTSVibExcitationModel : public G4VLEPTSModel
{
public:
G4LEPTSVibExcitationModel(const G4String& modelName ="G4LEPTSVibExcitationModel");
~G4LEPTSVibExcitationModel();
~G4LEPTSVibExcitationModel() override;
virtual void Initialise(const G4ParticleDefinition*,
const G4DataVector&);
void Initialise(const G4ParticleDefinition*,
const G4DataVector&) override;
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
void SampleSecondaries(std::vector<G4DynamicParticle*>*,
const G4MaterialCutsCouple*,
const G4DynamicParticle*,
G4double tmin = 0.0,
G4double tmax = DBL_MAX);
G4double tmax = DBL_MAX) override;
// main method to compute cross section per Volume
virtual G4double CrossSectionPerVolume(const G4Material*,
G4double CrossSectionPerVolume(const G4Material*,
const G4ParticleDefinition*,
G4double kineticEnergy,
G4double cutEnergy = 0.0,
G4double maxEnergy = DBL_MAX);
G4double maxEnergy = DBL_MAX) override;
private:
G4ParticleChangeForGamma* fParticleChangeForGamma;
@@ -61,7 +61,7 @@ class G4VDNAModel : public G4VEmModel
/*!
* \brief ~G4VDNAModel
*/
virtual ~G4VDNAModel();
~G4VDNAModel() override;
/*!
* \brief Initialise
@@ -69,7 +69,7 @@ class G4VDNAModel : public G4VEmModel
* \param particle
* \param cuts
*/
virtual void Initialise(const G4ParticleDefinition* particle, const G4DataVector& cuts) = 0;
void Initialise(const G4ParticleDefinition* particle, const G4DataVector& cuts) override = 0;
/*!
* \brief CrossSectionPerVolume
@@ -80,8 +80,8 @@ class G4VDNAModel : public G4VEmModel
* \param emax
* \return crossSection*numberOfMoleculesPerVolumeUnit
*/
virtual G4double CrossSectionPerVolume(const G4Material* material, const G4ParticleDefinition* p,
G4double ekin, G4double emin, G4double emax) = 0;
G4double CrossSectionPerVolume(const G4Material* material, const G4ParticleDefinition* p,
G4double ekin, G4double emin, G4double emax) override = 0;
/*!
* \brief SampleSecondaries
@@ -89,8 +89,8 @@ class G4VDNAModel : public G4VEmModel
* ModelInterface or if any charateristic of the incident particle will change. \param
* materialName \param particleChangeForGamma \param tmin \param tmax
*/
virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*, const G4MaterialCutsCouple*,
const G4DynamicParticle*, G4double tmin = 0, G4double tmax = DBL_MAX) = 0;
void SampleSecondaries(std::vector<G4DynamicParticle*>*, const G4MaterialCutsCouple*,
const G4DynamicParticle*, G4double tmin = 0, G4double tmax = DBL_MAX) override = 0;
/*!
* \brief IsMaterialDefine
@@ -62,7 +62,7 @@ class G4VLEPTSModel : public G4VEmModel
public:
G4VLEPTSModel(const G4String& processName);
~G4VLEPTSModel();
~G4VLEPTSModel() override;
void BuildPhysicsTable(const G4ParticleDefinition& aParticleType); //G4ParticleWithCuts::SetCut()
G4double GetMeanFreePath(const G4Material* mate,
@@ -103,7 +103,7 @@ protected:
std::map<const G4Material*, G4int> theNXSdat;
std::map<const G4Material*, G4int> theNXSsub;
G4bool isInitialised;
G4bool isInitialised{false};
XSType theXSType;
G4int verboseLevel;