Import Geant4 5.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 10:15:15 +02:00
parent 37fff30d2e
commit fbd4999cf7
4396 changed files with 56662 additions and 52446 deletions
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2DetectorConstruction.cc,v 1.9 2002/10/29 19:10:40 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2DetectorConstruction.cc,v 1.13 2003/03/26 16:23:17 maire Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -60,6 +60,7 @@ Em2DetectorConstruction::Em2DetectorConstruction()
solidRing(0) ,logicRing(0) ,physiRing(0)
{
detectorMessenger = new Em2DetectorMessenger(this);
DefineMaterials();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -71,7 +72,6 @@ Em2DetectorConstruction::~Em2DetectorConstruction()
G4VPhysicalVolume* Em2DetectorConstruction::Construct()
{
DefineMaterials();
return ConstructVolumes();
}
@@ -126,9 +126,9 @@ void Em2DetectorConstruction::DefineMaterials()
G4Material* H2O = new G4Material(name="Water", density, ncomponents=2);
H2O->AddElement(H, natoms=2);
H2O->AddElement(O, natoms=1);
// G4double exc = H2O->GetIonisation()->FindMeanExcitationEnergy("H_2O");
// H2O->GetIonisation()->SetMeanExcitationEnergy(exc);
H2O->SetChemicalFormula("H_2O");
H2O->GetIonisation()->SetMeanExcitationEnergy(75.0*eV);
//liquid argon
a = 39.95*g/mole;
density = 1.390*g/cm3;
@@ -186,10 +186,13 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes()
//
// Ecal
//
if(solidEcal) delete solidEcal;
if(logicEcal) delete logicEcal;
if(physiEcal) delete physiEcal;
solidEcal = new G4Tubs("Ecal",0.,EcalRadius,0.5*EcalLength,0.,360*deg);
logicEcal = new G4LogicalVolume( solidEcal,myMaterial,"Ecal",0,0,0);
physiEcal = new G4PVPlacement(0,G4ThreeVector(),
"Ecal",logicEcal,0,false,0);
logicEcal,"Ecal",0,false,0);
// Ring
//
@@ -197,19 +200,19 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes()
{
solidRing = new G4Tubs("Ring",i*dR,(i+1)*dR,0.5*EcalLength,0.,360*deg);
logicRing = new G4LogicalVolume(solidRing,myMaterial,"Ring",0,0,0);
physiRing = new G4PVPlacement(0,G4ThreeVector(),"Ring",logicRing,
physiEcal,false,i);
physiRing = new G4PVPlacement(0,G4ThreeVector(),logicRing,"Ring",
logicEcal,false,i);
// Slice
solidSlice = new G4Tubs("Slice",i*dR,(i+1)*dR,0.5*dL,0.,360*deg);
logicSlice = new G4LogicalVolume(solidSlice,myMaterial,"Slice",0,0,0);
logicSlice-> SetVisAttributes(G4VisAttributes::Invisible);
if (nLtot >1)
physiSlice = new G4PVReplica("Slice",logicSlice,physiRing,
physiSlice = new G4PVReplica("Slice",logicSlice,logicRing,
kZAxis,nLtot,dL);
else
physiSlice = new G4PVPlacement(0,G4ThreeVector(),"Slice",logicSlice,
physiRing,false,0);
physiSlice = new G4PVPlacement(0,G4ThreeVector(),logicSlice,"Slice",
logicRing,false,0);
}
@@ -229,13 +232,14 @@ G4VPhysicalVolume* Em2DetectorConstruction::ConstructVolumes()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2DetectorConstruction::SetMaterial(G4String materialChoice)
void Em2DetectorConstruction::SetMaterial(const G4String& materialChoice)
{
// search the material by its name
G4Material* pttoMaterial = G4Material::GetMaterial(materialChoice);
if (pttoMaterial)
{myMaterial = pttoMaterial;
logicEcal->SetMaterial(myMaterial);
{
myMaterial = pttoMaterial;
if(logicEcal) logicEcal->SetMaterial(myMaterial);
}
}
@@ -252,19 +256,19 @@ void Em2DetectorConstruction::SetRBining(G4ThreeVector Value)
{
nRtot = (G4int)Value(0); dRradl = Value(1);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2DetectorConstruction::SetMagField(G4double fieldValue)
{
//apply a global uniform magnetic field along Z axis
G4FieldManager* fieldMgr
G4FieldManager* fieldMgr
= G4TransportationManager::GetTransportationManager()->GetFieldManager();
if(magField) delete magField; //delete the existing magn field
if(fieldValue!=0.) // create a new one if non nul
{ magField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue));
{ magField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue));
fieldMgr->SetDetectorField(magField);
fieldMgr->CreateChordFinder(magField);
} else {
@@ -274,10 +278,16 @@ void Em2DetectorConstruction::SetMagField(G4double fieldValue)
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2DetectorConstruction::UpdateGeometry()
{
G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
G4bool first = true;
if (physiEcal) first = false;
G4VPhysicalVolume* v = ConstructVolumes();
G4RunManager* rm = G4RunManager::GetRunManager();
rm->GeometryHasBeenModified();
rm->DefineWorldVolume(v);
if (!first) rm->ResetNavigator();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2DetectorMessenger.cc,v 1.9 2002/12/11 17:12:23 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2DetectorMessenger.cc,v 1.11 2003/02/14 14:21:28 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -49,7 +49,7 @@ Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det)
MaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
MaterCmd->SetGuidance("Select Material.");
MaterCmd->SetParameterName("material",false);
MaterCmd->AvailableForStates(G4State_Idle);
MaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
LBinCmd = new G4UIcmdWith3Vector("/testem/det/setLbin",this);
LBinCmd->SetGuidance("set longitudinal bining");
@@ -70,13 +70,13 @@ Em2DetectorMessenger::Em2DetectorMessenger(Em2DetectorConstruction * Det)
FieldCmd->SetGuidance("Magnetic field will be in Z direction.");
FieldCmd->SetParameterName("Bz",false);
FieldCmd->SetUnitCategory("Magnetic flux density");
FieldCmd->AvailableForStates(G4State_Idle);
FieldCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
UpdateCmd = new G4UIcmdWithoutParameter("/testem/det/update",this);
UpdateCmd->SetGuidance("Update geometry.");
UpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
UpdateCmd->SetGuidance("if you changed geometrical value(s).");
UpdateCmd->AvailableForStates(G4State_Idle);
UpdateCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2EventAction.cc,v 1.6 2001/11/28 18:57:24 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2EventAction.cc,v 1.7 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2EventActionMessenger.cc,v 1.8 2002/12/06 16:51:43 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2EventActionMessenger.cc,v 1.9 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PhysListEmModel.cc,v 1.1 2002/10/31 14:12:43 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PhysListEmModel.cc,v 1.3 2003/02/14 14:21:28 vnivanch Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -98,16 +98,17 @@ void Em2PhysListEmModel::ConstructProcess()
pmanager->AddProcess(new G4MuBremsstrahlungSTD, -1,-1,3);
pmanager->AddProcess(new G4MuPairProductionSTD, -1,-1,4);
} else if( particleName == "GenericIon" ) {
pmanager->AddProcess(new G4MultipleScatteringSTD,-1,1,1);
pmanager->AddProcess(new G4ionIonisation, -1,2,2);
} else if ((!particle->IsShortLived()) &&
(particle->GetPDGCharge() != 0.0) &&
(particle->GetParticleName() != "chargedgeantino")) {
//all others charged particles except geantino
pmanager->AddProcess(new G4MultipleScatteringSTD,-1,1,1);
if(particle->GetPDGMass() < 1.0*GeV ) {
pmanager->AddProcess(new G4hIonisationSTD, -1,2,2);
} else {
pmanager->AddProcess(new G4ionIonisation, -1,2,2);
}
pmanager->AddProcess(new G4hIonisationSTD, -1,2,2);
}
}
}
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PhysListEmStandard.cc,v 1.1 2002/10/31 14:12:43 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PhysListEmStandard.cc,v 1.2 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PhysListGeneral.cc,v 1.1 2002/10/31 14:12:43 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PhysListGeneral.cc,v 1.2 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PhysListParticles.cc,v 1.1 2002/10/31 14:12:43 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PhysListParticles.cc,v 1.2 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,7 +21,9 @@
// ********************************************************************
//
//
// $Id: Em2PhysicsList.cc,v 1.13 2003/03/26 16:23:17 maire Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -33,13 +35,14 @@
#include "Em2PhysListGeneral.hh"
#include "Em2PhysListEmStandard.hh"
#include "Em2PhysListEmModel.hh"
#include "G4Gamma.hh"
#include "G4Electron.hh"
#include "G4Positron.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
Em2PhysicsList::Em2PhysicsList() : G4VModularPhysicsList(),
emPhysicsListIsRegistered(false)
{
Em2PhysicsList::Em2PhysicsList() : G4VModularPhysicsList()
{
currentDefaultCut = 1.0*mm;
cutForGamma = currentDefaultCut;
cutForElectron = currentDefaultCut;
@@ -48,12 +51,16 @@ Em2PhysicsList::Em2PhysicsList() : G4VModularPhysicsList(),
pMessenger = new Em2PhysicsListMessenger(this);
SetVerboseLevel(1);
// Particles
RegisterPhysics( new Em2PhysListParticles("particles") );
particleList = new Em2PhysListParticles("particles");
// General Physics
RegisterPhysics( new Em2PhysListGeneral("general") );
generalPhysicsList = new Em2PhysListGeneral("general");
// EM physics
emName = G4String("standard");
emPhysicsList = new Em2PhysListEmStandard(emName);
}
@@ -66,41 +73,45 @@ Em2PhysicsList::~Em2PhysicsList()
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::ConstructParticle()
{
particleList->ConstructParticle();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::ConstructProcess()
{
AddTransportation();
generalPhysicsList->ConstructProcess();
emPhysicsList->ConstructProcess();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::AddPhysicsList(const G4String& name)
{
if (verboseLevel>1) {
G4cout << "Em2PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
}
if (name == emName) return;
if(name == "standard") {
if (name == "standard") {
if (emPhysicsListIsRegistered) {
emName = name;
delete emPhysicsList;
emPhysicsList = new Em2PhysListEmStandard(name);
G4cout << "Em2PhysicsList::AddPhysicsList: <" << name << ">"
<< " cannot be register additionally to existing one"
<< G4endl;
} else {
} else if (name == "model") {
RegisterPhysics( new Em2PhysListEmStandard(name) );
emPhysicsListIsRegistered = true;
}
} else if(name == "model") {
if (emPhysicsListIsRegistered) {
G4cout << "Em2PhysicsList::AddPhysicsList: <" << name << ">"
<< " cannot be register additionally to existing one"
<< G4endl;
} else {
RegisterPhysics( new Em2PhysListEmModel(name) );
emPhysicsListIsRegistered = true;
}
emName = name;
delete emPhysicsList;
emPhysicsList = new Em2PhysListEmModel(name);
} else {
G4cout << "Em2PhysicsList::AddPhysicsList: <" << name << ">"
G4cout << "Em2PhysicsList::AddPhysicsList: <" << name << ">"
<< " is not defined"
<< G4endl;
}
@@ -109,8 +120,7 @@ void Em2PhysicsList::AddPhysicsList(const G4String& name)
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::SetCuts()
{
{
if (verboseLevel >0){
G4cout << "Em2PhysicsList::SetCuts:";
G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
@@ -120,15 +130,8 @@ void Em2PhysicsList::SetCuts()
// because some processes for e+/e- need cut values for gamma
SetCutValue(cutForGamma, "gamma");
SetCutValue(cutForElectron, "e-");
SetCutValue(cutForPositron, "e+");
// set cut values for proton and anti_proton before all other hadrons
// because some processes for hadrons need cut values for proton/anti_proton
SetCutValue(currentDefaultCut, "proton");
SetCutValue(currentDefaultCut, "anti_proton");
SetCutValueForOthers(currentDefaultCut);
SetCutValue(cutForPositron, "e+");
if (verboseLevel>0) DumpCutValuesTable();
}
@@ -136,24 +139,24 @@ void Em2PhysicsList::SetCuts()
void Em2PhysicsList::SetCutForGamma(G4double cut)
{
ResetCuts();
cutForGamma = cut;
SetParticleCuts(cutForGamma, G4Gamma::Gamma());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::SetCutForElectron(G4double cut)
{
ResetCuts();
cutForElectron = cut;
SetParticleCuts(cutForElectron, G4Electron::Electron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void Em2PhysicsList::SetCutForPositron(G4double cut)
{
ResetCuts();
cutForPositron = cut;
SetParticleCuts(cutForPositron, G4Positron::Positron());
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PhysicsListMessenger.cc,v 1.6 2002/12/06 16:51:43 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PhysicsListMessenger.cc,v 1.7 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2PrimaryGeneratorAction.cc,v 1.5 2002/10/31 13:58:32 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2PrimaryGeneratorAction.cc,v 1.6 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2RunAction.cc,v 1.18 2002/12/11 17:12:23 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2RunAction.cc,v 1.19 2002/12/16 11:29:23 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2SteppingAction.cc,v 1.6 2001/12/11 17:44:07 gcosmo Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2SteppingAction.cc,v 1.7 2002/12/16 11:29:24 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2SteppingVerbose.cc,v 1.8 2001/10/25 15:12:07 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2SteppingVerbose.cc,v 1.10 2003/02/10 17:12:25 maire Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -73,7 +73,8 @@ void Em2SteppingVerbose::StepInfo()
<< G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
<< G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
<< " ";
// if( fStepStatus != fWorldBoundary){
if( fTrack->GetNextVolume() != 0 ) {
@@ -161,7 +162,8 @@ G4int prec = G4cout.precision(3);
<< G4std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
<< G4std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
<< G4std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
<< G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length");
<< G4std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
<< " ";
if(fTrack->GetNextVolume()){
G4cout << G4std::setw(10) << fTrack->GetVolume()->GetName();
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2TrackingAction.cc,v 1.4 2001/10/25 15:12:07 maire Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2TrackingAction.cc,v 1.5 2002/12/16 11:29:24 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
@@ -21,8 +21,8 @@
// ********************************************************************
//
//
// $Id: Em2VisManager.cc,v 1.7 2002/11/13 21:39:49 duns Exp $
// GEANT4 tag $Name: geant4-05-00 $
// $Id: Em2VisManager.cc,v 1.8 2002/12/16 11:29:24 stesting Exp $
// GEANT4 tag $Name: geant4-05-01 $
//
//
// John Allison 24th January 1998.