Import Geant4 10.4.0 source tree

This commit is contained in:
Gabriele Cosmo
2017-12-08 12:52:30 +01:00
parent 98e455a940
commit fc6af9e721
2166 changed files with 276760 additions and 100873 deletions
@@ -0,0 +1,101 @@
//
// ********************************************************************
// * 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. *
// ********************************************************************
//
// $Id: G4EmDataHandler.hh 73844 2013-09-13 14:16:30Z vnivanch $
//
// -------------------------------------------------------------------
//
// GEANT4 Class header file
//
// File name: G4EmDataHandler
//
// Author: V. Ivanchenko
//
// Creation date: 16 August 2016
//
// Modifications:
//
// Class Description:
//
// A storage of G4PhysicsTable
//
// Class Description: End
// -------------------------------------------------------------------
//
#ifndef G4EmDataHandler_h
#define G4EmDataHandler_h 1
#include "globals.hh"
#include "G4PhysicsTable.hh"
#include <vector>
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class G4ParticleDefinition;
class G4EmDataHandler
{
public:
explicit G4EmDataHandler(size_t nTable);
~G4EmDataHandler();
size_t SetTable(G4PhysicsTable*);
G4PhysicsTable* MakeTable();
G4bool StorePhysicsTable(size_t idx,
const G4ParticleDefinition* part,
const G4String& namet,
const G4String& procname,
G4bool ascii);
G4bool RetrievePhysicsTable(size_t idx,
const G4ParticleDefinition* part,
const G4String& namet,
const G4String& procname,
G4bool ascii);
inline G4PhysicsTable* GetTable(size_t idx) { return data[idx]; }
inline std::vector<G4PhysicsTable*>& GetTables() { return data; }
// hide assignment operator
G4EmDataHandler & operator=(const G4EmDataHandler &right) = delete;
G4EmDataHandler(const G4EmDataHandler&) = delete;
private:
std::vector<G4PhysicsTable*> data;
size_t tLength;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4EmModelManager.hh 95657 2016-02-17 13:03:36Z gcosmo $
// $Id: G4EmModelManager.hh 106714 2017-10-20 09:38:06Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -84,8 +84,6 @@ class G4RegionModels
friend class G4EmModelManager;
public:
private:
G4RegionModels(G4int nMod, std::vector<G4int>& indx,
@@ -132,6 +130,7 @@ private:
#include "G4VEmModel.hh"
#include "G4VEmFluctuationModel.hh"
#include "G4DynamicParticle.hh"
#include <iostream>
class G4Region;
class G4ParticleDefinition;
@@ -162,7 +161,7 @@ public:
G4bool startFromNull = true,
G4EmTableType t = fRestricted);
void AddEmModel(G4int, G4VEmModel*, G4VEmFluctuationModel*, const G4Region*);
void AddEmModel(G4int, G4VEmModel*, G4VEmFluctuationModel*, const G4Region*);
void UpdateEmModel(const G4String& model_name, G4double emin, G4double emax);
@@ -178,7 +177,8 @@ public:
G4int NumberOfRegionModels(size_t index_couple) const;
// Automatic documentation
void DumpModelList(G4int verb);
void DumpModelList(std::ostream& out, G4int verb);
void DumpModelList(std::ostream& out, G4int verb, G4String endOfLine);
// Select model for given material cuts couple index
inline G4VEmModel* SelectModel(G4double& energy, size_t& index);
@@ -125,6 +125,9 @@ public:
void SetLateralDisplacement(G4bool val);
G4bool LateralDisplacement() const;
void SetLateralDisplacementAlg96(G4bool val);
G4bool LateralDisplacementAlg96() const;
void SetMuHadLateralDisplacement(G4bool val);
G4bool MuHadLateralDisplacement() const;
@@ -143,6 +146,18 @@ public:
void SetBirksActive(G4bool val);
G4bool BirksActive() const;
void SetDNAFast(G4bool val);
G4bool DNAFast() const;
void SetDNAStationary(G4bool val);
G4bool DNAStationary() const;
void SetDNAElectronMsc(G4bool val);
G4bool DNAElectronMsc() const;
void SetGammaSharkActive(G4bool val);
G4bool GammaSharkActive() const;
void SetEmSaturation(G4EmSaturation*);
G4EmSaturation* GetEmSaturation();
@@ -165,6 +180,9 @@ public:
void SetLowestMuHadEnergy(G4double val);
G4double LowestMuHadEnergy() const;
void SetLowestTripletEnergy(G4double val);
G4double LowestTripletEnergy() const;
void SetLinearLossLimit(G4double val);
G4double LinearLossLimit() const;
@@ -275,11 +293,11 @@ public:
void DefineRegParamForEM(G4VEmProcess*) const;
void DefineRegParamForDeex(G4VAtomDeexcitation*) const;
private:
G4EmParameters(G4EmParameters &) = delete;
G4EmParameters & operator=(const G4EmParameters &right) = delete;
private:
G4EmParameters();
void Initialise();
@@ -311,12 +329,17 @@ private:
G4bool pixe;
G4bool deexIgnoreCut;
G4bool lateralDisplacement;
G4bool lateralDisplacementAlg96;
G4bool muhadLateralDisplacement;
G4bool latDisplacementBeyondSafety;
G4bool useAngGeneratorForIonisation;
G4bool useMottCorrection;
G4bool integral;
G4bool birks;
G4bool dnaFast;
G4bool dnaStationary;
G4bool dnaMsc;
G4bool gammaShark;
G4double minSubRange;
G4double minKinEnergy;
@@ -324,6 +347,7 @@ private:
G4double maxKinEnergyCSDA;
G4double lowestElectronEnergy;
G4double lowestMuHadEnergy;
G4double lowestTripletEnergy;
G4double linLossLimit;
G4double bremsTh;
G4double lambdaFactor;
@@ -95,18 +95,24 @@ private:
G4UIcmdWithABool* pixeCmd;
G4UIcmdWithABool* dcutCmd;
G4UIcmdWithABool* latCmd;
G4UIcmdWithABool* lat96Cmd;
G4UIcmdWithABool* mulatCmd;
G4UIcmdWithABool* catCmd;
G4UIcmdWithABool* delCmd;
G4UIcmdWithABool* IntegCmd;
G4UIcmdWithABool* mottCmd;
G4UIcmdWithABool* birksCmd;
G4UIcmdWithABool* dnafCmd;
G4UIcmdWithABool* dnasCmd;
G4UIcmdWithABool* dnamscCmd;
G4UIcmdWithABool* sharkCmd;
G4UIcmdWithADouble* minSubSecCmd;
G4UIcmdWithADoubleAndUnit* minEnCmd;
G4UIcmdWithADoubleAndUnit* maxEnCmd;
G4UIcmdWithADoubleAndUnit* cenCmd;
G4UIcmdWithADoubleAndUnit* lowEnCmd;
G4UIcmdWithADoubleAndUnit* lowEn3Cmd;
G4UIcmdWithADoubleAndUnit* lowhEnCmd;
G4UIcmdWithADouble* lllCmd;
G4UIcmdWithADoubleAndUnit* brCmd;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4LossTableManager.hh 104349 2017-05-26 07:18:59Z gcosmo $
// $Id: G4LossTableManager.hh 106714 2017-10-20 09:38:06Z gcosmo $
//
//
// -------------------------------------------------------------------
@@ -96,6 +96,7 @@ class G4EmConfigurator;
class G4ElectronIonPair;
class G4VMultipleScattering;
class G4VEmProcess;
class G4GammaShark;
class G4LossTableManager
{
@@ -134,7 +135,9 @@ public:
void LocalPhysicsTables(const G4ParticleDefinition* aParticle,
G4VEnergyLossProcess* p);
void DumpHtml();
//-------------------------------------------------
// Run time access to DEDX, range, energy for a given particle,
// energy, and G4MaterialCutsCouple
@@ -237,6 +240,10 @@ public:
inline G4LossTableBuilder* GetTableBuilder();
inline void SetGammaShark(G4GammaShark*);
inline G4GammaShark* GetGammaShark();
private:
//-------------------------------------------------
@@ -301,6 +308,7 @@ private:
G4VSubCutProducer* subcutProducer;
G4EmParameters* theParameters;
G4GammaShark* gammaShark;
G4int verbose;
@@ -444,5 +452,15 @@ inline G4LossTableBuilder* G4LossTableManager::GetTableBuilder()
return tableBuilder;
}
inline void G4LossTableManager::SetGammaShark(G4GammaShark* ptr)
{
gammaShark = ptr;
}
inline G4GammaShark* G4LossTableManager::GetGammaShark()
{
return gammaShark;
}
#endif
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmFluctuationModel.hh 95657 2016-02-17 13:03:36Z gcosmo $
// $Id: G4VEmFluctuationModel.hh 106208 2017-09-20 01:53:57Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmModel.hh 104457 2017-05-31 15:52:37Z gcosmo $
// $Id: G4VEmModel.hh 106714 2017-10-20 09:38:06Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -222,7 +222,10 @@ public:
virtual void DefineForRegion(const G4Region*);
// for automatic documentation
virtual void ModelDescription(std::ostream& outFile) const;
virtual void ModelDescription(std::ostream& outFile) const;
virtual void ModelDescription(std::ostream& outFile,
G4String endOfLine) const;
protected:
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmProcess.hh 95657 2016-02-17 13:03:36Z gcosmo $
// $Id: G4VEmProcess.hh 106983 2017-10-31 09:08:30Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -105,12 +105,15 @@ public:
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
// obsolete
virtual void PrintInfo() {};
virtual void ProcessDescription(std::ostream& outFile) const; // = 0;
virtual void ProcessDescription(std::ostream& outFile) const override;
protected:
virtual void StreamProcessInfo(std::ostream&, G4String) const {};
virtual void InitialiseProcess(const G4ParticleDefinition*) = 0;
//------------------------------------------------------------------------
@@ -223,12 +226,13 @@ public:
// model will be selected for a given energy interval
void AddEmModel(G4int, G4VEmModel*, const G4Region* region = nullptr);
// return the assigned model
G4VEmModel* EmModel(G4int index = 1) const;
// Assign a model to a process
void SetEmModel(G4VEmModel*, G4int index = 1);
// Assign a model to a process local list, to enable the list in run time
// the derived process should execute AddEmModel(..) for all such models
void SetEmModel(G4VEmModel*, G4int index = 0);
// return a model from the local list
G4VEmModel* EmModel(size_t index = 0) const;
// Define new energy range for the model identified by the name
void UpdateEmModel(const G4String&, G4double, G4double);
@@ -312,7 +316,8 @@ private:
void BuildLambdaTable();
void PrintInfoProcess(const G4ParticleDefinition&);
void StreamInfo(std::ostream& outFile, const G4ParticleDefinition&,
G4String endOfLine=G4String("\n")) const;
void FindLambdaMax();
@@ -375,6 +380,7 @@ private:
G4double maxKinEnergy;
G4double lambdaFactor;
G4double biasFactor;
G4double massRatio;
G4bool integral;
G4bool applyCuts;
@@ -384,6 +390,7 @@ private:
G4bool actMaxKinEnergy;
G4bool actBinning;
G4bool actSpline;
G4bool isIon;
// ======== Cashed values - may be state dependent ================
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEnergyLossProcess.hh 104349 2017-05-26 07:18:59Z gcosmo $
// $Id: G4VEnergyLossProcess.hh 106714 2017-10-20 09:38:06Z gcosmo $
// GEANT4 tag $Name:
//
// -------------------------------------------------------------------
@@ -141,12 +141,15 @@ private:
public:
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
// obsolete to be removed
virtual void PrintInfo() {};
virtual void ProcessDescription(std::ostream& outFile) const; // = 0;
virtual void ProcessDescription(std::ostream& outFile) const override;
protected:
virtual void StreamProcessInfo(std::ostream&, G4String) const {};
virtual void InitialiseEnergyLossProcess(const G4ParticleDefinition*,
const G4ParticleDefinition*) = 0;
@@ -176,9 +179,6 @@ public:
// build a table
G4PhysicsTable* BuildLambdaTable(G4EmTableType tType = fRestricted);
// summary printout after initialisation
void PrintInfoDefinition(const G4ParticleDefinition& part);
// Called before tracking of each new G4Track
virtual void StartTracking(G4Track*) override;
@@ -223,6 +223,11 @@ public:
G4bool ascii) override;
private:
// summary printout after initialisation
void StreamInfo(std::ostream& out, const G4ParticleDefinition& part,
G4String endOfLine=G4String("\n")) const;
// store a table
G4bool StoreTable(const G4ParticleDefinition* p,
G4PhysicsTable*, G4bool ascii,
@@ -306,11 +311,12 @@ public:
// Define new energy range for the model identified by the name
void UpdateEmModel(const G4String&, G4double, G4double);
// Assign a model to a process
void SetEmModel(G4VEmModel*, G4int index=1);
// Assign a model to a process local list, to enable the list in run time
// the derived process should execute AddEmModel(..) for all such models
void SetEmModel(G4VEmModel*, G4int index=0);
// return the assigned model
G4VEmModel* EmModel(G4int index=1) const;
// return a model from the local list
G4VEmModel* EmModel(size_t index=0) const;
// Access to models
G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false) const;
@@ -318,7 +324,7 @@ public:
G4int NumberOfModels() const;
// Assign a fluctuation model to a process
void SetFluctModel(G4VEmFluctuationModel*);
inline void SetFluctModel(G4VEmFluctuationModel*);
// return the assigned fluctuation model
inline G4VEmFluctuationModel* FluctModel();
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VMultipleScattering.hh 97432 2016-06-03 07:23:39Z gcosmo $
// $Id: G4VMultipleScattering.hh 106714 2017-10-20 09:38:06Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -104,14 +104,17 @@ public:
virtual G4bool IsApplicable(const G4ParticleDefinition& p) override = 0;
virtual void PrintInfo() = 0;
// obsolete
virtual void PrintInfo() {};
virtual void ProcessDescription(std::ostream& outFile) const; // = 0;
virtual void ProcessDescription(std::ostream& outFile) const override;
protected:
virtual void InitialiseProcess(const G4ParticleDefinition*) = 0;
virtual void StreamProcessInfo(std::ostream&, G4String) const {};
public:
//------------------------------------------------------------------------
@@ -124,9 +127,6 @@ public:
// Build physics table during initialisation
void BuildPhysicsTable(const G4ParticleDefinition&) override;
// Print out of generic class parameters
void PrintInfoDefinition();
// Store PhysicsTable in a file.
// Return false in case of failure at I/O
G4bool StorePhysicsTable(const G4ParticleDefinition*,
@@ -187,14 +187,15 @@ public:
// model will be selected for a given energy interval
void AddEmModel(G4int order, G4VEmModel*, const G4Region* region = nullptr);
// Assign a model to a process
void SetEmModel(G4VMscModel*, G4int index = 1);
// Assign a model to a process local list, to enable the list in run time
// the derived process should execute AddEmModel(..) for all such models
void SetEmModel(G4VMscModel*, size_t index = 0);
// return the assigned model
G4VMscModel* EmModel(G4int index = 1) const;
// return a model from the local list
G4VMscModel* EmModel(size_t index = 0) const;
// Access to models by index
G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false) const;
// Access to run time models by index
inline G4VEmModel* GetModelByIndex(G4int idx = 0, G4bool ver = false) const;
//------------------------------------------------------------------------
// Get/Set parameters for simulation of multiple scattering
@@ -212,10 +213,8 @@ public:
inline void SetRangeFactor(G4double val);
inline G4double GeomFactor() const;
//inline void SetGeomFactor(G4double val);
inline G4double PolarAngleLimit() const;
// inline void SetPolarAngleLimit(G4double val);
inline G4MscStepLimitType StepLimitType() const;
inline void SetStepLimitType(G4MscStepLimitType val);
@@ -243,7 +242,7 @@ protected:
G4double& currentSafety) override ;
// return number of already added models
inline size_t NumberOfModels() const;
inline G4int NumberOfModels() const;
private:
@@ -252,6 +251,10 @@ private:
G4VMultipleScattering &
operator=(const G4VMultipleScattering &right) = delete;
// Print out of generic class parameters
void StreamInfo(std::ostream& outFile, const G4ParticleDefinition&,
G4String endOfLine=G4String("\n")) const;
// ======== Parameters of the class fixed at construction =========
G4EmModelManager* modelManager;
@@ -409,11 +412,19 @@ inline const G4ParticleDefinition* G4VMultipleScattering::FirstParticle() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline size_t G4VMultipleScattering::NumberOfModels() const
inline G4int G4VMultipleScattering::NumberOfModels() const
{
return modelManager->NumberOfModels();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
inline G4VEmModel*
G4VMultipleScattering::GetModelByIndex(G4int idx, G4bool ver) const
{
return modelManager->GetModel(idx, ver);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#endif