Import Geant4 10.6.0 source tree

This commit is contained in:
Gabriele Cosmo
2019-12-06 15:12:28 +01:00
parent b2a62ae692
commit 5baee230e9
2997 changed files with 141580 additions and 98673 deletions
+7
View File
@@ -15,6 +15,13 @@ track of all tags.
----------------------------------------------------------
October 29, 2019 D. Sawkey (WLS-V10-05-01)
- Use G4OpticalPhysics
- Use G4SteppingVerbose
October 21, 2019 D.Sawkey (WLS-V10-05-00)
- Don't store random number seeds
May 17, 2018 J. Allison (WLS-V10-04-01)
- Remove G4UI_USE and G4VIS_USE.
- Move instantiation of G4UIExecutive to start of main.
@@ -49,8 +49,6 @@ class WLSActionInitialization : public G4VUserActionInitialization
virtual void BuildForMaster() const;
virtual void Build() const;
virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
private:
WLSDetectorConstruction* fDetector;
@@ -1,53 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSExtraPhysics.hh
/// \brief Definition of the WLSExtraPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSExtraPhysics_h
#define WLSExtraPhysics_h 1
#include "globals.hh"
#include "G4VPhysicsConstructor.hh"
class WLSExtraPhysics : public G4VPhysicsConstructor
{
public:
WLSExtraPhysics();
virtual ~WLSExtraPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
};
#endif
@@ -1,83 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSOpticalPhysics.hh
/// \brief Definition of the WLSOpticalPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSOpticalPhysics_h
#define WLSOpticalPhysics_h 1
#include "globals.hh"
#include "G4OpWLS.hh"
#include "G4Cerenkov.hh"
#include "G4Scintillation.hh"
#include "G4OpMieHG.hh"
#include "G4OpRayleigh.hh"
#include "G4OpAbsorption.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4VPhysicsConstructor.hh"
class WLSOpticalPhysics : public G4VPhysicsConstructor
{
public:
WLSOpticalPhysics(G4bool toggle=true);
virtual ~WLSOpticalPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
G4OpWLS* GetWLSProcess() {return fWLSProcess;}
G4Cerenkov* GetCerenkovProcess() {return fCerenkovProcess;}
G4Scintillation* GetScintillationProcess() {return fScintProcess;}
G4OpAbsorption* GetAbsorptionProcess() {return fAbsorptionProcess;}
G4OpRayleigh* GetRayleighScatteringProcess() {return fRayleighScattering;}
G4OpMieHG* GetMieHGScatteringProcess() {return fMieHGScatteringProcess;}
G4OpBoundaryProcess* GetBoundaryProcess() { return fBoundaryProcess;}
void SetNbOfPhotonsCerenkov(G4int);
private:
G4OpWLS* fWLSProcess;
G4Cerenkov* fCerenkovProcess;
G4Scintillation* fScintProcess;
G4OpAbsorption* fAbsorptionProcess;
G4OpRayleigh* fRayleighScattering;
G4OpMieHG* fMieHGScatteringProcess;
G4OpBoundaryProcess* fBoundaryProcess;
G4bool fAbsorptionOn;
};
#endif
@@ -1,96 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSPhysicsList.hh
/// \brief Definition of the WLSPhysicsList class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSPhysicsList_h
#define WLSPhysicsList_h 1
#include "globals.hh"
#include "G4VModularPhysicsList.hh"
class G4VPhysicsConstructor;
class WLSPhysicsListMessenger;
class WLSStepMax;
class WLSOpticalPhysics;
class WLSPhysicsList: public G4VModularPhysicsList
{
public:
WLSPhysicsList(G4String);
virtual ~WLSPhysicsList();
void SetCuts();
void SetCutForGamma(G4double);
void SetCutForElectron(G4double);
void SetCutForPositron(G4double);
void SetStepMax(G4double);
WLSStepMax* GetStepMaxProcess();
void AddStepMax();
/// Remove specific physics from physics list.
void RemoveFromPhysicsList(const G4String&);
/// Make sure that the physics list is empty.
void ClearPhysics();
virtual void ConstructParticle();
virtual void ConstructProcess();
// Turn on or off the absorption process
void SetAbsorption(G4bool);
void SetNbOfPhotonsCerenkov(G4int);
void SetVerbose(G4int);
private:
G4double fCutForGamma;
G4double fCutForElectron;
G4double fCutForPositron;
WLSStepMax* fStepMaxProcess;
WLSOpticalPhysics* fOpticalPhysics;
WLSPhysicsListMessenger* fMessenger;
G4bool fAbsorptionOn;
G4VMPLData::G4PhysConstVectorData* fPhysicsVector;
};
#endif
@@ -1,94 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSPhysicsListMessenger.hh
/// \brief Definition of the WLSPhysicsListMessenger class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSPhysicsListMessenger_h
#define WLSPhysicsListMessenger_h 1
#include "globals.hh"
#include "G4UImessenger.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "G4DecayTable.hh"
#include "G4VDecayChannel.hh"
class WLSPhysicsList;
class G4UIdirectory;
class G4UIcmdWithABool;
class G4UIcmdWithAString;
class G4UIcmdWithAnInteger;
class G4UIcmdWithoutParameter;
class G4UIcmdWithADoubleAndUnit;
/// Provide control of the physics list and cut parameters
class WLSPhysicsListMessenger : public G4UImessenger
{
public:
WLSPhysicsListMessenger(WLSPhysicsList* );
virtual ~WLSPhysicsListMessenger();
virtual void SetNewValue(G4UIcommand*, G4String);
private:
WLSPhysicsList* fPhysicsList;
G4UIdirectory* fDirectory;
G4UIdirectory* fDecayDirectory;
G4UIcmdWithABool* fSetAbsorptionCMD;
G4UIcmdWithAnInteger* fVerboseCmd;
G4UIcmdWithAnInteger* fCerenkovCmd;
G4UIcmdWithADoubleAndUnit* fGammaCutCMD;
G4UIcmdWithADoubleAndUnit* fElectCutCMD;
G4UIcmdWithADoubleAndUnit* fPosCutCMD;
G4UIcmdWithADoubleAndUnit* fAllCutCMD;
G4UIcmdWithADoubleAndUnit* fStepMaxCMD;
G4UIcmdWithAString* fRemovePhysicsCMD;
G4UIcmdWithoutParameter* fClearPhysicsCMD;
G4UIcmdWithoutParameter* fListCMD;
G4UIcmdWithoutParameter* fPienuCMD;
G4UIcmdWithoutParameter* fPimunuCMD;
};
#endif
@@ -1,80 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSStepMax.hh
/// \brief Definition of the WLSStepMax class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSStepMax_h
#define WLSStepMax_h 1
#include "globals.hh"
#include "G4Step.hh"
#include "G4VDiscreteProcess.hh"
#include "G4ParticleDefinition.hh"
class WLSStepMax : public G4VDiscreteProcess
{
public:
WLSStepMax(const G4String& processName = "UserStepMax");
WLSStepMax(WLSStepMax &);
virtual ~WLSStepMax();
virtual G4bool IsApplicable(const G4ParticleDefinition&);
void SetStepMax(G4double);
G4double GetStepMax() {return fMaxChargedStep;};
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
G4double previousStepSize,
G4ForceCondition* condition);
virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
protected:
G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*);
private:
// hide assignment operator as private
WLSStepMax & operator=(const WLSStepMax &right);
WLSStepMax(const WLSStepMax&);
private:
G4double fMaxChargedStep;
};
#endif
@@ -1,50 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/include/WLSSteppingVerbose.hh
/// \brief Definition of the WLSSteppingVerbose class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifndef WLSSteppingVerbose_h
#define WLSSteppingVerbose_h 1
#include "G4SteppingVerbose.hh"
class WLSSteppingVerbose : public G4SteppingVerbose
{
public:
WLSSteppingVerbose();
virtual ~WLSSteppingVerbose();
virtual void StepInfo();
virtual void TrackingStarted();
};
#endif
@@ -37,8 +37,6 @@
#include "WLSTrackingAction.hh"
#include "WLSSteppingAction.hh"
#include "WLSStackingAction.hh"
#include "WLSSteppingVerbose.hh"
#include "G4GeneralParticleSource.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -78,7 +76,3 @@ void WLSActionInitialization::Build() const
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VSteppingVerbose* WLSActionInitialization::InitializeSteppingVerbose() const
{
return new WLSSteppingVerbose();
}
@@ -38,7 +38,7 @@
#include "G4LogicalVolume.hh"
#include "G4PVPlacement.hh"
#include "G4OpBoundaryProcess.hh"
#include "G4OpticalSurface.hh"
#include "G4LogicalSkinSurface.hh"
#include "G4LogicalBorderSurface.hh"
@@ -1,92 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSExtraPhysics.cc
/// \brief Implementation of the WLSExtraPhysics class
//
//
#include "globals.hh"
#include "G4ParticleDefinition.hh"
#include "G4ParticleTable.hh"
#include "G4ProcessManager.hh"
#include "G4UserSpecialCuts.hh"
#include "G4StepLimiter.hh"
#include "WLSExtraPhysics.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSExtraPhysics::WLSExtraPhysics()
: G4VPhysicsConstructor("Extra") { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSExtraPhysics::~WLSExtraPhysics() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSExtraPhysics::ConstructParticle() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSExtraPhysics::ConstructProcess()
{
G4cout << "WLSExtraPhysics:: Add Extra Physics Processes"
<< G4endl;
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ((*particleIterator)()) {
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
G4double charge = particle->GetPDGCharge();
if (!pmanager) {
std::ostringstream o;
o << "Particle " << particleName << "without a Process Manager";
G4Exception("WLSExtraPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if (particleName == "opticalphoton") break;
if (charge != 0.0) {
// All charged particles should have a step limiter
// to make sure that the steps do not get too long.
pmanager->AddDiscreteProcess(new G4StepLimiter());
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
} else if (particleName == "neutron") {
// time cuts for ONLY neutrons:
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
} else {
// Energy cuts for all other neutral particles
pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
}
}
}
@@ -1,146 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSOpticalPhysics.cc
/// \brief Implementation of the WLSOpticalPhysics class
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4LossTableManager.hh"
#include "G4EmSaturation.hh"
#include "WLSOpticalPhysics.hh"
WLSOpticalPhysics::WLSOpticalPhysics(G4bool toggle)
: G4VPhysicsConstructor("Optical")
{
fWLSProcess = NULL;
fScintProcess = NULL;
fCerenkovProcess = NULL;
fBoundaryProcess = NULL;
fAbsorptionProcess = NULL;
fRayleighScattering = NULL;
fMieHGScatteringProcess = NULL;
fAbsorptionOn = toggle;
}
WLSOpticalPhysics::~WLSOpticalPhysics() { }
#include "G4OpticalPhoton.hh"
void WLSOpticalPhysics::ConstructParticle()
{
G4OpticalPhoton::OpticalPhotonDefinition();
}
#include "G4ProcessManager.hh"
void WLSOpticalPhysics::ConstructProcess()
{
G4cout << "WLSOpticalPhysics:: Add Optical Physics Processes"
<< G4endl;
fWLSProcess = new G4OpWLS();
fScintProcess = new G4Scintillation();
fScintProcess->SetScintillationYieldFactor(1.);
fScintProcess->SetTrackSecondariesFirst(true);
fCerenkovProcess = new G4Cerenkov();
fCerenkovProcess->SetMaxNumPhotonsPerStep(300);
fCerenkovProcess->SetTrackSecondariesFirst(true);
fAbsorptionProcess = new G4OpAbsorption();
fRayleighScattering = new G4OpRayleigh();
fMieHGScatteringProcess = new G4OpMieHG();
fBoundaryProcess = new G4OpBoundaryProcess();
G4ProcessManager* pManager =
G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
if (!pManager) {
std::ostringstream o;
o << "Optical Photon without a Process Manager";
G4Exception("WLSOpticalPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if (fAbsorptionOn) pManager->AddDiscreteProcess(fAbsorptionProcess);
//pManager->AddDiscreteProcess(fRayleighScattering);
//pManager->AddDiscreteProcess(fMieHGScatteringProcess);
pManager->AddDiscreteProcess(fBoundaryProcess);
fWLSProcess->UseTimeProfile("delta");
//fWLSProcess->UseTimeProfile("exponential");
pManager->AddDiscreteProcess(fWLSProcess);
fScintProcess->SetScintillationYieldFactor(1.);
fScintProcess->SetScintillationExcitationRatio(0.0);
fScintProcess->SetTrackSecondariesFirst(true);
// Use Birks Correction in the Scintillation process
G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
fScintProcess->AddSaturation(emSaturation);
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ( (*particleIterator)() ){
G4ParticleDefinition* particle = particleIterator->value();
G4String particleName = particle->GetParticleName();
pManager = particle->GetProcessManager();
if (!pManager) {
std::ostringstream o;
o << "Particle " << particleName << "without a Process Manager";
G4Exception("WLSOpticalPhysics::ConstructProcess()","",
FatalException,o.str().c_str());
}
if(fCerenkovProcess->IsApplicable(*particle)){
pManager->AddProcess(fCerenkovProcess);
pManager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
}
if(fScintProcess->IsApplicable(*particle)){
pManager->AddProcess(fScintProcess);
pManager->SetProcessOrderingToLast(fScintProcess,idxAtRest);
pManager->SetProcessOrderingToLast(fScintProcess,idxPostStep);
}
}
}
void WLSOpticalPhysics::SetNbOfPhotonsCerenkov(G4int maxNumber)
{
fCerenkovProcess->SetMaxNumPhotonsPerStep(maxNumber);
}
@@ -1,345 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSPhysicsList.cc
/// \brief Implementation of the WLSPhysicsList class
//
//
#include "WLSPhysicsList.hh"
#include "WLSPhysicsListMessenger.hh"
#include "WLSExtraPhysics.hh"
#include "WLSOpticalPhysics.hh"
#include "G4LossTableManager.hh"
#include "G4ProcessManager.hh"
#include "G4ParticleTypes.hh"
#include "G4ParticleTable.hh"
//#include "G4PhysListFactory.hh"
#include "FTFP_BERT.hh"
#include "QGSP_BERT_HP.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
#include "WLSStepMax.hh"
#include "G4ProcessTable.hh"
#include "G4PionDecayMakeSpin.hh"
#include "G4DecayWithSpin.hh"
#include "G4DecayTable.hh"
#include "G4MuonDecayChannelWithSpin.hh"
#include "G4MuonRadiativeDecayChannelWithSpin.hh"
#include "G4RadioactiveDecayPhysics.hh"
#include "G4SystemOfUnits.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsList::WLSPhysicsList(G4String physName) : G4VModularPhysicsList()
{
G4LossTableManager::Instance();
defaultCutValue = 1.*mm;
fCutForGamma = defaultCutValue;
fCutForElectron = defaultCutValue;
fCutForPositron = defaultCutValue;
// G4PhysListFactory factory;
G4VModularPhysicsList* phys = NULL;
if (physName == "QGSP_BERT_HP") {
phys = new QGSP_BERT_HP;
} else {
phys = new FTFP_BERT;
}
// if (factory.IsReferencePhysList(physName)) {
// phys = factory.GetReferencePhysList(physName);
// if(!phys)G4Exception("WLSPhysicsList::WLSPhysicsList","InvalidSetup",
// FatalException,"PhysicsList does not exist");
fMessenger = new WLSPhysicsListMessenger(this);
// }
for (G4int i = 0; ; ++i) {
G4VPhysicsConstructor* elem =
const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
if (elem == NULL) break;
G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
RegisterPhysics(elem);
}
fAbsorptionOn = true;
RegisterPhysics(new WLSExtraPhysics());
RegisterPhysics(fOpticalPhysics = new WLSOpticalPhysics(fAbsorptionOn));
RegisterPhysics(new G4RadioactiveDecayPhysics());
fStepMaxProcess = new WLSStepMax();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsList::~WLSPhysicsList()
{
delete fMessenger;
delete fStepMaxProcess;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ClearPhysics()
{
for (G4PhysConstVector::iterator p = fPhysicsVector->begin();
p != fPhysicsVector->end(); ++p) {
delete (*p);
}
fPhysicsVector->clear();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ConstructParticle()
{
G4VModularPhysicsList::ConstructParticle();
G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
MuonPlusDecayTable -> Insert(new
G4MuonDecayChannelWithSpin("mu+",0.986));
MuonPlusDecayTable -> Insert(new
G4MuonRadiativeDecayChannelWithSpin("mu+",0.014));
G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable);
G4DecayTable* MuonMinusDecayTable = new G4DecayTable();
MuonMinusDecayTable -> Insert(new
G4MuonDecayChannelWithSpin("mu-",0.986));
MuonMinusDecayTable -> Insert(new
G4MuonRadiativeDecayChannelWithSpin("mu-",0.014));
G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::ConstructProcess()
{
G4VModularPhysicsList::ConstructProcess();
SetVerbose(0);
G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin();
G4ProcessTable* processTable = G4ProcessTable::GetProcessTable();
G4VProcess* decay;
decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus());
G4ProcessManager* pManager;
pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(decayWithSpin);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
}
decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus());
pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(decayWithSpin);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
}
G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin();
decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus());
pManager = G4PionPlus::PionPlus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(poldecay);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(poldecay, idxPostStep);
pManager ->SetProcessOrdering(poldecay, idxAtRest);
}
decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus());
pManager = G4PionMinus::PionMinus()->GetProcessManager();
if (pManager) {
if (decay) pManager->RemoveProcess(decay);
pManager->AddProcess(poldecay);
// set ordering for PostStepDoIt and AtRestDoIt
pManager ->SetProcessOrdering(poldecay, idxPostStep);
pManager ->SetProcessOrdering(poldecay, idxAtRest);
}
AddStepMax();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::RemoveFromPhysicsList(const G4String& name)
{
G4bool success = false;
for (G4PhysConstVector::iterator p = fPhysicsVector->begin();
p != fPhysicsVector->end(); ++p) {
G4VPhysicsConstructor* e = (*p);
if (e->GetPhysicsName() == name) {
fPhysicsVector->erase(p);
success = true;
break;
}
}
if (!success) {
G4ExceptionDescription message;
message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found";
G4Exception("example WLSPhysicsList::RemoveFromPhysicsList()",
"ExamWLSPhysicsList01",FatalException,message);
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetAbsorption(G4bool toggle)
{
fAbsorptionOn = toggle;
RemoveFromPhysicsList("Optical");
fPhysicsVector->
push_back(fOpticalPhysics = new WLSOpticalPhysics(toggle));
fOpticalPhysics->ConstructProcess();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCuts()
{
if (verboseLevel >0) {
G4cout << "WLSPhysicsList::SetCuts:";
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
<< G4endl;
}
// set cut values for gamma at first and for e- second and next for e+,
// because some processes for e+/e- need cut values for gamma
SetCutValue(fCutForGamma, "gamma");
SetCutValue(fCutForElectron, "e-");
SetCutValue(fCutForPositron, "e+");
if (verboseLevel>0) DumpCutValuesTable();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForGamma(G4double cut)
{
fCutForGamma = cut;
SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForElectron(G4double cut)
{
fCutForElectron = cut;
SetParticleCuts(fCutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetCutForPositron(G4double cut)
{
fCutForPositron = cut;
SetParticleCuts(fCutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetStepMax(G4double step)
{
fStepMaxProcess->SetStepMax(step);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax* WLSPhysicsList::GetStepMaxProcess()
{
return fStepMaxProcess;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::AddStepMax()
{
// Step limitation seen as a process
auto particleIterator=GetParticleIterator();
particleIterator->reset();
while ((*particleIterator)()){
G4ParticleDefinition* particle = particleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (fStepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
{
if (pmanager) pmanager ->AddDiscreteProcess(fStepMaxProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetNbOfPhotonsCerenkov(G4int maxNumber)
{
fOpticalPhysics->SetNbOfPhotonsCerenkov(maxNumber);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsList::SetVerbose(G4int verbose)
{
fOpticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetScintillationProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetRayleighScatteringProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetMieHGScatteringProcess()->SetVerboseLevel(verbose);
fOpticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose);
}
@@ -1,233 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSPhysicsListMessenger.cc
/// \brief Implementation of the WLSPhysicsListMessenger class
//
//
#include "globals.hh"
#include "WLSPhysicsListMessenger.hh"
#include "WLSPhysicsList.hh"
#include "G4UIdirectory.hh"
#include "G4UIcmdWithABool.hh"
#include "G4UIcmdWithAString.hh"
#include "G4UIcmdWithAnInteger.hh"
#include "G4UIcmdWithoutParameter.hh"
#include "G4UIcmdWithADoubleAndUnit.hh"
#include "G4PhaseSpaceDecayChannel.hh"
#include "G4PionRadiativeDecayChannel.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsListMessenger::WLSPhysicsListMessenger(WLSPhysicsList* pPhys)
: fPhysicsList(pPhys)
{
fDirectory = new G4UIdirectory("/WLS/phys/");
fDirectory->SetGuidance("WLSPhysicsList control");
fSetAbsorptionCMD = new G4UIcmdWithABool("/WLS/setAbsorption", this);
fSetAbsorptionCMD->SetGuidance("Turn on or off absorption process");
fSetAbsorptionCMD->AvailableForStates(G4State_Idle);
fVerboseCmd = new G4UIcmdWithAnInteger("/WLS/phys/verbose",this);
fVerboseCmd->SetGuidance("set verbose for physics processes");
fVerboseCmd->SetParameterName("verbose",true);
fVerboseCmd->SetDefaultValue(1);
fVerboseCmd->SetRange("verbose>=0");
fVerboseCmd->AvailableForStates(G4State_Idle);
fCerenkovCmd =
new G4UIcmdWithAnInteger("/WLS/phys/cerenkovMaxPhotons",this);
fCerenkovCmd->SetGuidance("set max nb of photons per step");
fCerenkovCmd->SetParameterName("MaxNumber",false);
fCerenkovCmd->SetRange("MaxNumber>=0");
fCerenkovCmd->AvailableForStates(G4State_Idle);
fGammaCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/gammaCut",this);
fGammaCutCMD->SetGuidance("Set gamma cut");
fGammaCutCMD->SetParameterName("Gcut",false);
fGammaCutCMD->SetUnitCategory("Length");
fGammaCutCMD->SetRange("Gcut>0.0");
fGammaCutCMD->SetDefaultUnit("mm");
fGammaCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fElectCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/electronCut",this);
fElectCutCMD->SetGuidance("Set electron cut");
fElectCutCMD->SetParameterName("Ecut",false);
fElectCutCMD->SetUnitCategory("Length");
fElectCutCMD->SetRange("Ecut>0.0");
fElectCutCMD->SetDefaultUnit("mm");
fElectCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fPosCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/positronCut",this);
fPosCutCMD->SetGuidance("Set positron cut");
fPosCutCMD->SetParameterName("Pcut",false);
fPosCutCMD->SetUnitCategory("Length");
fPosCutCMD->SetRange("Pcut>0.0");
fPosCutCMD->SetDefaultUnit("mm");
fPosCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fAllCutCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/allCuts",this);
fAllCutCMD->SetGuidance("Set cut for all");
fAllCutCMD->SetParameterName("cut",false);
fAllCutCMD->SetUnitCategory("Length");
fAllCutCMD->SetRange("cut>0.0");
fAllCutCMD->SetDefaultUnit("mm");
fAllCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/WLS/phys/stepMax",this);
fStepMaxCMD->SetGuidance("Set max. step length in the detector");
fStepMaxCMD->SetParameterName("mxStep",false);
fStepMaxCMD->SetUnitCategory("Length");
fStepMaxCMD->SetRange("mxStep>0.0");
fStepMaxCMD->SetDefaultUnit("mm");
fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fClearPhysicsCMD =
new G4UIcmdWithoutParameter("/WLS/phys/clearPhysics",this);
fClearPhysicsCMD->SetGuidance("Clear the physics list");
fClearPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fRemovePhysicsCMD = new G4UIcmdWithAString("/WLS/phys/removePhysics",this);
fRemovePhysicsCMD->
SetGuidance("Remove a physics process from Physics List");
fRemovePhysicsCMD->SetParameterName("PList",false);
fRemovePhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
fListCMD = new G4UIcmdWithoutParameter("/WLS/phys/list",this);
fListCMD->SetGuidance("Available Physics Lists");
fListCMD->AvailableForStates(G4State_Idle);
fDecayDirectory = new G4UIdirectory("/decay/");
fDecayDirectory->SetGuidance("Decay chain control commands.");
fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this);
fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu");
fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this);
fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu");
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSPhysicsListMessenger::~WLSPhysicsListMessenger()
{
delete fVerboseCmd;
delete fCerenkovCmd;
delete fSetAbsorptionCMD;
delete fGammaCutCMD;
delete fElectCutCMD;
delete fPosCutCMD;
delete fAllCutCMD;
delete fClearPhysicsCMD;
delete fRemovePhysicsCMD;
delete fListCMD;
delete fPienuCMD;
delete fPimunuCMD;
delete fDirectory;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSPhysicsListMessenger::SetNewValue(G4UIcommand* command,
G4String newValue)
{
if( command == fSetAbsorptionCMD ) {
fPhysicsList->SetAbsorption(G4UIcmdWithABool::GetNewBoolValue(newValue));
}
else if( command == fVerboseCmd ) {
fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));
}
else if( command == fCerenkovCmd ) {
fPhysicsList->
SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));
}
else if (command == fPienuCMD) {
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
G4VDecayChannel* mode =
new G4PhaseSpaceDecayChannel("pi+",1.0,2,"e+","nu_e");
G4DecayTable* table = new G4DecayTable();
table->Insert(mode);
// mode = new G4PionRadiativeDecayChannel("pi+",0.000017);
// table->Insert(mode);
particleDef->SetDecayTable(table);
}
else if (command == fPimunuCMD) {
G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
G4VDecayChannel* mode =
new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu");
G4DecayTable* table = new G4DecayTable();
table->Insert(mode);
particleDef->SetDecayTable(table);
}
else if (command == fGammaCutCMD) {
fPhysicsList->SetCutForGamma(fGammaCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fElectCutCMD) {
fPhysicsList->SetCutForElectron(fElectCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fPosCutCMD) {
fPhysicsList->SetCutForPositron(fPosCutCMD
->GetNewDoubleValue(newValue));
}
else if (command == fAllCutCMD) {
G4double cut = fAllCutCMD->GetNewDoubleValue(newValue);
fPhysicsList->SetCutForGamma(cut);
fPhysicsList->SetCutForElectron(cut);
fPhysicsList->SetCutForPositron(cut);
}
else if (command == fStepMaxCMD) {
fPhysicsList->SetStepMax(fStepMaxCMD
->GetNewDoubleValue(newValue));
}
else if (command == fClearPhysicsCMD) {
fPhysicsList->ClearPhysics();
}
else if (command == fRemovePhysicsCMD) {
G4String name = newValue;
fPhysicsList->RemoveFromPhysicsList(name);
}
}
@@ -62,8 +62,7 @@ void WLSRunAction::BeginOfRunAction(const G4Run* aRun)
{
G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
G4RunManager::GetRunManager()->SetRandomNumberStore(true);
G4RunManager::GetRunManager()->SetRandomNumberStoreDir("random/");
G4RunManager::GetRunManager()->SetRandomNumberStore(false);
if (fAutoSeed) {
// automatic (time-based) random seeds for each run
@@ -1,97 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSStepMax.cc
/// \brief Implementation of the WLSStepMax class
//
//
#include "G4Track.hh"
#include "G4VParticleChange.hh"
#include "WLSStepMax.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::WLSStepMax(const G4String& aName)
: G4VDiscreteProcess(aName), fMaxChargedStep(DBL_MAX)
{
if (verboseLevel>0) {
G4cout << GetProcessName() << " is created "<< G4endl;
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::~WLSStepMax() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSStepMax::WLSStepMax(WLSStepMax& right) : G4VDiscreteProcess(right) { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4bool WLSStepMax::IsApplicable(const G4ParticleDefinition& particle)
{
return (particle.GetPDGCharge() != 0.);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSStepMax::SetStepMax(G4double step) { fMaxChargedStep = step ; }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double WLSStepMax::PostStepGetPhysicalInteractionLength(
const G4Track&,
G4double,
G4ForceCondition* condition)
{
// condition is set to "Not Forced"
*condition = NotForced;
G4double ProposedStep = DBL_MAX;
if ( fMaxChargedStep > 0.) ProposedStep = fMaxChargedStep;
return ProposedStep;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4VParticleChange* WLSStepMax::PostStepDoIt(const G4Track& aTrack,
const G4Step& )
{
// do nothing
aParticleChange.Initialize(aTrack);
return &aParticleChange;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4double WLSStepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*)
{
return 0.;
}
@@ -1,211 +0,0 @@
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
//
/// \file optical/wls/src/WLSSteppingVerbose.cc
/// \brief Implementation of the WLSSteppingVerbose class
//
//
#include "G4UnitsTable.hh"
#include "WLSSteppingVerbose.hh"
#include "WLSSteppingAction.hh"
// Print out of the steps
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSSteppingVerbose::WLSSteppingVerbose()
{
G4VSteppingVerbose::SetSilent(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
WLSSteppingVerbose::~WLSSteppingVerbose() { }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSSteppingVerbose::StepInfo()
{
CopyState();
G4int prec = G4cout.precision(8);
// if (fTrack->GetDefinition()->GetParticleName() != "opticalphoton") return;
if ( verboseLevel >= 1 ) {
if ( verboseLevel >= 4 ) VerboseTrack();
if ( verboseLevel >= 3 ) {
G4cout << G4endl;
G4cout << std::setw( 5) << "#Step#" << " "
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng"
<< std::setw(10) << "TrakLeng"
<< std::setw(10) << "NextVolu"
<< std::setw(10) << "Process"
<< std::setw(10) << "Dir_x" << " "
<< std::setw(10) << "Dir_y" << " "
<< std::setw(10) << "Dir_z" << " "
<< G4endl;
}
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->
GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if ( fTrack->GetNextVolume() != 0 ) {
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << std::setw(10) << "OutOfWorld";
}
if ( fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0 ) {
G4cout << " "
<< std::setw(10) << fStep->
GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName();
} else {
G4cout << " UserLimit";
}
//G4cout << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().x(),"Length")
// << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().y(),"Length")
// << std::setw(12) << G4BestUnit(fTrack->
// GetMomentumDirection().z(),"Length");
G4cout << G4endl;
if ( verboseLevel == 2 ) {
G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
fN2ndariesAlongStepDoIt +
fN2ndariesPostStepDoIt;
if ( tN2ndariesTot>0 ) {
G4cout << " :----- List of 2ndaries - "
<< "#SpawnInStep=" << std::setw(3) << tN2ndariesTot
<< "(Rest=" << std::setw(2) << fN2ndariesAtRestDoIt
<< ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
<< ",Post=" << std::setw(2) << fN2ndariesPostStepDoIt
<< "), "
<< "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
<< " ---------------"
<< G4endl;
for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
lp1<(*fSecondary).size(); lp1++){
G4cout << " : "
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
<< std::setw(6)
<< G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
<< std::setw(10)
<< (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
G4cout << G4endl;
}
G4cout << " :-----------------------------"
<< "----------------------------------"
<< "-- EndOf2ndaries Info ---------------"
<< G4endl;
}
}
}
G4cout.precision(prec);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void WLSSteppingVerbose::TrackingStarted()
{
CopyState();
G4int prec = G4cout.precision(3);
// if (fTrack->GetDefinition()->GetParticleName() != "opticalphoton") return;
if ( verboseLevel > 0 ) {
G4cout << G4endl;
G4cout << "*******************************************************"
<< "**************************************************"
<< G4endl;
G4cout << "* G4Track Information: "
<< " Particle = " << fTrack->GetDefinition()->GetParticleName()
<< ","
<< " Track ID = " << fTrack->GetTrackID()
<< ","
<< " Parent ID = " << fTrack->GetParentID()
<< G4endl;
G4cout << "*******************************************************"
<< "**************************************************"
<< G4endl;
G4cout << G4endl;
G4cout << std::setw( 5) << "Step#" << " "
<< std::setw(10) << "X" << " "
<< std::setw(10) << "Y" << " "
<< std::setw(10) << "Z" << " "
<< std::setw(10) << "KineE" << " "
<< std::setw(10) << "dEStep" << " "
<< std::setw(10) << "StepLeng" << " "
<< std::setw(10) << "TrakLeng" << " "
<< std::setw(10) << "Volume" << " "
<< std::setw(10) << "Process" << G4endl;
G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().x(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().y(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetPosition().z(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->
GetTotalEnergyDeposit(),"Energy")
<< std::setw(10) << G4BestUnit(fStep->GetStepLength(),"Length")
<< std::setw(10) << G4BestUnit(fTrack->GetTrackLength(),"Length");
if ( fTrack->GetNextVolume() ) {
G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
} else {
G4cout << std::setw(10) << "OutOfWorld";
}
G4cout << " initStep" << G4endl;
}
G4cout.precision(prec);
}
+10 -29
View File
@@ -43,9 +43,10 @@
#include "G4UImanager.hh"
#include "Randomize.hh"
#include "FTFP_BERT.hh"
#include "G4OpticalPhysics.hh"
#include "G4EmStandardPhysics_option4.hh"
#include "WLSPhysicsList.hh"
#include "WLSDetectorConstruction.hh"
#include "WLSActionInitialization.hh"
@@ -82,44 +83,24 @@ int main(int argc,char** argv)
G4RunManager * runManager = new G4RunManager;
#endif
G4String physName = "QGSP_BERT_HP";
#ifndef WIN32
G4int c = 0;
while ((c=getopt(argc,argv,"p")) != -1)
{
switch (c)
{
case 'p':
physName = optarg;
G4cout << "Physics List used is " << physName << G4endl;
break;
case ':': /* -p without operand */
fprintf(stderr,
"Option -%c requires an operand\n", optopt);
break;
case '?':
fprintf(stderr,
"Unrecognised option: -%c\n", optopt);
}
}
#endif
// Set mandatory initialization classes
//
// Detector construction
WLSDetectorConstruction* detector = new WLSDetectorConstruction();
runManager->SetUserInitialization(detector);
// Physics list
runManager->SetUserInitialization(new WLSPhysicsList(physName));
G4VModularPhysicsList* physicsList = new FTFP_BERT;
physicsList->ReplacePhysics(new G4EmStandardPhysics_option4());
G4OpticalPhysics* opticalPhysics = new G4OpticalPhysics();
physicsList->RegisterPhysics(opticalPhysics);
runManager->SetUserInitialization(physicsList);
// User action initialization
runManager->SetUserInitialization(new WLSActionInitialization(detector));
// Initialize visualization
//
G4VisManager* visManager = new G4VisExecutive;
// G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
// G4VisManager* visManager = new G4VisExecutive("Quiet");
visManager->Initialize();
// Get the pointer to the User Interface manager
+5 -9
View File
@@ -1,15 +1,13 @@
#
# Macro file for the initialization phase of wls
# Macro file for wls example
#
#/run/verbose 1
#/control/verbose 1
#/event/verbose 1
#/tracking/verbose 1
/run/verbose 1
/control/verbose 1
/event/verbose 0
/tracking/verbose 0
#
/run/initialize
#
#/WLS/phys/verbose 1
#
/gps/particle opticalphoton
/gps/ene/type Mono
/gps/ene/mono 2.10 eV
@@ -22,7 +20,5 @@
/gps/ang/maxtheta 90.0 deg
/gps/pos/centre 0.0 0.0 0.0 cm
#
#/control/execute vis.mac
#
/run/beamOn 200
#
+299 -270
View File
@@ -1,6 +1,10 @@
############################################
!!! WARNING - FPE detection is activated !!!
############################################
**************************************************************
Geant4 version Name: geant4-10-05-ref-06 (30-June-2019)
Geant4 version Name: geant4-10-06-ref-00 (6-December-2019)
Copyright : Geant4 Collaboration
References : NIM A 506 (2003), 250-303
: IEEE-TNS 53 (2006), 270-278
@@ -8,16 +12,9 @@
WWW : http://geant4.org/
**************************************************************
<<< Geant4 Physics List simulation engine: QGSP_BERT_HP
<<< Geant4 Physics List simulation engine: FTFP_BERT
RegisterPhysics: G4EmStandard
RegisterPhysics: G4GammaLeptoNuclearPhys
RegisterPhysics: Decay
RegisterPhysics: hElasticWEL_CHIPS_HP
RegisterPhysics: hInelastic QGSP_BERT_HP
RegisterPhysics: stopping
RegisterPhysics: ionInelasticFTFP_BIC
G4VModularPhysicsList::ReplacePhysics: G4EmStandardwith type : 2 is replaces with G4EmStandard_opt4
Visualization Manager instantiating with verbosity "warnings (3)"...
Visualization Manager initialising...
Registering graphics systems...
@@ -63,6 +60,9 @@ End of Run User Vis Actions: none
Some /vis commands (optionally) take a string to specify colour.
"/vis/list" to see available colours.
/event/verbose 0
/tracking/verbose 0
/run/initialize
G4NistMaterialBuilder::FindOrBuildMaterial G4_Galactic
G4NistMaterialBuilder: BuildMaterial #286
New material nComponents= 1
@@ -110,137 +110,157 @@ New material TiO2 is prepeared nMaterials= 314 nComponents= 788 nCurrent= 2
G4NistMaterialBuilder: BuildMaterial #313
New material nComponents= 2
G4NistElementBuilder: Build Element <Ti> Z= 22 Aeff= 47.8667 with natural isotope composition
/cvmfs/geant4.cern.ch/share/data/G4NDL4.5
@@@ G4ParticleHPInelastic instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic
@@@ G4ParticleHPInelasticData instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
NeutronHP: /Inelastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/8_17_Oxygen
WLSExtraPhysics:: Add Extra Physics Processes
WLSOpticalPhysics:: Add Optical Physics Processes
FTFP_BERT : new threshold between BERT and FTFP is over the interval
for pions : 3 to 6 GeV
for kaons : 3 to 6 GeV
for proton : 3 to 6 GeV
for neutron : 3 to 6 GeV
### Adding tracking cuts for neutron TimeCut(ns)= 10000 KinEnergyCut(MeV)= 0
### Birks coefficients used in run time
Polystyrene 0.126 mm/MeV 0.01323 g/cm^2/MeV massFactor= 101.167 effCharge= 0.027027
/gps/particle opticalphoton
/gps/ene/type Mono
/gps/ene/mono 2.10 eV
/gps/pos/type Plane
/gps/pos/shape Circle
/gps/pos/radius 0.5 mm
/gps/ang/type iso
/gps/ang/mintheta 180.0 deg
/gps/ang/maxtheta 90.0 deg
/gps/pos/centre 0.0 0.0 0.0 cm
/run/beamOn 200
### === Deexcitation model UAtomDeexcitation is activated for 1 region:
DefaultRegionForTheWorld 1 1 0
### === Auger cascade flag: 1
### === Ignore cuts flag: 1
DefaultRegionForTheWorld 1 0 0
### === Ignore cuts flag: 0
phot: for gamma SubType=12 BuildTable=0
LambdaPrime table from 200 keV to 100 TeV in 61 bins
LambdaPrime table from 200 keV to 100 TeV in 174 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermorePhElectric : Emin= 0 eV Emax= 100 TeV SauterGavrila Fluo
compt: for gamma SubType=13 BuildTable=1
Lambda table from 100 eV to 1 MeV, 7 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 56 bins
Lambda table from 100 eV to 1 MeV, 20 bins/decade, spline: 1
LambdaPrime table from 1 MeV to 100 TeV in 160 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
Klein-Nishina : Emin= 0 eV Emax= 100 TeV
LowEPComptonModel : Emin= 0 eV Emax= 20 MeV Fluo
KleinNishina : Emin= 20 MeV Emax= 100 TeV Fluo
conv: for gamma SubType=14 BuildTable=1
Lambda table from 1.022 MeV to 100 TeV, 18 bins/decade, spline: 1
Lambda table from 1.022 MeV to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
BetheHeitler : Emin= 0 eV Emax= 80 GeV ModifiedTsai
BetheHeitlerLPM : Emin= 80 GeV Emax= 100 TeV ModifiedTsai
BetheHeitler5D : Emin= 0 eV Emax= 100 TeV ModifiedTsai
Rayl: for gamma SubType=11 BuildTable=1
Lambda table from 100 eV to 100 keV, 7 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 63 bins
Lambda table from 100 eV to 100 keV, 20 bins/decade, spline: 0
LambdaPrime table from 100 keV to 100 TeV in 180 bins
===== EM models for the G4Region DefaultRegionForTheWorld ======
LivermoreRayleigh : Emin= 0 eV Emax= 100 TeV CullenGenerator
msc: for e- SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
LowEnergyIoni : Emin= 0 eV Emax= 100 keV deltaVI
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e- SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e-, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for e+ SubType= 10
RangeFactor= 0.04, stepLimType: 1, latDisp: 1
RangeFactor= 0.08, stepLimType: 2, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 MeV Nbins=42 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=42 100 MeV - 100 TeV
GoudsmitSaunderson : Emin= 0 eV Emax= 100 MeV Nbins=120 100 eV - 100 MeV
WentzelVIUni : Emin= 100 MeV Emax= 100 TeV Nbins=120 100 MeV - 100 TeV
eIoni: for e+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.2, 0.01 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
MollerBhabha : Emin= 0 eV Emax= 100 TeV
PenIoni : Emin= 0 eV Emax= 100 keV
MollerBhabha : Emin= 100 keV Emax= 100 TeV deltaVI
eBrem: for e+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
LPM flag: 1 for E > 1 GeV, VertexHighEnergyTh(GeV)= 100000
===== EM models for the G4Region DefaultRegionForTheWorld ======
eBremSB : Emin= 0 eV Emax= 1 GeV ModifiedTsai
eBremLPM : Emin= 1 GeV Emax= 100 TeV ModifiedTsai
eBremSB : Emin= 0 eV Emax= 1 GeV AngularGen2BS
eBremLPM : Emin= 1 GeV Emax= 100 TeV AngularGen2BS
ePairProd: for e+ SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 25x1001 from 0.1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
ePairProd : Emin= 0 eV Emax= 100 TeV
annihil: for e+, integral:1 SubType=5 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
eplus2gg : Emin= 0 eV Emax= 100 TeV
CoulombScat: for e+, integral:1 SubType=1 BuildTable=1
Lambda table from 100 MeV to 100 TeV, 7 bins/decade, spline: 1
Lambda table from 100 MeV to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 100 MeV Emax= 100 TeV
msc: for proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for proton SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
Bragg : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for proton SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for proton SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
@@ -251,127 +271,119 @@ msc: for GenericIon SubType= 10
UrbanMsc : Emin= 0 eV Emax= 100 TeV
ionIoni: for GenericIon SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.02
Stopping Power data for 17 ion/material pairs
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.001 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
=======================================================================
====== Radioactive Decay Physics Parameters ========
=======================================================================
Max life time 1.4427e+06 ps
Internal e- conversion flag 1
Stored internal conversion coefficients 1
Enable correlated gamma emission 0
Max 2J for sampling of angular correlations 10
Atomic de-excitation enabled 1
Auger electron emission enabled 1
Auger cascade enabled 1
Check EM cuts disabled for atomic de-excitation 1
Use Bearden atomic level energies 0
=======================================================================
ParamICRU73 : Emin= 0 eV Emax= 100 TeV deltaVI
nuclearStopping: for GenericIon SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for alpha SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
UrbanMsc : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
ionIoni: for alpha SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.02
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.02
===== EM models for the G4Region DefaultRegionForTheWorld ======
BraggIon : Emin= 0 eV Emax=7.9452 MeV
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV
BraggIon : Emin= 0 eV Emax=7.9452 MeV deltaVI
BetheBloch : Emin=7.9452 MeV Emax= 100 TeV deltaVI
nuclearStopping: for alpha SubType=8 BuildTable=0
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU49NucStopping : Emin= 0 eV Emax= 1 MeV
msc: for anti_proton SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for anti_proton SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 2 MeV
BetheBloch : Emin= 2 MeV Emax= 100 TeV
ICRU73QO : Emin= 0 eV Emax= 2 MeV deltaVI
BetheBloch : Emin= 2 MeV Emax= 100 TeV deltaVI
hBrems: for anti_proton SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for anti_proton SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 17x1001 from 7.50618 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for anti_proton, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
Bragg : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for kaon+ SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for kaon+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for kaon- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for kaon- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV
ICRU73QO : Emin= 0 eV Emax=1.05231 MeV deltaVI
BetheBloch : Emin=1.05231 MeV Emax= 100 TeV deltaVI
hBrems: for kaon- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for kaon- SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 18x1001 from 3.94942 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
@@ -383,61 +395,61 @@ CoulombScat: for kaon-, integral:1 SubType=1 BuildTable=1
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
Bragg : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV
muPairProd: for mu+ SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for mu+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for mu- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0, polarAngLim(deg)= 180
RangeFactor= 0.2, stepLimType: 0, latDisp: 1, polarAngLim(deg)= 180
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
muIoni: for mu- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax= 200 keV
BetheBloch : Emin= 200 keV Emax= 1 GeV
ICRU73QO : Emin= 0 eV Emax= 200 keV deltaVI
BetheBloch : Emin= 200 keV Emax= 1 GeV deltaVI
MuBetheBloch : Emin= 1 GeV Emax= 100 TeV
muBrems: for mu- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
MuBrem : Emin= 0 eV Emax= 100 TeV
muPairProd: for mu- SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 21x1001 from 1 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
muPairProd : Emin= 0 eV Emax= 100 TeV
@@ -447,77 +459,61 @@ CoulombScat: for mu-, integral:1 SubType=1 BuildTable=1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Inelastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
NeutronHP: /Inelastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic/CrossSection/8_17_Oxygen
NeutronHP: /Elastic file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/6_nat_Carbon
NeutronHP: /Elastic file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Elastic/CrossSection/8_17_Oxygen
@@@ G4ParticleHPInelastic instantiated for particle neutron data directory variable is G4NEUTRONHPDATA pointing to /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Inelastic
NeutronHP: /Capture file for Z = 6, A = 12 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 6, A = 13 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/6_nat_Carbon
NeutronHP: /Capture file for Z = 8, A = 18 is not found and NeutronHP will use /cvmfs/geant4.cern.ch/share/data/G4NDL4.5/Capture/CrossSection/8_17_Oxygen
msc: for pi+ SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi+ SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
Bragg : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
Bragg : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi+ SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for pi+ SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
CoulombScat: for pi+, integral:1 SubType=1 BuildTable=1
Lambda table from threshold to 100 TeV, 7 bins/decade, spline: 1
Lambda table from threshold to 100 TeV, 20 bins/decade, spline: 1
ThetaMin(p) < Theta(degree) < 180 pLimit(GeV^1)= 0.139531
===== EM models for the G4Region DefaultRegionForTheWorld ======
eCoulombScattering : Emin= 0 eV Emax= 100 TeV
msc: for pi- SubType= 10
RangeFactor= 0.2, stepLimType: 0, latDisp: 0
RangeFactor= 0.2, stepLimType: 0, latDisp: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=84 100 eV - 100 TeV
WentzelVIUni : Emin= 0 eV Emax= 100 TeV Nbins=240 100 eV - 100 TeV
hIoni: for pi- SubType=2
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
StepFunction=(0.2, 0.1 mm), integ: 1, fluct: 1, linLossLim= 0.01
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
StepFunction=(0.1, 0.02 mm), integ: 1, fluct: 1, linLossLim= 0.01
===== EM models for the G4Region DefaultRegionForTheWorld ======
ICRU73QO : Emin= 0 eV Emax=297.505 keV
BetheBloch : Emin=297.505 keV Emax= 100 TeV
ICRU73QO : Emin= 0 eV Emax=297.505 keV deltaVI
BetheBloch : Emin=297.505 keV Emax= 100 TeV deltaVI
hBrems: for pi- SubType=3
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
===== EM models for the G4Region DefaultRegionForTheWorld ======
hBrem : Emin= 0 eV Emax= 100 TeV
hPairProd: for pi- SubType=4
dE/dx and range tables from 100 eV to 100 TeV in 84 bins
Lambda tables from threshold to 100 TeV, 7 bins/decade, spline: 1
dE/dx and range tables from 100 eV to 100 TeV in 240 bins
Lambda tables from threshold to 100 TeV, 20 bins/decade, spline: 1
Sampling table 20x1001 from 1.11656 GeV to 100 TeV
===== EM models for the G4Region DefaultRegionForTheWorld ======
hPairProd : Emin= 0 eV Emax= 100 TeV
@@ -531,16 +527,32 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
====================================================================
HADRONIC PROCESSES SUMMARY (verbose level 1)
---------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: G4NeutronInelasticXS: 0 eV ---> 100 TeV
Process: nCapture
Model: nRadCapture: 0 eV ---> 100 TeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nKiller
---------------------------------------------------
Hadronic Processes for GenericIon
Process: ionInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: RadioactiveDecay
---------------------------------------------------
Hadronic Processes for He3
@@ -549,8 +561,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: He3Inelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -561,8 +573,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: alphaInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -611,8 +623,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for anti_neutron
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Model: hElasticLHEP: 0 eV ---> 100.1 MeV
Model: AntiAElastic: 100 MeV ---> 100 TeV
Cr_sctns: AntiAGlauber: 0 eV ---> 100 TeV
Process: anti_neutronInelastic
Model: FTFP: 0 eV ---> 100 TeV
@@ -656,14 +669,14 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: dInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for e+
Process: positronNuclear
Process: electronNuclear
Model: G4ElectroVDNuclearModel: 0 eV ---> 1 PeV
Cr_sctns: ElectroNuclearXS: 0 eV ---> 100 TeV
@@ -678,7 +691,7 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Hadronic Processes for gamma
Process: photonNuclear
Model: BertiniCascade: 0 eV ---> 3.5 GeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: TheoFSGenerator: 3 GeV ---> 100 TeV
Cr_sctns: PhotoNuclearXS: 0 eV ---> 100 TeV
@@ -690,11 +703,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon+Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonPlusInelasticXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for kaon-
@@ -704,11 +715,9 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Process: kaon-Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
Cr_sctns: ChipsKaonMinusInelasticXS: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -721,8 +730,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: lambdaInelastic
Model: BertiniCascade: 0 eV ---> 6 GeV
Model: FTFP: 2 GeV ---> 100 TeV
Cr_sctns: ChipsHyperonInelasticXS: 0 eV ---> 100 TeV
Model: FTFP: 3 GeV ---> 100 TeV
Cr_sctns: Glauber-Gribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for mu+
@@ -740,61 +749,28 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Process: muMinusCaptureAtRest
---------------------------------------------------
Hadronic Processes for neutron
Process: hadElastic
Model: hElasticCHIPS: 19.5 MeV ---> 100 TeV
Model: NeutronHPElastic: 0 eV ---> 20 MeV
Cr_sctns: NeutronHPElasticXS: 0 eV ---> 20 MeV
Cr_sctns: G4NeutronElasticXS: 0 eV ---> 100 TeV
Process: neutronInelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 19.9 MeV ---> 9.9 GeV
Model: NeutronHPInelastic: 0 eV ---> 20 MeV
Cr_sctns: NeutronHPInelasticXS: 0 eV ---> 20 MeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: nCapture
Model: NeutronHPCapture: 0 eV ---> 20 MeV
Model: nRadCapture: 19.9 MeV ---> 100 TeV
Cr_sctns: NeutronHPCaptureXS: 0 eV ---> 20 MeV
Cr_sctns: G4NeutronCaptureXS: 0 eV ---> 100 TeV
Process: nFission
Model: NeutronHPFission: 0 eV ---> 20 MeV
Model: G4LFission: 19.9 MeV ---> 100 TeV
Cr_sctns: NeutronHPFissionXS: 0 eV ---> 20 MeV
Cr_sctns: GheishaFissionXS: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi+
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi+Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
Hadronic Processes for pi-
Process: hadElastic
Model: hElasticLHEP: 0 eV ---> 1.0001 GeV
Model: hElasticGlauber: 1 GeV ---> 100 TeV
Model: hElasticGlauber: 0 eV ---> 100 TeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: pi-Inelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: hBertiniCaptureAtRest
@@ -807,9 +783,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
Process: protonInelastic
Model: QGSP: 12 GeV ---> 100 TeV
Model: FTFP: 9.5 GeV ---> 25 GeV
Model: BertiniCascade: 0 eV ---> 9.9 GeV
Model: FTFP: 3 GeV ---> 100 TeV
Model: BertiniCascade: 0 eV ---> 6 GeV
Cr_sctns: BarashenkovGlauberGribov: 0 eV ---> 100 TeV
---------------------------------------------------
@@ -820,8 +795,8 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
Process: tInelastic
Model: Binary Light Ion Cascade: 0 eV /n ---> 4 GeV/n
Model: FTFP: 2 GeV/n ---> 100 TeV/n
Model: Binary Light Ion Cascade: 0 eV /n ---> 6 GeV/n
Model: FTFP: 3 GeV/n ---> 100 TeV/n
Cr_sctns: Glauber-Gribov Nucl-nucl: 0 eV ---> 100 TeV
================================================================
@@ -830,29 +805,83 @@ CoulombScat: for pi-, integral:1 SubType=1 BuildTable=1
=======================================================================
Type of pre-compound inverse x-section 3
Pre-compound model active 1
Pre-compound low energy (MeV) 0.1
Pre-compound excitation low energy (MeV) 0.1
Pre-compound excitation high energy (MeV) 30
Type of de-excitation inverse x-section 3
Type of de-excitation factory Evaporation+GEM
Number of de-excitation channels 68
Min excitation energy (keV) 0.01
Min energy per nucleon for multifragmentation (MeV) 1e+05
Min energy per nucleon for multifragmentation (MeV) 2e+05
Limit excitation energy for Fermi BreakUp (MeV) 20
Level density (1/MeV) 0.075
Model of level density flag 1
Time limit for long lived isomeres (ns) 1442.7
Use simple level density model 1
Use discrete excitation energy of the residual 0
Time limit for long lived isomeres (ns) 1e+12
Internal e- conversion flag 1
Store e- internal conversion data 1
Electron internal conversion ID 0
Store e- internal conversion data 0
Electron internal conversion ID 2
Correlated gamma emission flag 0
Max 2J for sampling of angular correlations 10
Upload data before 1st event for Z < 9
=======================================================================
========= Table of registered couples ==============================
Index : 0 used in the geometry : Yes
Material : G4_AIR
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 1 used in the geometry : Yes
Material : Coating
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.94056 keV e- 351.877 keV e+ 342.545 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 2 used in the geometry : Yes
Material : Polystyrene
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.11555 keV e- 283.792 keV e+ 276.265 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 3 used in the geometry : Yes
Material : PMMA
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 2.40367 keV e- 307.625 keV e+ 299.466 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
Index : 4 used in the geometry : Yes
Material : G4_Al
Range cuts : gamma 700 um e- 700 um e+ 700 um proton 700 um
Energy thresholds : gamma 5.85564 keV e- 460.395 keV e+ 442.201 keV proton 70 keV
Region(s) which use this couple :
DefaultRegionForTheWorld
====================================================================
G4VisManager: Using G4TrajectoryDrawByCharge as fallback trajectory model.
See commands in /vis/modeling/trajectories/ for other options.
### Run 0 starts.
### Run 0 start.
--------- Ranecu engine status ---------
Initial seed (index) = 123
Current couple of seeds = 960416485, 2004255415
----------------------------------------
Run terminated.
Run Summary
Number of events processed : 200
User=0.580000s Real=0.578111s Sys=0.000000s
Graphics systems deleted.
Visualization Manager deleting...
G4 kernel has come to Quit state.
================== Deleting memory pools ===================
Number of memory pools allocated: 13 of which, static: 0
Dynamic pools deleted: 13 / Total memory freed: 0.019 MB
============================================================
RunManagerKernel is deleted. Good bye :)