Import Geant4 8.0.0 source tree
This commit is contained in:
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmCalculator.hh,v 1.9 2005/02/26 22:01:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmCorrections.hh,v 1.3 2005/02/26 22:01:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmModelManager.hh,v 1.14 2005/04/11 10:40:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmMultiModel.hh,v 1.4 2005/04/15 11:40:46 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4EmProcessOptions.hh,v 1.3 2005/03/28 23:08:18 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4EmProcessOptions.hh,v 1.4 2005/10/27 14:04:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
|
||||
void SetLossFluctuations(G4bool val);
|
||||
|
||||
void SetSubCutoff(G4bool val);
|
||||
void SetSubCutoff(G4bool val, const G4Region* r=0);
|
||||
|
||||
void SetIntegral(G4bool val);
|
||||
|
||||
@@ -99,6 +99,8 @@ public:
|
||||
|
||||
void ActivateDeexcitation(G4bool val, const G4Region* r = 0);
|
||||
|
||||
void SetMscStepLimitation(G4bool algorithm, G4double factor = -1.);
|
||||
|
||||
private:
|
||||
|
||||
G4EmProcessOptions & operator=(const G4EmProcessOptions &right);
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EnergyLossMessenger.hh,v 1.8 2003/10/13 10:49:17 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4EnergyLossTables.hh,v 1.18 2003/07/23 11:36:25 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// $Id:
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LossTableBuilder.hh,v 1.4 2004/11/10 08:54:59 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4LossTableManager.hh,v 1.27 2005/02/15 19:35:11 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4LossTableManager.hh,v 1.28 2005/10/27 14:04:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
@@ -241,7 +241,6 @@ private:
|
||||
G4double maxKinEnergy;
|
||||
G4double maxKinEnergyForMuons;
|
||||
|
||||
//G4VEnergyLossProcess* eIonisation;
|
||||
G4LossTableBuilder* tableBuilder;
|
||||
G4EnergyLossMessenger* theMessenger;
|
||||
G4EmCorrections* emCorrections;
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmFluctuationModel.hh,v 1.8 2005/04/12 11:21:25 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4VEmFluctuationModel.hh,v 1.9 2005/07/25 18:13:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -41,6 +41,7 @@
|
||||
// 13-02-03 Add name (V.Ivanchenko)
|
||||
// 16-10-03 Changed interface to Initialisation (V.Ivanchenko)
|
||||
// 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
|
||||
// 25-07-05 Move constructor and destructor to the body (V.Ivanchenko)
|
||||
//
|
||||
//
|
||||
// Class Description:
|
||||
@@ -108,14 +109,6 @@ private:
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
|
||||
inline G4VEmFluctuationModel::G4VEmFluctuationModel(const G4String& nam)
|
||||
: name(nam)
|
||||
{}
|
||||
|
||||
inline G4VEmFluctuationModel::~G4VEmFluctuationModel()
|
||||
{}
|
||||
|
||||
inline void G4VEmFluctuationModel::InitialiseMe(const G4ParticleDefinition*)
|
||||
{}
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmModel.hh,v 1.34 2005/05/11 08:06:19 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4VEmModel.hh,v 1.35 2005/07/25 18:13:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -50,6 +50,7 @@
|
||||
// 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko)
|
||||
// 15-04-05 optimize internal interface for msc (V.Ivanchenko)
|
||||
// 08-05-05 A -> N (V.Ivanchenko)
|
||||
// 25-07-05 Move constructor and destructor to the body (V.Ivanchenko)
|
||||
//
|
||||
// Class Description:
|
||||
//
|
||||
@@ -205,13 +206,6 @@ protected:
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4VEmModel::G4VEmModel(const G4String& nam):
|
||||
lowLimit(0.0), highLimit(0.0), fluc(0), name(nam), pParticleChange(0)
|
||||
{}
|
||||
|
||||
inline G4VEmModel::~G4VEmModel()
|
||||
{}
|
||||
|
||||
inline G4double G4VEmModel::HighEnergyLimit()
|
||||
{
|
||||
return highLimit;
|
||||
@@ -276,26 +270,6 @@ inline G4double G4VEmModel::CrossSection(const G4MaterialCutsCouple* c,
|
||||
return CrossSectionPerVolume(c->GetMaterial(),p,kinEnergy,cutEnergy,maxEnergy);
|
||||
}
|
||||
|
||||
inline G4double G4VEmModel::CrossSectionPerVolume(
|
||||
const G4Material* material,
|
||||
const G4ParticleDefinition* p,
|
||||
G4double ekin,
|
||||
G4double emin,
|
||||
G4double emax)
|
||||
{
|
||||
G4double cross = 0.0;
|
||||
const G4ElementVector* theElementVector = material->GetElementVector();
|
||||
const G4double* theAtomNumDensityVector = material->GetVecNbOfAtomsPerVolume();
|
||||
size_t nelm = material->GetNumberOfElements();
|
||||
for (size_t i=0; i<nelm; i++) {
|
||||
const G4Element* elm = (*theElementVector)[i];
|
||||
cross += theAtomNumDensityVector[i]*
|
||||
ComputeCrossSectionPerAtom(p,ekin,elm->GetZ(),elm->GetN(),emin,emax);
|
||||
xsec[i] = cross;
|
||||
}
|
||||
return cross;
|
||||
}
|
||||
|
||||
inline G4double G4VEmModel::ComputeCrossSectionPerAtom(
|
||||
const G4ParticleDefinition*,
|
||||
G4double, G4double, G4double, G4double, G4double)
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEmProcess.hh,v 1.28 2005/05/12 11:06:52 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4VEmProcess.hh,v 1.29 2005/10/25 11:38:15 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -333,7 +333,9 @@ inline G4double G4VEmProcess::RecalculateLambda(G4double e, const G4MaterialCuts
|
||||
inline G4double G4VEmProcess::ComputeCurrentLambda(G4double e)
|
||||
{
|
||||
G4VEmModel* currentModel = SelectModel(e);
|
||||
return currentModel->CrossSectionPerVolume(currentMaterial,particle,e);
|
||||
G4double x = 0.0;
|
||||
if(currentModel) x = currentModel->CrossSectionPerVolume(currentMaterial,particle,e);
|
||||
return x;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
//
|
||||
//
|
||||
// $Id: G4VEnergyLoss.hh,v 1.17 2003/03/25 13:36:57 maire Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
//
|
||||
// ------------------------------------------------------------
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VEnergyLossProcess.hh,v 1.39 2005/04/12 18:31:47 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4VEnergyLossProcess.hh,v 1.43 2005/10/27 14:04:35 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -90,8 +90,8 @@ class G4VEmFluctuationModel;
|
||||
class G4DataVector;
|
||||
class G4PhysicsTable;
|
||||
class G4PhysicsVector;
|
||||
class G4VSubCutoffProcessor;
|
||||
class G4Region;
|
||||
class G4Navigator;
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
@@ -213,17 +213,15 @@ public:
|
||||
void AddEmModel(G4int, G4VEmModel*, G4VEmFluctuationModel* fluc = 0,
|
||||
const G4Region* region = 0);
|
||||
|
||||
// Define new energy range for thhe model identified by the name
|
||||
// Define new energy range for the model identified by the name
|
||||
void UpdateEmModel(const G4String&, G4double, G4double);
|
||||
|
||||
// Add subcutoff processor for the region
|
||||
void AddSubCutoffProcessor(G4VSubCutoffProcessor*, const G4Region* region = 0);
|
||||
void ActivateSubCutoff(G4bool val, const G4Region* region = 0);
|
||||
|
||||
// Activate deexcitation code
|
||||
virtual void ActivateDeexcitation(G4bool, const G4Region* region = 0);
|
||||
|
||||
virtual void SetSubCutoff(G4bool);
|
||||
|
||||
void SetDEDXTable(G4PhysicsTable* p);
|
||||
G4PhysicsTable* DEDXTable() const;
|
||||
|
||||
@@ -299,6 +297,14 @@ public:
|
||||
|
||||
G4bool IsIonisationProcess() const;
|
||||
|
||||
void AddCollaborativeProcess(G4VEnergyLossProcess*);
|
||||
|
||||
void AddSubCutoffSecondaries(std::vector<G4Track*>&, const G4Step&,
|
||||
G4double& eloss, G4double& escaled);
|
||||
|
||||
void SampleSubCutSecondaries(std::vector<G4Track*>&, const G4Step&,
|
||||
G4double& eloss, G4VEmModel* model);
|
||||
|
||||
protected:
|
||||
|
||||
void SetParticle(const G4ParticleDefinition* p);
|
||||
@@ -315,8 +321,6 @@ protected:
|
||||
|
||||
G4VEmModel* SelectModel(G4double kinEnergy);
|
||||
|
||||
G4VSubCutoffProcessor* SubCutoffProcessor(size_t index);
|
||||
|
||||
size_t CurrentMaterialCutsCoupleIndex() const;
|
||||
|
||||
// Set scaling parameters
|
||||
@@ -358,10 +362,12 @@ protected:
|
||||
private:
|
||||
|
||||
G4EmModelManager* modelManager;
|
||||
std::vector<G4VSubCutoffProcessor*> scoffProcessors;
|
||||
std::vector<const G4Region*> scoffRegions;
|
||||
G4int nSCoffRegions;
|
||||
std::vector<G4int> idxSCoffRegions;
|
||||
G4int* idxSCoffRegions;
|
||||
std::vector<G4Track*> scTracks;
|
||||
std::vector<G4VEnergyLossProcess*> scProcesses;
|
||||
G4int nProcesses;
|
||||
|
||||
// tables and vectors
|
||||
G4PhysicsTable* theDEDXTable;
|
||||
@@ -378,10 +384,14 @@ private:
|
||||
G4double* theCrossSectionMax;
|
||||
|
||||
const G4DataVector* theCuts;
|
||||
const G4DataVector* theSubCuts;
|
||||
|
||||
G4Navigator* navigator;
|
||||
|
||||
const G4ParticleDefinition* particle;
|
||||
const G4ParticleDefinition* baseParticle;
|
||||
const G4ParticleDefinition* secondaryParticle;
|
||||
const G4ParticleDefinition* thePositron;
|
||||
|
||||
// cash
|
||||
const G4Material* currentMaterial;
|
||||
@@ -392,6 +402,7 @@ private:
|
||||
G4int nDEDXBins;
|
||||
G4int nDEDXBinsForRange;
|
||||
G4int nLambdaBins;
|
||||
G4int nWarnings;
|
||||
|
||||
G4double lowestKinEnergy;
|
||||
G4double minKinEnergy;
|
||||
@@ -412,8 +423,6 @@ private:
|
||||
G4double minSubRange;
|
||||
G4double dRoverRange;
|
||||
G4double finalRange;
|
||||
G4double defaultRoverRange;
|
||||
G4double defaultIntegralRange;
|
||||
G4double lambdaFactor;
|
||||
G4double mfpKinEnergy;
|
||||
|
||||
@@ -425,6 +434,7 @@ private:
|
||||
G4bool meanFreePath;
|
||||
G4bool aboveCSmax;
|
||||
G4bool isIonisation;
|
||||
G4bool useSubCutoff;
|
||||
};
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
@@ -719,15 +729,6 @@ inline void G4VEnergyLossProcess::CorrectionsAlongStep(
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4VSubCutoffProcessor* G4VEnergyLossProcess::SubCutoffProcessor(size_t index)
|
||||
{
|
||||
G4VSubCutoffProcessor* p = 0;
|
||||
if( nSCoffRegions ) p = scoffProcessors[idxSCoffRegions[index]];
|
||||
return p;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline G4PhysicsTable* G4VEnergyLossProcess::DEDXTable() const
|
||||
{
|
||||
return theDEDXTable;
|
||||
@@ -824,6 +825,23 @@ inline G4double G4VEnergyLossProcess::GetCurrentRange() const
|
||||
return fRange;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline void G4VEnergyLossProcess::AddCollaborativeProcess(G4VEnergyLossProcess* p)
|
||||
{
|
||||
scProcesses.push_back(p);
|
||||
useSubCutoff = true;
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
inline void G4VEnergyLossProcess::AddSubCutoffSecondaries(std::vector<G4Track*>& tracks,
|
||||
const G4Step& step, G4double& eloss, G4double& escaled)
|
||||
{
|
||||
if(idxSCoffRegions[currentMaterialIndex])
|
||||
SampleSubCutSecondaries(tracks, step, eloss, SelectModel(escaled));
|
||||
}
|
||||
|
||||
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
|
||||
|
||||
#endif
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
// * statement, and all its terms. *
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VMultipleScattering.hh,v 1.27 2005/04/15 14:41:21 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// $Id: G4VMultipleScattering.hh,v 1.29 2005/10/27 11:33:26 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -48,9 +48,11 @@
|
||||
// 25-05-04 add protection against case when range is less than steplimit (V.Ivanchenko)
|
||||
// 30-06-04 make destructor virtual (V.Ivanchenko)
|
||||
// 27-08-04 Add InitialiseForRun method (V.Ivanchneko)
|
||||
// 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko)
|
||||
// 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivanchenko)
|
||||
// 15-04-05 optimize internal interfaces (V.Ivanchenko)
|
||||
// 15-04-05 remove boundary flag (V.Ivanchenko)
|
||||
// 07-10-05 error in a protection in GetContinuousStepLimit corrected (L.Urban)
|
||||
// 27-10-05 introduce virtual function MscStepLimitation() (V.Ivanchenko)
|
||||
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
@@ -113,6 +115,9 @@ public:
|
||||
// Build physics table during initialisation
|
||||
virtual void BuildPhysicsTable(const G4ParticleDefinition&);
|
||||
|
||||
// set boolean flag steppingAlgorithm
|
||||
// ( true/false : standard or 7.1 style process)
|
||||
virtual void MscStepLimitation(G4bool algorithm, G4double factor = -1.);
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// Generic methods common to all models
|
||||
@@ -303,7 +308,10 @@ inline G4double G4VMultipleScattering::GetContinuousStepLimit(
|
||||
const G4ParticleDefinition* p = track.GetDefinition();
|
||||
lambda0 = GetLambda(p, e);
|
||||
currentRange = G4LossTableManager::Instance()->GetTrancatedRange(p,e,currentCouple);
|
||||
if(currentRange < currentMinimalStep) currentRange = currentMinimalStep;
|
||||
// the next line was in error
|
||||
// if(currentRange < currentMinimalStep) currentRange = currentMinimalStep;
|
||||
// the condition/protection correctly should be
|
||||
if(currentRange < currentMinimalStep) currentMinimalStep = currentRange;
|
||||
truePathLength = TruePathLengthLimit(track,lambda0,currentMinimalStep);
|
||||
//G4cout << "StepLimit: tpl= " << truePathLength << " lambda0= "
|
||||
// << lambda0 << " range= " << currentRange
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4VSubCutoffProcessor.hh,v 1.6 2003/07/21 12:52:06 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// ********************************************************************
|
||||
//
|
||||
// $Id: G4ionEffectiveCharge.hh,v 1.6 2005/02/26 22:01:20 vnivanch Exp $
|
||||
// GEANT4 tag $Name: geant4-07-01 $
|
||||
// GEANT4 tag $Name: geant4-08-00 $
|
||||
//
|
||||
// -------------------------------------------------------------------
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user