From 3687f2b0871e4de5862b190e6897593b9f4e7e49 Mon Sep 17 00:00:00 2001 From: adrien-matta <a.matta@surrey.ac.uk> Date: Tue, 26 Jan 2016 16:14:47 +0000 Subject: [PATCH] * Fixing Overlapping volume of sample in MaterialManager - The sample volume were not properly offset * Adding NPS_ to all material name to avoid warning when loading GDML file - NPS is removed before writting the table --- NPSimulation/Core/MaterialManager.cc | 79 +++++++++++++++------------- 1 file changed, 41 insertions(+), 38 deletions(-) diff --git a/NPSimulation/Core/MaterialManager.cc b/NPSimulation/Core/MaterialManager.cc index 8b87e1e68..7a0c0d931 100644 --- a/NPSimulation/Core/MaterialManager.cc +++ b/NPSimulation/Core/MaterialManager.cc @@ -90,7 +90,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ if(Name == "Vacuum"){ if(!density) density = 0.000000001 * mg / cm3; - G4Material* material = new G4Material(Name, density ,2); + G4Material* material = new G4Material("NPS_"+Name, density ,2); material->AddElement(GetElementFromLibrary("N"),7); material->AddElement(GetElementFromLibrary("O"),3); m_Material[Name]=material; @@ -100,7 +100,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ if(Name == "Air"){ if(!density) density = 1.290* mg/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("N"),7); material->AddElement(GetElementFromLibrary("O"),3); m_Material[Name]=material; @@ -112,7 +112,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ if(!density) density = 1.85 * g / cm3; // Actually taken value fron Epoxy - G4Material* material = new G4Material(Name,density,3); + G4Material* material = new G4Material("NPS_"+Name,density,3); material->AddElement(GetElementFromLibrary("H"),.475); material->AddElement(GetElementFromLibrary("C"),.45); material->AddElement(GetElementFromLibrary("O"),.075); @@ -124,7 +124,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ if(!density) density = 1.2 * g / cm3; // Actually taken value fron Epoxy - G4Material* material = new G4Material(Name, density,3); + G4Material* material = new G4Material("NPS_"+Name, density,3); material->AddElement(GetElementFromLibrary("H"),8); material->AddElement(GetElementFromLibrary("C"),5); material->AddElement(GetElementFromLibrary("O"),2); @@ -135,7 +135,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Mylar"){ if(!density) density = 1.397*g/cm3; - G4Material* material = new G4Material(Name,density ,3); + G4Material* material = new G4Material("NPS_"+Name,density ,3); material->AddElement(GetElementFromLibrary("H"),8); material->AddElement(GetElementFromLibrary("C"),10); material->AddElement(GetElementFromLibrary("O"),4); @@ -147,7 +147,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Kapton"){ if(!density) density = 1.39*g/cm3; - G4Material* material = new G4Material(Name, density,3); + G4Material* material = new G4Material("NPS_"+Name, density,3); material->AddElement(GetElementFromLibrary("H"),4); material->AddElement(GetElementFromLibrary("C"),10); material->AddElement(GetElementFromLibrary("O"),2); @@ -158,7 +158,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Kovar"){ if(!density) density = 8*g/cm3; - G4Material* material = new G4Material(Name, density,5); + G4Material* material = new G4Material("NPS_"+Name, density,5); material->AddElement(GetElementFromLibrary("Ni"),290); material->AddElement(GetElementFromLibrary("Co"),170); material->AddElement(GetElementFromLibrary("Si"),2); @@ -172,7 +172,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Havar"){ if(!density) density = 8.3*g / cm3; - G4Material* material = new G4Material(Name, density,5); + G4Material* material = new G4Material("NPS_"+Name, density,5); material->AddElement(GetElementFromLibrary("Co"),42); material->AddElement(GetElementFromLibrary("Cr"),20); material->AddElement(GetElementFromLibrary("Ni"),13); @@ -186,7 +186,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "N2_liquid"){ if(!density) density = 0.808*g/cm3; - G4Material* material = new G4Material(Name,7,14.01*g/mole,density, + G4Material* material = new G4Material("NPS_"+Name,7,14.01*g/mole,density, kStateLiquid,77*kelvin); m_Material[Name]=material; return material; @@ -196,7 +196,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "CD2"){ if(!density) density =1.06*g/cm3; - G4Material* material = new G4Material(Name, density,2); + G4Material* material = new G4Material("NPS_"+Name, density,2); material->AddElement(GetElementFromLibrary("C"),1); material->AddElement(GetElementFromLibrary("D"),2); m_Material[Name]=material; @@ -206,7 +206,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "CH2"){ if(!density) density = 0.93*g/cm3; - G4Material* material = new G4Material(Name, density,2); + G4Material* material = new G4Material("NPS_"+Name, density,2); material->AddElement(GetElementFromLibrary("C"),1); material->AddElement(GetElementFromLibrary("D"),2); m_Material[Name]=material; @@ -216,7 +216,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Cu"){ if(!density) density = 8.96*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("Cu"),1); m_Material[Name]=material; return material; @@ -225,7 +225,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Au"){ if(!density) density = 19.3*g/cm3; - G4Material* material = new G4Material(Name,density ,1); + G4Material* material = new G4Material("NPS_"+Name,density ,1); material->AddElement(GetElementFromLibrary("Au"),1); m_Material[Name]=material; return material; @@ -234,7 +234,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "C"){ // Graphite if(!density) density = 2.267*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("C"),1); m_Material[Name]=material; return material; @@ -243,7 +243,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Pb"){ if(!density) density = 11.342*g / cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("Pb"),1); m_Material[Name]=material; @@ -253,7 +253,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "D2"){ if(!density) density = 0.0715*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("D"),2); m_Material[Name]=material; return material; @@ -262,7 +262,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "H2"){ if(!density) density = 0.0715*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("H"),2); m_Material[Name]=material; return material; @@ -272,7 +272,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Si"){ if(!density) density = 2.321*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("Si"),1); // Adding Optical property: @@ -300,7 +300,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Ge"){ if(!density) density = 5.323*g/cm3; - G4Material* material = new G4Material(Name, density,1); + G4Material* material = new G4Material("NPS_"+Name, density,1); material->AddElement(GetElementFromLibrary("Ge"),1); m_Material[Name]=material; return material; @@ -309,7 +309,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Boric_Oxyde"){ if(!density) density = 2.55*g/cm3 ; - G4Material* material = new G4Material(Name, density,2); + G4Material* material = new G4Material("NPS_"+Name, density,2); material->AddElement(GetElementFromLibrary("B"),2); material->AddElement(GetElementFromLibrary("O"),3); m_Material[Name]=material; @@ -319,7 +319,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Sodium_Oxyde"){ if(!density) density = 2.27*g/cm3 ; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("Na"),2); material->AddElement(GetElementFromLibrary("O"),1); m_Material[Name]=material; @@ -331,7 +331,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Borosillicate_Glass"){ if(!density) density = 2.23*g/cm3 ; - G4Material* material = new G4Material(Name,density,4); + G4Material* material = new G4Material("NPS_"+Name,density,4); material->AddElement(GetElementFromLibrary("Si"),80*perCent); G4Material* BO = GetMaterialFromLibrary("Boric_Oxyde"); material->AddMaterial(BO,13*perCent); @@ -346,7 +346,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "BC400"){ if(!density) density = 1.032*g/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("H"),10); material->AddElement(GetElementFromLibrary("C"),9); m_Material[Name]=material; @@ -356,7 +356,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "NaI"){ if(!density) density = 3.67*g/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("Na"),1); material->AddElement(GetElementFromLibrary("I"),1); m_Material[Name]=material; @@ -366,7 +366,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "CsI"){ if(!density) density = 4.51*g/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("Cs"),1); material->AddElement(GetElementFromLibrary("I"),1); m_Material[Name]=material; @@ -376,7 +376,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "NaturalUranium"){ if(!density) density = 19.1*g/cm3; - G4Material* material = new G4Material(Name,density,1); + G4Material* material = new G4Material("NPS_"+Name,density,1); material->AddElement(GetElementFromLibrary("U"),1); m_Material[Name]=material; return material; @@ -385,7 +385,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "CsI_Scintillator"){ if(!density) density = 4.51*g/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("Cs"),1); material->AddElement(GetElementFromLibrary("I"),1); // Adding Scintillation property: @@ -461,7 +461,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "LaBr3"){ if(!density) density =5.06*g/cm3 ; - G4Material* material = new G4Material(Name,density, 2); + G4Material* material = new G4Material("NPS_"+Name,density, 2); material->AddElement(GetElementFromLibrary("La"),1); material->AddElement(GetElementFromLibrary("Br"),3); m_Material[Name]=material; @@ -472,7 +472,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ if(!density) density =5.29*g/cm3 ; G4Material* base = GetMaterialFromLibrary("LaBr3"); - G4Material* material = new G4Material(Name,density, 2); + G4Material* material = new G4Material("NPS_"+Name,density, 2); material->AddMaterial(base,95*perCent); material->AddElement(GetElementFromLibrary("Ce"),5*perCent); @@ -484,7 +484,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "BaF2"){ if(!density) density = 4.89*g/cm3; - G4Material* material = new G4Material(Name,density, 2); + G4Material* material = new G4Material("NPS_"+Name,density, 2); material->AddElement(GetElementFromLibrary("Ba"),1); material->AddElement(GetElementFromLibrary("F"),2); m_Material[Name]=material; @@ -495,7 +495,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Al"){ if(!density) density = 2.702*g/cm3; - G4Material* material = new G4Material(Name,density,1); + G4Material* material = new G4Material("NPS_"+Name,density,1); material->AddElement(GetElementFromLibrary("Al"),1); m_Material[Name]=material; return material; @@ -504,7 +504,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Fe"){ if(!density) density = 7.874*g/cm3; - G4Material* material = new G4Material(Name,density,1); + G4Material* material = new G4Material("NPS_"+Name,density,1); material->AddElement(GetElementFromLibrary("Fe"),1); m_Material[Name]=material; return material; @@ -513,7 +513,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "P10_1atm"){ if(!density) density = 1.74*mg/cm3; - G4Material* material = new G4Material(Name,density, 3); //@ 0K, 1 atm + G4Material* material = new G4Material("NPS_"+Name,density, 3); //@ 0K, 1 atm material->AddElement(GetElementFromLibrary("Ar"),0.9222); material->AddElement(GetElementFromLibrary("C"),0.0623); material->AddElement(GetElementFromLibrary("H"),0.0155); @@ -524,7 +524,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "P10"){ if(!density) density = 0.57*mg/cm3; - G4Material* material = new G4Material(Name,density,3); //@ 0K, 1/3 atm + G4Material* material = new G4Material("NPS_"+Name,density,3); //@ 0K, 1/3 atm material->AddElement(GetElementFromLibrary("Ar"),0.9222); material->AddElement(GetElementFromLibrary("C"),0.0623); material->AddElement(GetElementFromLibrary("H"),0.0155); @@ -535,7 +535,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Air"){ // 1 atm if(!density) density = 1.290*mg/cm3; - G4Material* material = new G4Material(Name,density,2); + G4Material* material = new G4Material("NPS_"+Name,density,2); material->AddElement(GetElementFromLibrary("N"), 0.7); material->AddElement(GetElementFromLibrary("O"), 0.3); m_Material[Name]=material; @@ -545,7 +545,7 @@ G4Material* MaterialManager::GetMaterialFromLibrary(string Name,double density){ else if(Name == "Wood"){ if(!density) density = 0.9*mg/cm3; - G4Material* material = new G4Material(Name,density, 3); + G4Material* material = new G4Material("NPS_"+Name,density, 3); material->AddElement(GetElementFromLibrary("H") , 4); material->AddElement(GetElementFromLibrary("O") , 1); material->AddElement(GetElementFromLibrary("C") , 2); @@ -612,7 +612,10 @@ void MaterialManager::WriteDEDXTable(G4ParticleDefinition* Particle ,G4double Em for(it = m_Material.begin() ; it != m_Material.end() ; it++){ // Opening hte output file G4String GlobalPath = getenv("NPTOOL"); - G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + it->second->GetName() + ".G4table"; + G4String Name = it->second->GetName(); + // Remove NPS name + Name.erase(0,4); + G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + Name + ".G4table"; ofstream File ; File.open(Path) ; @@ -657,7 +660,7 @@ void MaterialManager::CreateSampleVolumes(G4LogicalVolume* world_log){ for(it = m_Material.begin() ; it != m_Material.end() ; it++){ G4LogicalVolume* sample_log = new G4LogicalVolume(sample_box, it->second, "sample_log", 0, 0, 0); sample_log->SetVisAttributes(G4VisAttributes::Invisible); - Coord2 = WorldSize-i*SampleSize; + Coord2 = WorldSize-i*2*SampleSize; i++; new G4PVPlacement(0, G4ThreeVector(Coord1,Coord2,-Coord1), sample_log, "sample", world_log, false, 0); } -- GitLab