Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /geant4/examples/advanced/underground_physics/src/DMXDetectorMaterial.icc was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 //
0027 //
0028 // Author: Alex Howard (alexander.howard@cern.ch)
0029 //
0030 // History:
0031 // -----------
0032 //
0033 // 23rd November 2002 Modified GXe and LXe material tables to include new
0034 //                    scintillation method - Alex Howard
0035 //
0036   G4double density,      // density
0037     a,                   // atomic mass
0038     z;                   // atomic number
0039   G4String name,         // name
0040     symbol;              // symbol
0041   G4int ncomponents,     // n components
0042     iz,                  // number of protons
0043     in;                  // number of nuceons
0044   G4double abundance,    // abundance
0045     temperature,         // temperature
0046     pressure;            // pressure
0047 
0048 
0049   // making vacuum
0050   G4Material* vacuum = new G4Material 
0051     (name="Vacuum", z=1., a=1.*g/mole, density=1.e-20*g/cm3,
0052      kStateGas, temperature=0.1*kelvin, pressure=1.e-20*bar);
0053 
0054   // xenons
0055   G4Element* elementXe = new G4Element( "Xenon", "Xe", 54., 131.29*g/mole );
0056   G4Material* LXe = new G4Material
0057      ("LXe", 3.02*g/cm3, 1, kStateLiquid, 173.15*kelvin, 1.5*atmosphere );
0058   G4Material* GXe = new G4Material
0059      ("GXe", 0.005887*g/cm3, 1, kStateGas, 173.15*kelvin, 1.5*atmosphere );
0060   LXe->AddElement( elementXe, 1);
0061   GXe->AddElement( elementXe, 1);
0062 
0063   //  std::vector<G4double> LXe_PP    = { 7.07*eV, 7.07*eV };
0064   std::vector<G4double> LXe_PP    = { 7.0*eV , 7.07*eV, 7.14*eV };
0065   std::vector<G4double> LXe_SCINT = { 0.1, 1.0, 0.1 };
0066   std::vector<G4double> LXe_RIND  = { 1.59 , 1.57, 1.54 };
0067   std::vector<G4double> LXe_ABSL  = { 35.*cm, 35.*cm, 35.*cm}; //atten length
0068   std::vector<G4double> LXe_scint_e = { 0.*MeV, 10.*MeV };
0069   std::vector<G4double> LXe_scint_default = { 0., 120000.};
0070   std::vector<G4double> LXe_scint_alpha = { 0., 132000.};
0071   std::vector<G4double> LXe_scint_ion = { 0., 24000.};
0072   G4MaterialPropertiesTable *LXe_mt = new G4MaterialPropertiesTable();
0073   LXe_mt->AddProperty("SCINTILLATIONCOMPONENT1", LXe_PP, LXe_SCINT);
0074   LXe_mt->AddProperty("SCINTILLATIONCOMPONENT2", LXe_PP, LXe_SCINT);
0075   LXe_mt->AddProperty("RINDEX",        LXe_PP, LXe_RIND);
0076   LXe_mt->AddProperty("ABSLENGTH",     LXe_PP, LXe_ABSL);
0077   LXe_mt->AddProperty("ELECTRONSCINTILLATIONYIELD", LXe_scint_e, LXe_scint_default); // include QE 20%
0078   // and 13eV creation energy for photons - may be 15eV?
0079   // Fano factor assumed 1; should be much less for Xe ~ 0.13
0080   // but the Fano factor is already partially included in the correlated 
0081   // electron production - therefore not the absolute Fano factor here:
0082   LXe_mt->AddConstProperty("ELECTRONSCINTILLATIONYIELD1", 0.);
0083   LXe_mt->AddConstProperty("ELECTRONSCINTILLATIONYIELD2", 1.);
0084 
0085   LXe_mt->AddProperty("ALPHASCINTILLATIONYIELD", LXe_scint_e, LXe_scint_alpha); // include QE 20%
0086   LXe_mt->AddConstProperty("ALPHASCINTILLATIONYIELD1", 1.);
0087   LXe_mt->AddConstProperty("ALPHASCINTILLATIONYIELD2", 0.);
0088 
0089   LXe_mt->AddProperty("IONSCINTILLATIONYIELD", LXe_scint_e, LXe_scint_ion); // include QE 20%
0090   LXe_mt->AddConstProperty("IONSCINTILLATIONYIELD1", 1.);
0091   LXe_mt->AddConstProperty("IONSCINTILLATIONYIELD2", 0.);
0092 
0093   LXe_mt->AddConstProperty("RESOLUTIONSCALE",1.0);
0094   LXe_mt->AddConstProperty("SCINTILLATIONTIMECONSTANT1",20.*ns);
0095   LXe_mt->AddConstProperty("SCINTILLATIONTIMECONSTANT2",45.*ns);
0096   LXe->SetMaterialPropertiesTable(LXe_mt);
0097 
0098   std::vector<G4double> GXe_PP = { 7.0*eV, 7.07*eV, 7.14*eV };
0099   std::vector<G4double> GXe_SCINT = { 0.1, 1.0, 0.1 };
0100   std::vector<G4double> GXe_RIND  = { 1.00, 1.00, 1.00 };
0101   std::vector<G4double> GXe_ABSL  = { 100*m, 100*m, 100*m}; //atten length
0102   std::vector<G4double> GXe_scint_e = { 0.*MeV, 10.*MeV };
0103   std::vector<G4double> GXe_scint_default = { 0., 120000.};
0104   std::vector<G4double> GXe_scint_alpha = { 0., 132000.};
0105   std::vector<G4double> GXe_scint_ion = { 0., 24000.};
0106   G4MaterialPropertiesTable *GXe_mt = new G4MaterialPropertiesTable();
0107   GXe_mt->AddProperty("SCINTILLATIONCOMPONENT1", GXe_PP, GXe_SCINT);
0108   GXe_mt->AddProperty("SCINTILLATIONCOMPONENT2", GXe_PP, GXe_SCINT);
0109   GXe_mt->AddProperty("RINDEX",        GXe_PP, GXe_RIND);
0110   GXe_mt->AddProperty("ABSLENGTH",     GXe_PP, GXe_ABSL);
0111   GXe_mt->AddConstProperty("SCINTILLATIONYIELD",12000./MeV); // include QE 20%
0112 
0113   GXe_mt->AddProperty("ELECTRONSCINTILLATIONYIELD", GXe_scint_e, GXe_scint_default); // include QE 20%
0114   GXe_mt->AddConstProperty("ELECTRONSCINTILLATIONYIELD1", 0.);
0115   GXe_mt->AddConstProperty("ELECTRONSCINTILLATIONYIELD2", 1.);
0116 
0117   GXe_mt->AddProperty("ALPHASCINTILLATIONYIELD", GXe_scint_e, GXe_scint_alpha); // include QE 20%
0118   GXe_mt->AddConstProperty("ALPHASCINTILLATIONYIELD1", 1.);
0119   GXe_mt->AddConstProperty("ALPHASCINTILLATIONYIELD2", 0.);
0120 
0121   GXe_mt->AddProperty("IONSCINTILLATIONYIELD", LXe_scint_e, LXe_scint_ion); // include QE 20%
0122   GXe_mt->AddConstProperty("IONSCINTILLATIONYIELD1", 1.);
0123   GXe_mt->AddConstProperty("IONSCINTILLATIONYIELD2", 0.);
0124 
0125   GXe_mt->AddConstProperty("RESOLUTIONSCALE",1.0);
0126   GXe_mt->AddConstProperty("SCINTILLATIONTIMECONSTANT1",20.*ns);
0127   GXe_mt->AddConstProperty("SCINTILLATIONTIMECONSTANT2",45.*ns);
0128   GXe->SetMaterialPropertiesTable(GXe_mt);
0129 
0130   // making quartz
0131   G4Element* O  = new G4Element
0132     (name="Oxygen"  ,symbol="O" , z= 8., a=16.00*g/mole);
0133   G4Element* Si = new G4Element
0134     (name="Silicon",symbol="Si" , z= 14., a=28.09*g/mole);
0135   G4Material* quartz = new G4Material
0136     (name="quartz", density=2.200*g/cm3, ncomponents=2);
0137   quartz->AddElement(Si, 1);
0138   quartz->AddElement(O , 2);
0139 
0140   std::vector<G4double> quartz_PP   = { 5.0*eV, 6.69*eV, 7.50*eV }; // lambda range 4 ri
0141   std::vector<G4double> quartz_RIND = { 1.51, 1.57, 1.61 };     // ref index
0142   std::vector<G4double> quartz_ABSL = { 3.0*cm, 3.0*cm, 3.0*cm };// atten length
0143   G4MaterialPropertiesTable *quartz_mt = new G4MaterialPropertiesTable();
0144   quartz_mt->AddProperty("RINDEX", quartz_PP, quartz_RIND);
0145   quartz_mt->AddProperty("ABSLENGTH", quartz_PP, quartz_ABSL);
0146   quartz->SetMaterialPropertiesTable(quartz_mt);
0147 
0148 
0149   // aluminium
0150   G4Element* Al = new G4Element
0151     (name="Aluminium"  ,symbol="Al" , z= 13., a=26.98*g/mole);  
0152   G4Material* metalAl = new G4Material
0153     (name="MetalAluminium", density=2.700*g/cm3, ncomponents=1);
0154   metalAl->AddElement(Al, 1);
0155 
0156 
0157   // photocathode aluminium
0158   G4Material* cathmetalAl = new G4Material
0159     (name="CathodeMetalAluminium", density=2.700*g/cm3, ncomponents=1);
0160   cathmetalAl->AddElement(Al, 1);
0161 
0162   std::vector<G4double> cathmetal_PP   = { 5.0*eV, 6.69*eV, 7.50*eV };
0163   std::vector<G4double> cathmetal_RIND = { 1.51, 1.57, 1.61 };     // ref index
0164   std::vector<G4double> cathmetal_ABSL = { 1.e-20*m,  1.e-20*m,  1.e-20*m };// atten length
0165   G4MaterialPropertiesTable *cathmetal_mt = new G4MaterialPropertiesTable();
0166   cathmetal_mt->AddProperty("RINDEX", cathmetal_PP, cathmetal_RIND);
0167   cathmetal_mt->AddProperty("ABSLENGTH", cathmetal_PP, cathmetal_ABSL);
0168   cathmetalAl->SetMaterialPropertiesTable(cathmetal_mt);
0169 
0170 
0171   // iron
0172   G4Element* Fe = new G4Element
0173     (name="Iron"  ,symbol="Fe" , z= 26., a=55.85*g/mole);  
0174   G4Material* metalFe = new G4Material
0175     (name="MetalIron", density=7.874*g/cm3, ncomponents=1);
0176   metalFe->AddElement(Fe, 1);
0177 
0178 
0179   // stainless steel
0180   G4Element* C  = new G4Element( "Carbon", "C",   6. , 12.011*g/mole);
0181   G4Element* Co = new G4Element( "Cobalt", "Co", 27. , 58.9332*g/mole);
0182   G4Material* ssteel = new G4Material
0183     (name="Steel", density=7.7*g/cm3, ncomponents=3);
0184   ssteel->AddElement(C, 0.04);
0185   ssteel->AddElement(Fe, 0.88);
0186   ssteel->AddElement(Co, 0.08);
0187 
0188 
0189   // copper
0190   G4Element* Cu = new G4Element
0191     (name="Copper"  ,symbol="Cu" , z= 29., a=63.55*g/mole);  
0192   G4Material* metalCu = new G4Material
0193     (name="MetalCopper", density=8.960*g/cm3, ncomponents=1);
0194   metalCu->AddElement(Cu, 1);
0195 
0196   // lead
0197   G4Element* Pb = new G4Element
0198     (name="Lead",symbol="Pb" , z= 82., a=207.2*g/mole);
0199   G4Material* metalPb = new G4Material
0200     (name="MetalLead", density=11.340*g/cm3, ncomponents=1);
0201   metalPb->AddElement(Pb, 1);
0202 
0203 
0204 /*
0205   // Americium: - NOTE it's AmO2..........
0206   G4Isotope* Am241 = new G4Isotope
0207     (name="Americium241", iz= 95, in=241, a=241.0*g/mole);
0208   G4Element* Am = new G4Element
0209     (name="Americium241", "Am", ncomponents=1);
0210   Am->AddIsotope(Am241, abundance=1);
0211   G4Material* sourceAm = new G4Material
0212     (name="AmericiumSource", density=13.61*g/cm3, ncomponents=2);
0213   sourceAm->AddElement(Am, 1);
0214   sourceAm->AddElement(O , 2);
0215 */
0216 
0217   // using Uranium because Americium not yet defined for RDM
0218   G4Isotope* U235 = new G4Isotope
0219     (name="Uranium235", iz= 92, in=235, a=235.0*g/mole);
0220   G4Element* U = new G4Element
0221     (name="Uranium", "U", ncomponents=1);
0222   U->AddIsotope(U235, abundance=1);
0223   G4Material* sourceAm = new G4Material
0224     (name="UraniumSource", density=13.61*g/cm3, ncomponents=1);
0225   sourceAm->AddElement(U, 1);
0226 
0227   // air
0228   G4Element* N = new G4Element
0229     (name="Nitrogen",symbol="N" , z= 7., a=14.00674*g/mole);
0230   G4Material* Air = new G4Material
0231     ("AIR", 1.2929*kg/m3, 2, kStateGas, 300.00*kelvin, 1.0*atmosphere);
0232   Air->AddElement(N, 0.8);
0233   Air->AddElement(O , 0.2);
0234 
0235   // liquid nitrogen:
0236   G4Material* LN2 = new G4Material
0237     ("LN2", 0.8*g/cm3, 1, kStateLiquid, 77.*kelvin, 1.0*atmosphere);
0238   LN2->AddElement(N, 1);
0239 
0240   //concrete
0241   G4Element* H = new G4Element
0242     (name="Hydrogen",symbol="H" , z= 1., a=1.00794*g/mole);
0243   G4Element* Ca = new G4Element
0244     (name="Calcium",symbol="Ca" , z= 20., a=40.078*g/mole);
0245   G4Material* concrete = new G4Material
0246     (name="Concrete", density=2.3*g/cm3, ncomponents=6);
0247   concrete->AddElement(Si, 0.227915);
0248   concrete->AddElement(O, 0.60541);
0249   concrete->AddElement(H, 0.09972);
0250   concrete->AddElement(Ca, 0.04986);
0251   concrete->AddElement(Al, 0.014245);
0252   concrete->AddElement(Fe, 0.00285);
0253 
0254 
0255   //water
0256   G4Material* water = new G4Material
0257     (name="water", density=1.00*g/cm3, ncomponents=2);
0258   water->AddElement(H , 2);
0259   water->AddElement(O , 1);
0260 
0261 
0262   // wood
0263   G4Material* wood = new G4Material
0264     (name="wood", density=0.9*g/cm3, ncomponents=3);
0265   wood->AddElement(H , 4);
0266   wood->AddElement(O , 1);
0267   wood->AddElement(C , 2);
0268   
0269   // print materials
0270   //  G4cout << *(G4Material::GetMaterialTable()) << G4endl;
0271   //  G4cout << *(G4Isotope::GetIsotopeTable())   << G4endl;
0272   //  G4cout << *(G4Element::GetElementTable())   << G4endl;
0273 
0274   // assign materials
0275        world_mat = concrete;
0276          lab_mat = Air;
0277     cupboard_mat = wood;
0278        glass_mat = quartz;
0279        panel_mat = metalAl;
0280         door_mat = wood;
0281     desk_mat = wood;
0282        crate_mat = metalAl;
0283    LN2jacket_mat = ssteel;
0284          LN2_mat = LN2;
0285       jacket_mat = ssteel;
0286 jacketflange_mat = ssteel;
0287       vacuum_mat = vacuum;
0288       copper_mat = metalCu;
0289       vessel_mat = ssteel;
0290 //         GXe_mat = GXe;
0291          GXe_mat = LXe;
0292     CuShield_mat = metalCu;
0293          LXe_mat = LXe;
0294        alpha_mat = metalPb;
0295    americium_mat = sourceAm;
0296         ring_mat = ssteel;
0297       mirror_mat = metalAl;
0298         grid_mat = LXe;
0299          pmt_mat = quartz;
0300       phcath_mat = cathmetalAl;