Import Geant4 10.3.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-12-09 12:35:28 +01:00
parent 4ec577e5c4
commit a3452e42ac
3514 changed files with 210500 additions and 89628 deletions
@@ -68,6 +68,7 @@
#include "G4VisAttributes.hh"
#include "G4Colour.hh"
#include "G4Log.hh"
#include "G4SDManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -114,7 +115,7 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
UniverseVisAtt->SetVisibility(true);
UniverseVisAtt->SetForceWireframe(true);
World_log->SetVisAttributes(UniverseVisAtt);
World_log->SetVisAttributes (G4VisAttributes::Invisible);
World_log->SetVisAttributes (G4VisAttributes::GetInvisible());
@@ -139,15 +140,15 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
G4cout << "Using mirror reflecting surface " << G4endl ;
G4VPhysicalVolume* Mirror ;
Mirror = ConstructMirror(World_phys);
// G4VPhysicalVolume* Mirror =
ConstructMirror(World_phys);
#elif ULTRA_GROUND_USE
G4cout << "Using ground reflecting surface " << G4endl ;
G4VPhysicalVolume* Ground ;
Ground = ConstructGround(World_phys);
// G4VPhysicalVolume* Ground =
ConstructGround(World_phys);
#else
@@ -163,6 +164,7 @@ World_phys = new G4PVPlacement(0,G4ThreeVector(),"World",World_log,0,false,0);
void UltraDetectorConstruction::ConstructSDandField()
{
UltraPMTSD* PMTSD = new UltraPMTSD("PMTSD");
G4SDManager::GetSDMpointer()->AddNewDetector(PMTSD);
SetSensitiveDetector(logicalPMT,PMTSD);
}
@@ -102,7 +102,7 @@ G4LogicalVolume *LensMotherLV
G4VPhysicalVolume *LensMotherPV
= new G4PVPlacement(0,LensPosition,"LensMotherPV",LensMotherLV,MotherPV,false,0);
LensMotherLV->SetVisAttributes (G4VisAttributes::Invisible);
LensMotherLV->SetVisAttributes (G4VisAttributes::GetInvisible());
G4Cons *solidGroove
@@ -53,235 +53,83 @@
#include "G4ProcessManager.hh"
#include "G4ProcessVector.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4EmStandardPhysics.hh"
#include "G4EmLivermorePhysics.hh"
#include "G4EmPenelopePhysics.hh"
#include "G4EmLowEPPhysics.hh"
#include "G4DecayPhysics.hh"
#include "G4HadronElasticPhysics.hh"
#include "G4HadronInelasticQBBC.hh"
#include "G4IonPhysics.hh"
#include "G4EmExtraPhysics.hh"
#include "G4StoppingPhysics.hh"
#include "G4OpticalPhysics.hh"
UltraPhysicsList::UltraPhysicsList() : G4VUserPhysicsList() {;}
#include "G4UnitsTable.hh"
#include "G4SystemOfUnits.hh"
#include "G4LossTableManager.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
UltraPhysicsList::UltraPhysicsList() : G4VModularPhysicsList(),
fEmPhysicsList(0),
fOpPhysicsList(0),
fDecayPhysicsList(0),
fVerboseLebel(1),
fMaxNumPhotonStep(20)
{
G4LossTableManager::Instance();
SetDefaultCutValue(1*mm);
UltraPhysicsList::~UltraPhysicsList() {;}
// fMessenger = new UltraPhysicsListMessenger(this);
// fStepMaxProcess = new StepMax();
// Initilise flags
SetVerboseLevel(1);
// EM physics
fEmName = G4String("emstandard");
fEmPhysicsList = new G4EmStandardPhysics();
fOpPhysicsList = new G4OpticalPhysics();
// Decay Physics is always defined
fDecayPhysicsList = new G4DecayPhysics();
}
UltraPhysicsList::~UltraPhysicsList()
{
delete fDecayPhysicsList;
delete fEmPhysicsList;
delete fOpPhysicsList;
// delete fStepMaxProcess;
for(size_t i=0; i<fHadronPhys.size(); i++)
delete fHadronPhys[i];
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructParticle()
{
// In this method, static member functions should be called
// for all particles which you want to use.
// This ensures that objects of these particle types will be
// created in the program.
ConstructBosons();
ConstructLeptons();
ConstructMesons();
ConstructBaryons();
fDecayPhysicsList->ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructBosons()
{
// pseudo-particles
G4Geantino::GeantinoDefinition();
G4ChargedGeantino::ChargedGeantinoDefinition();
// gamma
G4Gamma::GammaDefinition();
// optical photon
G4OpticalPhoton::OpticalPhotonDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructLeptons()
{
// leptons
G4Electron::ElectronDefinition();
G4Positron::PositronDefinition();
G4NeutrinoE::NeutrinoEDefinition();
G4AntiNeutrinoE::AntiNeutrinoEDefinition();
G4MuonPlus::MuonPlusDefinition();
G4MuonMinus::MuonMinusDefinition();
G4NeutrinoMu::NeutrinoMuDefinition();
G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructMesons()
{
// mesons
G4PionPlus::PionPlusDefinition();
G4PionMinus::PionMinusDefinition();
G4PionZero::PionZeroDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructBaryons()
{
// barions
G4Proton::ProtonDefinition();
G4AntiProton::AntiProtonDefinition();
G4Neutron::NeutronDefinition();
G4AntiNeutron::AntiNeutronDefinition();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructProcess()
{
AddTransportation();
ConstructGeneral();
ConstructEM();
ConstructOp();
if (fEmPhysicsList)
fEmPhysicsList->ConstructProcess();
}
if (fOpPhysicsList)
fOpPhysicsList->ConstructProcess();
if (fDecayPhysicsList)
fDecayPhysicsList->ConstructProcess();
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4Decay.hh"
void UltraPhysicsList::ConstructGeneral()
{
G4Decay* theDecayProcess = new G4Decay();
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
if (theDecayProcess->IsApplicable(*particle)) {
pmanager->AddDiscreteProcess(theDecayProcess);
}
for(size_t i=0; i<fHadronPhys.size(); ++i) {
fHadronPhys[i]->ConstructProcess();
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4ComptonScattering.hh"
#include "G4GammaConversion.hh"
#include "G4PhotoElectricEffect.hh"
#include "G4eMultipleScattering.hh"
#include "G4MuMultipleScattering.hh"
#include "G4hMultipleScattering.hh"
#include "G4eIonisation.hh"
#include "G4eBremsstrahlung.hh"
#include "G4eplusAnnihilation.hh"
#include "G4MuIonisation.hh"
#include "G4MuBremsstrahlung.hh"
#include "G4MuPairProduction.hh"
#include "G4hIonisation.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::ConstructEM()
{
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (particleName == "gamma") {
// gamma
// Construct processes for gamma
pmanager->AddDiscreteProcess(new G4GammaConversion());
pmanager->AddDiscreteProcess(new G4ComptonScattering());
pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
} else if (particleName == "e-") {
//electron
// Construct processes for electron
pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
} else if (particleName == "e+") {
//positron
// Construct processes for positron
pmanager->AddProcess(new G4eMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4eIonisation(),-1,2,2);
pmanager->AddProcess(new G4eBremsstrahlung(),-1,-1,3);
pmanager->AddProcess(new G4eplusAnnihilation(),0,-1,4);
} else if( particleName == "mu+" ||
particleName == "mu-" ) {
//muon
// Construct processes for muon
pmanager->AddProcess(new G4MuMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4MuIonisation(),-1,2,2);
pmanager->AddProcess(new G4MuBremsstrahlung(),-1,-1,3);
pmanager->AddProcess(new G4MuPairProduction(),-1,-1,4);
} else {
if ((particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
// all others charged particles except geantino
pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
pmanager->AddProcess(new G4hIonisation(),-1,2,2);
}
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#include "G4Cerenkov.hh"
#include "G4Scintillation.hh"
#include "G4OpAbsorption.hh"
#include "G4OpRayleigh.hh"
#include "G4OpBoundaryProcess.hh"
void UltraPhysicsList::ConstructOp()
{
// this Cerenkov Process
G4Cerenkov* theCerenkovProcess = new G4Cerenkov("Cerenkov");
// this absorption process inside optical media
G4OpAbsorption* theAbsorptionProcess = new G4OpAbsorption();
// Rayleigh scattering for optical photons (aerogel radiators)
G4OpRayleigh* theRayleighScatteringProcess = new G4OpRayleigh();
// Boundary process definition Class
G4OpBoundaryProcess* theBoundaryProcess = new G4OpBoundaryProcess();
// Chose level 0 (no verbose)
theCerenkovProcess -> SetVerboseLevel(0);
theAbsorptionProcess -> SetVerboseLevel(0);
theRayleighScatteringProcess -> SetVerboseLevel(0);
theBoundaryProcess -> SetVerboseLevel(0);
// Chose MaxNumPhotons that can be generated. Lets ignore this for now
// G4int MaxNumPhotons = 300;
// theCerenkovProcess->SetMaxNumPhotonsPerStep(MaxNumPhotons);
theCerenkovProcess->SetTrackSecondariesFirst(true);
theParticleIterator->reset();
while( (*theParticleIterator)() ){
G4ParticleDefinition* particle = theParticleIterator->value();
G4ProcessManager* pmanager = particle->GetProcessManager();
G4String particleName = particle->GetParticleName();
if (theCerenkovProcess->IsApplicable(*particle)) {
pmanager->AddProcess(theCerenkovProcess);
pmanager->SetProcessOrdering(theCerenkovProcess,idxPostStep);
}
if (particleName == "opticalphoton") {
G4cout << ">>>>>>>>>>>>>> AddDiscreteProcess to OpticalPhoton " << G4endl;
pmanager->AddDiscreteProcess(theAbsorptionProcess);
pmanager->AddDiscreteProcess(theRayleighScatteringProcess);
pmanager->AddDiscreteProcess(theBoundaryProcess);
}
}
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
void UltraPhysicsList::SetCuts()
{
@@ -292,5 +140,3 @@ void UltraPhysicsList::SetCuts()
// the default cut value for all particle types
SetCutsWithDefault();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....