Import Geant4 10.4.1 source tree

This commit is contained in:
Gabriele Cosmo
2018-03-02 09:34:30 +01:00
parent fc6af9e721
commit fe04dcb406
341 changed files with 18389 additions and 24522 deletions
+13 -1
View File
@@ -1,4 +1,4 @@
$Id: History 105924 2017-08-29 12:28:09Z gcosmo $
$Id: History 108676 2018-02-27 07:38:33Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,18 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
February 26th, 2018 Alexander Howard (procbiasing-V10-03-04)
- G4ImportanceConfigurator: cleaned up unnecessary G4cout and removed
copy of G4String - thanks to Gabriele
February 21st, 2018 Alexander Howard
- G4ImportanceConfigurator: put back clear() in the destructor
February 21st, 2018 Alexander Howard
- G4ImportanceConfigurator: introduced AutoLock (G4Mutex) to protect
instantiation of the biasing process against a threadrace
August 29th, 2017 Gabriele Cosmo (procbiasing-V10-03-03)
- Removed duplicate class definition G4TrackTerminator.hh, which is part
of the processes/transportation module.
+12 -1
View File
@@ -1,4 +1,4 @@
$Id: History 103005 2017-03-08 08:08:35Z gcosmo $
$Id: History 108676 2018-02-27 07:38:33Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -18,6 +18,17 @@ committal in the CVS repository !
----------------------------------------------------------
February 26th, 2018 A.Howard
- G4ImportanceConfigurator: cleaned up unnecessary G4cout and removed
copy of G4String - thanks to Gabriele
February 21st, 2018 A.Howard
- G4ImportanceConfigurator: put back clear in the destructor
February 21st, 2018 A.Howard
- G4ImportanceConfigurator: introduced AutoLock (G4Mutex) to protect
instantiation of the biasing process against a threadrace
March 7th, 2017 A.Howard
- G4GeometrySampler: removed unnecessary ClearSampling from the destructor
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ImportanceConfigurator.hh 77477 2013-11-25 09:42:24Z gcosmo $
// $Id: G4ImportanceConfigurator.hh 108676 2018-02-27 07:38:33Z gcosmo $
//
// ----------------------------------------------------------------------
// Class G4ImportanceConfigurator
@@ -60,7 +60,7 @@ public: // with description
const G4VImportanceAlgorithm *ialg,
G4bool paraflag);
G4ImportanceConfigurator(const G4String worldvolumeName,
G4ImportanceConfigurator(const G4String &worldvolumeName,
const G4String &particlename,
G4VIStore &istore,
const G4VImportanceAlgorithm *ialg,
@@ -70,7 +70,7 @@ public: // with description
virtual void Configure(G4VSamplerConfigurator *preConf);
virtual const G4VTrackTerminator *GetTrackTerminator() const;
void SetWorldName(G4String Name);
void SetWorldName(const G4String& Name);
private:
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ImportanceConfigurator.cc 105159 2017-07-14 09:17:32Z gcosmo $
// $Id: G4ImportanceConfigurator.cc 108676 2018-02-27 07:38:33Z gcosmo $
//
// ----------------------------------------------------------------------
// Class G4ImportanceConfigurator
@@ -39,6 +39,13 @@
#include "G4ImportanceAlgorithm.hh"
#include "G4TransportationManager.hh"
#include "G4AutoLock.hh"
#ifdef G4MULTITHREADED
namespace {
G4Mutex BiasConfigMutex = G4MUTEX_INITIALIZER;
}
#endif
G4ImportanceConfigurator::
G4ImportanceConfigurator(const G4VPhysicalVolume* worldvolume,
@@ -57,7 +64,7 @@ G4ImportanceConfigurator(const G4VPhysicalVolume* worldvolume,
{;}
G4ImportanceConfigurator::
G4ImportanceConfigurator(G4String worldvolumeName,
G4ImportanceConfigurator(const G4String &worldvolumeName,
const G4String &particlename,
G4VIStore &istore,
const G4VImportanceAlgorithm *ialg, G4bool para)
@@ -71,7 +78,7 @@ G4ImportanceConfigurator(G4String worldvolumeName,
paraflag(para)
{
fWorld = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking()->GetWorldVolume();
if(paraflag) fWorld = G4TransportationManager::GetTransportationManager()->GetParallelWorld(fWorldName);
if(paraflag) fWorld = G4TransportationManager::GetTransportationManager()->GetParallelWorld(fWorldName);
}
G4ImportanceConfigurator::~G4ImportanceConfigurator()
@@ -97,10 +104,15 @@ G4ImportanceConfigurator::Configure(G4VSamplerConfigurator *preConf)
terminator = preConf->GetTrackTerminator();
};
#ifdef G4MULTITHREADED
G4AutoLock l(&BiasConfigMutex);
#endif
fImportanceProcess =
new G4ImportanceProcess(*fIalgorithm,
fIStore,
terminator,"ImportanceProcess",paraflag);
if (!fImportanceProcess)
{
G4Exception("G4ImportanceConfigurator::Configure()",
@@ -110,10 +122,13 @@ G4ImportanceConfigurator::Configure(G4VSamplerConfigurator *preConf)
// G4cout << "G4ImportanceConfigurator:: setting parallel World " << paraflag << G4endl;
if(paraflag) fImportanceProcess->SetParallelWorld(fWorld->GetName());
#ifdef G4MULTITHREADED
l.unlock();
// G4MUTEXUNLOCK(&G4ImportanceConfigurator::BiasConfigMutex);
#endif
// if(paraflag) fImportanceProcess->SetParallelWorld(fWorldName);
// G4cout << "G4ImportanceConfigurator:: set " << paraflag << " name: " << fWorld->GetName() << G4endl;
// getchar();
fPlacer.AddProcessAsSecondDoIt(fImportanceProcess);
}
@@ -123,7 +138,8 @@ GetTrackTerminator() const
return fImportanceProcess;
}
void G4ImportanceConfigurator::SetWorldName(G4String name)
void G4ImportanceConfigurator::SetWorldName(const G4String& name)
{
G4cout << " G4ImportanceConfigurator:: setting world name: " << name << G4endl;
fWorldName = name;
}
@@ -14,6 +14,24 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------*
09-02-2018, M.Asai tag emdna-V10-03-31
- G4DNAMolecularMaterial.cc :
GetDensityTableFor() and GetNumMolPerVolTableFor() methods are accepted
at G4State_Init rather than G4State_Idle.
- Co-works with run-V10-04-01 and global-V10-04-01.
21-12-2017, G.Cosmo
- Fixed self-consistency in headers (missing #include) in G4IosFlagsSaver,
G4KDNode, G4MoleculeIterator and G4LEPTSDiffXS.
Fixed spurious definition of G4IT namespace in G4ITMultiNavigator header.
Thanks to Raphael Isemann for reporting these.
01-11-2017, MK tag emdna-V10-03-30
- remove models/test directory
31-10-2017, JA ( tag missing )
- G4KDNode.hh: Add missing included file - needed in test
16-08-2017, SI tag emdna-V10-03-28
- updated variable types in models
@@ -62,7 +62,7 @@
#include "G4TrackState.hh"
#include "G4MultiNavigator.hh"
namespace G4IT
namespace G4ITMN
{
enum ELimited
{
@@ -26,6 +26,8 @@
#ifndef G4IosFlagsSaver_
#define G4IosFlagsSaver_
#include <iostream>
class G4IosFlagsSaver
{
public:
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4KDNode.hh 102616 2017-02-10 07:57:14Z gcosmo $
// $Id: G4KDNode.hh 108498 2018-02-15 15:33:07Z gcosmo $
//
// Author: Mathieu Karamitros
@@ -48,13 +48,13 @@
#define G4KDNODE_HH
#include <list>
//#include <map>
#include <vector>
#include <deque>
#include <ostream>
// geant4
#include <G4Allocator.hh>
#include "G4Types.hh"
#include "G4Allocator.hh"
class G4KDTree;
class G4KDMap;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAOneStepThermalizationModel.hh 101354 2016-11-15 08:27:51Z gcosmo $
// $Id: G4DNAOneStepThermalizationModel.hh 108498 2018-02-15 15:33:07Z gcosmo $
//
// Author: Mathieu Karamitros
@@ -44,8 +44,8 @@
// J. Comput. Phys. 274 (2014) 841-882
// Prog. Nucl. Sci. Tec. 2 (2011) 503-508
#ifndef G4DNAOneStepThermalizationModel_
#define G4DNAOneStepThermalizationModel_
#ifndef G4DNAOneStepThermalizationModel_hh
#define G4DNAOneStepThermalizationModel_hh
#include "G4VEmModel.hh"
@@ -23,12 +23,12 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAOneStepThermalizationModel.cc 96841 2016-05-12 13:40:37Z matkara $
// $Id:$
//
// Author: Mathieu Karamitros
//
// WARNING : This class is released as a prototype.
// It might strongly evolve or even disapear in the next releases.
// It might strongly evolve or even disappear in the next releases.
//
// History:
// -----------
@@ -26,8 +26,8 @@
#ifndef G4LEPTSDiffXS_h
#define G4LEPTSDiffXS_h 1
#include <string>
#include "G4Types.hh"
class G4LEPTSDiffXS {
@@ -46,6 +46,7 @@
#define G4MOLECULEITERATOR_HH_
#include <map>
#include "globals.hh"
template<typename MOLECULE>
class G4MoleculeIterator
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4DNAMolecularMaterial.cc 103042 2017-03-10 11:50:07Z gcosmo $
// $Id: G4DNAMolecularMaterial.cc 108498 2018-02-15 15:33:07Z gcosmo $
//
// Author: Mathieu Karamitros
//
@@ -376,14 +376,14 @@ GetDensityTableFor(const G4Material* lookForMaterial) const
exceptionDescription);
}
if (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Idle){
if (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Init){
const_cast<G4DNAMolecularMaterial*>(this)->Initialize();
}
else{
G4ExceptionDescription exceptionDescription;
exceptionDescription
<< "The geant4 application is at the wrong state. State must be: "
"G4State_Idle."
"G4State_Init."
<< G4endl;
G4Exception("G4DNAMolecularMaterial::GetDensityTableFor",
"G4DNAMolecularMaterial_WRONG_STATE_APPLICATION",
@@ -450,14 +450,14 @@ const std::vector<double>* G4DNAMolecularMaterial::GetNumMolPerVolTableFor(
exceptionDescription);
}
if (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Idle){
if (G4StateManager::GetStateManager()->GetCurrentState() == G4State_Init){
const_cast<G4DNAMolecularMaterial*>(this)->Initialize();
}
else{
G4ExceptionDescription exceptionDescription;
exceptionDescription
<< "The geant4 application is at the wrong state. State must be : "
"G4State_Idle."
"G4State_Init."
<< G4endl;
G4Exception("G4DNAMolecularMaterial::GetNumMolPerVolTableFor",
"G4DNAMolecularMaterial_WRONG_STATE_APPLICATION",
@@ -1,4 +1,4 @@
$Id: History 107157 2017-11-03 11:27:29Z gcosmo $
$Id: History 108500 2018-02-15 15:38:58Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,10 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
19.12.2017 G.Cosmo, emlowen-V10-03-20
- Fixed self-consistency in G4ecpssrFormFactorMixsModel header (missing #include).
Thanks to Raphael Isemann for reporting this.
03.11.1017 V.Ivanchenko, emlowen-V10-03-19
- G4RayleighScattering - added C++11 keywords to fix compilation warning at clang
@@ -37,9 +37,11 @@
#ifndef G4ecpssrFormFactorMixsModel_HH
#define G4ecpssrFormFactorMixsModel_HH 1
#include "G4VecpssrMiModel.hh"
#include "globals.hh"
#include <map>
#include <vector>
#include "G4Types.hh"
#include "G4VecpssrMiModel.hh"
class G4VDataSetAlgorithm;
class G4VEMDataSet;
@@ -1,4 +1,4 @@
$Id: History 105740 2017-08-16 13:05:44Z gcosmo $
$Id: History 108502 2018-02-15 15:41:45Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,9 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
12 February 18: V.Ivanchenko (empolar-V10-03-02)
- G4StokesVector - moved static inline method to the source
05 August 17: V.Ivanchenko (empolar-V10-03-01)
03 August 17: V.Ivanchenko (empolar-V10-03-00)
- G4PolarizedCompton, G4PolarizedGammaConversion, G4ePolarizedIonisation
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4StokesVector.hh 68046 2013-03-13 14:31:38Z gcosmo $
// $Id: G4StokesVector.hh 108502 2018-02-15 15:41:45Z gcosmo $
//
// GEANT4 Class header file
//
@@ -69,13 +69,14 @@ class G4StokesVector: public G4ThreeVector
public:
G4StokesVector();
G4StokesVector(const G4ThreeVector & v);
virtual ~G4StokesVector();
public:
~G4StokesVector() = default;
G4bool IsZero() const;
inline G4double p1() const { return x(); }
inline G4double p2() const { return y(); }
inline G4double p3() const { return z(); }
inline G4bool IsZero() const { return *this==ZERO; }
inline G4double Transverse() const { return perp(); }
inline G4ThreeVector PolSqr() const {
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4StokesVector.cc 96114 2016-03-16 18:51:33Z gcosmo $
// $Id: G4StokesVector.cc 108502 2018-02-15 15:41:45Z gcosmo $
//
// GEANT4 Class file
//
@@ -64,9 +64,10 @@ G4StokesVector::G4StokesVector(const G4ThreeVector & v)
{
}
G4StokesVector::~G4StokesVector()
{
}
G4bool G4StokesVector::IsZero() const
{
return *this==ZERO;
}
void G4StokesVector::RotateAz(G4ThreeVector nInteractionFrame,
G4ThreeVector particleDirection)
@@ -1,4 +1,4 @@
$Id: History 107365 2017-11-09 10:54:29Z gcosmo $
$Id: History 108504 2018-02-15 15:46:37Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -18,6 +18,11 @@ committal in the CVS repository !
----------------------------------------------------------
09 December 17: V.Ivanchenko (emstand-V10-03-52)
- G4PairProductionRelModel - fixed misuse of G4Pow (A13(..) should
be used instead of Z13(..)), add initialisation of an element
cache before sampling of final state (partly fix problem #2017)
08 November 17: D.Sawkey (emstand-V10-03-51)
- G4CoulombScattering, G4eMultipleScattering, G4hMultipleScattering
modify ProcessDescription text
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4PairProductionRelModel.cc 106628 2017-10-17 06:25:38Z gcosmo $
// $Id: G4PairProductionRelModel.cc 108504 2018-02-15 15:46:37Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -350,6 +350,7 @@ G4PairProductionRelModel::SampleSecondaries(std::vector<G4DynamicParticle*>* fve
// select randomly one element constituing the material
const G4Element* anElement =
SelectRandomAtom(aMaterial, theGamma, GammaEnergy);
SetCurrentElement(anElement->GetZasInt());
CLHEP::HepRandomEngine* rndmEngine = G4Random::getTheEngine();
@@ -388,7 +389,7 @@ G4PairProductionRelModel::SampleSecondaries(std::vector<G4DynamicParticle*>* fve
do {
if ( NormF1/(NormF1+NormF2) > rndmEngine->flat() ) {
epsil = 0.5 - epsilrange*g4calc->Z13(rndmEngine->flat());
epsil = 0.5 - epsilrange*g4calc->A13(rndmEngine->flat());
screenvar = screenfac/(epsil*(1-epsil));
if (fLPMflag && GammaEnergy > Eghigh) {
CalcLPMFunctions(GammaEnergy,GammaEnergy*epsil);
+15 -1
View File
@@ -1,4 +1,4 @@
$Id: History 107364 2017-11-09 10:53:25Z gcosmo $
$Id: History 108506 2018-02-15 15:50:39Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,20 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
14 December 17: V.Ivant (emutils-V10-03-32)
- G4EmParametersMessenger - use G4Exception for warnings instead
of G4cout, review G4State for UI commands and make a signal to
the RunManager about modification of physics if a command
is issued in Idle state
- G4EmParameters, G4VEmProcess, G4VEnergyLossProcess - define the
same default values for few internal members (this is a
cleanup, which does not affect results)
13 December 17: V.Ivant
- G4EmParameters, G4EmParametersMessenger - fixed printout format
and add lock and protection in commands defining physics
pre region
08 November 17: D.Sawkey (emutils-V10-03-31)
- G4LossTableManager, G4VEmProcess, G4VEnergyLossProcess,
G4VMultipleScattering - fix html documentation
@@ -158,7 +158,7 @@ void G4EmParameters::Initialise()
finalRangeMuHad = 0.1*CLHEP::mm;
factorScreen = 1.0;
nbins = 77;
nbins = 84;
nbinsPerDecade = 7;
verbose = 1;
workerVerbose = 0;
@@ -927,6 +927,7 @@ void G4EmParameters::AddPAIModel(const G4String& particle,
const G4String& region,
const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesPAI.size();
for(G4int i=0; i<nreg; ++i) {
@@ -965,6 +966,7 @@ const std::vector<G4String>& G4EmParameters::TypesPAI() const
void G4EmParameters::AddMicroElec(const G4String& region)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesME.size();
for(G4int i=0; i<nreg; ++i) {
@@ -980,6 +982,7 @@ const std::vector<G4String>& G4EmParameters::RegionsMicroElec() const
void G4EmParameters::AddDNA(const G4String& region, const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesDNA.size();
for(G4int i=0; i<nreg; ++i) {
@@ -1001,13 +1004,7 @@ const std::vector<G4String>& G4EmParameters::TypesDNA() const
void G4EmParameters::AddMsc(const G4String& region, const G4String& type)
{
G4String r = CheckRegion(region);
G4int nreg = m_regnamesMsc.size();
for(G4int i=0; i<nreg; ++i) {
if(r == m_regnamesMsc[i]) { return; }
}
m_regnamesMsc.push_back(r);
m_typesMsc.push_back(type);
AddPhysics(region, type);
}
const std::vector<G4String>& G4EmParameters::RegionsMsc() const
@@ -1022,6 +1019,7 @@ const std::vector<G4String>& G4EmParameters::TypesMsc() const
void G4EmParameters::AddPhysics(const G4String& region, const G4String& type)
{
if(IsLocked()) { return; }
G4String r = CheckRegion(region);
G4int nreg = m_regnamesMsc.size();
for(G4int i=0; i<nreg; ++i) {
@@ -1255,36 +1253,37 @@ std::ostream& G4EmParameters::StreamInfo(std::ostream& os) const
os << "=======================================================================" << "\n";
os << "====== Electromagnetic Physics Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Fluctuations of dE/dx are enabled " <<lossFluctuation << "\n";
os << "Build CSDA range enabled " <<buildCSDARange << "\n";
os << "LPM effect enabled " <<flagLPM << "\n";
os << "Spline of EM tables enabled " <<spline << "\n";
os << "Use cut as a final range enabled " <<finalRange << "\n";
os << "Apply cuts on all EM processes " <<applyCuts << "\n";
os << "Fluorescence enabled " <<fluo << "\n";
os << "Fluorescence Bearden data files enabled " <<beardenFluoDir << "\n";
os << "Auger electron production enabled " <<auger << "\n";
os << "Auger cascade enabled " <<augerCascade << "\n";
os << "PIXE atomic de-excitation enabled " <<pixe << "\n";
os << "De-excitation module ignores cuts " <<deexIgnoreCut << "\n";
os << "Msc lateral displacement for e+- enabled " <<lateralDisplacement << "\n";
os << "Msc lateral displacement for muons and hadrons " <<muhadLateralDisplacement << "\n";
os << "Msc lateral displacement alg96 for e+- " <<lateralDisplacementAlg96 << "\n";
os << "Msc lateral displacement beyond geometry safety " <<latDisplacementBeyondSafety << "\n";
os << "Enable angular generator interface "
<<useAngGeneratorForIonisation << "\n";
os << "Use Mott correction for e- scattering " << useMottCorrection << "\n";
os << "Use integral approach for tracking " << integral << "\n";
os << "X-section factor for integral approach " <<lambdaFactor << "\n";
os << "Use built-in Birks satuaration " << birks << "\n";
os << "Use fast sampling in DNA models " << dnaFast << "\n";
os << "Use Stationary option in DNA models " << dnaStationary << "\n";
os << "Use DNA with multiple scattering of e- " << dnaMsc << "\n";
os << "Factor of cut reduction for sub-cutoff method " << minSubRange << "\n";
os << "Min kinetic energy for tables "
<<G4BestUnit(minKinEnergy,"Energy") << "\n";
os << "Max kinetic energy for tables "
<<G4BestUnit(maxKinEnergy,"Energy") << "\n";
os << "Number of bins in tables " <<nbins << "\n";
os << "Number of bins per decade of a table " <<nbinsPerDecade << "\n";
os << "Verbose level " <<verbose << "\n";
os << "Verbose level for worker thread " <<workerVerbose << "\n";
os << "Bremsstrahlung energy threshold above which \n"
<< " primary is added to the list of secondary "
<<G4BestUnit(bremsTh,"Energy") << "\n";
os << "=======================================================================" << "\n";
os << "====== Ionisation Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Step function for e+- " <<"("<< dRoverRange
<< ", " << finalRange << " mm)\n";
os << "Step function for muons/hadrons " <<"("<< dRoverRangeMuHad
<< ", " << finalRangeMuHad << " mm)\n";
os << "Fluctuations of dE/dx are enabled " <<lossFluctuation << "\n";
os << "Build CSDA range enabled " <<buildCSDARange << "\n";
os << "Use cut as a final range enabled " <<finalRange << "\n";
os << "Enable angular generator interface "
<<useAngGeneratorForIonisation << "\n";
os << "Factor of cut reduction for sub-cutoff method " << minSubRange << "\n";
os << "Max kinetic energy for CSDA tables "
<<G4BestUnit(maxKinEnergyCSDA,"Energy") << "\n";
os << "Lowest e+e- kinetic energy "
@@ -1294,36 +1293,47 @@ std::ostream& G4EmParameters::StreamInfo(std::ostream& os) const
os << "Lowest triplet kinetic energy "
<<G4BestUnit(lowestTripletEnergy,"Energy") << "\n";
os << "Linear loss limit " <<linLossLimit << "\n";
os << "Bremsstrahlung energy threshold above which \n"
<< " primary is added to the list of secondary "
<<G4BestUnit(bremsTh,"Energy") << "\n";
os << "X-section factor for integral approach " <<lambdaFactor << "\n";
os << "=======================================================================" << "\n";
os << "====== Multiple Scattering Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Type of msc step limit algorithm for e+- " <<mscStepLimit << "\n";
os << "Type of msc step limit algorithm for muons/hadrons " <<mscStepLimitMuHad << "\n";
os << "Msc lateral displacement for e+- enabled " <<lateralDisplacement << "\n";
os << "Msc lateral displacement for muons and hadrons " <<muhadLateralDisplacement << "\n";
os << "Msc lateral displacement alg96 for e+- " <<lateralDisplacementAlg96 << "\n";
os << "Msc lateral displacement beyond geometry safety " <<latDisplacementBeyondSafety << "\n";
os << "Range factor for msc step limit for e+- " <<rangeFactor << "\n";
os << "Range factor for msc step limit for muons/hadrons " <<rangeFactorMuHad << "\n";
os << "Geometry factor for msc step limitation of e+- " <<geomFactor << "\n";
os << "Skin parameter for msc step limitation of e+- " <<skin << "\n";
os << "Use Mott correction for e- scattering " << useMottCorrection << "\n";
os << "Factor used for dynamic computation of angular \n"
<< " limit between single and multiple scattering " << factorForAngleLimit << "\n";
os << "Fixed angular limit between single \n"
<< " and multiple scattering "
<<thetaLimit/rad << " rad" << "\n";
os << "Range factor for msc step limit for e+- " <<rangeFactor << "\n";
os << "Range factor for msc step limit for muons/hadrons " <<rangeFactorMuHad << "\n";
os << "Geometry factor for msc step limitation of e+- " <<geomFactor << "\n";
os << "Skin parameter for msc step limitation of e+- " <<skin << "\n";
os << "Screening factor " <<factorScreen << "\n";
os << "Step function for e+- " <<"("<< dRoverRange
<< ", " << finalRange << " mm)\n";
os << "Step function for muons/hadrons " <<"("<< dRoverRangeMuHad
<< ", " << finalRangeMuHad << " mm)\n";
os << "Number of bins in tables " <<nbins << "\n";
os << "Number of bins per decade of a table " <<nbinsPerDecade << "\n";
os << "Verbose level " <<verbose << "\n";
os << "Verbose level for worker thread " <<workerVerbose << "\n";
os << "Type of msc step limit algorithm for e+- " <<mscStepLimit << "\n";
os << "Type of msc step limit algorithm for muons/hadrons " <<mscStepLimitMuHad << "\n";
os << "Type of nuclear form-factor " <<nucFormfactor << "\n";
os << "Screening factor " <<factorScreen << "\n";
os << "=======================================================================" << "\n";
os << "====== Atomic Deexcitation Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Fluorescence enabled " <<fluo << "\n";
os << "Fluorescence Bearden data files enabled " <<beardenFluoDir << "\n";
os << "Auger electron production enabled " <<auger << "\n";
os << "Auger cascade enabled " <<augerCascade << "\n";
os << "PIXE atomic de-excitation enabled " <<pixe << "\n";
os << "De-excitation module ignores cuts " <<deexIgnoreCut << "\n";
os << "Type of PIXE cross section for hadrons " <<namePIXE << "\n";
os << "Type of PIXE cross section for e+- " <<nameElectronPIXE << "\n";
os << "=======================================================================" << "\n";
os << "====== DNA Physics Parameters ========" << "\n";
os << "=======================================================================" << "\n";
os << "Use fast sampling in DNA models " << dnaFast << "\n";
os << "Use Stationary option in DNA models " << dnaStationary << "\n";
os << "Use DNA with multiple scattering of e- " << dnaMsc << "\n";
os << "=======================================================================" << "\n";
os.precision(prec);
return os;
@@ -1348,4 +1358,3 @@ G4bool G4EmParameters::IsLocked() const
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.....
@@ -93,7 +93,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
splCmd->SetGuidance("Enable/disable usage spline for Physics Vectors");
splCmd->SetParameterName("spl",true);
splCmd->SetDefaultValue(false);
splCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
splCmd->AvailableForStates(G4State_PreInit);
rsCmd = new G4UIcmdWithABool("/process/eLoss/useCutAsFinalRange",this);
rsCmd->SetGuidance("Enable/disable use of cut in range as a final range");
@@ -168,7 +168,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
catCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
delCmd = new G4UIcmdWithABool("/process/eLoss/UseAngularGenerator",this);
delCmd->SetGuidance("Enable usage of angular generator");
delCmd->SetGuidance("Enable usage of angular generator for ionisation");
delCmd->SetParameterName("del",true);
delCmd->SetDefaultValue(false);
delCmd->AvailableForStates(G4State_PreInit);
@@ -224,19 +224,19 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
minEnCmd->SetGuidance("Set the min kinetic energy for EM tables");
minEnCmd->SetParameterName("emin",true);
minEnCmd->SetUnitCategory("Energy");
minEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
minEnCmd->AvailableForStates(G4State_PreInit);
maxEnCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergy",this);
maxEnCmd->SetGuidance("Set the max kinetic energy for EM tables");
maxEnCmd->SetParameterName("emax",true);
maxEnCmd->SetUnitCategory("Energy");
maxEnCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
maxEnCmd->AvailableForStates(G4State_PreInit);
cenCmd = new G4UIcmdWithADoubleAndUnit("/process/eLoss/maxKinEnergyCSDA",this);
cenCmd->SetGuidance("Set the max kinetic energy for CSDA table");
cenCmd->SetParameterName("emaxCSDA",true);
cenCmd->SetUnitCategory("Energy");
cenCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
cenCmd->AvailableForStates(G4State_PreInit);
lowEnCmd = new G4UIcmdWithADoubleAndUnit("/process/em/lowestElectronEnergy",this);
lowEnCmd->SetGuidance("Set the lowest kinetic energy for e+-");
@@ -277,7 +277,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
mscfCmd->SetParameterName("Fact",true);
mscfCmd->SetRange("Fact>0");
mscfCmd->SetDefaultValue(1.);
mscfCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
mscfCmd->AvailableForStates(G4State_PreInit);
angCmd = new G4UIcmdWithADoubleAndUnit("/process/msc/ThetaLimit",this);
angCmd->SetGuidance("Set the limit on the polar angle for msc and single scattering");
@@ -319,20 +319,20 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
dedxCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsDEDX",this);
dedxCmd->SetGuidance("Set number of bins for EM tables");
dedxCmd->SetParameterName("binsDEDX",true);
dedxCmd->SetDefaultValue(77);
dedxCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
dedxCmd->SetDefaultValue(84);
dedxCmd->AvailableForStates(G4State_PreInit);
lamCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsLambda",this);
lamCmd->SetGuidance("Set number of bins for EM tables");
lamCmd->SetParameterName("binsL",true);
lamCmd->SetDefaultValue(77);
lamCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
lamCmd->SetDefaultValue(84);
lamCmd->AvailableForStates(G4State_PreInit);
amCmd = new G4UIcmdWithAnInteger("/process/eLoss/binsPerDecade",this);
amCmd->SetGuidance("Set number of bins per decade for EM tables");
amCmd->SetParameterName("bins",true);
amCmd->SetDefaultValue(7);
amCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
amCmd->AvailableForStates(G4State_PreInit);
verCmd = new G4UIcmdWithAnInteger("/process/eLoss/verbose",this);
verCmd->SetGuidance("Set verbose level for EM physics");
@@ -560,7 +560,7 @@ G4EmParametersMessenger::G4EmParametersMessenger(G4EmParameters* ptr)
nffCmd->SetGuidance("Define typy of nuclear form-factor");
nffCmd->SetParameterName("NucFF",true);
nffCmd->SetCandidates("None Exponential Gaussian Flat");
nffCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
nffCmd->AvailableForStates(G4State_PreInit);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -659,7 +659,6 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == splCmd) {
theParameters->SetSpline(splCmd->GetNewBoolValue(newValue));
physicsModified = true;
} else if (command == rsCmd) {
theParameters->SetUseCutAsFinalRange(rsCmd->GetNewBoolValue(newValue));
physicsModified = true;
@@ -717,10 +716,8 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
theParameters->SetMinSubRange(minSubSecCmd->GetNewDoubleValue(newValue));
} else if (command == minEnCmd) {
theParameters->SetMinEnergy(minEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == maxEnCmd) {
theParameters->SetMaxEnergy(maxEnCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == cenCmd) {
theParameters->SetMaxEnergyForCSDARange(cenCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -744,7 +741,6 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
physicsModified = true;
} else if (command == mscfCmd) {
theParameters->SetFactorForAngleLimit(mscfCmd->GetNewDoubleValue(newValue));
physicsModified = true;
} else if (command == angCmd) {
theParameters->SetMscThetaLimit(angCmd->GetNewDoubleValue(newValue));
physicsModified = true;
@@ -765,19 +761,18 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if (command == dedxCmd) {
theParameters->SetNumberOfBins(dedxCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == lamCmd) {
theParameters->SetNumberOfBins(lamCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == amCmd) {
theParameters->SetNumberOfBinsPerDecade(amCmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == verCmd) {
theParameters->SetVerbose(verCmd->GetNewIntValue(newValue));
} else if (command == ver1Cmd) {
theParameters->SetVerbose(ver1Cmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == ver2Cmd) {
theParameters->SetWorkerVerbose(ver2Cmd->GetNewIntValue(newValue));
physicsModified = true;
} else if (command == mscCmd || command == msc1Cmd) {
G4MscStepLimitType msctype = fUseSafety;
@@ -790,8 +785,9 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
} else if(newValue == "UseSafetyPlus") {
msctype = fUseSafetyPlus;
} else {
G4cout << "### G4EmParametersMessenger WARNING: StepLimit type <"
<< newValue << "> unknown!" << G4endl;
G4ExceptionDescription ed;
ed << " StepLimit type <" << newValue << "> unknown!";
G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
return;
}
if (command == mscCmd) {
@@ -886,8 +882,13 @@ void G4EmParametersMessenger::SetNewValue(G4UIcommand* command,
if(newValue == "Exponential") { x = fExponentialNF; }
else if(newValue == "Gaussian") { x = fGaussianNF; }
else if(newValue == "Flat") { x = fFlatNF; }
else if(newValue != "None") {
G4ExceptionDescription ed;
ed << " NuclearFormFactor type <" << newValue << "> unknown!";
G4Exception("G4EmParametersMessenger", "em0044", JustWarning, ed);
return;
}
theParameters->SetNuclearFormfactorType(x);
physicsModified = true;
}
if(physicsModified) {
G4UImanager::GetUIpointer()->ApplyCommand("/run/physicsModified");
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEmProcess.cc 107364 2017-11-09 10:53:25Z gcosmo $
// $Id: G4VEmProcess.cc 108506 2018-02-15 15:50:39Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -113,7 +113,7 @@ G4VEmProcess::G4VEmProcess(const G4String& name, G4ProcessType type):
// Size of tables assuming spline
minKinEnergy = 0.1*keV;
maxKinEnergy = 100.0*TeV;
nLambdaBins = 77;
nLambdaBins = 84;
minKinEnergyPrim = DBL_MAX;
actBinning = actSpline = actMinKinEnergy = actMaxKinEnergy = false;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4VEnergyLossProcess.cc 107364 2017-11-09 10:53:25Z gcosmo $
// $Id: G4VEnergyLossProcess.cc 108506 2018-02-15 15:50:39Z gcosmo $
//
// -------------------------------------------------------------------
//
@@ -209,7 +209,7 @@ G4VEnergyLossProcess::G4VEnergyLossProcess(const G4String& name,
// Size of tables assuming spline
minKinEnergy = 0.1*keV;
maxKinEnergy = 100.0*TeV;
nBins = 77;
nBins = 84;
maxKinEnergyCSDA = 1.0*GeV;
nBinsCSDA = 35;
actMinKinEnergy = actMaxKinEnergy = actBinning = actLinLossLimit
+14 -1
View File
@@ -1,4 +1,4 @@
$Id: History 106116 2017-09-13 10:19:06Z gcosmo $
$Id: History 108508 2018-02-15 15:54:35Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,19 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
12 February 18: V.Ivanchenko (xrays-V10-03-01)
- G4VTransitionRadiation, G4TransitionRadiation, G4SynchrotronRadiationInMat,
G4Scintillation, G4ForwardXrayTR, G4Cerenkov - moved static and virtual
methods from inline to the source, removed extra empty and commented lines
26 January 18: V.Ivanchenko
- G4VXTRenergyLoss - V.Grichine exteded XTR angle limit up to 250/gamma
(ATLAS requirements)
21 December 17: G.Cosmo
- Fixed self-consistency in G4VTRModel header (missing #include).
Thanks to Raphael Isemann for reporting this.
11 September 17: S.Y.Jun (xrays-V10-03-00)
- Change material property keys by the enum (index) type defined in
G4MaterialPropertiesIndex
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4Cerenkov.hh 98002 2016-06-30 13:03:36Z gcosmo $
// $Id: G4Cerenkov.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
//
////////////////////////////////////////////////////////////////////////
@@ -265,18 +265,6 @@ G4int G4Cerenkov::GetNumPhotons() const
return fNumPhotons;
}
inline
void G4Cerenkov::DumpPhysicsTable() const
{
G4int PhysicsTableSize = thePhysicsTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) {
v = (G4PhysicsOrderedFreeVector*)(*thePhysicsTable)[i];
v->DumpValues();
}
}
inline
G4PhysicsTable* G4Cerenkov::GetPhysicsTable() const
{
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ForwardXrayTR.hh 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4ForwardXrayTR.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4ForwardXrayTR
//
@@ -125,15 +125,15 @@ G4double EnergySum( G4double energy1,
/////////////////////////// Access functions ////////////////////////////
G4PhysicsTable* GetAngleDistrTable() { return fAngleDistrTable; };
G4PhysicsTable* GetEnergyDistrTable() { return fEnergyDistrTable; };
G4PhysicsTable* GetAngleDistrTable();
G4PhysicsTable* GetEnergyDistrTable();
static G4int GetSympsonNumber() { return fSympsonNumber; };
static G4int GetBinTR() { return fBinTR; };
static G4int GetSympsonNumber();
static G4int GetBinTR();
static G4double GetMinProtonTkin() { return fMinProtonTkin; };
static G4double GetMaxProtonTkin() { return fMaxProtonTkin; };
static G4int GetTotBin() { return fTotBin; };
static G4double GetMinProtonTkin();
static G4double GetMaxProtonTkin();
static G4int GetTotBin();
protected: // for access from X-ray TR fast simulation models
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4Scintillation.hh 98002 2016-06-30 13:03:36Z gcosmo $
// $Id: G4Scintillation.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
//
////////////////////////////////////////////////////////////////////////
@@ -276,15 +276,6 @@ private:
// Inline methods
////////////////////
inline
G4bool G4Scintillation::IsApplicable(const G4ParticleDefinition& aParticleType)
{
if (aParticleType.GetParticleName() == "opticalphoton") return false;
if (aParticleType.IsShortLived()) return false;
return true;
}
inline
void G4Scintillation::SetTrackSecondariesFirst(const G4bool state)
{
@@ -399,31 +390,6 @@ G4int G4Scintillation::GetNumPhotons() const
return fNumPhotons;
}
inline
void G4Scintillation::DumpPhysicsTable() const
{
if (fFastIntegralTable) {
G4int PhysicsTableSize = fFastIntegralTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
{
v = (G4PhysicsOrderedFreeVector*)(*fFastIntegralTable)[i];
v->DumpValues();
}
}
if (fSlowIntegralTable) {
G4int PhysicsTableSize = fSlowIntegralTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
{
v = (G4PhysicsOrderedFreeVector*)(*fSlowIntegralTable)[i];
v->DumpValues();
}
}
}
inline
G4double G4Scintillation::single_exp(G4double t, G4double tau2)
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4SynchrotronRadiationInMat.hh 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4SynchrotronRadiationInMat.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
// ------------------------------------------------------------
// GEANT 4 class header file
@@ -107,8 +107,8 @@ public: ///////////////// Post Step functions //////////////////////////
G4bool IsApplicable(const G4ParticleDefinition&) override;
static G4double GetLambdaConst(){ return fLambdaConst; };
static G4double GetEnergyConst(){ return fEnergyConst; };
static G4double GetLambdaConst();
static G4double GetEnergyConst();
void SetRootNumber(G4int rn){ fRootNumber = rn; };
void SetVerboseLevel(G4int v){ fVerboseLevel = v; };
@@ -128,23 +128,12 @@ private:
const G4double
LowestKineticEnergy; // low energy limit of the cross-section formula
//const G4double
//HighestKineticEnergy; // high energy limit of the cross-section formula
//G4int TotBin; // number of bins in the tables
G4double CutInRange;
const G4ParticleDefinition* theGamma;
const G4ParticleDefinition* theElectron;
const G4ParticleDefinition* thePositron;
//const G4double* GammaCutInKineticEnergy;
//const G4double* ElectronCutInKineticEnergy;
//const G4double* PositronCutInKineticEnergy;
//const G4double* ParticleCutInKineticEnergy;
G4double GammaCutInKineticEnergyNow;
G4double ElectronCutInKineticEnergyNow;
G4double PositronCutInKineticEnergyNow;
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4TransitionRadiation.hh 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4TransitionRadiation.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4TransitionRadiation -- header file
//
@@ -52,7 +52,6 @@
#include "G4VDiscreteProcess.hh"
#include "G4Material.hh"
// #include "G4OpBoundaryProcess.hh"
class G4TransitionRadiation : public G4VDiscreteProcess
{
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4VTRModel.hh 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4VTRModel.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4VTRModel -- header file
//
@@ -38,24 +38,24 @@
#ifndef G4VTRModel_h
#define G4VTRModel_h
#include <vector>
#include "globals.hh"
#include <vector>
#include "G4ThreeVector.hh"
class G4Material;
class G4Track;
class G4VParticleChange;
class G4VTRModel
{
public:
// Constructors
// Constructors
explicit G4VTRModel( const G4String& modelName) {fName = modelName;};
// Destructor
// Destructor
virtual ~G4VTRModel() {};
@@ -70,19 +70,14 @@ public:
virtual void PrintInfo() { return; };
// private :
// hide assignment operator
// disable assignment operator & copy constructor
G4VTRModel & operator=(const G4VTRModel &right) = delete;
G4VTRModel(const G4VTRModel&) = delete;
protected:
G4String fName;
};
#endif // G4VTRModel_h
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4VTransitionRadiation.hh 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4VTransitionRadiation.hh 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4VTransitionRadiation -- header file
//
@@ -102,21 +102,4 @@ public:
};
inline G4double G4VTransitionRadiation::GetMeanFreePath(
const G4Track& track, G4double,
G4ForceCondition* condition)
{
if(nSteps > 0) {
*condition = StronglyForced;
} else {
*condition = NotForced;
if(track.GetKineticEnergy()/track.GetDefinition()->GetPDGMass() + 1.0 > gammaMin &&
track.GetVolume()->GetLogicalVolume()->GetRegion() == region) {
*condition = StronglyForced;
}
}
return DBL_MAX; // so TR doesn't limit mean free path
}
#endif // G4VTransitionRadiation_h
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4Cerenkov.cc 106116 2017-09-13 10:19:06Z gcosmo $
// $Id: G4Cerenkov.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
////////////////////////////////////////////////////////////////////////
// Cerenkov Radiation Class Implementation
@@ -679,3 +679,15 @@ G4double
return NumPhotons;
}
void G4Cerenkov::DumpPhysicsTable() const
{
G4int PhysicsTableSize = thePhysicsTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ ) {
v = (G4PhysicsOrderedFreeVector*)(*thePhysicsTable)[i];
v->DumpValues();
}
}
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ForwardXrayTR.cc 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4ForwardXrayTR.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4ForwardXrayTR class -- implementation file
//
@@ -800,16 +800,36 @@ G4ForwardXrayTR::GetEnergyTR(G4int iMat, G4int jMat, G4int iTkin) const
// theta angle relative to particle direction
//
G4double
G4ForwardXrayTR::GetThetaTR(G4int, G4int, G4int) const
{
G4double theta = 0.0;
return theta;
return 0.0;
}
G4int G4ForwardXrayTR::GetSympsonNumber()
{
return fSympsonNumber;
}
G4int G4ForwardXrayTR::GetBinTR()
{
return fBinTR;
}
G4double G4ForwardXrayTR::GetMinProtonTkin()
{
return fMinProtonTkin;
}
G4double G4ForwardXrayTR::GetMaxProtonTkin()
{
return fMaxProtonTkin;
}
G4int G4ForwardXrayTR::GetTotBin()
{
return fTotBin;
}
// end of G4ForwardXrayTR implementation file
//
@@ -23,7 +23,7 @@
// ********************************************************************
//
//
// $Id: G4Scintillation.cc 107824 2017-12-05 15:47:44Z gunter $
// $Id: G4Scintillation.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
////////////////////////////////////////////////////////////////////////
// Scintillation Light Class Implementation
@@ -155,6 +155,14 @@ G4Scintillation::~G4Scintillation()
// Methods
////////////
G4bool G4Scintillation::IsApplicable(const G4ParticleDefinition& aParticleType)
{
if (aParticleType.GetParticleName() == "opticalphoton") return false;
if (aParticleType.IsShortLived()) return false;
return true;
}
void G4Scintillation::BuildPhysicsTable(const G4ParticleDefinition&)
{
if (fFastIntegralTable != nullptr) {
@@ -854,3 +862,28 @@ GetScintillationYieldByParticleType(const G4Track &aTrack, const G4Step &aStep)
return ScintillationYield;
}
void G4Scintillation::DumpPhysicsTable() const
{
if (fFastIntegralTable) {
G4int PhysicsTableSize = fFastIntegralTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
{
v = (G4PhysicsOrderedFreeVector*)(*fFastIntegralTable)[i];
v->DumpValues();
}
}
if (fSlowIntegralTable) {
G4int PhysicsTableSize = fSlowIntegralTable->entries();
G4PhysicsOrderedFreeVector *v;
for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
{
v = (G4PhysicsOrderedFreeVector*)(*fSlowIntegralTable)[i];
v->DumpValues();
}
}
}
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4SynchrotronRadiationInMat.cc 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4SynchrotronRadiationInMat.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
// --------------------------------------------------------------
// GEANT 4 class implementation file
@@ -123,15 +123,9 @@ G4SynchrotronRadiationInMat::fIntegralProbabilityOfSR[200] =
G4SynchrotronRadiationInMat::G4SynchrotronRadiationInMat(const G4String& processName,
G4ProcessType type):G4VDiscreteProcess (processName, type),
LowestKineticEnergy (10.*keV),
//HighestKineticEnergy (100.*TeV),
//TotBin(200),
theGamma (G4Gamma::Gamma() ),
theElectron ( G4Electron::Electron() ),
thePositron ( G4Positron::Positron() ),
//GammaCutInKineticEnergy(nullptr),
//ElectronCutInKineticEnergy(nullptr),
//PositronCutInKineticEnergy(nullptr),
//ParticleCutInKineticEnergy(nullptr),
fAlpha(0.0), fRootNumber(80),
fVerboseLevel( verboseLevel )
{
@@ -156,10 +150,18 @@ G4SynchrotronRadiationInMat::~G4SynchrotronRadiationInMat()
G4bool
G4SynchrotronRadiationInMat::IsApplicable( const G4ParticleDefinition& particle )
{
return ( ( &particle == (const G4ParticleDefinition *)theElectron ) ||
( &particle == (const G4ParticleDefinition *)thePositron ) );
( &particle == (const G4ParticleDefinition *)thePositron ));
}
G4double G4SynchrotronRadiationInMat::GetLambdaConst()
{
return fLambdaConst;
}
G4double G4SynchrotronRadiationInMat::GetEnergyConst()
{
return fEnergyConst;
}
/////////////////////////////// METHODS /////////////////////////////////
@@ -23,7 +23,7 @@
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
// $Id: G4TransitionRadiation.cc 68037 2013-03-13 14:15:08Z gcosmo $
// $Id: G4TransitionRadiation.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4TransitionRadiation class -- implementation file
@@ -228,7 +228,4 @@ EnergyIntegralDistribution( G4double energy1,
+ 4.0*sumOdd + 2.0*sumEven )/3.0 ;
}
// end of G4TransitionRadiation implementation file --------------------------
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4VTransitionRadiation.cc 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4VTransitionRadiation.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
// G4VTransitionRadiation class -- implementation file
@@ -167,3 +167,21 @@ void G4VTransitionRadiation::PrintInfoDefinition()
}
///////////////////////////////////////////////////////////////////////
G4double G4VTransitionRadiation::GetMeanFreePath(
const G4Track& track, G4double,
G4ForceCondition* condition)
{
if(nSteps > 0) {
*condition = StronglyForced;
} else {
*condition = NotForced;
if(track.GetKineticEnergy()/track.GetDefinition()->GetPDGMass() + 1.0 > gammaMin &&
track.GetVolume()->GetLogicalVolume()->GetRegion() == region) {
*condition = StronglyForced;
}
}
return DBL_MAX; // so TR doesn't limit mean free path
}
///////////////////////////////////////////////////////////////////////
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4VXTRenergyLoss.cc 97385 2016-06-02 09:59:53Z gcosmo $
// $Id: G4VXTRenergyLoss.cc 108508 2018-02-15 15:54:35Z gcosmo $
//
// History:
// 2001-2002 R&D by V.Grichine
@@ -85,13 +85,16 @@ G4VXTRenergyLoss::G4VXTRenergyLoss(G4LogicalVolume *anEnvelope,
// Initialization of local constants
fTheMinEnergyTR = 1.0*keV;
fTheMaxEnergyTR = 100.0*keV;
fTheMaxAngle = 1.0e-2;
fTheMinAngle = 5.0e-6;
fBinTR = 50;
fTheMaxAngle = 1.0e-2; // 100 mrad
fTheMinAngle = 2.5e-5;
fBinTR = 200; // 100; // 50;
fMinProtonTkin = 100.0*GeV;
fMaxProtonTkin = 100.0*TeV;
fTotBin = 50;
fTotBin = 50; // 100; //
// Proton energy vector initialization
fProtonEnergyVector = new G4PhysicsLogVector(fMinProtonTkin,
@@ -120,7 +123,7 @@ G4VXTRenergyLoss::G4VXTRenergyLoss(G4LogicalVolume *anEnvelope,
// default is XTR dEdx, not flux after radiator
fExitFlux = false;
fAngleRadDistr = false;
fAngleRadDistr = true; // false;
fCompton = false;
fLambda = DBL_MAX;
@@ -280,7 +283,7 @@ void G4VXTRenergyLoss::BuildPhysicsTable(const G4ParticleDefinition& pd)
}
BuildEnergyTable();
if (fAngleRadDistr)
if ( fAngleRadDistr )
{
if(verboseLevel > 0)
{
@@ -336,7 +339,7 @@ void G4VXTRenergyLoss::BuildEnergyTable()
fGamma = 1.0 + (fProtonEnergyVector->
GetLowEdgeEnergy(iTkin)/proton_mass_c2);
fMaxThetaTR = 2500.0/(fGamma*fGamma) ; // theta^2
fMaxThetaTR = 25.*2500.0/(fGamma*fGamma) ; // theta^2
fTheMinAngle = 1.0e-3; // was 5.e-6, e-6 !!!, e-5, e-4
@@ -428,7 +431,7 @@ void G4VXTRenergyLoss::BuildAngleForEnergyBank()
fGamma = 1.0 + (fProtonEnergyVector->
GetLowEdgeEnergy(iTkin)/proton_mass_c2);
fMaxThetaTR = 2500.0/(fGamma*fGamma) ; // theta^2
fMaxThetaTR = 25*2500.0/(fGamma*fGamma) ; // theta^2
fTheMinAngle = 1.0e-3; // was 5.e-6, e-6 !!!, e-5, e-4
@@ -509,7 +512,7 @@ void G4VXTRenergyLoss::BuildAngleTable()
fGamma = 1.0 + (fProtonEnergyVector->
GetLowEdgeEnergy(iTkin)/proton_mass_c2);
fMaxThetaTR = 25.0/(fGamma*fGamma); // theta^2
fMaxThetaTR = 25*2500.0/(fGamma*fGamma); // theta^2
fTheMinAngle = 1.0e-3; // was 5.e-6, e-6 !!!, e-5, e-4
@@ -585,7 +588,7 @@ G4PhysicsFreeVector* G4VXTRenergyLoss::GetAngleVector(G4double energy, G4int n)
for( iTheta = n - 1; iTheta >= 1; iTheta-- )
{
k = iTheta- 1 + kMin;
k = iTheta - 1 + kMin;
tmp = pi*fPlateThick*(k + cof2)/(fPlateThick + fGasThick);
@@ -793,12 +796,14 @@ G4VParticleChange* G4VXTRenergyLoss::PostStepDoIt( const G4Track& aTrack,
{
G4cout<<"energyTR = "<<energyTR/keV<<" keV"<<G4endl;
}
if (fAngleRadDistr)
if ( fAngleRadDistr )
{
// theta = std::fabs(G4RandGauss::shoot(0.0,pi/gamma));
theta2 = GetRandomAngle(energyTR,iTkin);
if(theta2 > 0.) theta = std::sqrt(theta2);
else theta = 0.; // theta2;
if( theta2 > 0.) theta = std::sqrt(theta2);
else theta = 0.; // theta2;
}
else theta = std::fabs(G4RandGauss::shoot(0.0,pi/gamma));
@@ -990,6 +995,7 @@ G4double G4VXTRenergyLoss::AngleXTRdEdx(G4double varAngle)
if( i == 0 )
{
if (energy1 > fTheMaxEnergyTR || energy1 < fTheMinEnergyTR) continue;
tmp1 = ( energy1*energy1*(1./fGamma/fGamma + varAngle) + fSigma1 )
* fPlateThick/(4*hbarc*energy1);
tmp2 = std::sin(tmp1);
@@ -999,12 +1005,14 @@ G4double G4VXTRenergyLoss::AngleXTRdEdx(G4double varAngle)
tmp *= (tmp1-tmp2)*(tmp1-tmp2);
tmp1 = cof1/(4.*hbarc) - cof2/(4.*hbarc*energy1*energy1);
tmp2 = std::abs(tmp1);
if(tmp2 > 0.) tmp /= tmp2;
else continue;
}
else
{
if (energy2 > fTheMaxEnergyTR || energy2 < fTheMinEnergyTR) continue;
tmp1 = ( energy2*energy2*(1./fGamma/fGamma + varAngle) + fSigma1 )
* fPlateThick/(4.*hbarc*energy2);
tmp2 = std::sin(tmp1);
@@ -1014,6 +1022,7 @@ G4double G4VXTRenergyLoss::AngleXTRdEdx(G4double varAngle)
tmp *= (tmp1-tmp2)*(tmp1-tmp2);
tmp1 = cof1/(4.*hbarc) - cof2/(4.*hbarc*energy2*energy2);
tmp2 = std::abs(tmp1);
if(tmp2 > 0.) tmp /= tmp2;
else continue;
}
@@ -1574,9 +1583,9 @@ G4double G4VXTRenergyLoss::GetRandomAngle( G4double energyXTR, G4int iTkin )
position = (*(*fAngleForEnergyTable)(iTR))(0)*G4UniformRand();
for(iAngle = 0;;iAngle++)
for( iAngle = 0;; iAngle++)
{
if(position >= (*(*fAngleForEnergyTable)(iTR))(iAngle)) break;
if( position >= (*(*fAngleForEnergyTable)(iTR))(iAngle) ) break;
}
angle = GetAngleXTR(iTR,position,iAngle);
return angle;
@@ -1588,12 +1597,12 @@ G4double G4VXTRenergyLoss::GetRandomAngle( G4double energyXTR, G4int iTkin )
// over integral energy distribution
G4double G4VXTRenergyLoss::GetAngleXTR( G4int iPlace,
G4double position,
G4int iTransfer )
G4double position,
G4int iTransfer )
{
G4double x1, x2, y1, y2, result;
if(iTransfer == 0)
if( iTransfer == 0 )
{
result = (*fAngleForEnergyTable)(iPlace)->GetLowEdgeEnergy(iTransfer);
}
@@ -15,6 +15,10 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
27 February 2018 Alberto Ribon (hadr-casc-V10-03-07)
-----------------------------------------------------
- G4NucleiModel : replaced obsolete std::bind2nd with std::bind .
27 November 2017 Dennis Wright (hadr-casc-V10-03-06)
-----------------------------------------------------
- G4CascadeInterface::createBullet, G4CascadeInterface::ApplyYourself:
@@ -142,7 +142,7 @@
// Check zone argument to inverseMFP() to ensure within range.
// 20130611 M. Kelsey -- Undo "spath<=path" change (20130511), replace with
// explicit check on spath==0.
// 20130619 A. Ribon -- Fixed reproducibility problem in the method
// 20130619 A. Ribon -- Fixed reproducibility problem in the method
// generateParticleFate
// 20130627 M. Kelsey -- Check "path==0.", rather than spath.
// 20130628 M. Kelsey -- Print deuteron type code, rather than array index,
@@ -158,6 +158,7 @@
// 20141001 M. Kelsey -- Change sign of "dv" in boundaryTransition
// 20150608 M. Kelsey -- Label all while loops as terminating.
// 20150622 M. Kelsey -- Use G4AutoDelete for _TLS_ buffers.
// 20180227 A. Ribon -- Replaced obsolete std::bind2nd with std::bind
#include "G4NucleiModel.hh"
#include "G4AutoDelete.hh"
@@ -1264,7 +1265,7 @@ void G4NucleiModel::choosePointAlongTraj(G4CascadParticle& cparticle) {
// Normalize CDF to unit integral
std::transform(wtlen.begin(), wtlen.end(), wtlen.begin(),
std::bind2nd(std::divides<G4double>(), wtlen.back()));
std::bind(std::divides<G4double>(), std::placeholders::_1, wtlen.back()));
if (verboseLevel > 3) {
G4cout << " weights";
@@ -14,6 +14,11 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19 December 2017 Gabriele Cosmo (hadr-deex-V10-03-52)
- Fixed self-consistency in G4ChatterjeeCrossSection header (missing #include).
Fixed #ifdef guard in G4StatMFMacroBiNucleon header.
Thanks to Raphael Isemann for reporting these.
03 November 2017 Vladimir Ivanchenko (hadr-deex-V10-03-51)
- G4DeexPrecoParameters - fixed printout of parameters
@@ -24,12 +24,12 @@
// ********************************************************************
//
//
// $Id: G4StatMFMacroBiNucleon.hh 67983 2013-03-13 10:42:03Z gcosmo $
// $Id: G4StatMFMacroBiNucleon.hh 108519 2018-02-16 08:25:29Z gcosmo $
//
// Hadronic Process: Nuclear De-excitations
// by V. Lara
#ifndef G4StatMFMacroBiBiNucleon_h
#ifndef G4StatMFMacroBiNucleon_h_h
#define G4StatMFMacroBiNucleon_h 1
#include "G4VStatMFMacroCluster.hh"
@@ -33,6 +33,7 @@
#ifndef G4ChatterjeeCrossSection_h
#define G4ChatterjeeCrossSection_h 1
#include <CLHEP/Units/SystemOfUnits.h>
#include "globals.hh"
#include "G4Pow.hh"
@@ -14,6 +14,12 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19 December 2017 Gabriele Cosmo (hadr-fission-V10-03-00)
-------------------------------------------------------
- Fixed self-consistency in G4LLNLFission header (missing #include).
Added missing #ifdef guards in G4fissionEvent header.
Thanks to Raphael Isemann for reporting these.
5 November 2015 Alberto Ribon (hadr-fission-V10-01-07)
-------------------------------------------------------
- Removed neutron_hp/
@@ -55,8 +55,10 @@
// $Id: G4LLNLFission.hh 67966 2013-03-13 09:38:38Z gcosmo $
//
#include "G4Types.hh"
//
// This class is a copy of Fission.hh, made for use with Geant4.
// This file is a copy of Fission.hh, made for use with Geant4.
//
extern void genspfissevt_(G4int *isotope, G4double *time);
@@ -54,6 +54,8 @@
//
// $Id: G4fissionEvent.hh 68799 2013-04-05 13:29:46Z gcosmo $
//
#ifndef G4fissionEvent_hh
#define G4fissionEvent_hh
#include "globals.hh"
#include <string>
@@ -190,3 +192,5 @@ class G4fissionEvent {
static G4double fisslibrng(void);
static G4double rngf2d(void);
};
#endif
@@ -14,18 +14,23 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
23-December 2017 Vladimir Ivanchenko had-im_r_V10-03-01
19-December 2017, Gabriele Cosmo hadr-im_r-V10-03-02
- Fixed self-consistency in headers (missing #include) in G4CrossSectionBuffer,
G4DeltaNstarBuilder and G4NNstarBuilder.
Thanks to Raphael Isemann for reporting these.
23-November 2017, Vladimir Ivanchenko had-im_r_V10-03-01
- G4ParticleTypeConverter - all methods become const
- G4ConcreteMesonBaryonToResonance - fixed memory leak, adding
static objects with const only methods
21-December 2016 Gunter Folger had-im_r_V10-03-00
21-December 2016, Gunter Folger had-im_r_V10-03-00
- G4VScatteringCollision: Fix memory leak in MT, bug report 1905
13-November 2015 Gunter Folger had-im_r-V10-01-05
13-November 2015, Gunter Folger had-im_r-V10-01-05
- Revert back to G4float, add 'f' for initialisation.
13-November 2015 Gunter Folger had-im_r-V10-01-04
13-November 2015, Gunter Folger had-im_r-V10-01-04
- Replace G4float by G4double
30-October 2015, Gunter Folger had-im_r-V10-01-03
@@ -30,8 +30,9 @@
#include <vector>
#include <CLHEP/Units/SystemOfUnits.h>
#include "G4ParticleDefinition.hh"
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4KineticTrack.hh"
class G4CrossSectionBuffer
{
@@ -27,6 +27,7 @@
#define G4DeltaNstarBuilder_h
#include "G4VXResonanceTable.hh"
#include "G4XDeltaNstarTable.hh"
class G4DeltaNstarBuilder : public G4VXResonanceTable
{
@@ -27,6 +27,7 @@
#define G4NNstarBuilder_h
#include "G4VXResonanceTable.hh"
#include "G4XNNstarTable.hh"
class G4NNstarBuilder : public G4VXResonanceTable
{
@@ -14,6 +14,12 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19 December 2017 Gabriele Cosmo (hadr-hpp-V10-03-10)
---------------------------------------------------
- Fixed self-consistency in headers (missing #include) in G4FFGEnumerations,
G4FPYNubarValues, G4ParticleHPAngularP and G4ParticleHPHash.
Thanks to Raphael Isemann for reporting these.
29 November 2017 Tatsumi Koi (hadr-hpp-V10-03-09)
---------------------------------------------------
- Change tolerance value and implementation in calculation of KallbachZero.
@@ -33,6 +33,8 @@
#ifndef G4FFGENUMAERATIONS_HH
#define G4FFGENUMAERATIONS_HH
#include "G4Types.hh"
/** G4FFGEnumerations is a namespace that contains all the enumerations that
* are used in the fission fragment generator code.
*/
@@ -49,6 +49,8 @@
#ifndef G4FPYNUBARVALUES_HH
#define G4FPYNUBARVALUES_HH
#include "G4Types.hh"
/** Evaluated nubar values for neutron induced fission. The data are represented
* as linear regression fits from experimental data in the form: v = mx + b,
* where x is the incident neutron energy.
@@ -34,6 +34,7 @@
#include "globals.hh"
#include "G4InterpolationManager.hh"
#include "G4ParticleHPInterpolator.hh"
class G4ParticleHPAngularP
{
@@ -29,8 +29,9 @@
#ifndef G4ParticleHPHash_h
#define G4ParticleHPHash_h
#include "globals.hh"
#include <vector>
#include "globals.hh"
#include "G4ParticleHPDataPoint.hh"
class G4ParticleHPHash
{
@@ -1,4 +1,4 @@
$Id: History 107318 2017-11-08 16:27:32Z gcosmo $
$Id: History 108528 2018-02-16 08:38:40Z gcosmo $
-------------------------------------------------------------------
==========================================================
@@ -15,6 +15,10 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19-Dec-2017 G. Cosmo hadr-partonstring-mgt-V10-03-05
- Fixed self-consistency in G4VertexCode header (missing #include).
Thanks to Raphael Isemann for reporting this.
08-Nov-2017 A. Ribon hadr-partonstring-mgt-V10-03-04
- Minor clean-up and indentation: no changes in the random sequence.
@@ -24,11 +24,12 @@
// ********************************************************************
//
//
// $Id: G4VertexCode.hh 100828 2016-11-02 15:25:59Z gcosmo $
// $Id: G4VertexCode.hh 108528 2018-02-16 08:38:40Z gcosmo $
//
#ifndef G4VertexCode_h
#define G4VertexCode_h 1
#include "G4String.hh"
class G4VertexCode
{
@@ -1,4 +1,4 @@
$Id: History 106980 2017-10-31 09:02:49Z gcosmo $
$Id: History 108530 2018-02-16 08:45:20Z gcosmo $
-------------------------------------------------------------------
==========================================================
@@ -15,6 +15,10 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
19-Dec-2017 G. Cosmo (hadr-qgsm-V10-03-06)
- Fixed self-consistency in G4SPPartonInfo header (missing #include).
Thanks to Raphael Isemann for reporting this.
26-Oct-2017 A. Ribon (hadr-qgsm-V10-03-05)
- Brought back the stable, production QGS (as in 10.3).
@@ -26,6 +26,8 @@
#ifndef G4SPPartonInfo_h
#define G4SPPartonInfo_h
#include "G4Types.hh"
class G4SPPartonInfo
{
public:
@@ -14,6 +14,19 @@ track of all tags.
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
14 December 2017 Dennis Wright radioactive_decay-V10-03-22
------------------------------------------------------------
- re-tag
12 December 2017 Dennis Wright radioactive_decay-V10-03-21
------------------------------------------------------------
- G4RadioactiveDecay.hh, .cc: add check that environment variable
G4RADIOACTIVEDATA is pointing to correct directory. Moved check from
G4RadioactiveDecay::LoadDecayTable() to ctor. Fixes bug #1942.
- G4RadioactiveDecayBase.hh, .cc: same change as above
15 November 2017 Dennis Wright radioactive_decay-V10-03-20
------------------------------------------------------------
- G4RadioactiveDecay::DecayIt in the variance reduction branch:
@@ -316,7 +316,10 @@ class G4RadioactiveDecay : public G4VRestDiscreteProcess
G4int decayWindows[100];
static const G4double levelTolerance;
//User define radioactive decay data files replacing some files in the G4RADECAY database
// Radioactive decay database directory path
G4String dirPath;
// User-defined radioactive decay data files
std::map<G4int, G4String> theUserRadioactiveDataFiles;
// Library of decay tables
@@ -204,6 +204,9 @@ class G4RadioactiveDecayBase : public G4VRestDiscreteProcess
G4double forceDecayHalfAngle;
static const G4ThreeVector origin; // (0,0,0) for convenience
// Radioactive decay database directory path
G4String dirPath;
//User define radioactive decay data files replacing some files in the G4RADECAY database
std::map<G4int, G4String> theUserRadioactiveDataFiles;
@@ -157,7 +157,8 @@ DecayTableMap* G4RadioactiveDecay::master_dkmap = 0;
G4RadioactiveDecay::G4RadioactiveDecay(const G4String& processName)
: G4VRestDiscreteProcess(processName, fDecay), isInitialised(false),
forceDecayDirection(0.,0.,0.), forceDecayHalfAngle(0.*deg), verboseLevel(0)
forceDecayDirection(0.,0.,0.), forceDecayHalfAngle(0.*deg), dirPath(""),
verboseLevel(0)
{
#ifdef G4VERBOSE
if (GetVerboseLevel() > 1) {
@@ -176,7 +177,23 @@ G4RadioactiveDecay::G4RadioactiveDecay(const G4String& processName)
// photonEvaporation->SetVerboseLevel(2);
photonEvaporation->RDMForced(true);
photonEvaporation->SetICM(true);
// Check data directory
char* path_var = getenv("G4RADIOACTIVEDATA");
if (!path_var) {
G4Exception("G4RadioactiveDecay()","HAD_RDM_200",FatalException,
"Environment variable G4RADIOACTIVEDATA is not set");
} else {
dirPath = path_var; // convert to string
std::ostringstream os;
os << dirPath << "/z1.a3"; // used as a dummy
std::ifstream testFile;
testFile.open(os.str() );
if (!testFile.is_open() )
G4Exception("G4RadioactiveDecay()","HAD_RDM_201",FatalException,
"Environment variable G4RADIOACTIVEDATA is set, but does not point to correct directory");
}
// Reset the list of user defined data files
theUserRadioactiveDataFiles.clear();
@@ -816,15 +833,8 @@ G4RadioactiveDecay::LoadDecayTable(const G4ParticleDefinition& theParentNucleus)
G4String file = theUserRadioactiveDataFiles[1000*A+Z];
if (file == "") {
if (!getenv("G4RADIOACTIVEDATA") ) {
G4cout << "Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files."
<< G4endl;
throw G4HadronicException(__FILE__, __LINE__, " Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files.");
}
G4String dirName = getenv("G4RADIOACTIVEDATA");
std::ostringstream os;
os << dirName << "/z" << Z << ".a" << A << '\0';
os << dirPath << "/z" << Z << ".a" << A << '\0';
file = os.str();
}
@@ -98,7 +98,8 @@ DecayTableMap* G4RadioactiveDecayBase::master_dkmap = 0;
G4RadioactiveDecayBase::G4RadioactiveDecayBase(const G4String& processName)
: G4VRestDiscreteProcess(processName, fDecay), isInitialised(false),
forceDecayDirection(0.,0.,0.), forceDecayHalfAngle(0.*deg), verboseLevel(0)
forceDecayDirection(0.,0.,0.), forceDecayHalfAngle(0.*deg), dirPath(""),
verboseLevel(0)
{
#ifdef G4VERBOSE
if (GetVerboseLevel() > 1) {
@@ -119,7 +120,23 @@ G4RadioactiveDecayBase::G4RadioactiveDecayBase(const G4String& processName)
G4DeexPrecoParameters* deex = G4NuclearLevelData::GetInstance()->GetParameters();
deex->SetCorrelatedGamma(true);
// Check data directory
char* path_var = getenv("G4RADIOACTIVEDATA");
if (!path_var) {
G4Exception("G4RadioactiveDecay()","HAD_RDM_200",FatalException,
"Environment variable G4RADIOACTIVEDATA is not set");
} else {
dirPath = path_var; // convert to string
std::ostringstream os;
os << dirPath << "/z1.a3"; // used as a dummy
std::ifstream testFile;
testFile.open(os.str() );
if (!testFile.is_open() )
G4Exception("G4RadioactiveDecay()","HAD_RDM_201",FatalException,
"Environment variable G4RADIOACTIVEDATA is set, but does not point to correct directory");
}
// Reset the list of user defined data files
theUserRadioactiveDataFiles.clear();
@@ -446,15 +463,16 @@ G4RadioactiveDecayBase::LoadDecayTable(const G4ParticleDefinition& theParentNucl
G4String file = theUserRadioactiveDataFiles[1000*A+Z];
if (file == "") {
/*
if (!getenv("G4RADIOACTIVEDATA") ) {
G4cout << "Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files."
<< G4endl;
throw G4HadronicException(__FILE__, __LINE__, " Please setenv G4RADIOACTIVEDATA to point to the radioactive decay data files.");
}
G4String dirName = getenv("G4RADIOACTIVEDATA");
*/
std::ostringstream os;
os << dirName << "/z" << Z << ".a" << A << '\0';
os << dirPath << "/z" << Z << ".a" << A << '\0';
file = os.str();
}
+11
View File
@@ -14,6 +14,17 @@ code and to keep track of all tags.
* Please list in reverse chronological order (last date on top)
---------------------------------------------------------------
09 February 2018 Ben Morgan (hadr-util-V10-03-06)
-------------------------------------------------
- G4StableIsotopes - Move member function definitions to source file
to avoid global data visibility issues in Windows DLLs.
19 December 2017 Gabriele Cosmo
--------------------------------------------------------
- Fixed self-consistency in headers (missing #include) in DumpFrame,
G4GHEKinematicsVector and G4ping.
Thanks to Raphael Isemann for reporting these.
04 July 2017 Vladimir Ivanchenko (hadr-util-V10-03-05)
--------------------------------------------------------
- G4NuclearPolarization - added extra members and update the class
@@ -26,6 +26,9 @@
#ifndef DumpFrame_h
#define DumpFrame_h
#include "G4FastVector.hh"
#include "G4ReactionProduct.hh"
class DumpFrames
{
public:
@@ -43,9 +43,9 @@
#ifndef G4GHEKinematicsVector_h
#define G4GHEKinematicsVector_h 1
#include "G4ios.hh"
#include <CLHEP/Units/PhysicalConstants.h>
#include "G4ios.hh"
#include "G4ParticleMomentum.hh"
class G4GHEKinematicsVector
{
@@ -29,7 +29,7 @@
#define G4StableIsotopes_h 1
// Class Description
// class utility that knows about all naturally occuring isotopes.;
// class utility that knows about all naturally occuring isotopes.;
// to be used in your process implementation in case you need this.
// Class Description - End
@@ -52,12 +52,12 @@ class G4StableIsotopes
public:
G4String GetName(G4int Z) {return elementName[Z-1];}
G4int GetNumberOfIsotopes(G4int Z) {return nIsotopes[Z-1];}
G4int GetFirstIsotope(G4int Z) {return start[Z-1];}
G4int GetIsotopeNucleonCount(G4int number) {return nucleonCount[number];}
G4double GetAbundance(G4int number) {return abundance[number];}
G4int GetProtonCount(G4int Z) {return protonCount[Z-1];}
G4String GetName(G4int Z);
G4int GetNumberOfIsotopes(G4int Z);
G4int GetFirstIsotope(G4int Z);
G4int GetIsotopeNucleonCount(G4int number);
G4double GetAbundance(G4int number);
G4int GetProtonCount(G4int Z);
private:
@@ -26,7 +26,8 @@
#ifndef G4ping_h
#define G4ping_h
#include "G4String.hh"
#include <vector>
#include "globals.hh"
#include "G4LorentzVector.hh"
@@ -33,4 +33,34 @@ const G4String G4StableIsotopes::elementName[92] = {"H", "He", "Li", "Be", "B",
const G4int G4StableIsotopes::nIsotopes[92] = {2, 2, 2, 1, 2, 2, 2, 3, 1, 3, 1, 3, 1, 3, 1, 4, 2, 3, 3, 6, 1, 5, 2, 4, 1, 4, 1, 5, 2, 5, 2, 5, 1, 6, 2, 6, 2, 4, 1, 5, 1, 7, 0, 7, 1, 6, 2, 8, 2, 10, 2, 8, 1, 9, 1, 7, 2, 4, 1, 7, 0, 7, 2, 7, 1, 7, 1, 6, 1, 7, 2, 6, 2, 5, 2, 7, 2, 6, 1, 7, 2, 4, 1, 0, 0, 0, 0, 0, 0, 1, 0, 3};
const G4int G4StableIsotopes::start[92] = {0, 2, 4, 6, 7, 9, 11, 13, 16, 17, 20, 21, 24, 25, 28, 29, 33, 35, 38, 41, 47, 48, 53, 55, 59, 60, 64, 65, 70, 72, 77, 79, 84, 85, 91, 93, 99, 101, 105, 106, 111, 112, 119, 119, 126, 127, 133, 135, 143, 145, 155, 157, 165, 166, 175, 176, 183, 185, 189, 190, 197, 197, 204, 206, 213, 214, 221, 222, 228, 229, 236, 238, 244, 246, 251, 253, 260, 262, 268, 269, 276, 278, 282, 283, 283, 283, 283, 283, 283, 283, 284, 284};
const G4int G4StableIsotopes::nucleonCount[287] = {1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 35, 37, 36, 38, 40, 39, 40, 41, 40, 42, 43, 44, 46, 48, 45, 46, 47, 48, 49, 50, 50, 51, 50, 52, 53, 54, 55, 54, 56, 57, 58, 59, 58, 60, 61, 62, 64, 63, 65, 64, 66, 67, 68, 70, 69, 71, 70, 72, 73, 74, 76, 75, 74, 76, 77, 78, 80, 82, 79, 81, 78, 80, 82, 83, 84, 86, 85, 87, 84, 86, 87, 88, 89, 90, 91, 92, 94, 96, 93, 92, 94, 95, 96, 97, 98, 100, 96, 98, 99, 100, 101, 102, 104, 103, 102, 104, 105, 106, 108, 110, 107, 109, 106, 108, 110, 111, 112, 113, 114, 116, 113, 115, 112, 114, 115, 116, 117, 118, 119, 120, 122, 124, 121, 123, 120, 122, 123, 124, 125, 126, 128, 130, 127, 124, 126, 128, 129, 130, 131, 132, 134, 136, 133, 130, 132, 134, 135, 136, 137, 138, 138, 139, 136, 138, 140, 142, 141, 142, 143, 144, 145, 146, 148, 150, 144, 147, 148, 149, 150, 152, 154, 151, 153, 152, 154, 155, 156, 157, 158, 160, 159, 156, 158, 160, 161, 162, 163, 164, 165, 162, 164, 166, 167, 168, 170, 169, 168, 170, 171, 172, 173, 174, 176, 175, 176, 174, 176, 177, 178, 179, 180, 180, 181, 180, 182, 183, 184, 186, 185, 187, 184, 186, 187, 188, 189, 190, 192, 191, 193, 190, 192, 194, 195, 196, 198, 197, 196, 198, 199, 200, 201, 202, 204, 203, 205, 204, 206, 207, 208, 209, 232, 234, 235, 238};
const G4double G4StableIsotopes::abundance[287] = {99.985, 0.015, 0.000137, 99.9999, 7.5, 92.5, 100, 19.9, 80.1, 98.9, 1.1, 99.634, 0.366, 99.762, 0.038, 0.2, 100, 90.48, 0.27, 9.25, 100, 78.99, 10, 11.01, 100, 92.23, 4.67, 3.1, 100, 95.02, 0.75, 4.21, 0.02, 75.77, 24.23, 0.337, 0.063, 99.6, 93.2581, 0.0117, 6.7302, 96.941, 0.647, 0.135, 2.086, 0.004, 0.187, 100, 8, 7.2, 73.8, 5.5, 5.4, 0.25, 99.75, 4.345, 83.789, 9.501, 2.365, 100, 5.8, 91.72, 2.2, 0.28, 100, 68.277, 26.223, 1.14, 3.634, 0.926, 69.17, 30.83, 48.6, 27.9, 4.1, 18.8, 0.6, 60.108, 39.892, 21.23, 27.66, 7.73, 36.94, 7.44, 100, 0.89, 9.36, 7.63, 23.78, 49.61, 8.73, 50.69, 49.31, 0.35, 2.25, 11.6, 11.5, 57, 17.3, 72.165, 27.835, 0.56, 9.86, 7, 82.58, 100, 51.45, 11.22, 17.15, 17.38, 2.8, 100, 14.84, 9.25, 15.92, 16.68, 9.55, 24.13, 9.63, 5.52, 1.88, 12.7, 12.6, 17, 31.6, 18.7, 100, 1.02, 11.14, 22.33, 27.33, 26.46, 11.72, 51.839, 48.161, 1.25, 0.89, 12.49, 12.8, 24.13, 12.22, 28.73, 7.49, 4.3, 95.7, 0.97, 0.65, 0.36, 14.53, 7.68, 24.22, 8.58, 32.59, 4.63, 5.79, 57.36, 42.64, 0.096, 2.6, 0.908, 4.816, 7.14, 18.95, 31.69, 33.8, 100, 0.1, 0.09, 1.91, 26.4, 4.1, 21.2, 26.9, 10.4, 8.9, 100, 0.106, 0.101, 2.417, 6.592, 7.854, 11.23, 71.7, 0.0902, 99.9098, 0.19, 0.25, 88.48, 11.08, 100, 27.13, 12.18, 23.8, 8.3, 17.19, 5.76, 5.64, 3.1, 15, 11.3, 13.8, 7.4, 26.7, 22.7, 47.8, 52.2, 0.2, 2.18, 14.8, 20.47, 15.65, 24.84, 21.86, 100, 0.06, 0.1, 2.34, 18.9, 25.5, 24.9, 28.2, 100, 0.14, 1.61, 33.6, 22.95, 26.8, 14.9, 100, 0.13, 3.05, 14.3, 21.9, 16.12, 31.8, 12.7, 97.41, 2.59, 0.162, 5.206, 18.606, 27.297, 13.629, 35.1, 0.012, 99.988, 0.13, 26.3, 14.3, 30.67, 28.6, 37.4, 62.6, 0.02, 1.58, 1.6, 13.3, 16.1, 26.4, 41, 37.3, 62.7, 0.01, 0.79, 32.9, 33.8, 25.3, 7.2, 100, 0.15, 9.97, 16.87, 23.1, 13.18, 29.86, 6.87, 29.524, 70.476, 1.4, 24.1, 22.1, 52.4, 100, 100, 0.005, 0.72, 99.275};
const G4double G4StableIsotopes::abundance[287] = {99.985, 0.015, 0.000137, 99.9999, 7.5, 92.5, 100, 19.9, 80.1, 98.9, 1.1, 99.634, 0.366, 99.762, 0.038, 0.2, 100, 90.48, 0.27, 9.25, 100, 78.99, 10, 11.01, 100, 92.23, 4.67, 3.1, 100, 95.02, 0.75, 4.21, 0.02, 75.77, 24.23, 0.337, 0.063, 99.6, 93.2581, 0.0117, 6.7302, 96.941, 0.647, 0.135, 2.086, 0.004, 0.187, 100, 8, 7.2, 73.8, 5.5, 5.4, 0.25, 99.75, 4.345, 83.789, 9.501, 2.365, 100, 5.8, 91.72, 2.2, 0.28, 100, 68.277, 26.223, 1.14, 3.634, 0.926, 69.17, 30.83, 48.6, 27.9, 4.1, 18.8, 0.6, 60.108, 39.892, 21.23, 27.66, 7.73, 36.94, 7.44, 100, 0.89, 9.36, 7.63, 23.78, 49.61, 8.73, 50.69, 49.31, 0.35, 2.25, 11.6, 11.5, 57, 17.3, 72.165, 27.835, 0.56, 9.86, 7, 82.58, 100, 51.45, 11.22, 17.15, 17.38, 2.8, 100, 14.84, 9.25, 15.92, 16.68, 9.55, 24.13, 9.63, 5.52, 1.88, 12.7, 12.6, 17, 31.6, 18.7, 100, 1.02, 11.14, 22.33, 27.33, 26.46, 11.72, 51.839, 48.161, 1.25, 0.89, 12.49, 12.8, 24.13, 12.22, 28.73, 7.49, 4.3, 95.7, 0.97, 0.65, 0.36, 14.53, 7.68, 24.22, 8.58, 32.59, 4.63, 5.79, 57.36, 42.64, 0.096, 2.6, 0.908, 4.816, 7.14, 18.95, 31.69, 33.8, 100, 0.1, 0.09, 1.91, 26.4, 4.1, 21.2, 26.9, 10.4, 8.9, 100, 0.106, 0.101, 2.417, 6.592, 7.854, 11.23, 71.7, 0.0902, 99.9098, 0.19, 0.25, 88.48, 11.08, 100, 27.13, 12.18, 23.8, 8.3, 17.19, 5.76, 5.64, 3.1, 15, 11.3, 13.8, 7.4, 26.7, 22.7, 47.8, 52.2, 0.2, 2.18, 14.8, 20.47, 15.65, 24.84, 21.86, 100, 0.06, 0.1, 2.34, 18.9, 25.5, 24.9, 28.2, 100, 0.14, 1.61, 33.6, 22.95, 26.8, 14.9, 100, 0.13, 3.05, 14.3, 21.9, 16.12, 31.8, 12.7, 97.41, 2.59, 0.162, 5.206, 18.606, 27.297, 13.629, 35.1, 0.012, 99.988, 0.13, 26.3, 14.3, 30.67, 28.6, 37.4, 62.6, 0.02, 1.58, 1.6, 13.3, 16.1, 26.4, 41, 37.3, 62.7, 0.01, 0.79, 32.9, 33.8, 25.3, 7.2, 100, 0.15, 9.97, 16.87, 23.1, 13.18, 29.86, 6.87, 29.524, 70.476, 1.4, 24.1, 22.1, 52.4, 100, 100, 0.005, 0.72, 99.275};
G4String G4StableIsotopes::GetName(G4int Z)
{
return elementName[Z-1];
}
G4int G4StableIsotopes::GetNumberOfIsotopes(G4int Z)
{
return nIsotopes[Z-1];
}
G4int G4StableIsotopes::GetFirstIsotope(G4int Z)
{
return start[Z-1];
}
G4int G4StableIsotopes::GetIsotopeNucleonCount(G4int number)
{
return nucleonCount[number];
}
G4double G4StableIsotopes::GetAbundance(G4int number)
{
return abundance[number];
}
G4int G4StableIsotopes::GetProtonCount(G4int Z) {
return protonCount[Z-1];
}
+19 -1
View File
@@ -1,4 +1,4 @@
$Id: History 105271 2017-07-18 07:35:12Z gcosmo $
$Id: History 108536 2018-02-16 09:20:49Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -16,6 +16,24 @@ committal in the CVS repository !
----------------------------------------------------------
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
- Dec. 26, 2017 Makoto Asai (procman-V10-03-03)
- G4ProcessManagerMessenger, G4ProcessTableMessenger :
UI command returns an error message if a command is refused due
to incorrect parameter(s).
- Dec. 18, 2017 Makoto Asai
- Following UI commands are now forbidden for G4State_GeomClosed or
G4State_EventProc application states.
- /process/activate
- /process/inactivate
- /particle/process/activate
- /particle/process/inactivate
- Dec. 13, 2017 Michel Maire
- Add method
G4VProcess* G4ProcessManager::GetProcess(const G4String& processName) const;
to get a process from its name
- Jul. 17, 2017 Dennis Wright (procman-V10-03-02)
- Add method
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ProcessManager.hh 71231 2013-06-12 13:06:28Z gcosmo $
// $Id: G4ProcessManager.hh 108536 2018-02-16 09:20:49Z gcosmo $
//
//
// ------------------------------------------------------------
@@ -284,7 +284,10 @@ class G4ProcessManager
G4ParticleDefinition* GetParticleType() const;
// get the particle type
void SetParticleType(const G4ParticleDefinition*);
// set the particle type
// set the particle type
G4VProcess* GetProcess (const G4String&) const;
// get process by process name
void StartTracking(G4Track* aTrack=0);
void EndTracking();
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ProcessManager.cc 87924 2015-01-21 13:17:25Z gcosmo $
// $Id: G4ProcessManager.cc 108536 2018-02-16 09:20:49Z gcosmo $
//
//
// --------------------------------------------------------------
@@ -1080,10 +1080,6 @@ void G4ProcessManager::CreateGPILvectors()
}
//////////////////////////////////////////
void G4ProcessManager::StartTracking(G4Track* aTrack)
{
@@ -1105,6 +1101,17 @@ void G4ProcessManager::EndTracking()
}
/////////////////////////////////////////////
G4VProcess* G4ProcessManager::GetProcess(const G4String& processName) const
{
for (G4int k=0; k<numberOfProcesses; k++) {
G4VProcess* process = (*theProcessList)[k];
if (process->GetProcessName() == processName) return process;
}
return nullptr;
}
/////////////////////////////////////////////
G4VProcess* G4ProcessManager::SetProcessActivation(G4VProcess *aProcess,
G4bool fActive )
@@ -1215,5 +1222,3 @@ void G4ProcessManager::CheckOrderingParameters(G4VProcess* aProcess) const
return;
}
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ProcessManagerMessenger.cc 92125 2015-08-18 14:35:23Z gcosmo $
// $Id: G4ProcessManagerMessenger.cc 108536 2018-02-16 09:20:49Z gcosmo $
//
//
//---------------------------------------------------------------
@@ -100,7 +100,7 @@ G4ProcessManagerMessenger::G4ProcessManagerMessenger(G4ParticleTable* pTable)
activateCmd->SetParameterName("index", false);
activateCmd->SetDefaultValue(0);
activateCmd->SetRange("index >=0");
activateCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
activateCmd->AvailableForStates(G4State_Idle);
//Commnad /particle/process/inactivate
inactivateCmd = new G4UIcmdWithAnInteger("/particle/process/inactivate",this);
@@ -109,7 +109,7 @@ G4ProcessManagerMessenger::G4ProcessManagerMessenger(G4ParticleTable* pTable)
inactivateCmd->SetParameterName("index", false);
inactivateCmd->SetDefaultValue(0);
inactivateCmd->SetRange("index >=0");
inactivateCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
inactivateCmd->AvailableForStates(G4State_Idle);
}
@@ -142,8 +142,10 @@ G4ParticleDefinition* G4ProcessManagerMessenger::SetCurrentParticle()
void G4ProcessManagerMessenger::SetNewValue(G4UIcommand * command,G4String newValue)
{
G4ExceptionDescription ed;
if (SetCurrentParticle()==0) {
G4cout << "Particle is not selected yet !! Command ignored." << G4endl;
ed << "Particle is not selected yet !! Command ignored.";
command->CommandFailed(ed);
return;
}
if( command == dumpCmd ){
@@ -154,13 +156,15 @@ void G4ProcessManagerMessenger::SetNewValue(G4UIcommand * command,G4String newVa
} else if ( index < theManager->GetProcessListLength()){
currentProcess = (*theProcessList)(index);
if (currentProcess == 0) {
G4cout << " no process at index of " << index;
G4cout << "in the Process Vector" << G4endl;
ed << " no process at index of " << index
<< " in the Process Vector";
command->CommandFailed(ed);
} else {
currentProcess->DumpInfo();
}
} else {
G4cout << " illegal index !!! " << G4endl;
ed << " illegal index !!! ";
command->CommandFailed(ed);
currentProcess = 0;
}
@@ -187,13 +191,15 @@ void G4ProcessManagerMessenger::SetNewValue(G4UIcommand * command,G4String newVa
} else if ( index < theManager->GetProcessListLength()){
currentProcess = (*theProcessList)(index);
if (currentProcess == 0) {
G4cout << " no process at index of " << index;
G4cout << "in the Process Vector" << G4endl;
ed << " no process at index of " << index
<< " in the Process Vector";
command->CommandFailed(ed);
} else {
currentProcess->SetVerboseLevel(Verbose);
}
} else {
G4cout << " illegal index !!! " << G4endl;
ed << " illegal index !!! ";
command->CommandFailed(ed);
currentProcess = 0;
}
}
@@ -24,7 +24,7 @@
// ********************************************************************
//
//
// $Id: G4ProcessTableMessenger.cc 92125 2015-08-18 14:35:23Z gcosmo $
// $Id: G4ProcessTableMessenger.cc 108536 2018-02-16 09:20:49Z gcosmo $
//
//
//---------------------------------------------------------------
@@ -130,7 +130,7 @@ G4ProcessTableMessenger::G4ProcessTableMessenger(G4ProcessTable* pTable)
dumpCmd->SetParameter(param);
dumpCmd->AvailableForStates(G4State_Init,G4State_Idle,G4State_GeomClosed,G4State_EventProc);
//Commnad /particle/process/activate
//Commnad /process/activate
activateCmd = new G4UIcommand("/process/activate",this);
activateCmd->SetGuidance("Activate processes ");
activateCmd->SetGuidance(" Activate name [particle]");
@@ -141,9 +141,9 @@ G4ProcessTableMessenger::G4ProcessTableMessenger(G4ProcessTable* pTable)
param = new G4UIparameter("particle",'s',true);
param->SetDefaultValue("all");
activateCmd->SetParameter(param);
activateCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
activateCmd->AvailableForStates(G4State_Idle);
//Commnad /particle/process/inactivate
//Commnad /process/inactivate
inactivateCmd = new G4UIcommand("/process/inactivate",this);
inactivateCmd->SetGuidance("Inactivate process ");
inactivateCmd->SetGuidance("Inactivate processes ");
@@ -155,7 +155,7 @@ G4ProcessTableMessenger::G4ProcessTableMessenger(G4ProcessTable* pTable)
param = new G4UIparameter("particle",'s',true);
param->SetDefaultValue("all");
inactivateCmd->SetParameter(param);
inactivateCmd->AvailableForStates(G4State_Idle,G4State_GeomClosed,G4State_EventProc);
inactivateCmd->AvailableForStates(G4State_Idle);
}
//////////////////
@@ -176,8 +176,8 @@ void G4ProcessTableMessenger::SetNewValue(G4UIcommand * command,G4String newValu
G4ProcessTable::G4ProcNameVector* procNameVector
= theProcessTable->GetNameList();
G4int idx;
G4int type = -1;
G4ExceptionDescription ed;
if( command == listCmd ){
//Commnad /process/list
@@ -276,7 +276,9 @@ void G4ProcessTableMessenger::SetNewValue(G4UIcommand * command,G4String newValu
type = GetProcessType(currentProcessName);
if (type <0 ) {
// no processes with specifed name
G4cout << " illegal process (or type) name " << G4endl;
ed << " illegal process (or type) name ["
<< currentProcessName << "]";
command->CommandFailed(ed);
currentProcessName = "";
return;
}
@@ -299,7 +301,8 @@ void G4ProcessTableMessenger::SetNewValue(G4UIcommand * command,G4String newValu
if ( !isParticleFound ) {
// no particle with specifed name
G4cout << " illegal particle name " << G4endl;
ed << " illegal particle name [" << currentParticleName << "]";
command->CommandFailed(ed);
currentParticleName = "";
return;
}
+5 -1
View File
@@ -1,4 +1,4 @@
$Id: History 101152 2016-11-08 08:07:39Z gcosmo $
$Id: History 108538 2018-02-16 09:25:16Z gcosmo $
-------------------------------------------------------------------
=========================================================
@@ -17,6 +17,10 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
December 19, 2017, G. Cosmo (param-V10-03-00)
- Fixed self-consistency in G4FastSimulationVector header (missing #include).
Thanks to Raphael Isemann for reporting this.
November 03, 2016, M. Verderi (param-V10-02-01)
- New G4FastSimulationManagerHelper utility for
adding G4FastSimulationManagerProcess to a
@@ -44,6 +44,7 @@
#define G4FastSimulationVector_h 1
#include <vector>
#include "G4Types.hh"
template<class T>
class G4FastSimulationVector : public std::vector<T*>