diff --git a/DDG4/plugins/Geant4GeometryScanner.cpp b/DDG4/plugins/Geant4GeometryScanner.cpp index e69201fc50e7c7be9bc0acd36d0a78315e1820b0..517478d47bfc3e1497319d2313bdfac60a9d7834 100644 --- a/DDG4/plugins/Geant4GeometryScanner.cpp +++ b/DDG4/plugins/Geant4GeometryScanner.cpp @@ -169,11 +169,11 @@ void Geant4GeometryScanner::end(const G4Track* track) { if ( !m_steps.empty() ) { constexpr const char* line = " +--------------------------------------------------------------------------------------------------------------------------------------------------\n"; constexpr const char* fmt = " | %5d %11.4f %9.3f (%7.2f,%7.2f,%7.2f) Path:\"/world%s\" Shape:%s Mat:%s\n"; - const Position& pre = m_steps[0]->pre; - const Position& post = m_steps[m_steps.size()-1]->post; + const Position& start = m_steps[0]->pre; + const Position& stop = m_steps[m_steps.size()-1]->post; - ::printf("%s + Material scan between: x_0 = (%7.2f,%7.2f,%7.2f) [cm] and x_1 = (%7.2f,%7.2f,%7.2f) [cm] TrackID:%d: \n%s", - line,pre.X()/cm,pre.Y()/cm,pre.Z()/cm,post.X()/cm,post.Y()/cm,post.Z()/cm,track->GetTrackID(),line); + ::printf("%s + Geometry scan between: x_0 = (%7.2f,%7.2f,%7.2f) [cm] and x_1 = (%7.2f,%7.2f,%7.2f) [cm] TrackID:%d: \n%s", + line,start.X()/cm,start.Y()/cm,start.Z()/cm,stop.X()/cm,stop.Y()/cm,stop.Z()/cm,track->GetTrackID(),line); ::printf(" | \\ Path \n"); ::printf(" | Num. \\ Thickness Length Endpoint Volume , Shape , Material\n"); ::printf(" | Layer \\ [cm] [cm] ( cm, cm, cm) \n"); @@ -181,12 +181,12 @@ void Geant4GeometryScanner::end(const G4Track* track) { int count = 1; for(Steps::const_iterator i=m_steps.begin(); i!=m_steps.end(); ++i, ++count) { const G4LogicalVolume* logVol = (*i)->volume; - G4Material* material = logVol->GetMaterial(); - G4VSolid* solid = logVol->GetSolid(); - const Position& prePos = (*i)->pre; - const Position& postPos = (*i)->post; - Position direction = postPos - prePos; - double length = direction.R()/cm; + G4Material* material = logVol->GetMaterial(); + G4VSolid* solid = logVol->GetSolid(); + const Position& prePos = (*i)->pre; + const Position& postPos = (*i)->post; + Position direction = postPos - prePos; + double length = direction.R()/cm; m_sumPath += length; ::printf(fmt,count, length, m_sumPath, diff --git a/DDG4/python/DDG4.py b/DDG4/python/DDG4.py index 900d51ee9a077a5a11fc020bace16ff066312f47..a6689f676e8db9da73e8fab0c30cd3c684ef8311 100644 --- a/DDG4/python/DDG4.py +++ b/DDG4/python/DDG4.py @@ -546,7 +546,7 @@ class Geant4: """ return self.addPhaseAction('stop', factory_specification) - def execute(self): + def execute(self, num_events=None): """ Execute the Geant 4 program with all steps. @@ -554,6 +554,8 @@ class Geant4: """ self.kernel().configure() self.kernel().initialize() + if num_events: + self.kernel().NumEvents = num_events self.kernel().run() self.kernel().terminate() return self diff --git a/examples/CLICSiD/scripts/CLICSid.py b/examples/CLICSiD/scripts/CLICSid.py index db6526f6a3ab5facd5a0a00255553ec630b25198..287e7c4e069cc7dc7de62be2023bf739d3eb1aee 100644 --- a/examples/CLICSiD/scripts/CLICSid.py +++ b/examples/CLICSiD/scripts/CLICSid.py @@ -8,12 +8,13 @@ logger = logging.getLogger(__name__) class CLICSid: - def __init__(self, tracker='Geant4TrackerCombineAction'): + def __init__(self, tracker='Geant4TrackerCombineAction', no_physics=True): self.kernel = DDG4.Kernel() self.description = self.kernel.detectorDescription() self.geant4 = DDG4.Geant4(self.kernel, tracker=tracker) self.kernel.UI = "" - self.noPhysics() + if no_physics: + self.noPhysics() def loadGeometry(self, file=None): import os @@ -94,10 +95,10 @@ class CLICSid: return self # Test runner - def test_run(self, have_geo=True, have_physics=False): + def test_run(self, have_geo=True, have_physics=False, num_events=0): self.test_config(have_geo) if have_geo: - self.kernel.NumEvents = 0 + self.kernel.NumEvents = num_events self.kernel.run() self.kernel.terminate() logger.info('+++++ All Done....\n\nTEST_PASSED') diff --git a/examples/CLICSiD/scripts/CLIC_G4hepmc.py b/examples/CLICSiD/scripts/CLIC_G4hepmc.py new file mode 100644 index 0000000000000000000000000000000000000000..98f5c883761899fb9ddecbb370f6391d89b11920 --- /dev/null +++ b/examples/CLICSiD/scripts/CLIC_G4hepmc.py @@ -0,0 +1,83 @@ +""" + + Subtest using CLICSid showing the usage the HEPMC file reader + + @author M.Frank + @version 1.0 + +""" +from __future__ import absolute_import, unicode_literals + +import logging + +logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO) +logger = logging.getLogger(__name__) + + +def run(): + import CLICSid + import DDG4 + import os + from DDG4 import OutputLevel as Output + + sid = CLICSid.CLICSid(no_physics=False) + geant4 = sid.geant4 + kernel = sid.kernel + sid.loadGeometry() + geant4.printDetectors() + #kernel.UI = "UI" + geant4.setupCshUI() + sid.setupField(quiet=False) + DDG4.importConstants(kernel.detectorDescription(), debug=False) + + prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint') + prt.OutputLevel = Output.INFO + prt.OutputType = 3 # Print both: table and tree + kernel.eventAction().adopt(prt) + + # First particle file reader + gen = DDG4.GeneratorAction(kernel, "Geant4GeneratorActionInit/GenerationInit") + kernel.generatorAction().adopt(gen) + input = DDG4.GeneratorAction(kernel, "Geant4InputAction/Input") + fname = os.environ['DD4hepExamplesINSTALL']+'/examples/DDG4/data/hepmc_geant4.dat' + input.Input = "Geant4EventReaderHepMC|" + fname + input.MomentumScale = 1.0 + input.Mask = 1 + kernel.generatorAction().adopt(input) + + # Merge all existing interaction records + merger = DDG4.GeneratorAction(kernel, "Geant4InteractionMerger/InteractionMerger") + merger.enableUI() + kernel.generatorAction().adopt(merger) + + logger.info("# Finally generate Geant4 primaries") + gen = DDG4.GeneratorAction(kernel, "Geant4PrimaryHandler/PrimaryHandler") + gen.OutputLevel = 4 # generator_output_level + gen.enableUI() + kernel.generatorAction().adopt(gen) + + # And handle the simulation particles. + part = DDG4.GeneratorAction(kernel, "Geant4ParticleHandler/ParticleHandler") + kernel.generatorAction().adopt(part) + part.OutputLevel = Output.INFO + part.enableUI() + + logger.info("# Configure Event actions") + prt = DDG4.EventAction(kernel, 'Geant4ParticlePrint/ParticlePrint') + prt.OutputLevel = Output.INFO + prt.OutputType = 3 # Print both: table and tree + kernel.eventAction().adopt(prt) + + user = DDG4.Action(kernel, "Geant4TCUserParticleHandler/UserParticleHandler") + user.TrackingVolume_Zmax = DDG4.EcalEndcap_zmin + user.TrackingVolume_Rmax = DDG4.EcalBarrel_rmin + user.enableUI() + part.adopt(user) + # + sid.setupDetectors() + sid.setupPhysics('QGSP_BERT') + sid.test_run(have_geo=True, num_events=1) + + +if __name__ == "__main__": + run() diff --git a/examples/ClientTests/CMakeLists.txt b/examples/ClientTests/CMakeLists.txt index 62312aaa2c1688ed6f868c99e0ef398d09e7d818..b49835b84e87ca47f7a6c35d59ba88d959198574 100644 --- a/examples/ClientTests/CMakeLists.txt +++ b/examples/ClientTests/CMakeLists.txt @@ -337,6 +337,22 @@ if (DD4HEP_USE_GEANT4) REGEX_PASS "Imean: 85.538 eV temperature: 333.33 K pressure: 2.22 atm" REGEX_FAIL "Exception;EXCEPTION;ERROR;Error;FATAL" ) # + # Geant4 test with gdml input file (LHCb:FT) + dd4hep_add_test_reg( ClientTests_g4_gdml_detector + COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh" + EXEC_ARGS python ${DD4hep_ROOT}/bin/g4GeometryScan --compact=${ClientTestsEx_INSTALL}/compact/GdmlDetector.xml + --position=200,200,-2000 --direction=0,0,1 + REGEX_PASS " 122 2777.0000 5200.000 " + REGEX_FAIL "Exception;EXCEPTION;ERROR;Error;FATAL" ) + # + # Geant4 test with gdml input file (LHCb:MT) + dd4hep_add_test_reg( ClientTests_g4_gdml_MT + COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh" + EXEC_ARGS python ${DD4hep_ROOT}/bin/g4GeometryScan --compact=${ClientTestsEx_INSTALL}/compact/MT.xml + --position=200,200,7900 --direction=0,0,1 + REGEX_PASS " 15 2777.0000 4210.000 " + REGEX_FAIL "Exception;EXCEPTION;ERROR;Error;FATAL" ) + # # Geant4 test if production cuts are processed dd4hep_add_test_reg( ClientTests_sim_MiniTel_prod_cuts COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh" @@ -370,7 +386,7 @@ if (DD4HEP_USE_GEANT4) REGEX_FAIL "Exception;EXCEPTION;ERROR;Error" ) # # Geant4 full simulation checks of simple detectors - foreach(script Assemblies LheD_tracker MiniTel NestedDetectors ) + foreach(script Assemblies LheD_tracker MiniTel MiniTel_hepmc NestedDetectors ) dd4hep_add_test_reg( ClientTests_sim_${script} COMMAND "${CMAKE_INSTALL_PREFIX}/bin/run_test_ClientTests.sh" EXEC_ARGS python ${ClientTestsEx_INSTALL}/scripts/${script}.py batch diff --git a/examples/ClientTests/compact/GdmlDetector.xml b/examples/ClientTests/compact/GdmlDetector.xml index 0f253df299fa3190daf9eab49e51d1e289d48cdc..a595e59809da5dceb38a0af0050741041ede9acb 100644 --- a/examples/ClientTests/compact/GdmlDetector.xml +++ b/examples/ClientTests/compact/GdmlDetector.xml @@ -20,9 +20,6 @@ <detectors> <detector id="1" name="FT_MT" type="DD4hep_GdmlDetector" vis="InvisibleWithChildren"> -<!-- - <gdmlFile ref="MT.gdml"/> ---> <gdmlFile ref="GdmlDetector.gdml"/> <parent name="/world"/> </detector> diff --git a/examples/ClientTests/compact/MT.gdml b/examples/ClientTests/compact/MT.gdml new file mode 100755 index 0000000000000000000000000000000000000000..c1584e5e6ed7fdb0c41b236486357e04f642fd07 --- /dev/null +++ b/examples/ClientTests/compact/MT.gdml @@ -0,0 +1,1056 @@ +<?xml version="1.0"?> +<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd"> + <define> + <position name="lvUpstreamRegion_0inworld_volumepos" x="0" y="0" z="-1270" unit="cm"/> + <position name="lvBeforeVelo_0inlvBeforeMagnetRegionpos" x="0" y="0" z="-179.25" unit="cm"/> + <position name="lvBeforeMagnetRegion_1inworld_volumepos" x="0" y="0" z="0" unit="cm"/> + <position name="lvMagnetRegion_2inworld_volumepos" x="0" y="0" z="516" unit="cm"/> + <position name="lvSiShortMatRightX_0inlvMightyTModuleHoleRightXpos" x="-5.25" y="0" z="0" unit="cm"/> + <position name="lvSiMat_1inlvMightyTModuleHoleRightXpos" x="0" y="20.050000000000001" z="0" unit="cm"/> + <position name="lvSiMat_2inlvMightyTModuleHoleRightXpos" x="0" y="-20.050000000000001" z="0" unit="cm"/> + <position name="lvSiMatMT_3inlvMightyTModuleHoleRightXpos" x="0" y="40.100000000000001" z="0" unit="cm"/> + <position name="lvSiMatMT_4inlvMightyTModuleHoleRightXpos" x="0" y="-40.100000000000001" z="0" unit="cm"/> + <position name="lvMightyTModuleHoleRightX_0inlvHalf5XNegpos" x="-26.500000000000004" y="0" z="0" unit="cm"/> + <position name="lvSiMatMT_0inlvMightyTModuleFullpos" x="0" y="-30.075000000000003" z="0" unit="cm"/> + <position name="lvSiMatMT_1inlvMightyTModuleFullpos" x="0" y="-10.025000000000002" z="0" unit="cm"/> + <position name="lvSiMatMT_2inlvMightyTModuleFullpos" x="0" y="10.024999999999999" z="0" unit="cm"/> + <position name="lvSiMatMT_30x1inlvMightyTModuleFullpos" x="0" y="30.074999999999999" z="0" unit="cm"/> + <position name="lvMightyTModuleFull_1inlvHalf5XNegpos" x="-79.500000000000014" y="0" z="0" unit="cm"/> + <position name="lvSiMatMT_00x1inlvMightyTModuleColIIpos" x="0" y="-20.050000000000001" z="0" unit="cm"/> + <position name="lvSiMatMT_10x1inlvMightyTModuleColIIpos" x="0" y="0" z="0" unit="cm"/> + <position name="lvSiMatMT_20x1inlvMightyTModuleColIIpos" x="0" y="20.050000000000001" z="0" unit="cm"/> + <position name="lvMightyTModuleColII_2inlvHalf5XNegpos" x="-132.50000000000003" y="0" z="0" unit="cm"/> + <position name="lvSiMatMT_00x2inlvMightyTModuleColIIIpos" x="0" y="-10.025" z="0" unit="cm"/> + <position name="lvSiMatMT_10x2inlvMightyTModuleColIIIpos" x="0" y="10.025" z="0" unit="cm"/> + <position name="lvMightyTModuleColIII_3inlvHalf5XNegpos" x="-185.50000000000003" y="0" z="0" unit="cm"/> + <position name="lvHalf5XNeg_0inlvLayerX1pos" x="0" y="0" z="0" unit="cm"/> + <rotation name="lvHalf5XNeg_0inlvLayerX1rot" x="0" y="-0" z="1.4033418597069752e-14" unit="deg"/> + <position name="lvSiShortMatLeftX_0inlvMightyTModuleHoleLeftXpos" x="5.25" y="0" z="0" unit="cm"/> + <position name="lvSiMat_10x1inlvMightyTModuleHoleLeftXpos" x="0" y="20.050000000000001" z="0" unit="cm"/> + <position name="lvSiMat_20x1inlvMightyTModuleHoleLeftXpos" x="0" y="-20.050000000000001" z="0" unit="cm"/> + <position name="lvSiMatMT_30x2inlvMightyTModuleHoleLeftXpos" x="0" y="40.100000000000001" z="0" unit="cm"/> + <position name="lvSiMatMT_40x1inlvMightyTModuleHoleLeftXpos" x="0" y="-40.100000000000001" z="0" unit="cm"/> + <position name="lvMightyTModuleHoleLeftX_0inlvHalf5XPospos" x="26.500000000000004" y="0" z="0" unit="cm"/> + <position name="lvMightyTModuleFull_10x1inlvHalf5XPospos" x="79.500000000000014" y="0" z="0" unit="cm"/> + <position name="lvMightyTModuleColII_20x1inlvHalf5XPospos" x="132.50000000000003" y="0" z="0" unit="cm"/> + <position name="lvMightyTModuleColIII_30x1inlvHalf5XPospos" x="185.50000000000003" y="0" z="0" unit="cm"/> + <position name="lvHalf5XPos_1inlvLayerX1pos" x="0" y="0" z="0" unit="cm"/> + <rotation name="lvHalf5XPos_1inlvLayerX1rot" x="0" y="-0" z="1.4033418597069752e-14" unit="deg"/> + <position name="lvLayerX1_0inlvStationpos" x="0" y="0" z="-10.49" unit="cm"/> + <position name="lvHalf5XPos_0inlvLayerX2pos" x="0" y="0" z="0" unit="cm"/> + <position name="lvHalf5XNeg_1inlvLayerX2pos" x="0" y="0" z="0" unit="cm"/> + <position name="lvLayerX2_1inlvStationpos" x="0" y="0" z="10.49" unit="cm"/> + <position name="lvStation_0inlvMightyTpos" x="0" y="0" z="-59.850000000000023" unit="cm"/> + <rotation name="lvStation_0inlvMightyTrot" x="-0.20632210202660947" y="-0" z="-0" unit="deg"/> + <position name="lvStation_1inlvMightyTpos" x="0" y="0" z="8.3500000000000227" unit="cm"/> + <rotation name="lvStation_1inlvMightyTrot" x="-0.20632210202660947" y="-0" z="-0" unit="deg"/> + <position name="lvStation_2inlvMightyTpos" x="0" y="0" z="76.850000000000023" unit="cm"/> + <rotation name="lvStation_2inlvMightyTrot" x="-0.20632210202660947" y="-0" z="-0" unit="deg"/> + <position name="lvMightyT_0inlvTpos" x="0" y="0" z="0" unit="cm"/> + <position name="lvT_0inlvAfterMagnetRegionpos" x="0" y="0" z="-123.04999999999995" unit="cm"/> + <position name="lvAfterMagnetRegion_3inworld_volumepos" x="0" y="0" z="976" unit="cm"/> + <position name="lvAfterMuon_0inlvDownstreamRegionpos" x="0" y="0" z="533" unit="cm"/> + <position name="lvDownstreamRegion_4inworld_volumepos" x="0" y="0" z="1590" unit="cm"/> + </define> + <materials> + <element name="Ac_elm" formula="Ac" Z="89"> + <atom unit="g/mole" value="227.02799999999999"/> + </element> + <material name="Actinium"> + <D unit="g/cm3" value="10.07"/> + <fraction n="1" ref="Ac_elm"/> + </material> + <element name="Ag_elm" formula="Ag" Z="47"> + <atom unit="g/mole" value="107.86799999999999"/> + </element> + <material name="Silver"> + <D unit="g/cm3" value="10.5"/> + <fraction n="1" ref="Ag_elm"/> + </material> + <element name="Al_elm" formula="Al" Z="13"> + <atom unit="g/mole" value="26.9815"/> + </element> + <material name="Aluminum"> + <D unit="g/cm3" value="2.6989999999999998"/> + <fraction n="1" ref="Al_elm"/> + </material> + <element name="Am_elm" formula="Am" Z="95"> + <atom unit="g/mole" value="243.06100000000001"/> + </element> + <material name="Americium"> + <D unit="g/cm3" value="13.67"/> + <fraction n="1" ref="Am_elm"/> + </material> + <element name="Ar_elm" formula="Ar" Z="18"> + <atom unit="g/mole" value="39.947699999999998"/> + </element> + <material name="Argon"> + <D unit="g/cm3" value="0.00166201"/> + <fraction n="1" ref="Ar_elm"/> + </material> + <element name="As_elm" formula="As" Z="33"> + <atom unit="g/mole" value="74.921599999999998"/> + </element> + <material name="Arsenic"> + <D unit="g/cm3" value="5.7300000000000004"/> + <fraction n="1" ref="As_elm"/> + </material> + <element name="At_elm" formula="At" Z="85"> + <atom unit="g/mole" value="209.98699999999999"/> + </element> + <material name="Astatine"> + <D unit="g/cm3" value="9.3200000000000003"/> + <fraction n="1" ref="At_elm"/> + </material> + <element name="Au_elm" formula="Au" Z="79"> + <atom unit="g/mole" value="196.96700000000001"/> + </element> + <material name="Gold"> + <D unit="g/cm3" value="19.32"/> + <fraction n="1" ref="Au_elm"/> + </material> + <element name="B_elm" formula="B" Z="5"> + <atom unit="g/mole" value="10.811"/> + </element> + <material name="Boron"> + <D unit="g/cm3" value="2.3700000000000001"/> + <fraction n="1" ref="B_elm"/> + </material> + <element name="Ba_elm" formula="Ba" Z="56"> + <atom unit="g/mole" value="137.327"/> + </element> + <material name="Barium"> + <D unit="g/cm3" value="3.5"/> + <fraction n="1" ref="Ba_elm"/> + </material> + <element name="Be_elm" formula="Be" Z="4"> + <atom unit="g/mole" value="9.0121800000000007"/> + </element> + <material name="Beryllium"> + <D unit="g/cm3" value="1.8480000000000001"/> + <fraction n="1" ref="Be_elm"/> + </material> + <element name="Bi_elm" formula="Bi" Z="83"> + <atom unit="g/mole" value="208.97999999999999"/> + </element> + <material name="Bismuth"> + <D unit="g/cm3" value="9.7469999999999999"/> + <fraction n="1" ref="Bi_elm"/> + </material> + <element name="Bk_elm" formula="Bk" Z="97"> + <atom unit="g/mole" value="247.06999999999999"/> + </element> + <material name="Berkelium"> + <D unit="g/cm3" value="14"/> + <fraction n="1" ref="Bk_elm"/> + </material> + <element name="Br_elm" formula="Br" Z="35"> + <atom unit="g/mole" value="79.903499999999994"/> + </element> + <material name="Bromine"> + <D unit="g/cm3" value="0.0070720999999999996"/> + <fraction n="1" ref="Br_elm"/> + </material> + <element name="C_elm" formula="C" Z="6"> + <atom unit="g/mole" value="12.0107"/> + </element> + <material name="Carbon"> + <D unit="g/cm3" value="2"/> + <fraction n="1" ref="C_elm"/> + </material> + <element name="Ca_elm" formula="Ca" Z="20"> + <atom unit="g/mole" value="40.078000000000003"/> + </element> + <material name="Calcium"> + <D unit="g/cm3" value="1.55"/> + <fraction n="1" ref="Ca_elm"/> + </material> + <element name="Cd_elm" formula="Cd" Z="48"> + <atom unit="g/mole" value="112.411"/> + </element> + <material name="Cadmium"> + <D unit="g/cm3" value="8.6500000000000004"/> + <fraction n="1" ref="Cd_elm"/> + </material> + <element name="Ce_elm" formula="Ce" Z="58"> + <atom unit="g/mole" value="140.11500000000001"/> + </element> + <material name="Cerium"> + <D unit="g/cm3" value="6.657"/> + <fraction n="1" ref="Ce_elm"/> + </material> + <element name="Cf_elm" formula="Cf" Z="98"> + <atom unit="g/mole" value="251.08000000000001"/> + </element> + <material name="Californium"> + <D unit="g/cm3" value="10"/> + <fraction n="1" ref="Cf_elm"/> + </material> + <element name="Cl_elm" formula="Cl" Z="17"> + <atom unit="g/mole" value="35.452599999999997"/> + </element> + <material name="Chlorine"> + <D unit="g/cm3" value="0.0029947300000000001"/> + <fraction n="1" ref="Cl_elm"/> + </material> + <element name="Cm_elm" formula="Cm" Z="96"> + <atom unit="g/mole" value="247.06999999999999"/> + </element> + <material name="Curium"> + <D unit="g/cm3" value="13.51"/> + <fraction n="1" ref="Cm_elm"/> + </material> + <element name="Co_elm" formula="Co" Z="27"> + <atom unit="g/mole" value="58.933199999999999"/> + </element> + <material name="Cobalt"> + <D unit="g/cm3" value="8.9000000000000004"/> + <fraction n="1" ref="Co_elm"/> + </material> + <element name="Cr_elm" formula="Cr" Z="24"> + <atom unit="g/mole" value="51.996099999999998"/> + </element> + <material name="Chromium"> + <D unit="g/cm3" value="7.1799999999999997"/> + <fraction n="1" ref="Cr_elm"/> + </material> + <element name="Cs_elm" formula="Cs" Z="55"> + <atom unit="g/mole" value="132.905"/> + </element> + <material name="Cesium"> + <D unit="g/cm3" value="1.873"/> + <fraction n="1" ref="Cs_elm"/> + </material> + <element name="Cu_elm" formula="Cu" Z="29"> + <atom unit="g/mole" value="63.5456"/> + </element> + <material name="Copper"> + <D unit="g/cm3" value="8.9600000000000009"/> + <fraction n="1" ref="Cu_elm"/> + </material> + <element name="Dy_elm" formula="Dy" Z="66"> + <atom unit="g/mole" value="162.49700000000001"/> + </element> + <material name="Dysprosium"> + <D unit="g/cm3" value="8.5500000000000007"/> + <fraction n="1" ref="Dy_elm"/> + </material> + <element name="Er_elm" formula="Er" Z="68"> + <atom unit="g/mole" value="167.256"/> + </element> + <material name="Erbium"> + <D unit="g/cm3" value="9.0660000000000007"/> + <fraction n="1" ref="Er_elm"/> + </material> + <element name="Eu_elm" formula="Eu" Z="63"> + <atom unit="g/mole" value="151.964"/> + </element> + <material name="Europium"> + <D unit="g/cm3" value="5.2430000000000003"/> + <fraction n="1" ref="Eu_elm"/> + </material> + <element name="F_elm" formula="F" Z="9"> + <atom unit="g/mole" value="18.9984"/> + </element> + <material name="Fluorine"> + <D unit="g/cm3" value="0.00158029"/> + <fraction n="1" ref="F_elm"/> + </material> + <element name="Fe_elm" formula="Fe" Z="26"> + <atom unit="g/mole" value="55.845100000000002"/> + </element> + <material name="Iron"> + <D unit="g/cm3" value="7.8739999999999997"/> + <fraction n="1" ref="Fe_elm"/> + </material> + <element name="Fr_elm" formula="Fr" Z="87"> + <atom unit="g/mole" value="223.02000000000001"/> + </element> + <material name="Francium"> + <D unit="g/cm3" value="1"/> + <fraction n="1" ref="Fr_elm"/> + </material> + <element name="Ga_elm" formula="Ga" Z="31"> + <atom unit="g/mole" value="69.723100000000002"/> + </element> + <material name="Gallium"> + <D unit="g/cm3" value="5.9039999999999999"/> + <fraction n="1" ref="Ga_elm"/> + </material> + <element name="Gd_elm" formula="Gd" Z="64"> + <atom unit="g/mole" value="157.25200000000001"/> + </element> + <material name="Gadolinium"> + <D unit="g/cm3" value="7.9004000000000003"/> + <fraction n="1" ref="Gd_elm"/> + </material> + <element name="Ge_elm" formula="Ge" Z="32"> + <atom unit="g/mole" value="72.612799999999993"/> + </element> + <material name="Germanium"> + <D unit="g/cm3" value="5.3230000000000004"/> + <fraction n="1" ref="Ge_elm"/> + </material> + <element name="H_elm" formula="H" Z="1"> + <atom unit="g/mole" value="1.0079400000000001"/> + </element> + <material name="Hydrogen"> + <D unit="g/cm3" value="8.3747999999999998e-05"/> + <fraction n="1" ref="H_elm"/> + </material> + <element name="He_elm" formula="He" Z="2"> + <atom unit="g/mole" value="4.0026400000000004"/> + </element> + <material name="Helium"> + <D unit="g/cm3" value="0.000166322"/> + <fraction n="1" ref="He_elm"/> + </material> + <element name="Hf_elm" formula="Hf" Z="72"> + <atom unit="g/mole" value="178.48500000000001"/> + </element> + <material name="Hafnium"> + <D unit="g/cm3" value="13.31"/> + <fraction n="1" ref="Hf_elm"/> + </material> + <element name="Hg_elm" formula="Hg" Z="80"> + <atom unit="g/mole" value="200.59899999999999"/> + </element> + <material name="Mercury"> + <D unit="g/cm3" value="13.545999999999999"/> + <fraction n="1" ref="Hg_elm"/> + </material> + <element name="Ho_elm" formula="Ho" Z="67"> + <atom unit="g/mole" value="164.93000000000001"/> + </element> + <material name="Holmium"> + <D unit="g/cm3" value="8.7949999999999999"/> + <fraction n="1" ref="Ho_elm"/> + </material> + <element name="I_elm" formula="I" Z="53"> + <atom unit="g/mole" value="126.904"/> + </element> + <material name="Iodine"> + <D unit="g/cm3" value="4.9299999999999997"/> + <fraction n="1" ref="I_elm"/> + </material> + <element name="In_elm" formula="In" Z="49"> + <atom unit="g/mole" value="114.818"/> + </element> + <material name="Indium"> + <D unit="g/cm3" value="7.3099999999999996"/> + <fraction n="1" ref="In_elm"/> + </material> + <element name="Ir_elm" formula="Ir" Z="77"> + <atom unit="g/mole" value="192.21600000000001"/> + </element> + <material name="Iridium"> + <D unit="g/cm3" value="22.420000000000002"/> + <fraction n="1" ref="Ir_elm"/> + </material> + <element name="K_elm" formula="K" Z="19"> + <atom unit="g/mole" value="39.098300000000002"/> + </element> + <material name="Potassium"> + <D unit="g/cm3" value="0.86199999999999999"/> + <fraction n="1" ref="K_elm"/> + </material> + <element name="Kr_elm" formula="Kr" Z="36"> + <atom unit="g/mole" value="83.799300000000002"/> + </element> + <material name="Krypton"> + <D unit="g/cm3" value="0.00347832"/> + <fraction n="1" ref="Kr_elm"/> + </material> + <element name="La_elm" formula="La" Z="57"> + <atom unit="g/mole" value="138.905"/> + </element> + <material name="Lanthanum"> + <D unit="g/cm3" value="6.1539999999999999"/> + <fraction n="1" ref="La_elm"/> + </material> + <element name="Li_elm" formula="Li" Z="3"> + <atom unit="g/mole" value="6.9400300000000001"/> + </element> + <material name="Lithium"> + <D unit="g/cm3" value="0.53400000000000003"/> + <fraction n="1" ref="Li_elm"/> + </material> + <element name="Lu_elm" formula="Lu" Z="71"> + <atom unit="g/mole" value="174.96700000000001"/> + </element> + <material name="Lutetium"> + <D unit="g/cm3" value="9.8399999999999999"/> + <fraction n="1" ref="Lu_elm"/> + </material> + <element name="Mg_elm" formula="Mg" Z="12"> + <atom unit="g/mole" value="24.305"/> + </element> + <material name="Magnesium"> + <D unit="g/cm3" value="1.74"/> + <fraction n="1" ref="Mg_elm"/> + </material> + <element name="Mn_elm" formula="Mn" Z="25"> + <atom unit="g/mole" value="54.938000000000002"/> + </element> + <material name="Manganese"> + <D unit="g/cm3" value="7.4400000000000004"/> + <fraction n="1" ref="Mn_elm"/> + </material> + <element name="Mo_elm" formula="Mo" Z="42"> + <atom unit="g/mole" value="95.931299999999993"/> + </element> + <material name="Molybdenum"> + <D unit="g/cm3" value="10.220000000000001"/> + <fraction n="1" ref="Mo_elm"/> + </material> + <element name="N_elm" formula="N" Z="7"> + <atom unit="g/mole" value="14.0068"/> + </element> + <material name="Nitrogen"> + <D unit="g/cm3" value="0.0011651999999999999"/> + <fraction n="1" ref="N_elm"/> + </material> + <element name="Na_elm" formula="Na" Z="11"> + <atom unit="g/mole" value="22.989799999999999"/> + </element> + <material name="Sodium"> + <D unit="g/cm3" value="0.97099999999999997"/> + <fraction n="1" ref="Na_elm"/> + </material> + <element name="Nb_elm" formula="Nb" Z="41"> + <atom unit="g/mole" value="92.906400000000005"/> + </element> + <material name="Niobium"> + <D unit="g/cm3" value="8.5700000000000003"/> + <fraction n="1" ref="Nb_elm"/> + </material> + <element name="Nd_elm" formula="Nd" Z="60"> + <atom unit="g/mole" value="144.23599999999999"/> + </element> + <material name="Neodymium"> + <D unit="g/cm3" value="6.9000000000000004"/> + <fraction n="1" ref="Nd_elm"/> + </material> + <element name="Ne_elm" formula="Ne" Z="10"> + <atom unit="g/mole" value="20.18"/> + </element> + <material name="Neon"> + <D unit="g/cm3" value="0.00083850500000000002"/> + <fraction n="1" ref="Ne_elm"/> + </material> + <element name="Ni_elm" formula="Ni" Z="28"> + <atom unit="g/mole" value="58.693300000000001"/> + </element> + <material name="Nickel"> + <D unit="g/cm3" value="8.9019999999999992"/> + <fraction n="1" ref="Ni_elm"/> + </material> + <element name="Np_elm" formula="Np" Z="93"> + <atom unit="g/mole" value="237.048"/> + </element> + <material name="Neptunium"> + <D unit="g/cm3" value="20.25"/> + <fraction n="1" ref="Np_elm"/> + </material> + <element name="O_elm" formula="O" Z="8"> + <atom unit="g/mole" value="15.9994"/> + </element> + <material name="Oxygen"> + <D unit="g/cm3" value="0.0013315099999999999"/> + <fraction n="1" ref="O_elm"/> + </material> + <element name="Os_elm" formula="Os" Z="76"> + <atom unit="g/mole" value="190.22499999999999"/> + </element> + <material name="Osmium"> + <D unit="g/cm3" value="22.57"/> + <fraction n="1" ref="Os_elm"/> + </material> + <element name="P_elm" formula="P" Z="15"> + <atom unit="g/mole" value="30.973800000000001"/> + </element> + <material name="Phosphorus"> + <D unit="g/cm3" value="2.2000000000000002"/> + <fraction n="1" ref="P_elm"/> + </material> + <element name="Pa_elm" formula="Pa" Z="91"> + <atom unit="g/mole" value="231.036"/> + </element> + <material name="Protactinium"> + <D unit="g/cm3" value="15.369999999999999"/> + <fraction n="1" ref="Pa_elm"/> + </material> + <element name="Pb_elm" formula="Pb" Z="82"> + <atom unit="g/mole" value="207.21700000000001"/> + </element> + <material name="Lead"> + <D unit="g/cm3" value="11.35"/> + <fraction n="1" ref="Pb_elm"/> + </material> + <element name="Pd_elm" formula="Pd" Z="46"> + <atom unit="g/mole" value="106.41500000000001"/> + </element> + <material name="Palladium"> + <D unit="g/cm3" value="12.02"/> + <fraction n="1" ref="Pd_elm"/> + </material> + <element name="Pm_elm" formula="Pm" Z="61"> + <atom unit="g/mole" value="144.91300000000001"/> + </element> + <material name="Promethium"> + <D unit="g/cm3" value="7.2199999999999998"/> + <fraction n="1" ref="Pm_elm"/> + </material> + <element name="Po_elm" formula="Po" Z="84"> + <atom unit="g/mole" value="208.982"/> + </element> + <material name="Polonium"> + <D unit="g/cm3" value="9.3200000000000003"/> + <fraction n="1" ref="Po_elm"/> + </material> + <element name="Pr_elm" formula="Pr" Z="59"> + <atom unit="g/mole" value="140.90799999999999"/> + </element> + <material name="Praseodymium"> + <D unit="g/cm3" value="6.71"/> + <fraction n="1" ref="Pr_elm"/> + </material> + <element name="Pt_elm" formula="Pt" Z="78"> + <atom unit="g/mole" value="195.078"/> + </element> + <material name="Platinum"> + <D unit="g/cm3" value="21.449999999999999"/> + <fraction n="1" ref="Pt_elm"/> + </material> + <element name="Pu_elm" formula="Pu" Z="94"> + <atom unit="g/mole" value="244.06399999999999"/> + </element> + <material name="Plutonium"> + <D unit="g/cm3" value="19.84"/> + <fraction n="1" ref="Pu_elm"/> + </material> + <element name="Ra_elm" formula="Ra" Z="88"> + <atom unit="g/mole" value="226.02500000000001"/> + </element> + <material name="Radium"> + <D unit="g/cm3" value="5"/> + <fraction n="1" ref="Ra_elm"/> + </material> + <element name="Rb_elm" formula="Rb" Z="37"> + <atom unit="g/mole" value="85.467699999999994"/> + </element> + <material name="Rubidium"> + <D unit="g/cm3" value="1.532"/> + <fraction n="1" ref="Rb_elm"/> + </material> + <element name="Re_elm" formula="Re" Z="75"> + <atom unit="g/mole" value="186.20699999999999"/> + </element> + <material name="Rhenium"> + <D unit="g/cm3" value="21.02"/> + <fraction n="1" ref="Re_elm"/> + </material> + <element name="Rh_elm" formula="Rh" Z="45"> + <atom unit="g/mole" value="102.90600000000001"/> + </element> + <material name="Rhodium"> + <D unit="g/cm3" value="12.41"/> + <fraction n="1" ref="Rh_elm"/> + </material> + <element name="Rn_elm" formula="Rn" Z="86"> + <atom unit="g/mole" value="222.018"/> + </element> + <material name="Radon"> + <D unit="g/cm3" value="0.0090066199999999999"/> + <fraction n="1" ref="Rn_elm"/> + </material> + <element name="Ru_elm" formula="Ru" Z="44"> + <atom unit="g/mole" value="101.065"/> + </element> + <material name="Ruthenium"> + <D unit="g/cm3" value="12.41"/> + <fraction n="1" ref="Ru_elm"/> + </material> + <element name="S_elm" formula="S" Z="16"> + <atom unit="g/mole" value="32.066099999999999"/> + </element> + <material name="Sulfur"> + <D unit="g/cm3" value="2"/> + <fraction n="1" ref="S_elm"/> + </material> + <element name="Sb_elm" formula="Sb" Z="51"> + <atom unit="g/mole" value="121.76000000000001"/> + </element> + <material name="Antimony"> + <D unit="g/cm3" value="6.6909999999999998"/> + <fraction n="1" ref="Sb_elm"/> + </material> + <element name="Sc_elm" formula="Sc" Z="21"> + <atom unit="g/mole" value="44.9559"/> + </element> + <material name="Scandium"> + <D unit="g/cm3" value="2.9889999999999999"/> + <fraction n="1" ref="Sc_elm"/> + </material> + <element name="Se_elm" formula="Se" Z="34"> + <atom unit="g/mole" value="78.959400000000002"/> + </element> + <material name="Selenium"> + <D unit="g/cm3" value="4.5"/> + <fraction n="1" ref="Se_elm"/> + </material> + <element name="Si_elm" formula="Si" Z="14"> + <atom unit="g/mole" value="28.0854"/> + </element> + <material name="Silicon"> + <D unit="g/cm3" value="2.3300000000000001"/> + <fraction n="1" ref="Si_elm"/> + </material> + <element name="Sm_elm" formula="Sm" Z="62"> + <atom unit="g/mole" value="150.36600000000001"/> + </element> + <material name="Samarium"> + <D unit="g/cm3" value="7.46"/> + <fraction n="1" ref="Sm_elm"/> + </material> + <element name="Sn_elm" formula="Sn" Z="50"> + <atom unit="g/mole" value="118.70999999999999"/> + </element> + <material name="Tin"> + <D unit="g/cm3" value="7.3099999999999996"/> + <fraction n="1" ref="Sn_elm"/> + </material> + <element name="Sr_elm" formula="Sr" Z="38"> + <atom unit="g/mole" value="87.616600000000005"/> + </element> + <material name="Strontium"> + <D unit="g/cm3" value="2.54"/> + <fraction n="1" ref="Sr_elm"/> + </material> + <element name="Ta_elm" formula="Ta" Z="73"> + <atom unit="g/mole" value="180.94800000000001"/> + </element> + <material name="Tantalum"> + <D unit="g/cm3" value="16.654"/> + <fraction n="1" ref="Ta_elm"/> + </material> + <element name="Tb_elm" formula="Tb" Z="65"> + <atom unit="g/mole" value="158.92500000000001"/> + </element> + <material name="Terbium"> + <D unit="g/cm3" value="8.2289999999999992"/> + <fraction n="1" ref="Tb_elm"/> + </material> + <element name="Tc_elm" formula="Tc" Z="43"> + <atom unit="g/mole" value="97.907200000000003"/> + </element> + <material name="Technetium"> + <D unit="g/cm3" value="11.5"/> + <fraction n="1" ref="Tc_elm"/> + </material> + <element name="Te_elm" formula="Te" Z="52"> + <atom unit="g/mole" value="127.60299999999999"/> + </element> + <material name="Tellurium"> + <D unit="g/cm3" value="6.2400000000000002"/> + <fraction n="1" ref="Te_elm"/> + </material> + <element name="Th_elm" formula="Th" Z="90"> + <atom unit="g/mole" value="232.03800000000001"/> + </element> + <material name="Thorium"> + <D unit="g/cm3" value="11.720000000000001"/> + <fraction n="1" ref="Th_elm"/> + </material> + <element name="Ti_elm" formula="Ti" Z="22"> + <atom unit="g/mole" value="47.866700000000002"/> + </element> + <material name="Titanium"> + <D unit="g/cm3" value="4.54"/> + <fraction n="1" ref="Ti_elm"/> + </material> + <element name="Tl_elm" formula="Tl" Z="81"> + <atom unit="g/mole" value="204.38300000000001"/> + </element> + <material name="Thallium"> + <D unit="g/cm3" value="11.720000000000001"/> + <fraction n="1" ref="Tl_elm"/> + </material> + <element name="Tm_elm" formula="Tm" Z="69"> + <atom unit="g/mole" value="168.934"/> + </element> + <material name="Thulium"> + <D unit="g/cm3" value="9.3209999999999997"/> + <fraction n="1" ref="Tm_elm"/> + </material> + <element name="U_elm" formula="U" Z="92"> + <atom unit="g/mole" value="238.029"/> + </element> + <material name="Uranium"> + <D unit="g/cm3" value="18.949999999999999"/> + <fraction n="1" ref="U_elm"/> + </material> + <element name="V_elm" formula="V" Z="23"> + <atom unit="g/mole" value="50.941499999999998"/> + </element> + <material name="Vanadium"> + <D unit="g/cm3" value="6.1100000000000003"/> + <fraction n="1" ref="V_elm"/> + </material> + <element name="W_elm" formula="W" Z="74"> + <atom unit="g/mole" value="183.84200000000001"/> + </element> + <material name="Tungsten"> + <D unit="g/cm3" value="19.300000000000001"/> + <fraction n="1" ref="W_elm"/> + </material> + <element name="Xe_elm" formula="Xe" Z="54"> + <atom unit="g/mole" value="131.292"/> + </element> + <material name="Xenon"> + <D unit="g/cm3" value="0.0054853599999999999"/> + <fraction n="1" ref="Xe_elm"/> + </material> + <element name="Y_elm" formula="Y" Z="39"> + <atom unit="g/mole" value="88.905799999999999"/> + </element> + <material name="Yttrium"> + <D unit="g/cm3" value="4.4690000000000003"/> + <fraction n="1" ref="Y_elm"/> + </material> + <element name="Yb_elm" formula="Yb" Z="70"> + <atom unit="g/mole" value="173.03800000000001"/> + </element> + <material name="Ytterbium"> + <D unit="g/cm3" value="6.7300000000000004"/> + <fraction n="1" ref="Yb_elm"/> + </material> + <element name="Zn_elm" formula="Zn" Z="30"> + <atom unit="g/mole" value="65.395499999999998"/> + </element> + <material name="Zinc"> + <D unit="g/cm3" value="7.133"/> + <fraction n="1" ref="Zn_elm"/> + </material> + <element name="Zr_elm" formula="Zr" Z="40"> + <atom unit="g/mole" value="91.223600000000005"/> + </element> + <material name="Zirconium"> + <D unit="g/cm3" value="6.5060000000000002"/> + <fraction n="1" ref="Zr_elm"/> + </material> + <material name="Air"> + <D unit="g/cm3" value="0.0011999999999999999"/> + <fraction n="0.012000000104308128" ref="Ar_elm"/> + <fraction n="0.75400000810623169" ref="N_elm"/> + <fraction n="0.23399999737739563" ref="O_elm"/> + </material> + <material name="Vacuum"> + <D unit="g/cm3" value="1e-10"/> + <fraction n="0.012000000104308128" ref="Ar_elm"/> + <fraction n="0.75400000810623169" ref="N_elm"/> + <fraction n="0.23399999737739563" ref="O_elm"/> + </material> + <material name="Water"> + <D unit="g/cm3" value="1"/> + <fraction n="0.11189834773540497" ref="H_elm"/> + <fraction n="0.88810163736343384" ref="O_elm"/> + </material> + <material name="MightyTSiliconTracker"> + <D unit="g/cm3" value="2.3300000000000001"/> + <fraction n="1" ref="Si_elm"/> + </material> + </materials> + <solids> + <box name="world_volume_shape_0x318c510" x="10000" y="10000" z="10000" lunit="cm"/> + <box name="lvUpstreamRegion_shape_0x31036a0" x="2000" y="2000" z="2000" lunit="cm"/> + <box name="shape-BeforeMagnetRegion_shape_0x31f2e00" x="2000" y="2000" z="540" lunit="cm"/> + <box name="lvBeforeVelo_shape_0x2ec4780" x="310" y="310" z="181.5" lunit="cm"/> + <box name="lvMagnetRegion_shape_0x31f36f0" x="2000" y="2000" z="492" lunit="cm"/> + <box name="lvAfterMagnetRegion_shape_0x2ed6f20" x="2000" y="2000" z="428" lunit="cm"/> + <box name="TShave" x="832.5" y="628.5" z="181.90000000000009" lunit="cm"/> + <box name="TShave0x1" x="832.50000023841858" y="628.50000023841858" z="2" lunit="cm"/> + <subtraction name="Tsolid_shape_0x315dd20"> + <first ref="TShave"/> + <second ref="TShave0x1"/> + <position name="Tsolid_shape_0x315dd20TShave0x1pos" x="0" y="-10.5" z="91.950000000000045" unit="cm"/> + <rotation name="Tsolid_shape_0x315dd20TShave0x1rot" x="0.2063221020266095" y="-0" z="0" unit="deg"/> + </subtraction> + <box name="lvSiShortMatRightX_shape_0x326ab60" x="42.400000000000006" y="20" z="0.13" lunit="cm"/> + <box name="SiMatBox_shape_0x2eb1b10" x="52.800000000000004" y="20" z="0.13" lunit="cm"/> + <box name="SiMatMTBox_shape_0x3265c30" x="52.800000000000004" y="20" z="0.13" lunit="cm"/> + <box name="lvSiShortMatLeftX_shape_0x326a370" x="42.400000000000006" y="20" z="0.13" lunit="cm"/> + <box name="shape-DownstreamRegion_shape_0x31606a0" x="2000" y="2000" z="800" lunit="cm"/> + <box name="shape-AfterMuonBox2" x="200" y="200" z="200" lunit="cm"/> + <box name="shape-AfterMuonBox20x1" x="49.900000000000006" y="55" z="100" lunit="cm"/> + <union name="shape-AfterMuon_shape_0x3160200"> + <first ref="shape-AfterMuonBox2"/> + <second ref="shape-AfterMuonBox20x1"/> + <position name="shape-AfterMuon_shape_0x3160200shape-AfterMuonBox20x1pos" x="0" y="0" z="-100" unit="cm"/> + </union> + </solids> + <structure> + <volume name="lvUpstreamRegion"> + <materialref ref="Air"/> + <solidref ref="lvUpstreamRegion_shape_0x31036a0"/> + </volume> + <volume name="lvBeforeVelo"> + <materialref ref="Air"/> + <solidref ref="lvBeforeVelo_shape_0x2ec4780"/> + </volume> + <volume name="lvBeforeMagnetRegion"> + <materialref ref="Air"/> + <solidref ref="shape-BeforeMagnetRegion_shape_0x31f2e00"/> + <physvol name="lvBeforeVelo_0" copynumber="0"> + <volumeref ref="lvBeforeVelo"/> + <positionref ref="lvBeforeVelo_0inlvBeforeMagnetRegionpos"/> + </physvol> + </volume> + <volume name="lvMagnetRegion"> + <materialref ref="Air"/> + <solidref ref="lvMagnetRegion_shape_0x31f36f0"/> + </volume> + <volume name="lvSiShortMatRightX"> + <materialref ref="MightyTSiliconTracker"/> + <solidref ref="lvSiShortMatRightX_shape_0x326ab60"/> + </volume> + <volume name="lvSiMat"> + <materialref ref="MightyTSiliconTracker"/> + <solidref ref="SiMatBox_shape_0x2eb1b10"/> + </volume> + <volume name="lvSiMatMT"> + <materialref ref="MightyTSiliconTracker"/> + <solidref ref="SiMatMTBox_shape_0x3265c30"/> + </volume> + <assembly name="lvMightyTModuleHoleRightX"> + <physvol name="lvSiShortMatRightX_0" copynumber="0"> + <volumeref ref="lvSiShortMatRightX"/> + <positionref ref="lvSiShortMatRightX_0inlvMightyTModuleHoleRightXpos"/> + </physvol> + <physvol name="lvSiMat_1" copynumber="1"> + <volumeref ref="lvSiMat"/> + <positionref ref="lvSiMat_1inlvMightyTModuleHoleRightXpos"/> + </physvol> + <physvol name="lvSiMat_2" copynumber="2"> + <volumeref ref="lvSiMat"/> + <positionref ref="lvSiMat_2inlvMightyTModuleHoleRightXpos"/> + </physvol> + <physvol name="lvSiMatMT_3" copynumber="3"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_3inlvMightyTModuleHoleRightXpos"/> + </physvol> + <physvol name="lvSiMatMT_4" copynumber="4"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_4inlvMightyTModuleHoleRightXpos"/> + </physvol> + </assembly> + <assembly name="lvMightyTModuleFull"> + <physvol name="lvSiMatMT_0" copynumber="0"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_0inlvMightyTModuleFullpos"/> + </physvol> + <physvol name="lvSiMatMT_1" copynumber="1"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_1inlvMightyTModuleFullpos"/> + </physvol> + <physvol name="lvSiMatMT_2" copynumber="2"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_2inlvMightyTModuleFullpos"/> + </physvol> + <physvol name="lvSiMatMT_3" copynumber="3"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_30x1inlvMightyTModuleFullpos"/> + </physvol> + </assembly> + <assembly name="lvMightyTModuleColII"> + <physvol name="lvSiMatMT_0" copynumber="0"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_00x1inlvMightyTModuleColIIpos"/> + </physvol> + <physvol name="lvSiMatMT_1" copynumber="1"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_10x1inlvMightyTModuleColIIpos"/> + </physvol> + <physvol name="lvSiMatMT_2" copynumber="2"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_20x1inlvMightyTModuleColIIpos"/> + </physvol> + </assembly> + <assembly name="lvMightyTModuleColIII"> + <physvol name="lvSiMatMT_0" copynumber="0"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_00x2inlvMightyTModuleColIIIpos"/> + </physvol> + <physvol name="lvSiMatMT_1" copynumber="1"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_10x2inlvMightyTModuleColIIIpos"/> + </physvol> + </assembly> + <assembly name="lvHalf5XNeg"> + <physvol name="lvMightyTModuleHoleRightX_0" copynumber="0"> + <volumeref ref="lvMightyTModuleHoleRightX"/> + <positionref ref="lvMightyTModuleHoleRightX_0inlvHalf5XNegpos"/> + </physvol> + <physvol name="lvMightyTModuleFull_1" copynumber="1"> + <volumeref ref="lvMightyTModuleFull"/> + <positionref ref="lvMightyTModuleFull_1inlvHalf5XNegpos"/> + </physvol> + <physvol name="lvMightyTModuleColII_2" copynumber="2"> + <volumeref ref="lvMightyTModuleColII"/> + <positionref ref="lvMightyTModuleColII_2inlvHalf5XNegpos"/> + </physvol> + <physvol name="lvMightyTModuleColIII_3" copynumber="3"> + <volumeref ref="lvMightyTModuleColIII"/> + <positionref ref="lvMightyTModuleColIII_3inlvHalf5XNegpos"/> + </physvol> + </assembly> + <volume name="lvSiShortMatLeftX"> + <materialref ref="MightyTSiliconTracker"/> + <solidref ref="lvSiShortMatLeftX_shape_0x326a370"/> + </volume> + <assembly name="lvMightyTModuleHoleLeftX"> + <physvol name="lvSiShortMatLeftX_0" copynumber="0"> + <volumeref ref="lvSiShortMatLeftX"/> + <positionref ref="lvSiShortMatLeftX_0inlvMightyTModuleHoleLeftXpos"/> + </physvol> + <physvol name="lvSiMat_1" copynumber="1"> + <volumeref ref="lvSiMat"/> + <positionref ref="lvSiMat_10x1inlvMightyTModuleHoleLeftXpos"/> + </physvol> + <physvol name="lvSiMat_2" copynumber="2"> + <volumeref ref="lvSiMat"/> + <positionref ref="lvSiMat_20x1inlvMightyTModuleHoleLeftXpos"/> + </physvol> + <physvol name="lvSiMatMT_3" copynumber="3"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_30x2inlvMightyTModuleHoleLeftXpos"/> + </physvol> + <physvol name="lvSiMatMT_4" copynumber="4"> + <volumeref ref="lvSiMatMT"/> + <positionref ref="lvSiMatMT_40x1inlvMightyTModuleHoleLeftXpos"/> + </physvol> + </assembly> + <assembly name="lvHalf5XPos"> + <physvol name="lvMightyTModuleHoleLeftX_0" copynumber="0"> + <volumeref ref="lvMightyTModuleHoleLeftX"/> + <positionref ref="lvMightyTModuleHoleLeftX_0inlvHalf5XPospos"/> + </physvol> + <physvol name="lvMightyTModuleFull_1" copynumber="1"> + <volumeref ref="lvMightyTModuleFull"/> + <positionref ref="lvMightyTModuleFull_10x1inlvHalf5XPospos"/> + </physvol> + <physvol name="lvMightyTModuleColII_2" copynumber="2"> + <volumeref ref="lvMightyTModuleColII"/> + <positionref ref="lvMightyTModuleColII_20x1inlvHalf5XPospos"/> + </physvol> + <physvol name="lvMightyTModuleColIII_3" copynumber="3"> + <volumeref ref="lvMightyTModuleColIII"/> + <positionref ref="lvMightyTModuleColIII_30x1inlvHalf5XPospos"/> + </physvol> + </assembly> + <assembly name="lvLayerX1"> + <physvol name="lvHalf5XNeg_0" copynumber="0"> + <volumeref ref="lvHalf5XNeg"/> + <positionref ref="lvHalf5XNeg_0inlvLayerX1pos"/> + <rotationref ref="lvHalf5XNeg_0inlvLayerX1rot"/> + </physvol> + <physvol name="lvHalf5XPos_1" copynumber="1"> + <volumeref ref="lvHalf5XPos"/> + <positionref ref="lvHalf5XPos_1inlvLayerX1pos"/> + <rotationref ref="lvHalf5XPos_1inlvLayerX1rot"/> + </physvol> + </assembly> + <assembly name="lvLayerX2"> + <physvol name="lvHalf5XPos_0" copynumber="0"> + <volumeref ref="lvHalf5XPos"/> + <positionref ref="lvHalf5XPos_0inlvLayerX2pos"/> + </physvol> + <physvol name="lvHalf5XNeg_1" copynumber="1"> + <volumeref ref="lvHalf5XNeg"/> + <positionref ref="lvHalf5XNeg_1inlvLayerX2pos"/> + </physvol> + </assembly> + <assembly name="lvStation"> + <physvol name="lvLayerX1_0" copynumber="0"> + <volumeref ref="lvLayerX1"/> + <positionref ref="lvLayerX1_0inlvStationpos"/> + </physvol> + <physvol name="lvLayerX2_1" copynumber="1"> + <volumeref ref="lvLayerX2"/> + <positionref ref="lvLayerX2_1inlvStationpos"/> + </physvol> + </assembly> + <assembly name="lvMightyT"> + <physvol name="lvStation_0" copynumber="0"> + <volumeref ref="lvStation"/> + <positionref ref="lvStation_0inlvMightyTpos"/> + <rotationref ref="lvStation_0inlvMightyTrot"/> + </physvol> + <physvol name="lvStation_1" copynumber="1"> + <volumeref ref="lvStation"/> + <positionref ref="lvStation_1inlvMightyTpos"/> + <rotationref ref="lvStation_1inlvMightyTrot"/> + </physvol> + <physvol name="lvStation_2" copynumber="2"> + <volumeref ref="lvStation"/> + <positionref ref="lvStation_2inlvMightyTpos"/> + <rotationref ref="lvStation_2inlvMightyTrot"/> + </physvol> + </assembly> + <volume name="lvT"> + <materialref ref="Air"/> + <solidref ref="Tsolid_shape_0x315dd20"/> + <physvol name="lvMightyT_0" copynumber="0"> + <volumeref ref="lvMightyT"/> + <positionref ref="lvMightyT_0inlvTpos"/> + </physvol> + </volume> + <volume name="lvAfterMagnetRegion"> + <materialref ref="Air"/> + <solidref ref="lvAfterMagnetRegion_shape_0x2ed6f20"/> + <physvol name="lvT_0" copynumber="0"> + <volumeref ref="lvT"/> + <positionref ref="lvT_0inlvAfterMagnetRegionpos"/> + </physvol> + </volume> + <volume name="lvAfterMuon"> + <materialref ref="Air"/> + <solidref ref="shape-AfterMuon_shape_0x3160200"/> + </volume> + <volume name="lvDownstreamRegion"> + <materialref ref="Air"/> + <solidref ref="shape-DownstreamRegion_shape_0x31606a0"/> + <physvol name="lvAfterMuon_0" copynumber="0"> + <volumeref ref="lvAfterMuon"/> + <positionref ref="lvAfterMuon_0inlvDownstreamRegionpos"/> + </physvol> + </volume> + <volume name="world_volume"> + <materialref ref="Air"/> + <solidref ref="world_volume_shape_0x318c510"/> + <physvol name="lvUpstreamRegion_0" copynumber="0"> + <volumeref ref="lvUpstreamRegion"/> + <positionref ref="lvUpstreamRegion_0inworld_volumepos"/> + </physvol> + <physvol name="lvBeforeMagnetRegion_1" copynumber="1"> + <volumeref ref="lvBeforeMagnetRegion"/> + <positionref ref="lvBeforeMagnetRegion_1inworld_volumepos"/> + </physvol> + <physvol name="lvMagnetRegion_2" copynumber="2"> + <volumeref ref="lvMagnetRegion"/> + <positionref ref="lvMagnetRegion_2inworld_volumepos"/> + </physvol> + <physvol name="lvAfterMagnetRegion_3" copynumber="3"> + <volumeref ref="lvAfterMagnetRegion"/> + <positionref ref="lvAfterMagnetRegion_3inworld_volumepos"/> + </physvol> + <physvol name="lvDownstreamRegion_4" copynumber="4"> + <volumeref ref="lvDownstreamRegion"/> + <positionref ref="lvDownstreamRegion_4inworld_volumepos"/> + </physvol> + </volume> + </structure> + <setup name="default" version="1.0"> + <world ref="world_volume"/> + </setup> +</gdml> diff --git a/examples/ClientTests/compact/MT.xml b/examples/ClientTests/compact/MT.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c0b9a606eba5bbcbfef53b921238411c1f730f5 --- /dev/null +++ b/examples/ClientTests/compact/MT.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> +<lccdd> + + <includes> + <gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/elements.xml"/> + <gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/materials.xml"/> + </includes> + + <define> + <constant name="world_size" value="10*m"/> + <constant name="world_x" value="world_size"/> + <constant name="world_y" value="world_size"/> + <constant name="world_z" value="world_size"/> + </define> + + <display> + <vis name="Invisible" showDaughters="false" visible="false"/> + <vis name="InvisibleWithChildren" showDaughters="true" visible="false"/> + </display> + + <detectors> + <detector id="1" name="FT_MT" type="DD4hep_GdmlDetector" vis="InvisibleWithChildren"> + <gdmlFile ref="MT.gdml"/> + <parent name="/world"/> + </detector> + </detectors> + + <readouts> + </readouts> + + <fields> + </fields> + +</lccdd> diff --git a/examples/ClientTests/scripts/DDG4TestSetup.py b/examples/ClientTests/scripts/DDG4TestSetup.py index ad2bc531daed14832ef9660bfa4dec907ca8fec5..4939fcdb5afbfc67a382537dcacc4a2b4fa7eab3 100644 --- a/examples/ClientTests/scripts/DDG4TestSetup.py +++ b/examples/ClientTests/scripts/DDG4TestSetup.py @@ -43,6 +43,13 @@ class Setup: # Setup particle gun return self.geant4.setupGun(name, particle=particle, energy=energy, multiplicity=multiplicity) + def setupInput(self, spec, mask=1): + input = DDG4.GeneratorAction(self.kernel, "Geant4InputAction/Input") + input.Input = spec + input.MomentumScale = 1.0 + input.Mask = mask + self.geant4.buildInputStage([input]) + def setupGenerator(self): # And handle the simulation particles. part = DDG4.GeneratorAction(self.kernel, "Geant4ParticleHandler/ParticleHandler") @@ -60,9 +67,9 @@ class Setup: self.phys.enableUI() return self - def run(self): + def run(self, num_events=None): # and run - self.geant4.execute() + self.geant4.execute(num_events) return self # Stop the entire excercise diff --git a/examples/ClientTests/scripts/MiniTel_hepmc.py b/examples/ClientTests/scripts/MiniTel_hepmc.py new file mode 100644 index 0000000000000000000000000000000000000000..d604b377f46d5d843a5cf8630ebefcb87a1238cb --- /dev/null +++ b/examples/ClientTests/scripts/MiniTel_hepmc.py @@ -0,0 +1,32 @@ +from __future__ import absolute_import, unicode_literals +import os +import sys +import DDG4 +# +""" + + dd4hep example setup using the python configuration + + \author M.Frank + \version 1.0 + +""" + + +def run(): + from MiniTelSetup import Setup + m = Setup() + if len(sys.argv) >= 2 and sys.argv[1] == "batch": + DDG4.setPrintLevel(DDG4.OutputLevel.WARNING) + m.kernel.UI = '' + m.configure() + m.defineOutput() + fname = os.environ['DD4hepExamplesINSTALL']+'/examples/DDG4/data/hepmc_geant4.dat' + m.setupInput("Geant4EventReaderHepMC|" + fname) + m.setupGenerator() + m.setupPhysics() + m.run(num_events=1) + + +if __name__ == "__main__": + run()