Import Geant4 10.3.0 source tree
This commit is contained in:
@@ -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....
|
||||
|
||||
Reference in New Issue
Block a user