Import Geant4 8.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2016-06-09 14:36:02 +02:00
parent d93e1e39a9
commit 8a51e0bc40
5471 changed files with 99628 additions and 55248 deletions
@@ -35,10 +35,10 @@
// 28 Nov 2001 Elena Guardincerri Created
//
// -------------------------------------------------------------------
#include <stdlib.h>
#ifdef G4ANALYSIS_USE
#include "G4VProcess.hh"
#include <fstream>
#include <strstream>
#include "G4ios.hh"
#include "XrayFluoAnalysisManager.hh"
#include "G4Step.hh"
@@ -738,7 +738,7 @@ void XrayFluoAnalysisManager::SetOutputFileType(G4String newType)
persistencyType = newType;
}
#endif
@@ -34,7 +34,6 @@
#include "XrayFluoDataSet.hh"
#include <fstream>
#include <strstream>
#include "G4VDataSetAlgorithm.hh"
XrayFluoDataSet::XrayFluoDataSet(G4int Z,
@@ -52,7 +52,7 @@
#include "G4ios.hh"
#include "G4PVReplica.hh"
#include "G4UserLimits.hh"
#include "XrayFluoMaterials.hh"
#include "XrayFluoNistMaterials.hh"
#include "G4Region.hh"
@@ -78,7 +78,7 @@ XrayFluoDetectorConstruction::XrayFluoDetectorConstruction()
defaultMaterial(0),HPGeSD(0)
{
materials = XrayFluoMaterials::GetInstance();
materials = XrayFluoNistMaterials::GetInstance();
DefineDefaultMaterials();
@@ -128,15 +128,15 @@ XrayFluoDetectorConstruction::XrayFluoDetectorConstruction()
G4String defaultDetectorType = "sili";
ComputeApparateParameters();
G4String regName = "SampleRegion";
sampleRegion = new G4Region(regName);
if (!phaseSpaceFlag) SetDetectorType(defaultDetectorType);
// create commands for interactive definition of the apparate
detectorMessenger = new XrayFluoDetectorMessenger(this);
G4String regName = "SampleRegion";
sampleRegion = new G4Region(regName);
G4cout << "XrayFluoDetectorConstruction created" << G4endl;
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -201,12 +201,12 @@ void XrayFluoDetectorConstruction::DefineDefaultMaterials()
//define materials of the apparate
sampleMaterial = materials->GetMaterial("MadaBasalt");
Dia1Material = materials->GetMaterial("Lead");
sampleMaterial = materials->GetMaterial("Mars1");
Dia1Material = materials->GetMaterial("G4_Pb");
Dia3Material = materials->GetMaterial("Galactic");
pixelMaterial = materials->GetMaterial("Silicon");
OhmicPosMaterial = materials->GetMaterial("Copper");
OhmicNegMaterial = materials->GetMaterial("Lead");
pixelMaterial = materials->GetMaterial("G4_Si");
OhmicPosMaterial = materials->GetMaterial("G4_Cu");
OhmicNegMaterial = materials->GetMaterial("G4_Pb");
defaultMaterial = materials->GetMaterial("Galactic");
@@ -607,7 +607,6 @@ G4VPhysicalVolume* XrayFluoDetectorConstruction::ConstructApparate()
}
// cut per region
logicSample->SetRegion(sampleRegion);
sampleRegion->AddRootLogicalVolume(logicSample);
@@ -689,8 +688,6 @@ void XrayFluoDetectorConstruction::PrintApparateParameters()
void XrayFluoDetectorConstruction::UpdateGeometry()
{
if (solidPixel) delete solidPixel;
if (logicPixel) delete logicPixel;
if (physiPixel) delete physiPixel;
@@ -703,9 +700,19 @@ void XrayFluoDetectorConstruction::UpdateGeometry()
if (solidHPGe) delete solidHPGe;
if (logicHPGe) delete logicHPGe;
if (physiHPGe) delete physiHPGe;
//if (sampleRegion) sampleRegion->RemoveRootLogicalVolume(logicSample);
if (solidSample) delete solidSample;
if (logicSample) delete logicSample;
if (physiSample) delete physiSample;
if (solidDia1) delete solidDia1;
if (logicDia1) delete logicDia1;
if (physiDia1) delete physiDia1;
if (solidDia3) delete solidDia3;
if (logicDia3) delete logicDia3;
if (physiDia3) delete physiDia3;
if (solidWorld) delete solidWorld;
if (logicWorld) delete logicWorld;
if (physiWorld) delete physiWorld;
@@ -56,10 +56,9 @@ XrayFluoDetectorMessenger::XrayFluoDetectorMessenger(XrayFluoDetectorConstructio
UpdateCmd->AvailableForStates(G4State_Idle);
sampleCmd = new G4UIcmdWithAString("/apparate/sampleMaterial",this);
sampleCmd->SetGuidance("select a diferent material for the sample");
sampleCmd->SetGuidance("select a diferent material for the sample: materials can be: Dolorite, Anorthosite, Mars1, IceBasalt, HPGe OR choosen from Nist database (see /material/nist/listMaterials for details");
sampleCmd->SetParameterName("material",true);
sampleCmd->SetDefaultValue("mars1");
sampleCmd->SetCandidates("Dolorite Iron Silicon Aluinium Oxigen Titanium Tin Lead Neodimium Magnesium Copper Anorthosite Mars1 IceBasalt Silver Gold Caesium Potassium Manganese Phosphorus Sulphur Calcium Sodium Uranium HPGe");
sampleCmd->AvailableForStates(G4State_Idle);
detectorCmd = new G4UIcmdWithAString("/apparate/detector",this);
@@ -140,9 +140,10 @@ void XrayFluoEventAction::BeginOfEventAction(const G4Event* evt)
if ( eventNumber % (G4int)5e6 != 0 ) G4cout << "#" << std::flush;
else G4cout << "#"<< G4endl;
// if ( eventNumber % 5e6 == 0 ) G4cout << "#"<< G4endl;
#ifdef G4ANALYSIS_USE
XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance();
analysis->PlotCurrentResults();
#endif
}
if (HPGeCollID==-1)
@@ -188,10 +189,10 @@ void XrayFluoEventAction::EndOfEventAction(const G4Event* evt)
energyD = detectorType->ResponseFunction(totEnergy);
// energyD = totEnergy;
// G4cout << "energy deposit: "<< totEnergy << G4endl;
#ifdef G4ANALYSIS_USE
XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance();
analysis->analyseEnergyDep(energyD);
#endif
totEnergyDetect += energyD;
@@ -38,7 +38,7 @@
#include "G4LogLogInterpolation.hh"
#include "G4ios.hh"
#include <fstream>
#include <strstream>
#include <sstream>
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -242,13 +242,11 @@ G4double XrayFluoHPGeDetectorType::GetSupData(G4double energy, G4double random,
}
void XrayFluoHPGeDetectorType::LoadResponseData(G4String fileName)
{
char nameChar[100] = {""};
std::ostrstream ost(nameChar, 100, std::ios::out);
std::ostringstream ost;
ost << fileName<<".dat";
G4String name(nameChar);
G4String name = ost.str();
char* path = getenv("XRAYDATA");
@@ -1,700 +0,0 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoDetectorConstruction.hh
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 20 Aug 2001 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#include "XrayFluoMaterials.hh"
XrayFluoMaterials::XrayFluoMaterials()
{ CreateMaterials();}
XrayFluoMaterials* XrayFluoMaterials::instance = 0;
XrayFluoMaterials* XrayFluoMaterials::GetInstance()
{
if (instance == 0)
{
instance = new XrayFluoMaterials;
}
return instance;
}
G4Material* XrayFluoMaterials::GetMaterial(G4String material)
{
G4Material* pttoMaterial = G4Material::GetMaterial(material);
return pttoMaterial;
}
void XrayFluoMaterials::CreateMaterials()
{
//define elements
G4String name, symbol; //a=mass of a mole;
G4double a, z, density; //z=mean number of protons;
G4int natoms,ncomponents;
G4double temperature, pressure;
G4double fractionmass;
// Elements Definitions
//define Niobium
a = 92.906*g/mole;
G4Element* Nb = new G4Element(name="Niobium" ,symbol="Nb" , z= 41., a);
//define Zirconium
a = 91.22*g/mole;
G4Element* Zr = new G4Element(name="Zirconium" ,symbol="Zr" , z= 40., a);
//define Yttrium
a = 88.905*g/mole;
G4Element* Y = new G4Element(name="Yttrium" ,symbol="Y" , z= 39., a);
//define Stronzium
a = 87.62*g/mole;
G4Element* Sr = new G4Element(name="Stronzium" ,symbol="Sr" , z= 38., a);
//define Rubidium
a = 85.47*g/mole;
G4Element* Rb = new G4Element(name="Rubidium" ,symbol="Rb" , z= 37., a);
//define Zinc
a = 65.37*g/mole;
G4Element* Zn = new G4Element(name="Zinc" ,symbol="Zn" , z= 30., a);
//define Nichel
a = 58.71*g/mole;
G4Element* Ni = new G4Element(name="Nichel" ,symbol="Ni" , z= 28., a);
//define Scandio
a = 44.956*g/mole;
G4Element* Sc = new G4Element(name="Scandium" ,symbol="Sc" , z= 21., a);
//define Vanadium
a = 50.942*g/mole;
G4Element* V = new G4Element(name="Vanadium" ,symbol="V" , z= 39., a);
//define Vanadium
a = 183.84*g/mole;
G4Element* W = new G4Element(name="Tungsten" ,symbol="W" , z= 74., a);
//define Cromium
a = 51.996*g/mole;
G4Element* Cr = new G4Element(name="Cromium" ,symbol="Cr" , z= 24., a);
//define Cobalt
a = 58.933*g/mole;
G4Element* Co = new G4Element(name="Cobalt" ,symbol="Co" , z= 27., a);
//define Copper
a = 63.54*g/mole;
G4Element* elCu = new G4Element(name="Copper" ,symbol="Cu" , z= 29., a);
//define Barium
a = 137.34*g/mole;
G4Element* Ba = new G4Element(name="Barium" ,symbol="Ba" , z= 56., a);
//define Cerium
a = 140.12*g/mole;
G4Element* Ce = new G4Element(name="Cerium" ,symbol="Ce" , z= 58., a);
//define Neodimuim
a = 144.24*g/mole;
G4Element* Nd = new G4Element(name="Neodimuim" ,symbol="Nd" , z= 60., a);
//Define Zolfo
a = 32.064*g/mole;
G4Element* elS = new G4Element(name="Sulphur" ,symbol="S" , z= 16., a);
//define carbon
a = 12.0107*g/mole;
G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
//define Nitrogen
a = 14.01*g/mole;
G4Element* N = new G4Element(name="Nitrogen",symbol="N" , z= 7., a);
// define Oxigen
a = 15.9994*g/mole;
G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
//define Arsenic
a = 74.9216 * g/mole;
G4Element * As = new G4Element( name="arsenic",symbol="As",z= 33.,a);
//Define Gallium
a = 69.72* g/mole;
G4Element * Ga = new G4Element(name="gallium",symbol="Ga",z= 31.,a);
//define Iron
a = 55.847*g/mole;
G4Element* Fe = new G4Element(name="Iron" ,symbol="Fe", z=26., a);
//define hydrogen
a = 1.01*g/mole;
G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
//define germanium
a = 72.61*g/mole;
G4Element* Ge = new G4Element(name="Germanium",symbol="Ge", z= 32.,a);
//define phosporus
a = 30.97*g/mole;
G4Element* P = new G4Element(name="Phosporus",symbol="P", z= 15., a);
// define Titanium
a = 47.88*g/mole;
G4Element* elTi = new G4Element(name="Titanium",symbol="Ti" , z= 22., a);
// define Calcium
a = 40.078*g/mole;
G4Element* Ca = new G4Element(name="Calcium",symbol="Ca" , z= 20., a);
// define silicon
a = 28.0855*g/mole;
G4Element* elSi = new G4Element(name="Silicon",symbol="Si" , z= 14., a);
// define Aluminium
a = 26.98154*g/mole;
G4Element* elAl = new G4Element(name="Aluminium",symbol="Al" , z= 13., a);
// Define Magnesium
a = 24.305*g/mole;
G4Element* Mg = new G4Element(name="Magnesium",symbol="Mg" , z= 12., a);
// Define Manganese
a = 54.938*g/mole;
G4Element* Mn = new G4Element(name="Manganese",symbol="Mn" , z= 25., a);
// Define Sodium
a = 22.989*g/mole;
G4Element* Na = new G4Element(name="Sodium",symbol="Na" , z= 11., a);
// Define Potassium
a = 39.10*g/mole;
G4Element* K = new G4Element(name="Potassium",symbol="K" , z= 19., a);
// Define lead
a=207.19*g/mole;
G4Element* elPb = new G4Element(name="Lead",symbol="pb", z=82.,a);
//define Uranium
a = 238.02891*g/mole;
G4Element* elU = new G4Element(name="Uranium",symbol="U", z=92.,a);
// define Palladium
a= 106.4*g/mole;
G4Element* Pd = new G4Element(name="Palladium",symbol="Pd",z=46.,a);
// define cadmium
a = 112.4 *g/mole;
G4Element* Cd = new G4Element(name="Cadmium",symbol="Cd",z=48.,a);
// define Silver
a = 107.87 *g/mole;
G4Element* Ag = new G4Element(name="Silver",symbol="Ag",z=47.,a);
// define Clorine
a = 35.453 * g/mole;
G4Element * Cl = new G4Element( name="Chlorine",symbol="Cl",z= 17.,a);
// define Lantanium
a = 138.91 * g/mole;
G4Element * La = new G4Element( name="Lantanium",symbol="La",z= 57.,a);
// define Molibdenum
a = 95.94 * g/mole;
G4Element * Mo = new G4Element( name="Molibdenum",symbol="Mo",z= 42.,a);
// define Thorium
a = 232.0381*g/mole;
G4Element* Th = new G4Element(name="Thorium",symbol="Th" , z= 90., a);
// define Samarium
a = 150.36*g/mole;
G4Element* Sm = new G4Element(name="Samarium",symbol="Sm" , z= 62., a);
// define Europium
a = 151.964*g/mole;
G4Element* Eu = new G4Element(name="Europium",symbol="Eu" , z= 63., a);
// define Gadolinium
a = 157.25*g/mole;
G4Element* Gd = new G4Element(name="Gadolinium",symbol="Gd" , z= 64., a);
// define Terbium
a = 158.92534*g/mole;
G4Element* Tb = new G4Element(name="Terbium",symbol="Tb" , z= 65., a);
// define Ytterbium
a = 173.04*g/mole;
G4Element* Yb = new G4Element(name="Ytterbium",symbol="Yb" , z= 70., a);
// define Lutetium
a = 174.967*g/mole;
G4Element* Lu = new G4Element(name="Lutetium",symbol="Lu" , z= 71., a);
// define Tantalum
a = 180.9479*g/mole;
G4Element* Ta = new G4Element(name="Tantalum",symbol="Ta" , z= 73., a);
// define Hafnium
a = 178.49*g/mole;
G4Element* Hf = new G4Element(name="Hafnium",symbol="Hf" , z= 73., a);
G4cout << "Elements created" << G4endl;
// Materials Definitions
// Define Madagascar Basalt main components 0054.PP.0044 sample
density = 3*g/cm3;
G4Material* madaBasaltMain= new G4Material(name="MadaBasaltMain", density, ncomponents=11);
madaBasaltMain->AddElement(elSi,fractionmass=0.1992); // 0.007093 mol/g(mat)
madaBasaltMain->AddElement(elTi,fractionmass=0.02027); // 4.235e-4
madaBasaltMain->AddElement(elAl,fractionmass=0.04758); // 0.001763
madaBasaltMain->AddElement(Fe, fractionmass=0.1303); // 0.002333
madaBasaltMain->AddElement(Mn, fractionmass=0.001549);// 2.820e-5
madaBasaltMain->AddElement(Mg, fractionmass=0.08141); // 0.003350
madaBasaltMain->AddElement(Ca, fractionmass=0.06468); // 0.001614
madaBasaltMain->AddElement(Na, fractionmass=0.01692); // 7.360e-4
madaBasaltMain->AddElement(K, fractionmass=0.008576);// 2.193e-4
madaBasaltMain->AddElement(P, fractionmass=0.001977);// 6.383e-5
madaBasaltMain->AddElement(O, fractionmass=0.427538);// 0.02672
// sum is 0.04434383 total number of moles of atoms in one gram of material
// 2.248766e8 g per 10.000.000 moles.
// Define Madagascar Basalt traces components 0054.PP.0044 sample
density = 3*g/cm3;
G4Material* madaBasaltTraces= new G4Material(name="MadaBasaltTraces", density, ncomponents=24);
madaBasaltTraces->AddElement(elTi,natoms=33);
madaBasaltTraces->AddElement(Ba ,natoms=4131);
madaBasaltTraces->AddElement(Ce ,natoms=694);
madaBasaltTraces->AddElement(Co ,natoms=965);
madaBasaltTraces->AddElement(Cr ,natoms=5584);
madaBasaltTraces->AddElement(La ,natoms=269);
madaBasaltTraces->AddElement(Nb ,natoms=259);
madaBasaltTraces->AddElement(Nd ,natoms=410);
madaBasaltTraces->AddElement(Ni ,natoms=389);
madaBasaltTraces->AddElement(Rb ,natoms=227);
madaBasaltTraces->AddElement(Sc ,natoms=212);
madaBasaltTraces->AddElement(Sr ,natoms=8686);
madaBasaltTraces->AddElement(V ,natoms=4203);
madaBasaltTraces->AddElement(Y ,natoms=272);
madaBasaltTraces->AddElement(Zn ,natoms=1440);
madaBasaltTraces->AddElement(Th ,natoms=19);
madaBasaltTraces->AddElement(Sm ,natoms=93);
madaBasaltTraces->AddElement(Eu ,natoms=32);
madaBasaltTraces->AddElement(Gd ,natoms=89);
madaBasaltTraces->AddElement(Tb ,natoms=13);
madaBasaltTraces->AddElement(Yb ,natoms=15);
madaBasaltTraces->AddElement(Lu ,natoms=2);
madaBasaltTraces->AddElement(Ta ,natoms=15);
madaBasaltTraces->AddElement(Hf ,natoms=62); //tot 28114/10e7 weight: 2335253.28 g per 10e6 moles
// Define Madacagascar Basalt complete material 0054.PP.0044 sample
density = 3*g/cm3;
G4Material* madaBasalt= new G4Material(name="MadaBasalt", density, ncomponents=2);
madaBasalt->AddMaterial(madaBasaltMain, fractionmass=0.9897);
madaBasalt->AddMaterial(madaBasaltTraces, fractionmass=0.0103);
// Define Icelandic Basalt main components 0029.PP.0035 sample
density = 3*g/cm3;
G4Material* icelandicBasaltMain= new G4Material(name="IceBasaltMain", density, ncomponents=12);
icelandicBasaltMain->AddElement(elSi,fractionmass=0.2313);
icelandicBasaltMain->AddElement(elTi,fractionmass=0.0127);
icelandicBasaltMain->AddElement(elAl,fractionmass=0.0702);
icelandicBasaltMain->AddElement(Fe, fractionmass=0.1134);
icelandicBasaltMain->AddElement(Mn, fractionmass=0.0019);
icelandicBasaltMain->AddElement(Mg, fractionmass=0.0349);
icelandicBasaltMain->AddElement(Ca, fractionmass=0.0756);
icelandicBasaltMain->AddElement(Na, fractionmass=0.0892);
icelandicBasaltMain->AddElement(K, fractionmass=0.0032);
icelandicBasaltMain->AddElement(P, fractionmass=0.00096);
icelandicBasaltMain->AddElement(elS, fractionmass=0.0004);
icelandicBasaltMain->AddElement(O, fractionmass=0.36624);
// Define Icelandic Basalt traces components 0029.PP.0035 sample
density = 3*g/cm3;
G4Material* icelandicBasaltTraces= new G4Material(name="IceBasaltTraces", density, ncomponents=20);
icelandicBasaltTraces->AddElement(Ba, natoms=756);
icelandicBasaltTraces->AddElement(Ce ,natoms=328);
icelandicBasaltTraces->AddElement(Co ,natoms=643);
icelandicBasaltTraces->AddElement(Cr ,natoms=1000);
icelandicBasaltTraces->AddElement(elCu,natoms=1396);
icelandicBasaltTraces->AddElement(Ga ,natoms=190);
icelandicBasaltTraces->AddElement(La ,natoms=103);
icelandicBasaltTraces->AddElement(Mo ,natoms=9);
icelandicBasaltTraces->AddElement(Nb ,natoms=114);
icelandicBasaltTraces->AddElement(Nd ,natoms=104);
icelandicBasaltTraces->AddElement(Ni ,natoms=544);
icelandicBasaltTraces->AddElement(Rb ,natoms=78);
icelandicBasaltTraces->AddElement(elS ,natoms=5550);
icelandicBasaltTraces->AddElement(Sc ,natoms=531);
icelandicBasaltTraces->AddElement(Sr ,natoms=1353);
icelandicBasaltTraces->AddElement(elU ,natoms=22);
icelandicBasaltTraces->AddElement(V ,natoms=4533);
icelandicBasaltTraces->AddElement(Y ,natoms=408);
icelandicBasaltTraces->AddElement(Zn ,natoms=1259);
icelandicBasaltTraces->AddElement(Zr ,natoms=1274);
// Define Icelandic Basalt complete material 0029.PP.0035 sample
density = 3*g/cm3;
G4Material* icelandicBasalt= new G4Material(name="IceBasalt", density, ncomponents=2);
icelandicBasalt->AddMaterial(icelandicBasaltMain, fractionmass=0.9978);
icelandicBasalt->AddMaterial(icelandicBasaltTraces, fractionmass=0.0022);
// Define dolorite main components 0055.PP.0038 sample
density = 3*g/cm3;
G4Material* diorite = new G4Material(name="Diorite", density, ncomponents=11);
diorite->AddElement(Fe, fractionmass=0.1750);
diorite->AddElement(elTi, fractionmass=0.0082);
diorite->AddElement(Ca, fractionmass=0.0753);
diorite->AddElement(elSi, fractionmass=0.2188);
diorite->AddElement(elAl, fractionmass=0.0676);
diorite->AddElement(Mg, fractionmass=0.0008);
diorite->AddElement(O , fractionmass=0.4377);
diorite->AddElement(Mn , fractionmass=0.0015);
diorite->AddElement(Na , fractionmass=0.0134);
diorite->AddElement(K , fractionmass=0.0011);
diorite->AddElement(P , fractionmass=0.0006);
// define traces in dolorite 0055.PP.0038 sample
density = 3*g/cm3;
G4Material* tracesOfDolorite = new G4Material(name="TracesOfDolorite", density, ncomponents=16);
tracesOfDolorite->AddElement(Nb, natoms=5);
tracesOfDolorite->AddElement(Zr, natoms=91);
tracesOfDolorite->AddElement(Y, natoms=29);
tracesOfDolorite->AddElement(Sr, natoms=140);
tracesOfDolorite->AddElement(Rb, natoms=3);
tracesOfDolorite->AddElement(Ga, natoms=20);
tracesOfDolorite->AddElement(Zn, natoms=99);
tracesOfDolorite->AddElement(Ni, natoms=77);
tracesOfDolorite->AddElement(Sc, natoms=32);
tracesOfDolorite->AddElement(V, natoms=314);
tracesOfDolorite->AddElement(Cr, natoms=130);
tracesOfDolorite->AddElement(Co, natoms=56);
tracesOfDolorite->AddElement(elCu, natoms=119);
tracesOfDolorite->AddElement(Ba, natoms=38);
tracesOfDolorite->AddElement(Ce, natoms=15);
tracesOfDolorite->AddElement(Nd, natoms=9);
// define dolorite (full) -- 0055.PP.0038 sample
density = 3*g/cm3;
dolorite = new G4Material(name="Dolorite", density, ncomponents=2);
dolorite->AddMaterial(tracesOfDolorite, fractionmass=0.0027842352);
dolorite->AddMaterial(diorite, fractionmass=0.9972157648);
// define mars1 -- 01.PP.0030 sample
density = 3*g/cm3;
G4Material* mars1Main = new G4Material(name="Mars1 Main components", density, ncomponents=11);
mars1Main->AddElement(Fe, fractionmass=0.100916);
mars1Main->AddElement(elTi, fractionmass=0.0186804);
mars1Main->AddElement(Ca, fractionmass=0.0404091);
mars1Main->AddElement(elSi, fractionmass=0.196378);
mars1Main->AddElement(elAl, fractionmass=0.103282);
mars1Main->AddElement(Mg, fractionmass=0.0241622);
mars1Main->AddElement(Mn , fractionmass=0.00184331);
mars1Main->AddElement(Na , fractionmass=0.0177908);
mars1Main->AddElement(K , fractionmass=0.00574498);
mars1Main->AddElement(P , fractionmass=0.00280169);
mars1Main->AddElement(O , fractionmass=0.48799152);
density = 3*g/cm3;
G4Material* tracesOfMars1 = new G4Material(name="TracesOfMars1", density, ncomponents=17);
tracesOfMars1->AddElement(Nb, natoms=55);
tracesOfMars1->AddElement(Zr, natoms=433);
tracesOfMars1->AddElement(Y, natoms=58);
tracesOfMars1->AddElement(Sr, natoms=968);
tracesOfMars1->AddElement(Rb, natoms=16);
tracesOfMars1->AddElement(Ga, natoms=24);
tracesOfMars1->AddElement(Zn, natoms=109);
tracesOfMars1->AddElement(Ni, natoms=70);
tracesOfMars1->AddElement(Sc, natoms=21);
tracesOfMars1->AddElement(V, natoms=134);
tracesOfMars1->AddElement(Cr, natoms=141);
tracesOfMars1->AddElement(Co, natoms=30);
tracesOfMars1->AddElement(elCu, natoms=19);
tracesOfMars1->AddElement(Ba, natoms=580);
tracesOfMars1->AddElement(elPb, natoms=4);
tracesOfMars1->AddElement(elS, natoms=444);
tracesOfMars1->AddElement(elU, natoms=2);
density = 3*g/cm3;
mars1 = new G4Material(name="Mars1", density, ncomponents=2);
mars1->AddMaterial(tracesOfMars1, fractionmass=0.0044963163);
mars1->AddMaterial(mars1Main, fractionmass=0.9955036837);
// define anorthosite
density = 2.8*g/cm3;
anorthosite = new G4Material(name="Anorthosite", density, ncomponents=21);
anorthosite->AddElement(Fe, fractionmass=0.095283);
anorthosite->AddElement(Mn, fractionmass=0.00137086);
anorthosite->AddElement(Ni, fractionmass=5e-5);
anorthosite->AddElement(elCu, fractionmass=5.2e-4);
anorthosite->AddElement(Na, fractionmass=0.017635);
anorthosite->AddElement(Mg, fractionmass=0.0245361);
anorthosite->AddElement(elAl, fractionmass=0.0800355);
anorthosite->AddElement(elSi, fractionmass=0.232204);
anorthosite->AddElement(Ca, fractionmass=0.0635368);
anorthosite->AddElement(K, fractionmass=0.00464912);
anorthosite->AddElement(C, fractionmass=0.000837803);
anorthosite->AddElement(P, fractionmass=0.00176742);
anorthosite->AddElement(elTi, fractionmass=0.0240879);
anorthosite->AddElement(Cl, fractionmass=0.00014);
anorthosite->AddElement(Pd, fractionmass=0.00001);
anorthosite->AddElement(Cd, fractionmass=0.00018);
anorthosite->AddElement(Ag, fractionmass=0.00048);
anorthosite->AddElement(elS, fractionmass=0.00144);
anorthosite->AddElement(V, fractionmass=0.00228);
anorthosite->AddElement(Ba, fractionmass=0.00151);
anorthosite->AddElement(O, fractionmass=0.447026);
//define Neodimuim
density = 6800*kg/m3;
materialNd = new G4Material(name="Neodimuim" ,density , ncomponents=1);
materialNd ->AddElement(Nd,natoms=1);
// define Berillium
density = 1848 * kg/m3;
a = 9.012182 * g / mole;
Be = new G4Material(name="Beryllium",z=4., a,density);
// Define Magnesium
density = 1738 * kg/m3;
materialMg = new G4Material(name="Magnesium",density , ncomponents=1);
materialMg->AddElement(Mg,natoms=1);
//define Tungsten
density = 19250 * kg/m3;
materialW = new G4Material(name="Tungsten",density , ncomponents=1);
materialW->AddElement(W,natoms=1);
//define iron
density = 7.86 * g/cm3;
FeMaterial = new G4Material(name="Iron",density,ncomponents=1);
FeMaterial->AddElement(Fe,natoms=1);
//define gallium arsenide
density = 5.32 * g/cm3;
G4Material * GaAs = new G4Material(name ="gallium arsenide",density,ncomponents=2);
GaAs->AddElement(Ga,natoms=1);
GaAs->AddElement(As,natoms=1);
// define germanium
density = 5.32 * g/cm3;
HPGe = new G4Material(name="HPGe",density,ncomponents=1);
HPGe ->AddElement(Ge,natoms=1);
//define silicon
density = 2.333*g/cm3;
a = 28.0855*g/mole;
Si = new G4Material(name="Silicon",z=14., a,density);
//define copper
density = 8.960*g/cm3;
a = 63.55*g/mole;
Cu = new G4Material(name="Copper" , z=29., a, density);
////define Oxigen
//density = 1*g/cm3;
//a=16*g/mole;
//G4Material* matOx = new G4Material(name="Oxigen", z=8., a, density);
//define aluminium
density = 2.700*g/cm3;
a = 26.98*g/mole;
Al = new G4Material(name="Aluminium", z=13., a, density);
//define titanium
density = 4.54 *g/cm3;
a = 47.867*g/mole;
Ti = new G4Material(name="Titanium",z=22.,a,density);
//define Uranium
density = 19050*kg/m3;
a = 238.02891*g/mole;
U = new G4Material(name="Uranium",z=92.,a,density);
//define Tin
density = 7310*kg/m3;
a = 118.710*g/mole;
Sn = new G4Material(name="Tin",z=50.,a,density);
//define lead
density = 11.35*g/cm3;
a=207.19*g/mole;
Pb = new G4Material(name="Lead",z=82.,a,density);
// define Silver material
density = 10490*kg/m3;
materialAg = new G4Material(name="Silver" ,density , ncomponents=1);
materialAg ->AddElement(Ag,natoms=1);
//define gold
density = 19300*kg/m3;
a= 196.96655*g/mole;
Au = new G4Material(name="Gold",z=79.,a,density);
//define caesium
density = 1879*kg/m3;
a= 132.90545*g/mole;
Cs = new G4Material(name="Caesium",z=55.,a,density);
// define Potassium material
density = 1879*kg/m3;
materialK = new G4Material(name="Potassium" ,density , ncomponents=1);
materialK ->AddElement(K,natoms=1);
// define Manganese material
density = 7470*kg/m3;
materialMn = new G4Material(name="Manganese" ,density , ncomponents=1);
materialMn ->AddElement(Mn,natoms=1);
// define Phosphorus material
density = 1823*kg/m3;
materialP = new G4Material(name="Phosphorus" ,density , ncomponents=1);
materialP ->AddElement(P,natoms=1);
// define Sufur material
density = 1960*kg/m3;
materialS = new G4Material(name="Sulphur" ,density , ncomponents=1);
materialS ->AddElement(elS,natoms=1);
// define Calcium material
density = 1550*kg/m3;
materialCa = new G4Material(name="Calcium" ,density , ncomponents=1);
materialCa ->AddElement(Ca,natoms=1);
// define Sodium material
density = 968*kg/m3;
materialNa = new G4Material(name="Sodium" ,density , ncomponents=1);
materialNa ->AddElement(Na,natoms=1);
//define scintillator
density = 1.032*g/cm3;
Sci = new G4Material(name="Scintillator", density, ncomponents=2);
Sci->AddElement(C, natoms=9);
Sci->AddElement(H, natoms=10);
//define air
density = 1.290*mg/cm3;
Air = new G4Material(name="Air" , density, ncomponents=2);
Air->AddElement(N, fractionmass=0.7);
Air->AddElement(O, fractionmass=0.3);
//define vacuum
density = universe_mean_density; //from PhysicalConstants.h
pressure = 3.e-18*pascal;
temperature = 2.73*kelvin;
Vacuum = new G4Material(name="Galactic", z=1., a=1.01*g/mole, density,
kStateGas,temperature,pressure);
//define basalt
density = 3.*g/cm3;
basalt = new G4Material(name="Basalt", density, ncomponents=7);
basalt->AddElement(Fe, fractionmass=0.1200);
basalt->AddElement(elTi, fractionmass=0.0160);
basalt->AddElement(Ca, fractionmass=0.0750);
basalt->AddElement(elSi, fractionmass=0.2160);
basalt->AddElement(elAl, fractionmass=0.0710);
basalt->AddElement(Mg, fractionmass=0.0590);
basalt->AddElement(O , fractionmass=0.4430);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
@@ -49,7 +49,7 @@
#include "G4ios.hh"
#include "G4PVReplica.hh"
#include "G4UserLimits.hh"
#include "XrayFluoMaterials.hh"
#include "XrayFluoNistMaterials.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -70,7 +70,7 @@ XrayFluoMercuryDetectorConstruction::XrayFluoMercuryDetectorConstruction()
defaultMaterial(0),HPGeSD(0)
{
materials = XrayFluoMaterials::GetInstance();
materials = XrayFluoNistMaterials::GetInstance();
DefineDefaultMaterials();
@@ -0,0 +1,428 @@
//
// ********************************************************************
// * DISCLAIMER *
// * *
// * The following disclaimer summarizes all the specific disclaimers *
// * of contributors to this software. The specific disclaimers,which *
// * govern, are listed with their locations in: *
// * http://cern.ch/geant4/license *
// * *
// * 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. *
// * *
// * This code implementation is the intellectual property of the *
// * GEANT4 collaboration. *
// * By copying, distributing or modifying the Program (or any work *
// * based on the Program) you indicate your acceptance of this *
// * statement, and all its terms. *
// ********************************************************************
//
//
// $Id: XrayFluoDetectorConstruction.hh
// GEANT4 tag $Name: xray_fluo-V03-02-00
//
// Author: Alfonso Mantero (Alfonso.Mantero@ge.infn.it)
//
// History:
// -----------
// 20 Aug 2001 Alfonso Mantero Created
//
// -------------------------------------------------------------------
#include "XrayFluoNistMaterials.hh"
XrayFluoNistMaterials::XrayFluoNistMaterials()
{ CreateMaterials();}
XrayFluoNistMaterials::~XrayFluoNistMaterials()
{
delete dolorite;
delete HPGe;
delete mars1;
delete galactic;
delete madaBasalt;
delete icelandicBasalt;
delete GaAs;
}
XrayFluoNistMaterials* XrayFluoNistMaterials::instance = 0;
XrayFluoNistMaterials* XrayFluoNistMaterials::GetInstance()
{
if (instance == 0)
{
instance = new XrayFluoNistMaterials;
}
return instance;
}
G4Material* XrayFluoNistMaterials::GetMaterial(G4String material)
{
//instancing G4NistManager
nistMan = G4NistManager::Instance();
nistMan->SetVerbose(0);
G4Material* mat = nistMan->FindOrBuildMaterial(material);
if (!mat) {
mat = G4Material::GetMaterial(material);
}
if (!mat) {G4cout << material << "Not Found, Please Retry"<< G4endl;}
return mat;
}
void XrayFluoNistMaterials::CreateMaterials()
{
G4double density;
std::vector<G4int> natoms;
std::vector<G4double> fractionMass;
std::vector<G4String> elements;
//instancing G4NistManager
nistMan = G4NistManager::Instance();
nistMan->SetVerbose(1);
// Materials Definitions
///////////////////////
// Madagascar Basalt //
///////////////////////
// Define Madagascar Basalt main components 0054.PP.0044 sample
density = 3*g/cm3;
elements.push_back("Si"); fractionMass.push_back(0.1992); // 0.007093 mol/g(mat)
elements.push_back("Ti"); fractionMass.push_back(0.02027); // 4.235e-4
elements.push_back("Al"); fractionMass.push_back(0.04758); // 0.001763
elements.push_back("Fe"); fractionMass.push_back(0.1303); // 0.002333
elements.push_back("Mn"); fractionMass.push_back(0.001549);// 2.820e-5
elements.push_back("Mg"); fractionMass.push_back(0.08141); // 0.003350
elements.push_back("Ca"); fractionMass.push_back(0.06468); // 0.001614
elements.push_back("Na"); fractionMass.push_back(0.01692); // 7.360e-4
elements.push_back("K"); fractionMass.push_back(0.008576);// 2.193e-4
elements.push_back("P"); fractionMass.push_back(0.001977);// 6.383e-5
elements.push_back("O"); fractionMass.push_back(0.427538);// 0.02672
// sum is 0.04434383 total number of moles of atoms in one gram of material
// 2.248766e8 g per 10.000.000 moles.
G4Material* madaBasaltMain= nistMan->ConstructNewMaterial("MadaBasaltMain",elements, fractionMass, density);
elements.clear();
fractionMass.clear();
// Define Madagascar Basalt traces components 0054.PP.0044 sample
density = 3*g/cm3;
elements.push_back("Ti"); natoms.push_back(33);
elements.push_back("Ba"); natoms.push_back(4131);
elements.push_back("Ce"); natoms.push_back(694);
elements.push_back("Co"); natoms.push_back(965);
elements.push_back("Cr"); natoms.push_back(5584);
elements.push_back("La"); natoms.push_back(269);
elements.push_back("Nb"); natoms.push_back(259);
elements.push_back("Nd"); natoms.push_back(410);
elements.push_back("Ni"); natoms.push_back(389);
elements.push_back("Rb"); natoms.push_back(227);
elements.push_back("Sc"); natoms.push_back(212);
elements.push_back("Sr"); natoms.push_back(8686);
elements.push_back("V"); natoms.push_back(4203);
elements.push_back("Y"); natoms.push_back(272);
elements.push_back("Zn"); natoms.push_back(1440);
elements.push_back("Th"); natoms.push_back(19);
elements.push_back("Sm"); natoms.push_back(93);
elements.push_back("Eu"); natoms.push_back(32);
elements.push_back("Gd"); natoms.push_back(89);
elements.push_back("Tb"); natoms.push_back(13);
elements.push_back("Yb"); natoms.push_back(15);
elements.push_back("Lu"); natoms.push_back(2);
elements.push_back("Ta"); natoms.push_back(15);
elements.push_back("Hf"); natoms.push_back(62);
//tot 28114/10e7 weight: 2335253.28 g per 10e6 moles
G4Material* madaBasaltTraces= nistMan->ConstructNewMaterial("MadaBasaltTraces", elements, natoms, density);
elements.clear();
natoms.clear();
// Define Madacagascar Basalt complete material 0054.PP.0044 sample
density = 3*g/cm3;
madaBasalt= new G4Material("MadaBasalt", density, 2);
madaBasalt->AddMaterial(madaBasaltMain, 0.9897);
madaBasalt->AddMaterial(madaBasaltTraces, 0.0103);
///////////////////////
// Iceland Basalt //
///////////////////////
elements.push_back("Si"); fractionMass.push_back(0.2313);
elements.push_back("Ti"); fractionMass.push_back(0.0127);
elements.push_back("Al"); fractionMass.push_back(0.0702);
elements.push_back("Fe"); fractionMass.push_back(0.1134);
elements.push_back("Mn"); fractionMass.push_back(0.0019);
elements.push_back("Mg"); fractionMass.push_back(0.0349);
elements.push_back("Ca"); fractionMass.push_back(0.0756);
elements.push_back("Na"); fractionMass.push_back(0.0892);
elements.push_back("K"); fractionMass.push_back(0.0032);
elements.push_back("P"); fractionMass.push_back(0.00096);
elements.push_back("S"); fractionMass.push_back(0.0004);
elements.push_back("O"); fractionMass.push_back(0.36624);
// Define Icelandic Basalt main components 0029.PP.0035 sample
density = 3*g/cm3;
G4Material* icelandicBasaltMain= nistMan->ConstructNewMaterial("IceBasaltMain",elements, fractionMass, density);
// Define Icelandic Basalt traces components 0029.PP.0035 sample
density = 3*g/cm3;
elements.push_back("Ba"); natoms.push_back(756);
elements.push_back("Ce"); natoms.push_back(328);
elements.push_back("Co"); natoms.push_back(643);
elements.push_back("Cr"); natoms.push_back(1000);
elements.push_back("Cu"); natoms.push_back(1396);
elements.push_back("Ga"); natoms.push_back(190);
elements.push_back("La"); natoms.push_back(103);
elements.push_back("Mo"); natoms.push_back(9);
elements.push_back("Nb"); natoms.push_back(114);
elements.push_back("Nd"); natoms.push_back(104);
elements.push_back("Ni"); natoms.push_back(544);
elements.push_back("Rb"); natoms.push_back(78);
elements.push_back("S"); natoms.push_back(5550);
elements.push_back("Sc"); natoms.push_back(531);
elements.push_back("Sr"); natoms.push_back(1353);
elements.push_back("U"); natoms.push_back(22);
elements.push_back("V"); natoms.push_back(4533);
elements.push_back("Y"); natoms.push_back(408);
elements.push_back("Zn"); natoms.push_back(1259);
elements.push_back("Zr"); natoms.push_back(1274);
G4Material* icelandicBasaltTraces= nistMan->ConstructNewMaterial("IceBasaltTraces", elements, natoms, density);
elements.clear();
natoms.clear();
// Define Icelandic Basalt complete material 0029.PP.0035 sample
density = 3*g/cm3;
icelandicBasalt= new G4Material("IceBasalt", density, 2);
icelandicBasalt->AddMaterial(icelandicBasaltMain, 0.9978);
icelandicBasalt->AddMaterial(icelandicBasaltTraces, 0.0022);
///////////////////////
// Dolorite //
///////////////////////
// Define dolorite main components 0055.PP.0038 sample
density = 3*g/cm3;
elements.push_back("Fe"); fractionMass.push_back(0.1750);
elements.push_back("Ti"); fractionMass.push_back(0.0082);
elements.push_back("Ca"); fractionMass.push_back(0.0753);
elements.push_back("Si"); fractionMass.push_back(0.2188);
elements.push_back("Al"); fractionMass.push_back(0.0676);
elements.push_back("Mg"); fractionMass.push_back(0.0008);
elements.push_back("O"); fractionMass.push_back(0.4377);
elements.push_back("Mn"); fractionMass.push_back(0.0015);
elements.push_back("Na"); fractionMass.push_back(0.0134);
elements.push_back("K"); fractionMass.push_back(0.0011);
elements.push_back("P"); fractionMass.push_back(0.0006);
G4Material* dolorite = nistMan->ConstructNewMaterial("Dolorite", elements, fractionMass, density);
elements.clear();
natoms.clear();
// define traces in dolorite 0055.PP.0038 sample
density = 3*g/cm3;
elements.push_back("Nb"); natoms.push_back(5);
elements.push_back("Zr"); natoms.push_back(91);
elements.push_back("Y"); natoms.push_back(29);
elements.push_back("Sr"); natoms.push_back(140);
elements.push_back("Rb"); natoms.push_back(3);
elements.push_back("Ga"); natoms.push_back(20);
elements.push_back("Zn"); natoms.push_back(99);
elements.push_back("Ni"); natoms.push_back(77);
elements.push_back("Sc"); natoms.push_back(32);
elements.push_back("V"); natoms.push_back(314);
elements.push_back("Cr"); natoms.push_back(130);
elements.push_back("Co"); natoms.push_back(56);
elements.push_back("Cu"); natoms.push_back(119);
elements.push_back("Ba"); natoms.push_back(38);
elements.push_back("Ce"); natoms.push_back(15);
elements.push_back("Nd"); natoms.push_back(9);
G4Material* tracesOfDolorite= nistMan->ConstructNewMaterial("TracesOfDolorite", elements, natoms, density);
elements.clear();
natoms.clear();
// define dolorite (full) -- 0055.PP.0038 sample
density = 3*g/cm3;
dolorite = new G4Material("Dolorite", density, 2);
dolorite->AddMaterial(tracesOfDolorite, 0.0027842352);
dolorite->AddMaterial(dolorite, 0.9972157648);
///////////////////////
// Mars1 //
///////////////////////
// define mars1 -- 01.PP.0030 sample
density = 3*g/cm3;
elements.push_back("Fe"); fractionMass.push_back(0.100916);
elements.push_back("Ti"); fractionMass.push_back(0.0186804);
elements.push_back("Ca"); fractionMass.push_back(0.0404091);
elements.push_back("Si"); fractionMass.push_back(0.196378);
elements.push_back("Al"); fractionMass.push_back(0.103282);
elements.push_back("Mg"); fractionMass.push_back(0.0241622);
elements.push_back("Mn"); fractionMass.push_back(0.00184331);
elements.push_back("Na"); fractionMass.push_back(0.0177908);
elements.push_back("K"); fractionMass.push_back(0.00574498);
elements.push_back("P"); fractionMass.push_back(0.00280169);
elements.push_back("O"); fractionMass.push_back(0.48799152);
G4Material* mars1Main = nistMan->ConstructNewMaterial("Mars1 Main components", elements, fractionMass, density);
elements.clear();
fractionMass.clear();
elements.push_back("Nb"); natoms.push_back(55);
elements.push_back("Zr"); natoms.push_back(433);
elements.push_back("Y"); natoms.push_back(58);
elements.push_back("Sr"); natoms.push_back(968);
elements.push_back("Rb"); natoms.push_back(16);
elements.push_back("Ga"); natoms.push_back(24);
elements.push_back("Zn"); natoms.push_back(109);
elements.push_back("Ni"); natoms.push_back(70);
elements.push_back("Sc"); natoms.push_back(21);
elements.push_back("V"); natoms.push_back(134);
elements.push_back("Cr"); natoms.push_back(141);
elements.push_back("Co"); natoms.push_back(30);
elements.push_back("Cu"); natoms.push_back(19);
elements.push_back("Ba"); natoms.push_back(580);
elements.push_back("Pb"); natoms.push_back(4);
elements.push_back("S"); natoms.push_back(444);
elements.push_back("U"); natoms.push_back(2);
density = 3*g/cm3;
G4Material* tracesOfMars1 = nistMan->ConstructNewMaterial("TracesOfMars1", elements, natoms, density);
elements.clear();
natoms.clear();
density = 3*g/cm3;
mars1 = new G4Material("Mars1", density, 2);
mars1->AddMaterial(tracesOfMars1, 0.0044963163);
mars1->AddMaterial(mars1Main, 0.9955036837);
///////////////////////
// Anorthosite //
///////////////////////
density = 2.8*g/cm3;
elements.push_back("Fe"); fractionMass.push_back(0.095283);
elements.push_back("Mn"); fractionMass.push_back(0.00137086);
elements.push_back("Ni"); fractionMass.push_back(5e-5);
elements.push_back("Cu"); fractionMass.push_back(5.2e-4);
elements.push_back("Na"); fractionMass.push_back(0.017635);
elements.push_back("Mg"); fractionMass.push_back(0.0245361);
elements.push_back("Al"); fractionMass.push_back(0.0800355);
elements.push_back("Si"); fractionMass.push_back(0.232204);
elements.push_back("Ca"); fractionMass.push_back(0.0635368);
elements.push_back("K"); fractionMass.push_back(0.00464912);
elements.push_back("C"); fractionMass.push_back(0.000837803);
elements.push_back("P"); fractionMass.push_back(0.00176742);
elements.push_back("Ti"); fractionMass.push_back(0.0240879);
elements.push_back("Cl"); fractionMass.push_back(0.00014);
elements.push_back("Pd"); fractionMass.push_back(0.00001);
elements.push_back("Cd"); fractionMass.push_back(0.00018);
elements.push_back("Ag"); fractionMass.push_back(0.00048);
elements.push_back("S"); fractionMass.push_back(0.00144);
elements.push_back("V"); fractionMass.push_back(0.00228);
elements.push_back("Ba"); fractionMass.push_back(0.00151);
elements.push_back("O"); fractionMass.push_back(0.447026);
anorthosite = nistMan->ConstructNewMaterial("Anorthosite", elements, fractionMass, density);
elements.clear();
fractionMass.clear();
//define gallium arsenide
elements.push_back("Ga"); natoms.push_back(1);
elements.push_back("As"); natoms.push_back(1);
density = 5.32 * g/cm3;
GaAs = nistMan->ConstructNewMaterial("gallium arsenide", elements, natoms, density);
elements.clear();
natoms.clear();
// define germanium
density = 5.32 * g/cm3;
elements.push_back("Ge"); natoms.push_back(1);
HPGe = nistMan->ConstructNewMaterial("HPGe",elements, natoms, density);
elements.clear();
natoms.clear();
//define scintillator
elements.push_back("C"); natoms.push_back(9);
elements.push_back("H"); natoms.push_back(10);
density = 1.032*g/cm3;
Sci = nistMan->ConstructNewMaterial("Scintillator", elements, natoms, density);
elements.clear();
natoms.clear();
//define vacuum
density = universe_mean_density; //from PhysicalConstants.h
G4double pressure = 3.e-18*pascal;
G4double temperature = 2.73*kelvin;
Vacuum = new G4Material("Galactic", 1., 1.01*g/mole, density,
kStateGas,temperature,pressure);
//define basalt
density = 3.*g/cm3;
elements.push_back("Fe"); fractionMass.push_back(0.1200);
elements.push_back("Ti"); fractionMass.push_back(0.0160);
elements.push_back("Ca"); fractionMass.push_back(0.0750);
elements.push_back("Si"); fractionMass.push_back(0.2160);
elements.push_back("Al"); fractionMass.push_back(0.0710);
elements.push_back("Mg"); fractionMass.push_back(0.0590);
elements.push_back("O"); fractionMass.push_back(0.4430);
basalt = nistMan->ConstructNewMaterial("Basalt", elements, fractionMass, density);
G4cout << *(G4Material::GetMaterialTable()) << G4endl;
}
@@ -38,6 +38,14 @@
#include "XrayFluoPlaneDetectorConstruction.hh"
#include "XrayFluoMercuryDetectorConstruction.hh"
/////////////////////////////////////////
//#include "G4LeptonConstructor.hh"
//#include "G4BosonConstructor.hh"
//#include "G4MesonConstructor.hh"
#include "G4BaryonConstructor.hh"
/////////////////////////////////////////
#include "G4ParticleDefinition.hh"
#include "G4ParticleWithCuts.hh"
#include "G4ProcessManager.hh"
@@ -159,12 +167,14 @@ void XrayFluoPhysicsList::ConstructLeptons()
void XrayFluoPhysicsList::ConstructBarions()
{
G4Proton::ProtonDefinition();
G4BaryonConstructor baryon;
baryon.ConstructParticle();
// G4Proton::ProtonDefinition();
}
void XrayFluoPhysicsList::ConstructIons()
{
// Ions
G4Alpha::AlphaDefinition();
G4Alpha::AlphaDefinition();
}
void XrayFluoPhysicsList::ConstructProcess()
@@ -48,7 +48,7 @@
#include "G4ios.hh"
#include "G4PVReplica.hh"
#include "G4UserLimits.hh"
#include "XrayFluoMaterials.hh"
#include "XrayFluoNistMaterials.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
@@ -69,7 +69,7 @@ XrayFluoPlaneDetectorConstruction::XrayFluoPlaneDetectorConstruction()
defaultMaterial(0),HPGeSD(0)
{
materials = XrayFluoMaterials::GetInstance();
materials = XrayFluoNistMaterials::GetInstance();
DefineDefaultMaterials();
@@ -44,8 +44,9 @@
#include "Randomize.hh"
#include "XrayFluoAnalysisManager.hh"
#include "XrayFluoDataSet.hh"
#ifdef G4ANALYSIS_USE
#include "AIDA/AIDA.h"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
XrayFluoPrimaryGeneratorAction::XrayFluoPrimaryGeneratorAction(XrayFluoDetectorConstruction* XrayFluoDC)
@@ -41,10 +41,11 @@
#include "G4DataVector.hh"
#include "G4LogLogInterpolation.hh"
#include <fstream>
#include <strstream>
#include <sstream>
#include "XrayFluoNormalization.hh"
#ifdef G4ANALYSIS_USE
#include "XrayFluoAnalysisManager.hh"
#endif
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
#ifdef G4ANALYSIS_USE
@@ -144,9 +145,9 @@ void XrayFluoRunAction::BeginOfRunAction(const G4Run* aRun)
void XrayFluoRunAction::EndOfRunAction(const G4Run*)
{
#ifdef G4ANALYSIS_USE
XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance();
#endif
// Run ended, update the visualization
if (G4VVisManager::GetConcreteInstance()) {
G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update");
@@ -197,12 +198,11 @@ G4double XrayFluoRunAction::GetDataSum()
void XrayFluoRunAction::ReadData(G4double unitE, G4String fileName)
{
char nameChar[100] = {""};
std::ostrstream ost(nameChar, 100, std::ios::out);
std::ostringstream ost;
ost << fileName <<".dat";
G4String name(nameChar);
G4String name = ost.str();
char* path;
if (!(getenv("XRAYDATA"))) {
@@ -38,7 +38,7 @@
#include "G4LogLogInterpolation.hh"
#include "G4ios.hh"
#include <fstream>
#include <strstream>
#include <sstream>
#include "G4UnitsTable.hh"
#include "Randomize.hh"
@@ -306,13 +306,11 @@ G4double XrayFluoSiLiDetectorType::GetSupData(G4double, G4double random, G4int p
}
void XrayFluoSiLiDetectorType::LoadResponseData(G4String fileName)
{
char nameChar[100] = {""};
std::ostrstream ost(nameChar, 100, std::ios::out);
std::ostringstream ost;
ost << fileName<<".dat";
G4String name(nameChar);
G4String name = ost.str();
char* path = getenv("XRAYDATA");
@@ -54,7 +54,10 @@
#include "XrayFluoSteppingAction.hh"
#include "XrayFluoSteppingVerbose.hh"
#include "XrayFluoSimulation.hh"
#ifdef G4ANALYSIS_USE
#include "XrayFluoAnalysisManager.hh"
#endif
using namespace CLHEP;
XrayFluoSimulation::XrayFluoSimulation(G4int seed):dir(seed)
@@ -68,8 +71,8 @@ void XrayFluoSimulation::RunSimulation(int argc,char* argv[])
{
// choose the Random engine
HepRandom::setTheEngine(new RanecuEngine);
HepRandom::setTheSeed(dir);
CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
CLHEP::HepRandom::setTheSeed(dir);
//XrayFluo Verbose output class
G4VSteppingVerbose::SetInstance(new XrayFluoSteppingVerbose);
@@ -135,7 +138,7 @@ void XrayFluoSimulation::RunSimulation(int argc,char* argv[])
{
// G4UIterminal is a (dumb) terminal.
#ifdef G4UI_USE_XM
session = new G4UIXm(argc,argv[1]);
session = new G4UIXm(argc,&argv[1]);
#else
#ifdef G4UI_USE_TCSH
session = new G4UIterminal(new G4UItcsh);
@@ -153,8 +156,10 @@ void XrayFluoSimulation::RunSimulation(int argc,char* argv[])
visManager->Initialize();
#endif
#ifdef G4ANALYSIS_USE
// set analysis to have the messenger running...
XrayFluoAnalysisManager* analysis = XrayFluoAnalysisManager::getInstance();
#endif
XrayFluoEventAction* eventAction = 0;
XrayFluoRunAction* runAction = new XrayFluoRunAction();
XrayFluoSteppingAction* stepAction = new XrayFluoSteppingAction();
@@ -164,8 +169,10 @@ void XrayFluoSimulation::RunSimulation(int argc,char* argv[])
if (geometryNumber == 1 || geometryNumber == 4) {
if (geometryNumber == 4) {
#ifdef G4ANALYSIS_USE
analysis->PhaseSpaceOn();
analysis->CreatePersistency();
#endif
}
eventAction = new XrayFluoEventAction(testBeamDetector);
runManager->SetUserAction(new XrayFluoPrimaryGeneratorAction(testBeamDetector));