diff --git a/examples/ILDExDet/CMakeLists.txt b/examples/ILDExDet/CMakeLists.txt deleted file mode 100644 index 4cea5323638c358e89fef9c7bc65ff9f0ab10458..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/CMakeLists.txt +++ /dev/null @@ -1,181 +0,0 @@ -cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR) - -#--------------------------- -set( PackageName ILDExDet ) -#--------------------------- - -project(${PackageName}) - -# project version -SET( ${PackageName}_VERSION_MAJOR 0 ) -SET( ${PackageName}_VERSION_MINOR 0 ) -SET( ${PackageName}_VERSION_PATCH 1 ) - -SET( ${PackageName}_VERSION "${${PackageName}_VERSION_MAJOR}.${${PackageName}_VERSION_MINOR}" ) -SET( ${PackageName}_SOVERSION "${${PackageName}_VERSION_MAJOR}.${${PackageName}_VERSION_MINOR}" ) - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake ) -set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin) - -#------------- set the default installation directory to be the source directory - -IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET( CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR} CACHE PATH - "install prefix path - overwrite with -D CMAKE_INSTALL_PREFIX = ..." - FORCE ) - MESSAGE(STATUS "CMAKE_INSTALL_PREFIX is ${CMAKE_INSTALL_PREFIX} - overwrite with -D CMAKE_INSTALL_PREFIX" ) -ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - - - -#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - -find_package( DD4hep REQUIRED) - -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${DD4hep_ROOT}/cmake ) -include( DD4hep ) - -find_package( ROOT REQUIRED ) -#find_package( ROOT REQUIRED COMPONENTS Geom Reflex) -set( ROOT_COMPONENT_LIBRARIES Geom Reflex) - - - - -if(DD4HEP_USE_GEAR) - - find_package( GEAR REQUIRED COMPONENTS ) - - # add all gear library pathes to External_LIBRARY_DIRS for the environment script - foreach(lp ${GEAR_LIBRARY_DIRS}) - set( External_LIBRARY_DIRS "${External_LIBRARY_DIRS} ${lp}") - endforeach(lp) - #message( STATUS " *** pathes : ${External_LIBRARY_DIRS} " ) - - add_definitions("-D DD4HEP_USE_GEAR") - -endif() - -#------------------------------------------------------------- -# add additional packages here - - -#------------------------------------------------------------- - -include_directories( ${CMAKE_SOURCE_DIR}/include - include - ${DD4hep_INCLUDE_DIRS} - ${ROOT_INCLUDE_DIR} - ${GEAR_INCLUDE_DIRS} - ) - -file(GLOB sources src/*.cpp ) -file(GLOB headers include/*.h) - -include(DD4hep_XML_setup) - -if(DD4HEP_USE_PYROOT) - ROOT_GENERATE_DICTIONARY(G__ILDEx ${headers} LINKDEF include/ROOT/LinkDef.h) - list(APPEND sources G__ILDEx.cxx) -endif() - -add_library(${PackageName} SHARED ${sources}) - -target_link_libraries(${PackageName} ${DD4hep_LIBRARIES} - ${ROOT_LIBRARIES} ${ROOT_COMPONENT_LIBRARIES} - ${GEAR_LIBRARIES} - ) - - - -#---Rootmap generation-------------------------------------------------------------- - -if(APPLE) - dd4hep_generate_rootmap_apple(${PackageName} ) -else() - dd4hep_generate_rootmap(${PackageName} ) -endif() - - -#---Testing------------------------------------------------------------------------- -if(BUILD_TESTING) - include(CTest) - enable_testing() -endif(BUILD_TESTING) - -configure_file( ${DD4hep_ROOT}/cmake/run_test_package.sh run_test_${PackageName}.sh @ONLY) -INSTALL(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/run_test_${PackageName}.sh - DESTINATION bin ) - -#---- configure run environment --------------- -configure_file( ${DD4hep_ROOT}/cmake/thisdd4hep_package.sh.in this${PackageName}.sh @ONLY) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/this${PackageName}.sh - DESTINATION bin - ) - - -#--- install target------------------------------------- - - -FILE(GLOB hfiles "include/*.h") -INSTALL(FILES ${hfiles} - DESTINATION include/${PackageName} - ) - - -install(TARGETS ${PackageName} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ) - -# to do: add corresponding uninstall... -#------------------------------------------------------- - - - -#################################### -# -# Add Tests foir ILDExDet here -# -#################################### - -SET( test_name "test_converter_ild_lcdd" ) -ADD_TEST( t_${test_name} "${CMAKE_INSTALL_PREFIX}/bin/run_test_${PackageName}.sh" - geoConverter -compact2lcdd -input ${CMAKE_CURRENT_SOURCE_DIR}/compact/ILDEx.xml -output ILDExDet.lcdd ) -#----- here we simply require that at least 100 volumes have been converted -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION " Handled [1-9][0-9][0-9]+ volumes" ) - -SET( test_name "test_converter_ild_gdml" ) -ADD_TEST( t_${test_name} "${CMAKE_INSTALL_PREFIX}/bin/run_test_${PackageName}.sh" - geoConverter -compact2gdml -input ${CMAKE_CURRENT_SOURCE_DIR}/compact/ILDEx.xml -output ILDExDet.gdml ) -#----- here we simply require that at least 100 volumes have been converted -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION " Handled [1-9][0-9][0-9]+ volumes" ) - -SET( test_name "test_converter_ild_vis" ) -ADD_TEST( t_${test_name} "${CMAKE_INSTALL_PREFIX}/bin/run_test_${PackageName}.sh" - geoConverter -compact2vis -input ${CMAKE_CURRENT_SOURCE_DIR}/compact/ILDEx.xml -output ILDExDet.vis ) -#----- here we simply require that at least 100 volumes have been converted -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION " Handled [1-9][0-9][0-9]+ volumes" ) - - -SET( test_name "test_converter_ild_gear" ) -ADD_TEST( t_${test_name} "${CMAKE_INSTALL_PREFIX}/bin/run_test_${PackageName}.sh" - convertToGear ${CMAKE_CURRENT_SOURCE_DIR}/compact/ILDEx.xml ) -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION "found gear object : SITParameters" ) -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION "found gear object : TPCParameters" ) -SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION "found gear object : VXDParameters" ) - - -#SET( test_name "test_converter_pandora" ) -#ADD_TEST( t_${test_name} "${CMAKE_INSTALL_PREFIX}/bin/run_test_${PackageName}.sh" -# geoConverter -compact2pandora -input ${CMAKE_CURRENT_SOURCE_DIR}/compact/ILDEx.xml -output ILDExDet.pandora ) -##----- here we simply require that at least 100 volumes have been converted -#SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES PASS_REGULAR_EXPRESSION " Handled [1-9][0-9][0-9]+ volumes" ) - - -# no explicit failed condition -#SET_TESTS_PROPERTIES( t_${test_name} PROPERTIES FAIL_REGULAR_EXPRESSION "TEST_FAILED" ) - - diff --git a/examples/ILDExDet/compact/ILDEx.xml b/examples/ILDExDet/compact/ILDEx.xml deleted file mode 100644 index afecaf1b194a92509f1f94daa602b64f9c62fdba..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/compact/ILDEx.xml +++ /dev/null @@ -1,276 +0,0 @@ -<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd"> - - <info name="ILD_toy_v01" - title="ILD Detector Toy model" - author="F. Gaede" - url="http://ilcsoft.desy.de" - status="development" - version="$Id: ILDEx.xml 676 2013-08-06 11:12:53Z gaede $"> - <comment>The compact format for the ILD Detector - toy model </comment> - </info> - - <includes> - <gdmlFile ref="elements.xml"/> - <gdmlFile ref="materials.xml"/> - <pyBuilder ref="../drivers"/> - </includes> - - <define> - <constant name="world_side" value="10*m"/> - <constant name="world_x" value="world_side/2"/> - <constant name="world_y" value="world_side/2"/> - <constant name="world_z" value="world_side/2"/> - <constant name="CrossingAngle" value="0.014*rad"/> - - <constant name="VXD_inner_radius" value="15*mm"/> - <constant name="VXD_outer_radius" value="80*mm"/> - <constant name="VXD_zhalf" value="130*mm"/> - - <constant name="SIT_inner_radius" value="150*mm"/> - <constant name="SIT_outer_radius" value="330*mm"/> - <constant name="SIT_zhalf" value="660*mm"/> - - <constant name="TPC_zhalf" value="2500*mm"/> - <constant name="TPC_outer_radius" value="1800*mm"/> - <constant name="TPC_inner_radius" value="350*mm"/> - <constant name="TPC_inner_thickness" value="2*mm"/> - <constant name="TPC_outer_thickness" value="3*mm"/> - <constant name="TPC_endcap_thickness" value="3*mm"/> - - <constant name="tracking_region_radius" value="TPC_outer_radius + 1.0*m"/> - <constant name="tracking_region_zmax" value="TPC_zhalf + 1.0*m"/> - <constant name="SolenoidCoilOuterZ" value="TPC_zhalf + 0.3*m"/> - - <constant name="HcalBarrel_rmin" value="2058.0*mm"/> - <constant name="Hcal_outer_radius" value="3395.46*mm"/> - <!-- rmax is 2410.0*mm--> - <constant name="TPC_Ecal_Hcal_barrel_halfZ" value="2350*mm"/> - <constant name="HcalBarrel_zmax" value="TPC_Ecal_Hcal_barrel_halfZ"/> - <constant name="HcalBarrel_staves" value="8"/> - <constant name="HcalBarrel_layers" value="(int) 48"/> - <constant name="Hcal_chamber_thickness" value="6.5*mm"/> - <constant name="Hcal_radiator_thickness" value="20.0*mm"/> - <!--constant name="HcalBarrel_layer_thickness" value="20.0*mm + 6.5*mm"/--> - <constant name="HcalBarrel_layer_thickness" value="Hcal_radiator_thickness+Hcal_chamber_thickness"/> - <constant name="Hcal_back_plate_thickness" value="19.0*mm"/> - <constant name="Hcal_lateral_structure_thickness" value="15.0*mm"/> - <constant name="Hcal_layer_air_gap" value="2.0*mm"/> - <!-- Hcal Barrel roration angle M_PI/8.0 --> - <!-- constant name="Hcal_Barrel_rotation" value="0.392699075"/--> - <constant name="Hcal_Barrel_rotation" value="0."/> - - <constant name="Hcal_endcap_modules" value="16"/> - <constant name="Hcal_endcap_layers" value="(int) 48"/> - <constant name="Hcal_endcap_zmin" value="2650*mm"/> - - <constant name="SolenoidalFieldRadius" value="Hcal_outer_radius+10.0*mm"/> - </define> - - <materials> - <material name="Graphite"> - <D value="1.7" unit="g/cm3"/> - <composite n="1" ref="C"/> - </material> - </materials> - - <limits> - <limitset name="cal_limits"> - <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> - </limitset> - <limitset name="TPC_limits"> - <limit name="step_length_max" particles="*" value="10.0" unit="mm" /> - </limitset> - <limitset name="Tracker_limits"> - <limit name="step_length_max" particles="*" value="5.0" unit="mm" /> - </limitset> - </limits> - - <display> - <vis name="TPCVis" alpha="1.0" r="0" g="1.0" b="0.7" showDaughters="true" visible="false"/> - <vis name="TPCSupportVis" alpha="1.0" r="0" g="0.4" b="0.4" showDaughters="false" visible="true"/> - <vis name="TPCGasVis" alpha="1.0" r="0.7" g="0" b="0" showDaughters="false" visible="false"/> - <vis name="VXDLayerVis" alpha="1.0" r="0.5" g=".5" b=".5" showDaughters="true" visible="true"/> - <vis name="VXDSupportVis" alpha="1.0" r="0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/> - <vis name="SITSupportVis" alpha="1.0" r="0.0" g="0.3" b="0.7" showDaughters="true" visible="true"/> - <vis name="SITLayerVis" alpha="1.0" r="0.0" g="0.7" b="0.3" showDaughters="true" visible="true"/> - <vis name="SupportVis" r="0.5" g="0.1" b="0.99" showDaughters="false" visible="true"/> - <vis name="LumiCalVis" showDaughters="false" visible="true"/> - - <vis name="HcalBarrelVis" alpha="1" r="1" g="1" b="0.1" showDaughters="true" visible="true"/> - <vis name="HcalBarrelStavesVis" alpha="1" r="1" g="0" b="0.3" showDaughters="true" visible="false"/> - <vis name="HcalBarrelLayerVis" alpha="1" r="1" g="0" b="0.5" showDaughters="true" visible="false"/> - <vis name="HcalBarrelSensorVis" alpha="1" r="1" g="1" b="0.7" showDaughters="true" visible="false"/> - - <vis name="HcalEndcapVis" alpha="1" r="1" g="1" b="0.1" showDaughters="true" visible="true"/> - <vis name="HcalEndcapStavesVis" alpha="1" r="1" g="0" b="0.3" showDaughters="true" visible="false"/> - <vis name="HcalEndcapLayerVis" alpha="1" r="1" g="0" b="0.5" showDaughters="true" visible="false"/> - <vis name="HcalEndcapSensorVis" alpha="1" r="1" g="1" b="0.7" showDaughters="true" visible="false"/> - <vis name="HcalEndcapAirVis" alpha="1" r="1" g="0" b="0" showDaughters="true" visible="false"/> - - </display> - - <detectors> - <comment>Trackers</comment> - - <detector name="VXD" type="ILDExVXD" vis="VXDVis" id="1" limits="Tracker_limits" readout="VXDCollection" insideTrackingVolume="true"> - <tubs rmin="VXD_inner_radius" rmax="VXD_outer_radius" zhalf="VXD_zhalf"/> - <layer id="0" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="65*mm" radius="1.595000000e+01*mm" width="1.100000000e+01*mm" offset="-1.874869853e+00*mm" thickness="0.05*mm" material="Silicon" number="10"/> - </layer> - <layer id="1" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="65*mm" radius="18*mm" width="1.100000000e+01*mm" offset="-1.874869853e+00*mm" thickness="0.05*mm" material="Silicon" number="10"/> - </layer> - <layer id="2" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="125*mm" radius="3.695000000e+01*mm" width="2.200000000e+01*mm" offset="-1.837940563e+00*mm" thickness="0.05*mm" material="Silicon" number="11"/> - </layer> - <layer id="3" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="125*mm" radius="39*mm" width="2.200000000e+01*mm" offset="-1.837940563e+00*mm" thickness="0.05*mm" material="Silicon" number="11"/> - </layer> - <layer id="4" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="125*mm" radius="5.795000000e+01*mm" width="2.200000000e+01*mm" offset="-2.636744400e+00*mm" thickness="0.05*mm" material="Silicon" number="17"/> - </layer> - <layer id="5" vis="VXDLayerVis" phi0="-1.570796327e+00"> - <support thickness=".1*mm" material="Carbon" vis="VXDSupportVis"/> - <ladder zhalf="125*mm" radius="60*mm" width="2.200000000e+01*mm" offset="-2.636744400e+00*mm" thickness="0.05*mm" material="Silicon" number="17"/> - </layer> - </detector> - - <detector name="SIT" type="ILDExSIT" vis="SITVis" id="2" limits="Tracker_limits" readout="SITCollection" insideTrackingVolume="true"> - <tubs rmin="SIT_inner_radius" rmax="SIT_outer_radius" zhalf="SIT_zhalf"/> - <layer id="0" vis="SITLayerVis"> - <support thickness="1.0*mm" material="Carbon" vis="SITSupportVis"/> - <ladder thickness="0.1*mm" zhalf="370*mm" radius="155*mm" material="Silicon" number="10" /> - </layer> - <layer id="1" vis="SITLayerVis"> - <support thickness="1.0*mm" material="Carbon" vis="SITSupportVis"/> - <ladder thickness="0.1*mm" zhalf="650*mm" radius="300*mm" material="Silicon" number="19" /> - </layer> - </detector> - - - <detector name="TPC" type="ILDExTPC" vis="TPCVis" id="3" limits="TPC_limits" readout="TPCCollection" insideTrackingVolume="true"> - - <tubs rmin="TPC_inner_radius" rmax="TPC_outer_radius" zhalf="TPC_zhalf"/> - - <global driftLength="TPC_zhalf-TPC_endcap_thickness" padWidth="1.0*mm"/> - - <!-- <material name="Air"/> --> - - <detector name="TPC_InnerWall" type="TubeSegment" reflect="true" vis="TPCSupportVis" id="2"> - <material name="Carbon"/> - <tubs rmin="TPC_inner_radius" rmax="TPC_inner_radius+TPC_inner_thickness" zhalf="TPC_zhalf"/> - <position x="0" y="0" z="0"/> - <rotation x="0" y="0" z="0"/> - </detector> - - <detector name="TPC_OuterWall" type="TubeSegment" reflect="true" vis="TPCSupportVis" id="3"> - <material name="Carbon" /> - <tubs rmin="TPC_outer_radius - TPC_outer_thickness" rmax="TPC_outer_radius" zhalf="TPC_zhalf"/> - <position x="0" y="0" z="0"/> - <rotation x="0" y="0" z="0"/> - </detector> - - <detector name="TPC_EndPlate" type="TubeSegment" reflect="true" vis="TPCSupportVis" id="0"> - <material name="Carbon" /> - <tubs rmin="TPC_inner_radius+TPC_inner_thickness" rmax="TPC_outer_radius-TPC_outer_thickness" zhalf="0.5*TPC_endcap_thickness"/> - <position x="0" y="0" z="TPC_zhalf-0.5*TPC_endcap_thickness"/> - <rotation x="0" y="0" z="0"/> - </detector> - - - <detector name="TPC_GasVolume" type="TubeSegment" reflect="true" vis="TPCGasVis" id="4"> - <material name="Argon"/> - <tubs rmin="TPC_inner_radius+TPC_inner_thickness" rmax="TPC_outer_radius-TPC_outer_thickness" zhalf="TPC_zhalf-TPC_endcap_thickness"/> - <layer number="220" ecut="0.0"/> - <position x="0" y="0" z="0"/> - <rotation x="0" y="0" z="0"/> - </detector> - - </detector> - - <comment>Calorimeters</comment> - <detector id="7" name="HcalBarrel" type="AhcalBarrelCalorimeter" readout="HcalBarrelRegCollection" vis="HcalBarrelVis" calorimeterType="HAD_BARREL" gap="10.*mm"> - <comment>Hadron Calorimeter Barrel</comment> - - <material name="Steel235"/> - - <dimensions numsides="(int) HcalBarrel_staves" rmin="HcalBarrel_rmin" z="HcalBarrel_zmax"/> - <layer repeat="(int) HcalBarrel_layers"> - <slice material = "Polystyrene" thickness = "3.0*mm" sensitive = "yes" limits="cal_limits" vis="HcalBarrelSensorVis"/> - <slice material = "FR4" thickness = "0.7*mm" /> - <slice material = "Cu" thickness = "0.1*mm" /> - <slice material = "Air" thickness = "2.7*mm" vis="HcalBarrelAirVis" /> - </layer> - </detector> - <detector id="8" name="HcalEndcap" type="AhcalEndcapCalorimeter" readout="HcalEndcapHits" calorimeterType="HAD_ENDCAP" gap="15.*mm"> - <comment>Hadron Calorimeter Endcap</comment> - - <material name="Steel235"/> - - <layer repeat="(int) Hcal_endcap_layers"> - <slice material = "Polystyrene" thickness = "3.0*mm" sensitive = "yes" limits="cal_limits" vis="HcalEndcapSensorVis"/> - <slice material = "FR4" thickness = "0.7*mm" /> - <slice material = "Cu" thickness = "0.1*mm" /> - <slice material = "Air" thickness = "2.7*mm" vis="HcalEndcapAirVis" /> - </layer> - - <dimensions numsides="(int) Hcal_endcap_modules" rmin="362.0*mm" z="Hcal_endcap_zmin"> - <dimensions id="1" y_offset= "543.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="1087.0*mm"/> - <dimensions id="2" y_offset= "905.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="1811.0*mm"/> - <dimensions id="3" y_offset="1086.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2173.0*mm"/> - <dimensions id="4" y_offset="1268.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="5" y_offset="1268.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="6" y_offset="1449.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2898.0*mm"/> - <dimensions id="7" y_offset="1449.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2898.0*mm"/> - <dimensions id="8" y_offset="1630.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="9" y_offset="1630.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="10" y_offset="1449.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2898.0*mm"/> - <dimensions id="11" y_offset="1449.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2898.0*mm"/> - <dimensions id="12" y_offset="1268.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="13" y_offset="1268.0*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2536.0*mm"/> - <dimensions id="14" y_offset="1086.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="2173.0*mm"/> - <dimensions id="15" y_offset= "905.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="1811.0*mm"/> - <dimensions id="16" y_offset= "543.5*mm" dim_x="375.0*mm" dim_y="1287.0*mm" dim_z="1087.0*mm"/> - </dimensions> - </detector> - - - </detectors> - - <readouts> - <readout name="VXDCollection"> - <id>system:5,side:2,layer:9,module:8,sensor:8</id> - </readout> - <readout name="SITCollection"> - <id>system:5,side:-2,layer:9,module:8,sensor:8</id> - </readout> - <readout name="TPCCollection"> - <id>system:5,side:-2,layer:9,module:8,sensor:8</id> - </readout> - - <readout name="HcalBarrelRegCollection"> - <segmentation type="CartesianGridXZ" grid_size_x="30.0*mm" grid_size_z="30.0*mm" /> - <!-- <segmentation type="grid_xyz" grid_size_x="30.0*mm" grid_size_y="30.0*mm" grid_size_z="30.0*mm" /> --> - <id>system:6,stave:3,module:4,layer:8,slice:5,x:32:-16,y:-16</id> - </readout> - <readout name="HcalEndcapHits"> - <segmentation type="CartesianGridXY" grid_size_x="3.0*cm" grid_size_y="3.0*cm" /> - <!-- <segmentation type="grid_xyz" grid_size_x="30.0*mm" grid_size_y="30.0*mm" grid_size_z="30.0*mm" /> --> - <id>system:6,stave:1,module:1,endcapID:5,layer:8,slice:5,x:32:-16,y:-16</id> - </readout> - - </readouts> - <fields> - <field type="solenoid" name="GlobalSolenoid" inner_field="3.5*tesla" - outer_field="-1.5*tesla" zmax="SolenoidCoilOuterZ" - inner_radius="SolenoidalFieldRadius" - outer_radius="world_side" /> - </fields> -</lccdd> diff --git a/examples/ILDExDet/compact/elements.xml b/examples/ILDExDet/compact/elements.xml deleted file mode 100644 index e714c3a5cd544e748dd2941967cff515c0b77efc..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/compact/elements.xml +++ /dev/null @@ -1,884 +0,0 @@ -<materials> - <element Z="89" formula="Ac" name="Ac" > - <atom type="A" unit="g/mol" value="227.028" /> - </element> - <material formula="Ac" name="Actinium" state="solid" > - <RL type="X0" unit="cm" value="0.601558" /> - <NIL type="lambda" unit="cm" value="21.2048" /> - <D type="density" unit="g/cm3" value="10.07" /> - <composite n="1" ref="Ac" /> - </material> - <element Z="47" formula="Ag" name="Ag" > - <atom type="A" unit="g/mol" value="107.868" /> - </element> - <material formula="Ag" name="Silver" state="solid" > - <RL type="X0" unit="cm" value="0.854292" /> - <NIL type="lambda" unit="cm" value="15.8546" /> - <D type="density" unit="g/cm3" value="10.5" /> - <composite n="1" ref="Ag" /> - </material> - <element Z="13" formula="Al" name="Al" > - <atom type="A" unit="g/mol" value="26.9815" /> - </element> - <material formula="Al" name="Aluminum" state="solid" > - <RL type="X0" unit="cm" value="8.89632" /> - <NIL type="lambda" unit="cm" value="38.8766" /> - <D type="density" unit="g/cm3" value="2.699" /> - <composite n="1" ref="Al" /> - </material> - <element Z="95" formula="Am" name="Am" > - <atom type="A" unit="g/mol" value="243.061" /> - </element> - <material formula="Am" name="Americium" state="solid" > - <RL type="X0" unit="cm" value="0.42431" /> - <NIL type="lambda" unit="cm" value="15.9812" /> - <D type="density" unit="g/cm3" value="13.67" /> - <composite n="1" ref="Am" /> - </material> - <element Z="18" formula="Ar" name="Ar" > - <atom type="A" unit="g/mol" value="39.9477" /> - </element> - <material formula="Ar" name="Argon" state="gas" > - <RL type="X0" unit="cm" value="11762.1" /> - <NIL type="lambda" unit="cm" value="71926" /> - <D type="density" unit="g/cm3" value="0.00166201" /> - <composite n="1" ref="Ar" /> - </material> - <element Z="33" formula="As" name="As" > - <atom type="A" unit="g/mol" value="74.9216" /> - </element> - <material formula="As" name="Arsenic" state="solid" > - <RL type="X0" unit="cm" value="2.0838" /> - <NIL type="lambda" unit="cm" value="25.7324" /> - <D type="density" unit="g/cm3" value="5.73" /> - <composite n="1" ref="As" /> - </material> - <element Z="85" formula="At" name="At" > - <atom type="A" unit="g/mol" value="209.987" /> - </element> - <material formula="At" name="Astatine" state="solid" > - <RL type="X0" unit="cm" value="0.650799" /> - <NIL type="lambda" unit="cm" value="22.3202" /> - <D type="density" unit="g/cm3" value="9.32" /> - <composite n="1" ref="At" /> - </material> - <element Z="79" formula="Au" name="Au" > - <atom type="A" unit="g/mol" value="196.967" /> - </element> - <material formula="Au" name="Gold" state="solid" > - <RL type="X0" unit="cm" value="0.334436" /> - <NIL type="lambda" unit="cm" value="10.5393" /> - <D type="density" unit="g/cm3" value="19.32" /> - <composite n="1" ref="Au" /> - </material> - <element Z="5" formula="B" name="B" > - <atom type="A" unit="g/mol" value="10.811" /> - </element> - <material formula="B" name="Boron" state="solid" > - <RL type="X0" unit="cm" value="22.2307" /> - <NIL type="lambda" unit="cm" value="32.2793" /> - <D type="density" unit="g/cm3" value="2.37" /> - <composite n="1" ref="B" /> - </material> - <element Z="56" formula="Ba" name="Ba" > - <atom type="A" unit="g/mol" value="137.327" /> - </element> - <material formula="Ba" name="Barium" state="solid" > - <RL type="X0" unit="cm" value="2.37332" /> - <NIL type="lambda" unit="cm" value="51.6743" /> - <D type="density" unit="g/cm3" value="3.5" /> - <composite n="1" ref="Ba" /> - </material> - <element Z="4" formula="Be" name="Be" > - <atom type="A" unit="g/mol" value="9.01218" /> - </element> - <material formula="Be" name="Beryllium" state="solid" > - <RL type="X0" unit="cm" value="35.276" /> - <NIL type="lambda" unit="cm" value="39.4488" /> - <D type="density" unit="g/cm3" value="1.848" /> - <composite n="1" ref="Be" /> - </material> - <element Z="83" formula="Bi" name="Bi" > - <atom type="A" unit="g/mol" value="208.98" /> - </element> - <material formula="Bi" name="Bismuth" state="solid" > - <RL type="X0" unit="cm" value="0.645388" /> - <NIL type="lambda" unit="cm" value="21.3078" /> - <D type="density" unit="g/cm3" value="9.747" /> - <composite n="1" ref="Bi" /> - </material> - <element Z="97" formula="Bk" name="Bk" > - <atom type="A" unit="g/mol" value="247.07" /> - </element> - <material formula="Bk" name="Berkelium" state="solid" > - <RL type="X0" unit="cm" value="0.406479" /> - <NIL type="lambda" unit="cm" value="15.6902" /> - <D type="density" unit="g/cm3" value="14" /> - <composite n="1" ref="Bk" /> - </material> - <element Z="35" formula="Br" name="Br" > - <atom type="A" unit="g/mol" value="79.9035" /> - </element> - <material formula="Br" name="Bromine" state="gas" > - <RL type="X0" unit="cm" value="1615.12" /> - <NIL type="lambda" unit="cm" value="21299" /> - <D type="density" unit="g/cm3" value="0.0070721" /> - <composite n="1" ref="Br" /> - </material> - <element Z="6" formula="C" name="C" > - <atom type="A" unit="g/mol" value="12.0107" /> - </element> - <material formula="C" name="Carbon" state="solid" > - <RL type="X0" unit="cm" value="21.3485" /> - <NIL type="lambda" unit="cm" value="40.1008" /> - <D type="density" unit="g/cm3" value="2" /> - <composite n="1" ref="C" /> - </material> - <element Z="20" formula="Ca" name="Ca" > - <atom type="A" unit="g/mol" value="40.078" /> - </element> - <material formula="Ca" name="Calcium" state="solid" > - <RL type="X0" unit="cm" value="10.4151" /> - <NIL type="lambda" unit="cm" value="77.3754" /> - <D type="density" unit="g/cm3" value="1.55" /> - <composite n="1" ref="Ca" /> - </material> - <element Z="48" formula="Cd" name="Cd" > - <atom type="A" unit="g/mol" value="112.411" /> - </element> - <material formula="Cd" name="Cadmium" state="solid" > - <RL type="X0" unit="cm" value="1.03994" /> - <NIL type="lambda" unit="cm" value="19.46" /> - <D type="density" unit="g/cm3" value="8.65" /> - <composite n="1" ref="Cd" /> - </material> - <element Z="58" formula="Ce" name="Ce" > - <atom type="A" unit="g/mol" value="140.115" /> - </element> - <material formula="Ce" name="Cerium" state="solid" > - <RL type="X0" unit="cm" value="1.19506" /> - <NIL type="lambda" unit="cm" value="27.3227" /> - <D type="density" unit="g/cm3" value="6.657" /> - <composite n="1" ref="Ce" /> - </material> - <element Z="98" formula="Cf" name="Cf" > - <atom type="A" unit="g/mol" value="251.08" /> - </element> - <material formula="Cf" name="Californium" state="solid" > - <RL type="X0" unit="cm" value="0.568328" /> - <NIL type="lambda" unit="cm" value="22.085" /> - <D type="density" unit="g/cm3" value="10" /> - <composite n="1" ref="Cf" /> - </material> - <element Z="17" formula="Cl" name="Cl" > - <atom type="A" unit="g/mol" value="35.4526" /> - </element> - <material formula="Cl" name="Chlorine" state="gas" > - <RL type="X0" unit="cm" value="6437.34" /> - <NIL type="lambda" unit="cm" value="38723.9" /> - <D type="density" unit="g/cm3" value="0.00299473" /> - <composite n="1" ref="Cl" /> - </material> - <element Z="96" formula="Cm" name="Cm" > - <atom type="A" unit="g/mol" value="247.07" /> - </element> - <material formula="Cm" name="Curium" state="solid" > - <RL type="X0" unit="cm" value="0.428706" /> - <NIL type="lambda" unit="cm" value="16.2593" /> - <D type="density" unit="g/cm3" value="13.51" /> - <composite n="1" ref="Cm" /> - </material> - <element Z="27" formula="Co" name="Co" > - <atom type="A" unit="g/mol" value="58.9332" /> - </element> - <material formula="Co" name="Cobalt" state="solid" > - <RL type="X0" unit="cm" value="1.53005" /> - <NIL type="lambda" unit="cm" value="15.2922" /> - <D type="density" unit="g/cm3" value="8.9" /> - <composite n="1" ref="Co" /> - </material> - <element Z="24" formula="Cr" name="Cr" > - <atom type="A" unit="g/mol" value="51.9961" /> - </element> - <material formula="Cr" name="Chromium" state="solid" > - <RL type="X0" unit="cm" value="2.0814" /> - <NIL type="lambda" unit="cm" value="18.1933" /> - <D type="density" unit="g/cm3" value="7.18" /> - <composite n="1" ref="Cr" /> - </material> - <element Z="55" formula="Cs" name="Cs" > - <atom type="A" unit="g/mol" value="132.905" /> - </element> - <material formula="Cs" name="Cesium" state="solid" > - <RL type="X0" unit="cm" value="4.4342" /> - <NIL type="lambda" unit="cm" value="95.317" /> - <D type="density" unit="g/cm3" value="1.873" /> - <composite n="1" ref="Cs" /> - </material> - <element Z="29" formula="Cu" name="Cu" > - <atom type="A" unit="g/mol" value="63.5456" /> - </element> - <material formula="Cu" name="Copper" state="solid" > - <RL type="X0" unit="cm" value="1.43558" /> - <NIL type="lambda" unit="cm" value="15.5141" /> - <D type="density" unit="g/cm3" value="8.96" /> - <composite n="1" ref="Cu" /> - </material> - <element Z="66" formula="Dy" name="Dy" > - <atom type="A" unit="g/mol" value="162.497" /> - </element> - <material formula="Dy" name="Dysprosium" state="solid" > - <RL type="X0" unit="cm" value="0.85614" /> - <NIL type="lambda" unit="cm" value="22.2923" /> - <D type="density" unit="g/cm3" value="8.55" /> - <composite n="1" ref="Dy" /> - </material> - <element Z="68" formula="Er" name="Er" > - <atom type="A" unit="g/mol" value="167.256" /> - </element> - <material formula="Er" name="Erbium" state="solid" > - <RL type="X0" unit="cm" value="0.788094" /> - <NIL type="lambda" unit="cm" value="21.2923" /> - <D type="density" unit="g/cm3" value="9.066" /> - <composite n="1" ref="Er" /> - </material> - <element Z="63" formula="Eu" name="Eu" > - <atom type="A" unit="g/mol" value="151.964" /> - </element> - <material formula="Eu" name="Europium" state="solid" > - <RL type="X0" unit="cm" value="1.41868" /> - <NIL type="lambda" unit="cm" value="35.6178" /> - <D type="density" unit="g/cm3" value="5.243" /> - <composite n="1" ref="Eu" /> - </material> - <element Z="9" formula="F" name="F" > - <atom type="A" unit="g/mol" value="18.9984" /> - </element> - <material formula="F" name="Fluorine" state="gas" > - <RL type="X0" unit="cm" value="20838.2" /> - <NIL type="lambda" unit="cm" value="59094.3" /> - <D type="density" unit="g/cm3" value="0.00158029" /> - <composite n="1" ref="F" /> - </material> - <element Z="26" formula="Fe" name="Fe" > - <atom type="A" unit="g/mol" value="55.8451" /> - </element> - <material formula="Fe" name="Iron" state="solid" > - <RL type="X0" unit="cm" value="1.75749" /> - <NIL type="lambda" unit="cm" value="16.959" /> - <D type="density" unit="g/cm3" value="7.874" /> - <composite n="1" ref="Fe" /> - </material> - <element Z="87" formula="Fr" name="Fr" > - <atom type="A" unit="g/mol" value="223.02" /> - </element> - <material formula="Fr" name="Francium" state="solid" > - <RL type="X0" unit="cm" value="6.18826" /> - <NIL type="lambda" unit="cm" value="212.263" /> - <D type="density" unit="g/cm3" value="1" /> - <composite n="1" ref="Fr" /> - </material> - <element Z="31" formula="Ga" name="Ga" > - <atom type="A" unit="g/mol" value="69.7231" /> - </element> - <material formula="Ga" name="Gallium" state="solid" > - <RL type="X0" unit="cm" value="2.1128" /> - <NIL type="lambda" unit="cm" value="24.3351" /> - <D type="density" unit="g/cm3" value="5.904" /> - <composite n="1" ref="Ga" /> - </material> - <element Z="64" formula="Gd" name="Gd" > - <atom type="A" unit="g/mol" value="157.252" /> - </element> - <material formula="Gd" name="Gadolinium" state="solid" > - <RL type="X0" unit="cm" value="0.947208" /> - <NIL type="lambda" unit="cm" value="23.9377" /> - <D type="density" unit="g/cm3" value="7.9004" /> - <composite n="1" ref="Gd" /> - </material> - <element Z="32" formula="Ge" name="Ge" > - <atom type="A" unit="g/mol" value="72.6128" /> - </element> - <material formula="Ge" name="Germanium" state="solid" > - <RL type="X0" unit="cm" value="2.3013" /> - <NIL type="lambda" unit="cm" value="27.3344" /> - <D type="density" unit="g/cm3" value="5.323" /> - <composite n="1" ref="Ge" /> - </material> - <element Z="1" formula="H" name="H" > - <atom type="A" unit="g/mol" value="1.00794" /> - </element> - <material formula="H" name="Hydrogen" state="gas" > - <RL type="X0" unit="cm" value="752776" /> - <NIL type="lambda" unit="cm" value="421239" /> - <D type="density" unit="g/cm3" value="8.3748e-05" /> - <composite n="1" ref="H" /> - </material> - <element Z="2" formula="He" name="He" > - <atom type="A" unit="g/mol" value="4.00264" /> - </element> - <material formula="He" name="Helium" state="gas" > - <RL type="X0" unit="cm" value="567113" /> - <NIL type="lambda" unit="cm" value="334266" /> - <D type="density" unit="g/cm3" value="0.000166322" /> - <composite n="1" ref="He" /> - </material> - <element Z="72" formula="Hf" name="Hf" > - <atom type="A" unit="g/mol" value="178.485" /> - </element> - <material formula="Hf" name="Hafnium" state="solid" > - <RL type="X0" unit="cm" value="0.517717" /> - <NIL type="lambda" unit="cm" value="14.7771" /> - <D type="density" unit="g/cm3" value="13.31" /> - <composite n="1" ref="Hf" /> - </material> - <element Z="80" formula="Hg" name="Hg" > - <atom type="A" unit="g/mol" value="200.599" /> - </element> - <material formula="Hg" name="Mercury" state="solid" > - <RL type="X0" unit="cm" value="0.475241" /> - <NIL type="lambda" unit="cm" value="15.105" /> - <D type="density" unit="g/cm3" value="13.546" /> - <composite n="1" ref="Hg" /> - </material> - <element Z="67" formula="Ho" name="Ho" > - <atom type="A" unit="g/mol" value="164.93" /> - </element> - <material formula="Ho" name="Holmium" state="solid" > - <RL type="X0" unit="cm" value="0.822447" /> - <NIL type="lambda" unit="cm" value="21.8177" /> - <D type="density" unit="g/cm3" value="8.795" /> - <composite n="1" ref="Ho" /> - </material> - <element Z="53" formula="I" name="I" > - <atom type="A" unit="g/mol" value="126.904" /> - </element> - <material formula="I" name="Iodine" state="solid" > - <RL type="X0" unit="cm" value="1.72016" /> - <NIL type="lambda" unit="cm" value="35.6583" /> - <D type="density" unit="g/cm3" value="4.93" /> - <composite n="1" ref="I" /> - </material> - <element Z="49" formula="In" name="In" > - <atom type="A" unit="g/mol" value="114.818" /> - </element> - <material formula="In" name="Indium" state="solid" > - <RL type="X0" unit="cm" value="1.21055" /> - <NIL type="lambda" unit="cm" value="23.2468" /> - <D type="density" unit="g/cm3" value="7.31" /> - <composite n="1" ref="In" /> - </material> - <element Z="77" formula="Ir" name="Ir" > - <atom type="A" unit="g/mol" value="192.216" /> - </element> - <material formula="Ir" name="Iridium" state="solid" > - <RL type="X0" unit="cm" value="0.294142" /> - <NIL type="lambda" unit="cm" value="9.01616" /> - <D type="density" unit="g/cm3" value="22.42" /> - <composite n="1" ref="Ir" /> - </material> - <element Z="19" formula="K" name="K" > - <atom type="A" unit="g/mol" value="39.0983" /> - </element> - <material formula="K" name="Potassium" state="solid" > - <RL type="X0" unit="cm" value="20.0871" /> - <NIL type="lambda" unit="cm" value="138.041" /> - <D type="density" unit="g/cm3" value="0.862" /> - <composite n="1" ref="K" /> - </material> - <element Z="36" formula="Kr" name="Kr" > - <atom type="A" unit="g/mol" value="83.7993" /> - </element> - <material formula="Kr" name="Krypton" state="gas" > - <RL type="X0" unit="cm" value="3269.44" /> - <NIL type="lambda" unit="cm" value="43962.9" /> - <D type="density" unit="g/cm3" value="0.00347832" /> - <composite n="1" ref="Kr" /> - </material> - <element Z="57" formula="La" name="La" > - <atom type="A" unit="g/mol" value="138.905" /> - </element> - <material formula="La" name="Lanthanum" state="solid" > - <RL type="X0" unit="cm" value="1.32238" /> - <NIL type="lambda" unit="cm" value="29.441" /> - <D type="density" unit="g/cm3" value="6.154" /> - <composite n="1" ref="La" /> - </material> - <element Z="3" formula="Li" name="Li" > - <atom type="A" unit="g/mol" value="6.94003" /> - </element> - <material formula="Li" name="Lithium" state="solid" > - <RL type="X0" unit="cm" value="154.997" /> - <NIL type="lambda" unit="cm" value="124.305" /> - <D type="density" unit="g/cm3" value="0.534" /> - <composite n="1" ref="Li" /> - </material> - <element Z="71" formula="Lu" name="Lu" > - <atom type="A" unit="g/mol" value="174.967" /> - </element> - <material formula="Lu" name="Lutetium" state="solid" > - <RL type="X0" unit="cm" value="0.703651" /> - <NIL type="lambda" unit="cm" value="19.8916" /> - <D type="density" unit="g/cm3" value="9.84" /> - <composite n="1" ref="Lu" /> - </material> - <element Z="12" formula="Mg" name="Mg" > - <atom type="A" unit="g/mol" value="24.305" /> - </element> - <material formula="Mg" name="Magnesium" state="solid" > - <RL type="X0" unit="cm" value="14.3859" /> - <NIL type="lambda" unit="cm" value="58.7589" /> - <D type="density" unit="g/cm3" value="1.74" /> - <composite n="1" ref="Mg" /> - </material> - <element Z="25" formula="Mn" name="Mn" > - <atom type="A" unit="g/mol" value="54.938" /> - </element> - <material formula="Mn" name="Manganese" state="solid" > - <RL type="X0" unit="cm" value="1.96772" /> - <NIL type="lambda" unit="cm" value="17.8701" /> - <D type="density" unit="g/cm3" value="7.44" /> - <composite n="1" ref="Mn" /> - </material> - <element Z="42" formula="Mo" name="Mo" > - <atom type="A" unit="g/mol" value="95.9313" /> - </element> - <material formula="Mo" name="Molybdenum" state="solid" > - <RL type="X0" unit="cm" value="0.959107" /> - <NIL type="lambda" unit="cm" value="15.6698" /> - <D type="density" unit="g/cm3" value="10.22" /> - <composite n="1" ref="Mo" /> - </material> - <element Z="7" formula="N" name="N" > - <atom type="A" unit="g/mol" value="14.0068" /> - </element> - <material formula="N" name="Nitrogen" state="gas" > - <RL type="X0" unit="cm" value="32602.2" /> - <NIL type="lambda" unit="cm" value="72430.3" /> - <D type="density" unit="g/cm3" value="0.0011652" /> - <composite n="1" ref="N" /> - </material> - <element Z="11" formula="Na" name="Na" > - <atom type="A" unit="g/mol" value="22.9898" /> - </element> - <material formula="Na" name="Sodium" state="solid" > - <RL type="X0" unit="cm" value="28.5646" /> - <NIL type="lambda" unit="cm" value="102.463" /> - <D type="density" unit="g/cm3" value="0.971" /> - <composite n="1" ref="Na" /> - </material> - <element Z="41" formula="Nb" name="Nb" > - <atom type="A" unit="g/mol" value="92.9064" /> - </element> - <material formula="Nb" name="Niobium" state="solid" > - <RL type="X0" unit="cm" value="1.15783" /> - <NIL type="lambda" unit="cm" value="18.4846" /> - <D type="density" unit="g/cm3" value="8.57" /> - <composite n="1" ref="Nb" /> - </material> - <element Z="60" formula="Nd" name="Nd" > - <atom type="A" unit="g/mol" value="144.236" /> - </element> - <material formula="Nd" name="Neodymium" state="solid" > - <RL type="X0" unit="cm" value="1.11667" /> - <NIL type="lambda" unit="cm" value="26.6308" /> - <D type="density" unit="g/cm3" value="6.9" /> - <composite n="1" ref="Nd" /> - </material> - <element Z="10" formula="Ne" name="Ne" > - <atom type="A" unit="g/mol" value="20.18" /> - </element> - <material formula="Ne" name="Neon" state="gas" > - <RL type="X0" unit="cm" value="34504.8" /> - <NIL type="lambda" unit="cm" value="114322" /> - <D type="density" unit="g/cm3" value="0.000838505" /> - <composite n="1" ref="Ne" /> - </material> - <element Z="28" formula="Ni" name="Ni" > - <atom type="A" unit="g/mol" value="58.6933" /> - </element> - <material formula="Ni" name="Nickel" state="solid" > - <RL type="X0" unit="cm" value="1.42422" /> - <NIL type="lambda" unit="cm" value="15.2265" /> - <D type="density" unit="g/cm3" value="8.902" /> - <composite n="1" ref="Ni" /> - </material> - <element Z="93" formula="Np" name="Np" > - <atom type="A" unit="g/mol" value="237.048" /> - </element> - <material formula="Np" name="Neptunium" state="solid" > - <RL type="X0" unit="cm" value="0.289676" /> - <NIL type="lambda" unit="cm" value="10.6983" /> - <D type="density" unit="g/cm3" value="20.25" /> - <composite n="1" ref="Np" /> - </material> - <element Z="8" formula="O" name="O" > - <atom type="A" unit="g/mol" value="15.9994" /> - </element> - <material formula="O" name="Oxygen" state="gas" > - <RL type="X0" unit="cm" value="25713.8" /> - <NIL type="lambda" unit="cm" value="66233.9" /> - <D type="density" unit="g/cm3" value="0.00133151" /> - <composite n="1" ref="O" /> - </material> - <element Z="76" formula="Os" name="Os" > - <atom type="A" unit="g/mol" value="190.225" /> - </element> - <material formula="Os" name="Osmium" state="solid" > - <RL type="X0" unit="cm" value="0.295861" /> - <NIL type="lambda" unit="cm" value="8.92553" /> - <D type="density" unit="g/cm3" value="22.57" /> - <composite n="1" ref="Os" /> - </material> - <element Z="15" formula="P" name="P" > - <atom type="A" unit="g/mol" value="30.9738" /> - </element> - <material formula="P" name="Phosphorus" state="solid" > - <RL type="X0" unit="cm" value="9.63879" /> - <NIL type="lambda" unit="cm" value="49.9343" /> - <D type="density" unit="g/cm3" value="2.2" /> - <composite n="1" ref="P" /> - </material> - <element Z="91" formula="Pa" name="Pa" > - <atom type="A" unit="g/mol" value="231.036" /> - </element> - <material formula="Pa" name="Protactinium" state="solid" > - <RL type="X0" unit="cm" value="0.38607" /> - <NIL type="lambda" unit="cm" value="13.9744" /> - <D type="density" unit="g/cm3" value="15.37" /> - <composite n="1" ref="Pa" /> - </material> - <element Z="82" formula="Pb" name="Pb" > - <atom type="A" unit="g/mol" value="207.217" /> - </element> - <material formula="Pb" name="Lead" state="solid" > - <RL type="X0" unit="cm" value="0.561253" /> - <NIL type="lambda" unit="cm" value="18.2607" /> - <D type="density" unit="g/cm3" value="11.35" /> - <composite n="1" ref="Pb" /> - </material> - <element Z="46" formula="Pd" name="Pd" > - <atom type="A" unit="g/mol" value="106.415" /> - </element> - <material formula="Pd" name="Palladium" state="solid" > - <RL type="X0" unit="cm" value="0.765717" /> - <NIL type="lambda" unit="cm" value="13.7482" /> - <D type="density" unit="g/cm3" value="12.02" /> - <composite n="1" ref="Pd" /> - </material> - <element Z="61" formula="Pm" name="Pm" > - <atom type="A" unit="g/mol" value="144.913" /> - </element> - <material formula="Pm" name="Promethium" state="solid" > - <RL type="X0" unit="cm" value="1.04085" /> - <NIL type="lambda" unit="cm" value="25.4523" /> - <D type="density" unit="g/cm3" value="7.22" /> - <composite n="1" ref="Pm" /> - </material> - <element Z="84" formula="Po" name="Po" > - <atom type="A" unit="g/mol" value="208.982" /> - </element> - <material formula="Po" name="Polonium" state="solid" > - <RL type="X0" unit="cm" value="0.661092" /> - <NIL type="lambda" unit="cm" value="22.2842" /> - <D type="density" unit="g/cm3" value="9.32" /> - <composite n="1" ref="Po" /> - </material> - <element Z="59" formula="Pr" name="Pr" > - <atom type="A" unit="g/mol" value="140.908" /> - </element> - <material formula="Pr" name="Praseodymium" state="solid" > - <RL type="X0" unit="cm" value="1.1562" /> - <NIL type="lambda" unit="cm" value="27.1312" /> - <D type="density" unit="g/cm3" value="6.71" /> - <composite n="1" ref="Pr" /> - </material> - <element Z="78" formula="Pt" name="Pt" > - <atom type="A" unit="g/mol" value="195.078" /> - </element> - <material formula="Pt" name="Platinum" state="solid" > - <RL type="X0" unit="cm" value="0.305053" /> - <NIL type="lambda" unit="cm" value="9.46584" /> - <D type="density" unit="g/cm3" value="21.45" /> - <composite n="1" ref="Pt" /> - </material> - <element Z="94" formula="Pu" name="Pu" > - <atom type="A" unit="g/mol" value="244.064" /> - </element> - <material formula="Pu" name="Plutonium" state="solid" > - <RL type="X0" unit="cm" value="0.298905" /> - <NIL type="lambda" unit="cm" value="11.0265" /> - <D type="density" unit="g/cm3" value="19.84" /> - <composite n="1" ref="Pu" /> - </material> - <element Z="88" formula="Ra" name="Ra" > - <atom type="A" unit="g/mol" value="226.025" /> - </element> - <material formula="Ra" name="Radium" state="solid" > - <RL type="X0" unit="cm" value="1.22987" /> - <NIL type="lambda" unit="cm" value="42.6431" /> - <D type="density" unit="g/cm3" value="5" /> - <composite n="1" ref="Ra" /> - </material> - <element Z="37" formula="Rb" name="Rb" > - <atom type="A" unit="g/mol" value="85.4677" /> - </element> - <material formula="Rb" name="Rubidium" state="solid" > - <RL type="X0" unit="cm" value="7.19774" /> - <NIL type="lambda" unit="cm" value="100.218" /> - <D type="density" unit="g/cm3" value="1.532" /> - <composite n="1" ref="Rb" /> - </material> - <element Z="75" formula="Re" name="Re" > - <atom type="A" unit="g/mol" value="186.207" /> - </element> - <material formula="Re" name="Rhenium" state="solid" > - <RL type="X0" unit="cm" value="0.318283" /> - <NIL type="lambda" unit="cm" value="9.5153" /> - <D type="density" unit="g/cm3" value="21.02" /> - <composite n="1" ref="Re" /> - </material> - <element Z="45" formula="Rh" name="Rh" > - <atom type="A" unit="g/mol" value="102.906" /> - </element> - <material formula="Rh" name="Rhodium" state="solid" > - <RL type="X0" unit="cm" value="0.746619" /> - <NIL type="lambda" unit="cm" value="13.2083" /> - <D type="density" unit="g/cm3" value="12.41" /> - <composite n="1" ref="Rh" /> - </material> - <element Z="86" formula="Rn" name="Rn" > - <atom type="A" unit="g/mol" value="222.018" /> - </element> - <material formula="Rn" name="Radon" state="gas" > - <RL type="X0" unit="cm" value="697.777" /> - <NIL type="lambda" unit="cm" value="23532" /> - <D type="density" unit="g/cm3" value="0.00900662" /> - <composite n="1" ref="Rn" /> - </material> - <element Z="44" formula="Ru" name="Ru" > - <atom type="A" unit="g/mol" value="101.065" /> - </element> - <material formula="Ru" name="Ruthenium" state="solid" > - <RL type="X0" unit="cm" value="0.764067" /> - <NIL type="lambda" unit="cm" value="13.1426" /> - <D type="density" unit="g/cm3" value="12.41" /> - <composite n="1" ref="Ru" /> - </material> - <element Z="16" formula="S" name="S" > - <atom type="A" unit="g/mol" value="32.0661" /> - </element> - <material formula="S" name="Sulfur" state="solid" > - <RL type="X0" unit="cm" value="9.74829" /> - <NIL type="lambda" unit="cm" value="55.6738" /> - <D type="density" unit="g/cm3" value="2" /> - <composite n="1" ref="S" /> - </material> - <element Z="51" formula="Sb" name="Sb" > - <atom type="A" unit="g/mol" value="121.76" /> - </element> - <material formula="Sb" name="Antimony" state="solid" > - <RL type="X0" unit="cm" value="1.30401" /> - <NIL type="lambda" unit="cm" value="25.8925" /> - <D type="density" unit="g/cm3" value="6.691" /> - <composite n="1" ref="Sb" /> - </material> - <element Z="21" formula="Sc" name="Sc" > - <atom type="A" unit="g/mol" value="44.9559" /> - </element> - <material formula="Sc" name="Scandium" state="solid" > - <RL type="X0" unit="cm" value="5.53545" /> - <NIL type="lambda" unit="cm" value="41.609" /> - <D type="density" unit="g/cm3" value="2.989" /> - <composite n="1" ref="Sc" /> - </material> - <element Z="34" formula="Se" name="Se" > - <atom type="A" unit="g/mol" value="78.9594" /> - </element> - <material formula="Se" name="Selenium" state="solid" > - <RL type="X0" unit="cm" value="2.64625" /> - <NIL type="lambda" unit="cm" value="33.356" /> - <D type="density" unit="g/cm3" value="4.5" /> - <composite n="1" ref="Se" /> - </material> - <element Z="14" formula="Si" name="Si" > - <atom type="A" unit="g/mol" value="28.0854" /> - </element> - <material formula="Si" name="Silicon" state="solid" > - <RL type="X0" unit="cm" value="9.36607" /> - <NIL type="lambda" unit="cm" value="45.7531" /> - <D type="density" unit="g/cm3" value="2.33" /> - <composite n="1" ref="Si" /> - </material> - <element Z="62" formula="Sm" name="Sm" > - <atom type="A" unit="g/mol" value="150.366" /> - </element> - <material formula="Sm" name="Samarium" state="solid" > - <RL type="X0" unit="cm" value="1.01524" /> - <NIL type="lambda" unit="cm" value="24.9892" /> - <D type="density" unit="g/cm3" value="7.46" /> - <composite n="1" ref="Sm" /> - </material> - <element Z="50" formula="Sn" name="Sn" > - <atom type="A" unit="g/mol" value="118.71" /> - </element> - <material formula="Sn" name="Tin" state="solid" > - <RL type="X0" unit="cm" value="1.20637" /> - <NIL type="lambda" unit="cm" value="23.4931" /> - <D type="density" unit="g/cm3" value="7.31" /> - <composite n="1" ref="Sn" /> - </material> - <element Z="38" formula="Sr" name="Sr" > - <atom type="A" unit="g/mol" value="87.6166" /> - </element> - <material formula="Sr" name="Strontium" state="solid" > - <RL type="X0" unit="cm" value="4.237" /> - <NIL type="lambda" unit="cm" value="61.0238" /> - <D type="density" unit="g/cm3" value="2.54" /> - <composite n="1" ref="Sr" /> - </material> - <element Z="73" formula="Ta" name="Ta" > - <atom type="A" unit="g/mol" value="180.948" /> - </element> - <material formula="Ta" name="Tantalum" state="solid" > - <RL type="X0" unit="cm" value="0.409392" /> - <NIL type="lambda" unit="cm" value="11.8846" /> - <D type="density" unit="g/cm3" value="16.654" /> - <composite n="1" ref="Ta" /> - </material> - <element Z="65" formula="Tb" name="Tb" > - <atom type="A" unit="g/mol" value="158.925" /> - </element> - <material formula="Tb" name="Terbium" state="solid" > - <RL type="X0" unit="cm" value="0.893977" /> - <NIL type="lambda" unit="cm" value="23.0311" /> - <D type="density" unit="g/cm3" value="8.229" /> - <composite n="1" ref="Tb" /> - </material> - <element Z="43" formula="Tc" name="Tc" > - <atom type="A" unit="g/mol" value="97.9072" /> - </element> - <material formula="Tc" name="Technetium" state="solid" > - <RL type="X0" unit="cm" value="0.833149" /> - <NIL type="lambda" unit="cm" value="14.0185" /> - <D type="density" unit="g/cm3" value="11.5" /> - <composite n="1" ref="Tc" /> - </material> - <element Z="52" formula="Te" name="Te" > - <atom type="A" unit="g/mol" value="127.603" /> - </element> - <material formula="Te" name="Tellurium" state="solid" > - <RL type="X0" unit="cm" value="1.41457" /> - <NIL type="lambda" unit="cm" value="28.1797" /> - <D type="density" unit="g/cm3" value="6.24" /> - <composite n="1" ref="Te" /> - </material> - <element Z="90" formula="Th" name="Th" > - <atom type="A" unit="g/mol" value="232.038" /> - </element> - <material formula="Th" name="Thorium" state="solid" > - <RL type="X0" unit="cm" value="0.51823" /> - <NIL type="lambda" unit="cm" value="18.353" /> - <D type="density" unit="g/cm3" value="11.72" /> - <composite n="1" ref="Th" /> - </material> - <element Z="22" formula="Ti" name="Ti" > - <atom type="A" unit="g/mol" value="47.8667" /> - </element> - <material formula="Ti" name="Titanium" state="solid" > - <RL type="X0" unit="cm" value="3.5602" /> - <NIL type="lambda" unit="cm" value="27.9395" /> - <D type="density" unit="g/cm3" value="4.54" /> - <composite n="1" ref="Ti" /> - </material> - <element Z="81" formula="Tl" name="Tl" > - <atom type="A" unit="g/mol" value="204.383" /> - </element> - <material formula="Tl" name="Thallium" state="solid" > - <RL type="X0" unit="cm" value="0.547665" /> - <NIL type="lambda" unit="cm" value="17.6129" /> - <D type="density" unit="g/cm3" value="11.72" /> - <composite n="1" ref="Tl" /> - </material> - <element Z="69" formula="Tm" name="Tm" > - <atom type="A" unit="g/mol" value="168.934" /> - </element> - <material formula="Tm" name="Thulium" state="solid" > - <RL type="X0" unit="cm" value="0.754428" /> - <NIL type="lambda" unit="cm" value="20.7522" /> - <D type="density" unit="g/cm3" value="9.321" /> - <composite n="1" ref="Tm" /> - </material> - <element Z="92" formula="U" name="U" > - <atom type="A" unit="g/mol" value="238.029" /> - </element> - <material formula="U" name="Uranium" state="solid" > - <RL type="X0" unit="cm" value="0.31663" /> - <NIL type="lambda" unit="cm" value="11.4473" /> - <D type="density" unit="g/cm3" value="18.95" /> - <composite n="1" ref="U" /> - </material> - <element Z="23" formula="V" name="V" > - <atom type="A" unit="g/mol" value="50.9415" /> - </element> - <material formula="V" name="Vanadium" state="solid" > - <RL type="X0" unit="cm" value="2.59285" /> - <NIL type="lambda" unit="cm" value="21.2187" /> - <D type="density" unit="g/cm3" value="6.11" /> - <composite n="1" ref="V" /> - </material> - <element Z="74" formula="W" name="W" > - <atom type="A" unit="g/mol" value="183.842" /> - </element> - <material formula="W" name="Tungsten" state="solid" > - <RL type="X0" unit="cm" value="0.350418" /> - <NIL type="lambda" unit="cm" value="10.3057" /> - <D type="density" unit="g/cm3" value="19.3" /> - <composite n="1" ref="W" /> - </material> - <element Z="54" formula="Xe" name="Xe" > - <atom type="A" unit="g/mol" value="131.292" /> - </element> - <material formula="Xe" name="Xenon" state="gas" > - <RL type="X0" unit="cm" value="1546.2" /> - <NIL type="lambda" unit="cm" value="32477.9" /> - <D type="density" unit="g/cm3" value="0.00548536" /> - <composite n="1" ref="Xe" /> - </material> - <element Z="39" formula="Y" name="Y" > - <atom type="A" unit="g/mol" value="88.9058" /> - </element> - <material formula="Y" name="Yttrium" state="solid" > - <RL type="X0" unit="cm" value="2.32943" /> - <NIL type="lambda" unit="cm" value="34.9297" /> - <D type="density" unit="g/cm3" value="4.469" /> - <composite n="1" ref="Y" /> - </material> - <element Z="70" formula="Yb" name="Yb" > - <atom type="A" unit="g/mol" value="173.038" /> - </element> - <material formula="Yb" name="Ytterbium" state="solid" > - <RL type="X0" unit="cm" value="1.04332" /> - <NIL type="lambda" unit="cm" value="28.9843" /> - <D type="density" unit="g/cm3" value="6.73" /> - <composite n="1" ref="Yb" /> - </material> - <element Z="30" formula="Zn" name="Zn" > - <atom type="A" unit="g/mol" value="65.3955" /> - </element> - <material formula="Zn" name="Zinc" state="solid" > - <RL type="X0" unit="cm" value="1.74286" /> - <NIL type="lambda" unit="cm" value="19.8488" /> - <D type="density" unit="g/cm3" value="7.133" /> - <composite n="1" ref="Zn" /> - </material> - <element Z="40" formula="Zr" name="Zr" > - <atom type="A" unit="g/mol" value="91.2236" /> - </element> - <material formula="Zr" name="Zirconium" state="solid" > - <RL type="X0" unit="cm" value="1.56707" /> - <NIL type="lambda" unit="cm" value="24.2568" /> - <D type="density" unit="g/cm3" value="6.506" /> - <composite n="1" ref="Zr" /> - </material> -</materials> \ No newline at end of file diff --git a/examples/ILDExDet/compact/geant4.xml b/examples/ILDExDet/compact/geant4.xml deleted file mode 100644 index dd3f7a2140382512a8192ae447feb3b54e129a93..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/compact/geant4.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<geant4> - <sensitive_detectors> - <sd name="VXD" - type="Tracker" - ecut="1.0*keV" - verbose="true" - hit_aggregation="position"> - </sd> - <sd name="SIT" - type="Tracker" - ecut="1.0*keV" - verbose="true" - hit_aggregation="position"> - </sd> - <sd name="TPC" - type="Tracker" - ecut="0.01*keV" - verbose="true" - hit_aggregation="position"> - </sd> - <sd name="HcalBarrel" - type="Calorimeter" - ecut="0.5*keV" - verbose="true" - hit_aggregation="position"> - </sd> - <sd name="HcalEndcap" - type="Calorimeter" - ecut="0.5*keV" - verbose="true" - hit_aggregation="position"> - </sd> - - </sensitive_detectors> - - <properties> - <attributes name="geant4_field" - id="0" - type="Geant4FieldSetup" - object="GlobalSolenoid" - global="true" - min_chord_step="0.01*mm" - delta_chord="0.25*mm" - delta_intersection="1e-05*mm" - delta_one_step="0.001*mm" - eps_min="5e-05*mm" - eps_max="0.001*mm" - stepper="HelixSimpleRunge" - equation="Mag_UsualEqRhs"> - </attributes> - </properties> - -</geant4> diff --git a/examples/ILDExDet/compact/materials.xml b/examples/ILDExDet/compact/materials.xml deleted file mode 100644 index 59499dc2f266a06d7eafb2d6c58b79ed0bca5747..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/compact/materials.xml +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<materials> - - <!-- - Air by weight from - - http://www.engineeringtoolbox.com/air-composition-24_212.html - --> - <material name="FR4"> - <D type="density" unit="g/cm3" value="1.7"/> - <fraction n="0.1808" ref="Si"/> - <fraction n="0.4056" ref="O"/> - <fraction n="0.2780" ref="C"/> - <fraction n="0.0684" ref="H"/> - <fraction n="0.0671" ref="Br"/> - </material> - - <material name="Air"> - <D type="density" unit="g/cm3" value="0.0012"/> - <fraction n="0.754" ref="N"/> - <fraction n="0.234" ref="O"/> - <fraction n="0.012" ref="Ar"/> - </material> - - <material name="Vacuum"> - <D type="density" unit="g/cm3" value="0.00000001" /> - <fraction n="1" ref="H" /> - </material> - - <material name="Epoxy"> - <D type="density" value="1.3" unit="g/cm3"/> - <composite n="44" ref="H"/> - <composite n="15" ref="C"/> - <composite n="7" ref="O"/> - </material> - - <material name="Quartz"> - <D type="density" value="2.2" unit="g/cm3"/> - <composite n="1" ref="Si"/> - <composite n="2" ref="O"/> - </material> - - <material name="G10"> - <D type="density" value="1.7" unit="g/cm3"/> - <fraction n="0.08" ref="Cl"/> - <fraction n="0.773" ref="Quartz"/> - <fraction n="0.147" ref="Epoxy"/> - </material> - - <material name="Polystyrene"> - <D value="1.032" unit="g/cm3"/> - <fraction n="0.077418" ref="H"/> - <fraction n="0.922582" ref="C"/> - </material> - - <!-- FIXME: definition with composites results - in invalid material properties: -Polystyrene Z: 135 A: 249.37 densitiy: 1.032 radiationLength: 1.19602 interactionLength: 1.1644 - - the above results in: -Polystyrene Z: 5.61291 A: 11.1589 densitiy: 1.032 radiationLength: 42.0422 interactionLength: 70.7405 - - --> - <material name="Polystyrene_BAD"> - <D value="1.032" unit="g/cm3"/> - <composite n="19" ref="C"/> - <composite n="21" ref="H"/> - </material> - - <material name="Steel235"> - <D value="7.85" unit="g/cm3"/> - <fraction n="0.998" ref="Fe"/> - <fraction n=".002" ref="C"/> - </material> - - <material name="SiliconOxide"> - <D type="density" value="2.65" unit="g/cm3"/> - <composite n="1" ref="Si"/> - <composite n="2" ref="O"/> - </material> - - <material name="BoronOxide"> - <D type="density" value="2.46" unit="g/cm3"/> - <composite n="2" ref="B"/> - <composite n="3" ref="O"/> - </material> - - <material name="SodiumOxide"> - <D type="density" value="2.65" unit="g/cm3"/> - <composite n="2" ref="Na"/> - <composite n="1" ref="O"/> - </material> - - <material name="AluminumOxide"> - <D type="density" value="3.89" unit="g/cm3"/> - <composite n="2" ref="Al"/> - <composite n="3" ref="O"/> - </material> - - <material name="PyrexGlass"> - <D type="density" value="2.23" unit="g/cm3"/> - <fraction n="0.806" ref="SiliconOxide"/> - <fraction n="0.130" ref="BoronOxide"/> - <fraction n="0.040" ref="SodiumOxide"/> - <fraction n="0.023" ref="AluminumOxide"/> - </material> - - <material name="CarbonFiber"> - <D type="density" value="1.5" unit="g/cm3"/> - <fraction n="0.65" ref="C"/> - <fraction n="0.35" ref="Epoxy"/> - </material> - - <material name="CarbonFiber_50D"> - <D type="density" value="0.75" unit="g/cm3"/> - <fraction n="0.65" ref="C"/> - <fraction n="0.35" ref="Epoxy"/> - </material> - - <material name="Rohacell31"> - <D type="density" value="0.032" unit="g/cm3"/> - <composite n="9" ref="C"/> - <composite n="13" ref="H"/> - <composite n="2" ref="O"/> - <composite n="1" ref="N"/> - </material> - - <material name="Rohacell31_50D"> - <D type="density" value="0.016" unit="g/cm3"/> - <composite n="9" ref="C"/> - <composite n="13" ref="H"/> - <composite n="2" ref="O"/> - <composite n="1" ref="N"/> - </material> - - <material name="RPCGasDefault" state="gas"> - <D type="density" value="0.0037" unit="g/cm3"/> - <composite n="209" ref="C"/> - <composite n="239" ref="H"/> - <composite n="381" ref="F"/> - </material> - - <material name="PolystyreneFoam"> - <D type="density" value="0.0056" unit="g/cm3"/> - <fraction n="1.0" ref="Polystyrene"/> - </material> - - <material name="Kapton"> - <D value="1.43" unit="g/cm3" /> - <composite n="22" ref="C"/> - <composite n="10" ref="H" /> - <composite n="2" ref="N" /> - <composite n="5" ref="O" /> - </material> - - <material name="PEEK"> - <D value="1.37" unit="g/cm3" /> - <composite n="19" ref="C"/> - <composite n="12" ref="H" /> - <composite n="3" ref="O" /> - </material> - -</materials> diff --git a/examples/ILDExDet/include/TPCData.h b/examples/ILDExDet/include/TPCData.h deleted file mode 100644 index 8cdad52a810d6e12996df498c2741b44054ba07b..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/include/TPCData.h +++ /dev/null @@ -1,27 +0,0 @@ -// $Id: TPCData.h 513 2013-04-05 14:31:53Z gaede $ -//==================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------- -// -// Author : M.Frank -// -//==================================================================== - -#include "DD4hep/Detector.h" -#include <vector> - -namespace DD4hep { - - - struct TPCData : public Geometry::DetElement::Object { - typedef Geometry::Ref_t Ref_t; - Ref_t outerWall; - Ref_t innerWall; - Ref_t gasVolume; - Ref_t cathode; - //positive endplate - Ref_t endplate; - //negative endplate - Ref_t endplate2; - }; -} diff --git a/examples/ILDExDet/include/VXDData.h b/examples/ILDExDet/include/VXDData.h deleted file mode 100644 index af37f348ba9dbc37a1647fc53ebeea98048576fe..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/include/VXDData.h +++ /dev/null @@ -1,44 +0,0 @@ -// $Id: VXDData.h 513 2013-04-05 14:31:53Z gaede $ -//==================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------- -// -// Author : M.Frank -// -//==================================================================== - -#include "DD4hep/Detector.h" - -//fixme: VXDData should not depend on this internal header -#include "DD4hep/objects/DetectorInterna.h" - -#include <vector> - -namespace DD4hep { - - /**@class VXDData - * - * @author M.Frank - * @version 1.0 - */ - struct VXDData : public Geometry::DetElement::Object { - /// Helper class for layer properties - struct Layer { - double internalPhi0 ; - double Distance ; - double Offset ; - double Thickness ; - double Length ; - double Width ; - double RadLength ; - int NLadders ; - }; - typedef std::vector<Layer> LayerVec ; - typedef Geometry::Ref_t Ref_t; - - // Ladder - LayerVec _lVec; - // Sensitive - LayerVec _sVec; - }; -} diff --git a/examples/ILDExDet/src/AhcalBarrelCalorimeter_geo.cpp b/examples/ILDExDet/src/AhcalBarrelCalorimeter_geo.cpp deleted file mode 100644 index aae994e21c81c8d96c16abe77d34c79f22323afd..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/AhcalBarrelCalorimeter_geo.cpp +++ /dev/null @@ -1,252 +0,0 @@ -//==================================================================== -// AIDA Detector description implementation -// for LDC AHCAL Barrel -//-------------------------------------------------------------------- -// -// Author : S.Lu -// -// Basic idea: -// 1. Create the Hcal Barrel module envelope by two shapers. -// Note: with default material Steel235. -// -// 2. Create the Hcal Barrel Chamber(i.e. Layer) -// Create the Layer with slices (Polystyrene,Cu,FR4,air). -// Note: there is NO radiator (Steel235) in Layer/Chamber. -// -// 3. Place the Layer into the Hcal Barrel envelope, -// with the right position and rotation. -// And registry the IDs for slice,layer,stave,module and system. -// -// 4. Customer material FR4 and Steel235 defined in materials.xml -// -//==================================================================== -#include "DD4hep/DetFactoryHelper.h" -#include "XML/Layering.h" - -using namespace std; -using namespace DD4hep; -using namespace DD4hep::Geometry; - -static Ref_t create_detector(LCDD& lcdd, xml_h element, SensitiveDetector sens) { - xml_det_t x_det = element; - Layering layering(x_det); - xml_dim_t dim = x_det.dimensions(); - string det_name = x_det.nameStr(); - string det_type = x_det.typeStr(); - Material air = lcdd.air(); - Material Steel235 = lcdd.material(x_det.materialStr()); - double gap = xml_dim_t(x_det).gap(); - int numSides = dim.numsides(); - - // Hcal Barrel module shapers' parameters - double detZ = dim.z(); - double Hcal_inner_radius = dim.rmin(); - - // The way to reaad constant from XML/LCDD file. - double Hcal_outer_radius = lcdd.constant<double>("Hcal_outer_radius"); // 3395.46 mm - double Hcal_radiator_thickness = lcdd.constant<double>("Hcal_radiator_thickness"); // 20.0mm - double Hcal_chamber_thickness = lcdd.constant<double>("Hcal_chamber_thickness"); // 6.5mm - int HcalBarrel_layers = lcdd.constant<int>("HcalBarrel_layers"); // 48 - // ======== Note============================================================ - // In the XML/LCDD file, make sure the above constant parameters - // are agree with the layering/slices in the detector AhcalBarrelCalorimeter. - // ========================================================================== - - - double Hcal_lateral_structure_thickness = lcdd.constant<double>("Hcal_lateral_structure_thickness"); - double Hcal_layer_air_gap = lcdd.constant<double>("Hcal_layer_air_gap"); - double Hcal_back_plate_thickness = lcdd.constant<double>("Hcal_back_plate_thickness"); - - double totalThickness_Hcal_Barrel = (Hcal_radiator_thickness + Hcal_chamber_thickness) - * HcalBarrel_layers + Hcal_back_plate_thickness; - double Hcal_module_radius = Hcal_inner_radius + totalThickness_Hcal_Barrel; - - double Hcal_Barrel_rotation = lcdd.constant<double>("Hcal_Barrel_rotation"); - - DetElement sdet(det_name,x_det.id()); - Volume motherVol = lcdd.pickMotherVolume(sdet); - - - // ========= Create Hcal Barrel envelope ==================================== - // It will be the volume for palcing the Hcal Barrel Chamber(i.e. Layers). - // Itself will be placed into the world volume. - // ========================================================================== - - // Hcal Barrel module shapers - PolyhedraRegular polyhedra_shaper(numSides,Hcal_inner_radius,Hcal_module_radius,detZ*2.); - Tube tube_shaper(0.,Hcal_outer_radius, detZ ); - - // keep the envelope rotation as the same as the stave - // the stave number can be changed in the compact XML. - RotationZYX rot(M_PI/2. - M_PI/numSides,0,0); - - // Create Hcal Barrel volume with material Steel235 - IntersectionSolid barrelModuleSolid(tube_shaper,polyhedra_shaper,rot); - - Volume envelopeVol(det_name+"_envelope",barrelModuleSolid,Steel235); - - // Set envelope volume attributes. - envelopeVol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); - - - // ========= Create Hcal Barrel Chmaber (i.e. Layers) ======================= - // It will be the sub volume for placing the slices. - // Itself will be placed into the Hcal Barrel envelope. - // ========================================================================== - - // create Layer (air) and place the slices (Polystyrene,Cu,FR4,air) into it. - // place the Layer into the HcalBarrel envelope (Steel235). - double innerAngle = 2.*M_PI/numSides; - double halfInnerAngle = innerAngle/2.; - double tan_inner = std::tan(halfInnerAngle) * 2.; - double cos_inner = std::cos(halfInnerAngle); - - double innerFaceLen = (Hcal_inner_radius + Hcal_radiator_thickness) * tan_inner; - - double layerOuterAngle = (M_PI-innerAngle)/2.; - double layerInnerAngle = (M_PI/2. - layerOuterAngle); - - // First Hcal Barrel Chamber position, start after first radiator - double layer_pos_x = Hcal_inner_radius + Hcal_radiator_thickness; - double layer_dim_y = innerFaceLen/2. - gap/2.; - - // Create Hcal Barrel Chamber without radiator - // Place into the Hcal Barrel envelope, after each radiator - int layer_num = 0; - for(xml_coll_t c(x_det,_U(layer)); c; ++c) { - xml_comp_t x_layer = c; - int repeat = x_layer.repeat(); // Get number of layers. - const Layer* lay = layering.layer(layer_num); // Get the layer from the layering engine. - // Loop over repeats for this layer. - for (int j = 0; j < repeat; j++) { - string layer_name = det_name+_toString(layer_num,"_layer%d"); - double layer_thickness = lay->thickness(); - DetElement layer(layer_name,_toString(layer_num,"layer%d"),x_det.id()); - - // Layer position in Z within the stave. - layer_pos_x += layer_thickness/2.; - // Active Layer box & volume - double active_layer_dim_x = layer_thickness/2.; - double active_layer_dim_y = layer_dim_y; - double active_layer_dim_z = (detZ-Hcal_lateral_structure_thickness)/2.; - - // The same Layer will be filled with skices, - // and placed into the HcalBarrel 16 times: 8 Staves * 2 modules: TODO 32 times. - Volume layer_vol(layer_name, Box(active_layer_dim_x,active_layer_dim_y,active_layer_dim_z), air); - - - // ========= Create sublayer slices ========================================= - // Create and place the slices into Layer - // ========================================================================== - - // Create the slices (sublayers) within the Hcal Barrel Chamber. - double slice_pos_x = -(layer_thickness/2.); - int slice_number = 0; - for(xml_coll_t k(x_layer,_U(slice)); k; ++k) { - xml_comp_t x_slice = k; - string slice_name = layer_name + _toString(slice_number,"_slice%d"); - double slice_thickness = x_slice.thickness(); - Material slice_material = lcdd.material(x_slice.materialStr()); - DetElement slice(layer,_toString(slice_number,"slice%d"),x_det.id()); - - slice_pos_x += slice_thickness/2.; - - // Slice volume & box - double slice_dim_y = active_layer_dim_y - Hcal_layer_air_gap ; - Volume slice_vol(slice_name,Box(slice_thickness/2.,slice_dim_y,active_layer_dim_z),slice_material); - - if ( x_slice.isSensitive() ) { - sens.setType("calorimeter"); - slice_vol.setSensitiveDetector(sens); - } - // Set region, limitset, and vis. - slice_vol.setAttributes(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr()); - // slice PlacedVolume - PlacedVolume slice_phv = layer_vol.placeVolume(slice_vol,Position(slice_pos_x,0.,0.)); - slice_phv.addPhysVolID("slice",slice_number); - - slice.setPlacement(slice_phv); - // Increment x position for next slice. - slice_pos_x += slice_thickness/2.; - // Increment slice number. - ++slice_number; - } - // Set region, limitset, and vis. - layer_vol.setAttributes(lcdd,x_layer.regionStr(),x_layer.limitsStr(),x_layer.visStr()); - - - // ========= Place the Layer (i.e. Chamber) ================================= - // Place the Layer into the Hcal Barrel envelope. - // with the right position and rotation. - // Registry the IDs (layer, stave, module). - // ========================================================================== - - // Acording to the number of staves and modules, - // Place the same Layer into the HcalBarrel envelope - // with the right position and rotation. - for(int stave_num = 0; stave_num < numSides; stave_num++){ - double ds = double(stave_num); - double delte_phi = M_PI/2. - innerAngle*ds; - string stave_layer = _toString(stave_num,"stave%d_layer"); - // Layer physical volume. - double layer_pos_z = active_layer_dim_z + Hcal_lateral_structure_thickness; - for(int module_num = 0; module_num < 2; module_num++) - { - layer_pos_z = (module_num==0)?layer_pos_z:-layer_pos_z; - PlacedVolume layer_phv = envelopeVol.placeVolume(layer_vol, - Transform3D(RotationZ(delte_phi), - Translation3D(layer_pos_x*std::cos(delte_phi), - layer_pos_x*std::sin(delte_phi), - layer_pos_z))); - - // registry the ID of Layer, stave and module - layer_phv.addPhysVolID("layer",layer_num); - layer_phv.addPhysVolID("stave",stave_num); - layer_phv.addPhysVolID("module",module_num); - // then setPlacement for it. - layer.setPlacement(layer_phv); - - } - } - - - // ===== Prepare for next layer (i.e. next Chamber) ========================= - // Prepare the chamber placement position and the chamber dimension - // ========================================================================== - - // Prepare for next Layer - // Increment the layer_pos_x, and calculate the next layer_dim_y - // Place Hcal Barrel Chamber after each radiator - layer_pos_x += layer_thickness/2.; - layer_pos_x += Hcal_radiator_thickness; - // Increment the layer X dimension. - if((layer_pos_x + layer_thickness ) < (Hcal_outer_radius - Hcal_back_plate_thickness)* cos_inner) - layer_dim_y += (layer_thickness + Hcal_radiator_thickness) * std::tan(layerInnerAngle); - else - layer_dim_y = std::sqrt((Hcal_outer_radius-Hcal_radiator_thickness) - *(Hcal_outer_radius-Hcal_radiator_thickness) - - layer_pos_x*layer_pos_x) - gap/2.; - // Increment the layer number. - ++layer_num; - } - } - - - // =========== Place Hcal Barrel envelope =================================== - // Finally place the Hcal Barrel envelope into the world volume. - // Registry the system ID. - // ========================================================================== - - // Place Hcal Barrel volume into the world volume - PlacedVolume env_phv = motherVol.placeVolume(envelopeVol,Transform3D( RotationZ(Hcal_Barrel_rotation) )); - - // registry the system id - env_phv.addPhysVolID("system", sdet.id()); - sdet.setPlacement(env_phv); - return sdet; -} - - - - -DECLARE_DETELEMENT(AhcalBarrelCalorimeter, create_detector); diff --git a/examples/ILDExDet/src/AhcalEndcapCalorimeter_geo.cpp b/examples/ILDExDet/src/AhcalEndcapCalorimeter_geo.cpp deleted file mode 100644 index d4afa38dd230a548775ce09dc1dbceea8c422bb4..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/AhcalEndcapCalorimeter_geo.cpp +++ /dev/null @@ -1,299 +0,0 @@ -//==================================================================== -// AIDA Detector description implementation -// for LDC AHCAL Endcap -//-------------------------------------------------------------------- -// -// Author : S.Lu -// -// Basic idea: -// 1. Create the Hcal Endcap module envelope (16 modules). -// Note: with default material Steel235. -// -// 2. Create the Hcal Endcap Chamber(i.e. Layer) for each module. -// Create the Layer with slices (Polystyrene,Cu,FR4,air). -// Place each slice into the chamber with the right position, -// And registry the IDs for slice -// -// 3. Place the same Layer into the endcap module envelope. -// It will be repeated repeat 48 times. -// And registry the IDs for layer, and endcapID. -// -// 4. Place the endcap module into the world volume, -// with the right position and rotation. -// And registry the IDs for stave,module and endcapID. -// -// 5. Customer material FR4 and Steel235 defined in materials.xml -// -//==================================================================== -#include "DD4hep/DetFactoryHelper.h" -#include "XML/Layering.h" - -using namespace std; -using namespace DD4hep; -using namespace DD4hep::Geometry; - -static Ref_t create_detector(LCDD& lcdd, xml_h element, SensitiveDetector sens) { - xml_det_t x_det = element; - Layering layering(x_det); - xml_dim_t dim = x_det.dimensions(); - string det_name = x_det.nameStr(); - string det_type = x_det.typeStr(); - - Assembly assembly(det_name+"_assembly"); - // Assembly assembly_fwd(det_name+"_assembly_fwd"); - // Assembly assembly_bwd(det_name+"_assembly_bwd"); - - Material air = lcdd.air(); - Material Steel235 = lcdd.material(x_det.materialStr()); - double gap = xml_dim_t(x_det).gap(); - // int numSides = dim.numsides(); - double detZ = dim.z(); // Hcal endcap modules z start - double Hcal_inner_radius = dim.rmin(); // Endcap cernter box hole half length: 362.0 - - // The way to reaad constant from XML/LCDD file. - //double Hcal_outer_radius = lcdd.constant<double>("Hcal_outer_radius"); // 3395.46 mm - double Hcal_radiator_thickness = lcdd.constant<double>("Hcal_radiator_thickness"); // 20.0mm - //double Hcal_chamber_thickness = lcdd.constant<double>("Hcal_chamber_thickness"); // 6.5mm - //int Hcal_endcap_layers = lcdd.constant<int>("Hcal_endcap_layers"); // 48 - // ======== Note============================================================ - // In the XML/LCDD file, make sure the above constant parameters - // are agree with the layering/slices in the detector Ahcal. - // ========================================================================== - - - double Hcal_lateral_structure_thickness = lcdd.constant<double>("Hcal_lateral_structure_thickness"); - double Hcal_layer_air_gap = lcdd.constant<double>("Hcal_layer_air_gap"); - double Hcal_endcap_zmin = lcdd.constant<double>("Hcal_endcap_zmin"); - //double Hcal_back_plate_thickness = lcdd.constant<double>("Hcal_back_plate_thickness"); - - // ========= Create Hcal Endcap Modules envelope ============================ - // Read the Endcap Modules dimensions, - // Which defined in the compact XML files. - // ========================================================================== - double dim_x[16]; - double dim_y[16]; - double dim_z[16]; - double pos_x[16]; - double pos_y[16]; - double pos_z[16]; - - int endcapID =0; - for(xml_coll_t c(x_det.child(_U(dimensions)),_U(dimensions)); c; ++c) { - - xml_comp_t l(c); - - dim_x[endcapID] = l.attr<double>(_Unicode(dim_x)); - dim_y[endcapID] = l.attr<double>(_Unicode(dim_y)); - dim_z[endcapID] = l.attr<double>(_Unicode(dim_z)); - pos_y[endcapID] = l.attr<double>(_Unicode(y_offset)); - //std::cout<<" dim_z["<<endcapID<<"]: "<< dim_z[endcapID]/2.0<<std::endl; - endcapID++; - } - - - DetElement sdet(det_name,x_det.id()); - - // ========= Create Hcal Endcap Modules envelope ============================ - // They will be the volume for palcing the Hcal Chamber(i.e. Layers). - // Themself will be placed into the world volume. - // ========================================================================== - - // build 16 Endcap Modules - for(int ecID=0; ecID<endcapID; ecID++) - { - // Hcal Endcap module shape - double box_half_x= dim_x[ecID]/2.0; // module width, all are same - double box_half_y= dim_y[ecID]/2.0; // total thickness, all are same - double box_half_z= dim_z[ecID]/2.0; // module length, changed, - - double x_offset = box_half_x*endcapID-box_half_x*ecID*2.0-box_half_x; - double y_offset = pos_y[ecID]; - - Box EndcapModule(box_half_x,box_half_y,box_half_z); - - // define the name of each endcap Module - string envelopeVol_name = det_name+_toString(ecID,"_EndcapModule%d"); - - Volume envelopeVol(envelopeVol_name,EndcapModule,Steel235); - - // Set envelope volume attributes. - envelopeVol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); - - - // ========= Create Hcal Chamber (i.e. Layers) ============================== - // It will be the sub volume for placing the slices. - // Itself will be placed into the Hcal Endcap modules envelope. - // ========================================================================== - - // create Layer (air) and place the slices (Polystyrene,Cu,FR4,air) into it. - // place the Layer into the Hcal Endcap Modules envelope (Steel235). - - // First Hcal Chamber position, start after first radiator - double layer_pos_y = - box_half_y + Hcal_radiator_thickness; - - // Create Hcal Endcap Chamber without radiator - // Place into the Hcal Encap module envelope, after each radiator - int layer_num = 0; - for(xml_coll_t c(x_det,_U(layer)); c; ++c) { - xml_comp_t x_layer = c; - int repeat = x_layer.repeat(); // Get number of layers. - const Layer* lay = layering.layer(layer_num); // Get the layer from the layering engine. - - string layer_name = envelopeVol_name+"_layer"; - double layer_thickness = lay->thickness(); - DetElement layer(layer_name,layer_name,x_det.id()); - - // Active Layer box & volume - double active_layer_dim_x = box_half_x - Hcal_lateral_structure_thickness; - double active_layer_dim_y = layer_thickness/2.0; - double active_layer_dim_z = box_half_z; - - // Build chamber including air gap - // The Layer will be filled with slices, - Volume layer_vol(layer_name, Box((active_layer_dim_x + Hcal_layer_air_gap), - active_layer_dim_y,active_layer_dim_z), air); - - - // ========= Create sublayer slices ========================================= - // Create and place the slices into Layer - // ========================================================================== - - // Create the slices (sublayers) within the Hcal Chamber. - double slice_pos_y = -(layer_thickness / 2.0); - int slice_number = 0; - for(xml_coll_t k(x_layer,_U(slice)); k; ++k) { - xml_comp_t x_slice = k; - string slice_name = layer_name + _toString(slice_number,"_slice%d"); - double slice_thickness = x_slice.thickness(); - Material slice_material = lcdd.material(x_slice.materialStr()); - DetElement slice(layer,_toString(slice_number,"slice%d"),x_det.id()); - - slice_pos_y += slice_thickness / 2.0; - - // Slice volume & box - Volume slice_vol(slice_name,Box(active_layer_dim_x,slice_thickness/2.0,active_layer_dim_z),slice_material); - - if ( x_slice.isSensitive() ) { - sens.setType("calorimeter"); - slice_vol.setSensitiveDetector(sens); - } - // Set region, limitset, and vis. - slice_vol.setAttributes(lcdd,x_slice.regionStr(),x_slice.limitsStr(),x_slice.visStr()); - // slice PlacedVolume - PlacedVolume slice_phv = layer_vol.placeVolume(slice_vol,Position(0,slice_pos_y,0)); - slice_phv.addPhysVolID("slice",slice_number); - - slice.setPlacement(slice_phv); - // Increment Z position for next slice. - slice_pos_y += slice_thickness / 2.0; - // Increment slice number. - ++slice_number; - } - // Set region, limitset, and vis. - layer_vol.setAttributes(lcdd,x_layer.regionStr(),x_layer.limitsStr(),x_layer.visStr()); - - - // ========= Place the Layer (i.e. Chamber) ================================= - // Place the Layer into the Hcal Endcap module envelope. - // with the right position and rotation. - // Registry the IDs (layer, stave, module). - // Place the same layer 48 times into Endcap module - // ========================================================================== - - for (int j = 0; j < repeat; j++) { - - // Layer position in y within the Endcap Modules. - layer_pos_y += layer_thickness / 2.0; - - PlacedVolume layer_phv = envelopeVol.placeVolume(layer_vol, - Position(0,layer_pos_y,0)); - // registry the ID of Layer, stave and module - layer_phv.addPhysVolID("layer",layer_num); - layer_phv.addPhysVolID("endcapID",ecID); - // then setPlacement for it. - layer.setPlacement(layer_phv); - - - // ===== Prepare for next layer (i.e. next Chamber) ========================= - // Prepare the chamber placement position and the chamber dimension - // ========================================================================== - - // Increment the layer_pos_y - // Place Hcal Chamber after each radiator - layer_pos_y += layer_thickness / 2.0; - layer_pos_y += Hcal_radiator_thickness; - ++layer_num; - } - - - } - - - // =========== Place Hcal Endcap envelope =================================== - // Finally place the Hcal Endcap envelope into the world volume. - // Registry the stave(up/down), module(left/right) and endcapID. - // ========================================================================== - - // Acording to the number of staves and modules, - // Place the same Hcal Endcap module volume into the world volume - // with the right position and rotation. - for(int stave_num=0;stave_num<2;stave_num++){ - - double EndcapModule_pos_x; - double EndcapModule_pos_y; - double EndcapModule_pos_z = Hcal_endcap_zmin + box_half_y; - double rot_EM = 0; - - switch (stave_num) - { - case 0 : - EndcapModule_pos_x = x_offset; - EndcapModule_pos_y = y_offset; - break; - case 1 : - EndcapModule_pos_x = -x_offset; - EndcapModule_pos_y = -y_offset; - break; - } - - for(int module_num=0;module_num<2;module_num++) { - - rot_EM = (module_num==0)?(M_PI/2.0):(-M_PI/2.0); - - EndcapModule_pos_z = (module_num==0)?EndcapModule_pos_z:-EndcapModule_pos_z; - - // Assembly& assembly = (module_num==0)?assembly_fwd:assembly_bwd; - - PlacedVolume env_phv = assembly.placeVolume(envelopeVol, - Transform3D(RotationX(rot_EM), - Translation3D(EndcapModule_pos_x, - EndcapModule_pos_y, - EndcapModule_pos_z))); - - - env_phv.addPhysVolID("stave",stave_num); // y: up /down - env_phv.addPhysVolID("module",module_num); // z: +/- - env_phv.addPhysVolID("system",x_det.id()); - sdet.setPlacement(env_phv); - - } - - } - - } - - - - Volume mother = lcdd.pickMotherVolume(sdet); - PlacedVolume pv = mother.placeVolume(assembly); - pv.addPhysVolID( "system", x_det.id() ) ; - - sdet.setPlacement(pv); - - return sdet; -} - - - - -DECLARE_DETELEMENT(AhcalEndcapCalorimeter, create_detector); diff --git a/examples/ILDExDet/src/ILDExSIT_geo.cpp b/examples/ILDExDet/src/ILDExSIT_geo.cpp deleted file mode 100644 index 52a04be4b3b206ca3b6de5a9196e77c49b14681c..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/ILDExSIT_geo.cpp +++ /dev/null @@ -1,164 +0,0 @@ -// $Id: ILDExSIT_geo.cpp 687 2013-08-09 12:56:00Z gaede $ -//==================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------- -// -// Author : M.Frank -// -//==================================================================== - -#include "DD4hep/DetFactoryHelper.h" - -#ifdef DD4HEP_USE_GEAR -#include "DDRec/DDGear.h" -#include "gearimpl/ZPlanarParametersImpl.h" -#endif - -#include "DDRec/Surface.h" - -using namespace std; -using namespace DD4hep; -using namespace DD4hep::Geometry; -using namespace DDRec ; -using namespace DDSurfaces ; - -static Ref_t create_element(LCDD& lcdd, xml_h e, SensitiveDetector sens) { - xml_det_t x_det = e; - string name = x_det.nameStr(); - DetElement sit(name,x_det.id()); - Assembly assembly( name + "_assembly" ) ; - PlacedVolume pv; - - -#ifdef DD4HEP_USE_GEAR - //--------------- gear: create gear::ZPlanarParameters and add them as Extension - gear::ZPlanarParametersImpl* gearZPlanar = new gear::ZPlanarParametersImpl( gear::ZPlanarParameters::HYBRID , 0.0, 0.0, 0.0, 0.0, 0.0 ) ; - // ZPlanarParametersImpl( int type, double shellInnerRadius, double shellOuterRadius, double shellHalfLength, double shellGap, double shellRadLength ) ; - // -> the SIT has no outer shell - set type to HYPRID to keep gear happy (needs fix in gear) - sit.addExtension<GearHandle>( new GearHandle( gearZPlanar, "SITParameters" ) ) ; - //-------------------------------------------------------------------- -#endif - - - for(xml_coll_t c(e,_U(layer)); c; ++c) { - - - xml_comp_t x_layer (c); - xml_comp_t x_support (x_layer.child(_U(support))); - xml_comp_t x_ladder (x_layer.child(_U(ladder))); - int layer_id = x_layer.id(); - int nLadders = x_ladder.number(); - string layername = name+_toString(layer_id,"_layer%d"); - double dphi = 2.*M_PI/double(nLadders); - double zhalf = x_ladder.zhalf(); - double sens_radius= x_ladder.radius(); - double sens_thick = x_ladder.thickness(); - double supp_thick = x_support.thickness(); - double width = 2.*tan(dphi/2.)*(sens_radius-sens_thick/2.); - Box ladderbox ((sens_thick+supp_thick)/2.,width/2.,zhalf); - - Material suppmat = lcdd.material( x_support.materialStr() ) ; - Material sensmat = lcdd.material( x_ladder.materialStr() ); - - Volume laddervol (layername+"_ladder",ladderbox , suppmat ); - - Box sensbox (sens_thick/2.,width/2.,zhalf); - - - Volume sensvol (layername+"_sens",sensbox, sensmat ); - Box suppbox (supp_thick/2.,width/2.,zhalf); - Volume suppvol (layername+"_supp",suppbox,lcdd.material(x_support.materialStr())); - - - // --- create an assembly and DetElement for the layer - - Assembly layer_assembly( layername ); - - DetElement layerDE( sit , _toString(layer_id,"layer_%d"), x_det.id() ); - - pv = assembly.placeVolume( layer_assembly ); - pv.addPhysVolID("layer", layer_id ); - - layerDE.setPlacement( pv ) ; - - //-------------------------------- - - // create a measurement plane for the tracking surface attched to the sensitive volume - Vector3D u( 0. , 1. , 0. ) ; - Vector3D v( 0. , 0. , 1. ) ; - - // implement 7 deg stereo angle - if( layer_id % 2 ){ - - u.fill( 0. , cos( 3.5*dd4hep::deg ) , sin( 3.5*dd4hep::deg ) ) ; - v.fill( 0. , -sin( 3.5*dd4hep::deg ) , cos( 3.5*dd4hep::deg ) ) ; - - } else { - - u.fill( 0. , cos( 3.5*dd4hep::deg ) , -sin( 3.5*dd4hep::deg ) ) ; - v.fill( 0. , sin( 3.5*dd4hep::deg ) , cos( 3.5*dd4hep::deg ) ) ; - } - - Vector3D n( 1. , 0. , 0. ) ; - VolPlane surf( sensvol , SurfaceType( SurfaceType::Sensitive, SurfaceType::Measurement1D ) , sens_thick/2 + supp_thick/2 , sens_thick/2 , u,v,n ) ; - - - // Position senspos (-(sens_thick+supp_thick)/2.+sens_thick/2.,0,0); - // Position supppos (-(sens_thick+supp_thick)/2.+sens_thick+supp_thick/2.,0,0); - // --- position the sensitive on top of the support ! - Position senspos ( (sens_thick+supp_thick)/2. - sens_thick/2., 0, 0 ); - Position supppos ( (sens_thick+supp_thick)/2. - sens_thick - supp_thick/2., 0, 0 ); - - sens.setType("tracker"); - sensvol.setSensitiveDetector(sens); - sensvol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_layer.visStr()); - - pv = laddervol.placeVolume(sensvol,senspos) ; - laddervol.placeVolume(suppvol,supppos); - sit.setVisAttributes(lcdd, x_det.visStr(),laddervol); - - double radius = sens_radius + ((sens_thick+supp_thick)/2. - sens_thick/2.); - - for(int j=0; j<nLadders; ++j) { - - string laddername = layername + _toString(j,"_ladder%d"); - Position pos(radius*cos(j*dphi),radius*sin(j*dphi),0.); - - pv = layer_assembly.placeVolume(laddervol,Transform3D(RotationZ(j*dphi),pos)); - - // this will result int the correct cellID to be set... - pv.addPhysVolID("layer",layer_id).addPhysVolID("module",j).addPhysVolID("sensor",0 ) ; - - // create a DetElement for the ladder and assign the meassurment surface to it - DetElement ladderDE( sit , laddername , x_det.id() ); - ladderDE.setPlacement( pv ) ; - volSurfaceList( ladderDE )->push_back( surf ) ; - - } - -#ifdef DD4HEP_USE_GEAR - //----------------- gear --------------------------------------------- - double ladderRadLength = suppmat->GetMaterial()->GetRadLen() /dd4hep::mm ; - double sensitiveRadLength = sensmat->GetMaterial()->GetRadLen() /dd4hep::mm ; - - gearZPlanar->addLayer ( nLadders, 0. , radius/dd4hep::mm, 0. , supp_thick/dd4hep::mm , 2*zhalf/dd4hep::mm, width/dd4hep::mm, ladderRadLength, - (radius+supp_thick)/dd4hep::mm, 0 , sens_thick/dd4hep::mm , 2*zhalf/dd4hep::mm , width/dd4hep::mm, sensitiveRadLength) ; - - // addLayer (int nLadders, double phi0, double ladderDistance, double ladderOffset, double ladderThickness, double ladderLength, double ladderWidth, double ladderRadLength, - // double sensitiveDistance, double sensitiveOffset, double sensitiveThickness, double sensitiveLength, double sensitiveWidth, double sensitiveRadLength) - //----------------- gear --------------------------------------------- -#endif - - } - - - - pv = lcdd.pickMotherVolume(sit).placeVolume(assembly) ; - - pv.addPhysVolID("system", x_det.id()).addPhysVolID("side",0 ) ; - - sit.setPlacement( pv ); - return sit; -} - -DECLARE_DETELEMENT(ILDExSIT,create_element); diff --git a/examples/ILDExDet/src/ILDExTPC_geo.cpp b/examples/ILDExDet/src/ILDExTPC_geo.cpp deleted file mode 100644 index 041b7135e1839cd7d1ecf87971c7dec976956ef0..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/ILDExTPC_geo.cpp +++ /dev/null @@ -1,295 +0,0 @@ - -// $Id: ILDExTPC_geo.cpp 680 2013-08-06 15:07:53Z gaede $ -//==================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------- -// -// Author : A.Muennich -// -//==================================================================== - -#include "DD4hep/DetFactoryHelper.h" -#include "DD4hep/Detector.h" - -//fixme: TPCData should not depend on this internal header -#include "DD4hep/objects/DetectorInterna.h" - -#include "DD4hep/DD4hepUnits.h" -#include "DDRec/Surface.h" - -#include "TPCData.h" - -#ifdef DD4HEP_USE_GEAR -#include "DDRec/DDGear.h" -#include "gearimpl/TPCParametersImpl.h" -#include "gearimpl/FixedPadSizeDiskLayout.h" -#endif - -using namespace std; -//using namespace tgeo ; -using namespace DD4hep; -using namespace DD4hep::Geometry; -using namespace DD4hep::DDRec ; -using namespace DDSurfaces ; - -static Ref_t create_element(LCDD& lcdd, xml_h e, SensitiveDetector sens) { - xml_det_t x_det = e; - xml_comp_t x_tube (x_det.child(_U(tubs))); - string name = x_det.nameStr(); - - Material envmat = lcdd.material("Air" ) ; // x_det.materialStr())); - - //if data is needed do this - TPCData* tpcData = new TPCData(); - DetElement tpc(tpcData, name, x_det.typeStr()); - tpcData->id = x_det.id(); - //else do this - //DetElement tpc (name,x_det.typeStr(),x_det.id()); - Tube tpc_tub(x_tube.rmin(),x_tube.rmax(),x_tube.zhalf()); - Volume tpc_vol(name+"_envelope_volume", tpc_tub, envmat); - - Readout readout(sens.readout()); - - //--- some parameters needed for gear: - double g_driftlength ; - double g_rMin, g_rMax, g_padHeight, g_padWidth, g_maxRow, g_padGap, g_phiMax ; - double g_inner_r, g_outer_r, g_inner_wt, g_outer_wt ; - - xml_comp_t x_global( x_det.child( _Unicode( global ) ) ); - - //-------- global gear parameters ---------------- - - g_driftlength = x_global.attr<double>(_Unicode(driftLength) ) ; - - g_padWidth = x_global.attr<double>(_Unicode(padWidth)) ; - - //-------- global gear parameters ---------------- - - - for(xml_coll_t c(e,_U(detector)); c; ++c) { - - xml_comp_t px_det (c); - xml_comp_t px_tube (px_det.child(_U(tubs))); - xml_dim_t px_pos (px_det.child(_U(position))); - xml_dim_t px_rot (px_det.child(_U(rotation))); - xml_comp_t px_mat (px_det.child(_U(material))); - - - - string part_nam(px_det.nameStr()); - - Material part_mat(lcdd.material(px_mat.nameStr())); - DetElement part_det(part_nam,px_det.typeStr(),px_det.id()); - - Tube part_tub(px_tube.rmin(),px_tube.rmax(),px_tube.zhalf()); - Volume part_vol(part_nam,part_tub,part_mat); - - Position part_pos(px_pos.x(),px_pos.y(),px_pos.z()); - RotationZYX part_rot(px_rot.z(),px_rot.y(),px_rot.x()); - bool reflect = px_det.reflect(); - - sens.setType("tracker"); - - part_vol.setVisAttributes(lcdd,px_det.visStr()); - - // vectors for measurement plane - Vector3D u( 0. , 1. , 0. ) ; - Vector3D v( 0. , 0. , 1. ) ; - Vector3D n( 1. , 0. , 0. ) ; - - - double rcyl = ( px_tube.rmax() + px_tube.rmin() ) * 0.5 ; - double drcyl = px_tube.rmax() - px_tube.rmin() ; - Vector3D ocyl( rcyl , 0. , 0. ) ; - - - //cache the important volumes in TPCData for later use without having to know their name - switch(part_det.id()) - { - case 2: { - tpcData->innerWall=part_det; - // add a surface to the det element - VolCylinder surf( part_vol , SurfaceType( SurfaceType::Helper ) , drcyl*.5 , drcyl*.5 , ocyl ) ; - volSurfaceList( part_det )->push_back( surf ) ; - } - break; - - case 3: { - tpcData->outerWall=part_det; - // add a surface to the det element - VolCylinder surf( part_vol , SurfaceType( SurfaceType::Helper ) , drcyl*.5 , drcyl*.5 , ocyl ) ; - volSurfaceList( part_det )->push_back( surf ) ; - } - break; - - case 4: - { - tpcData->gasVolume=part_det; - - xml_comp_t px_lay(px_det.child(_U(layer))); - int nTPClayer( px_lay.attr<int>(_U(number)) ); - - double r0 = px_tube.rmin() +1.e-3 ; - double r1 = px_tube.rmax() -1e-3 ; - double zh = px_tube.zhalf() - 1e-3 ; - double dR = ( r1 - r0 ) / ( 2.* nTPClayer ) ; - - - //---------------------------- gear stuff -------------- - g_driftlength = zh / dd4hep::mm ; - g_rMin = r0 / dd4hep::mm ; - g_rMax = r1 / dd4hep::mm ; - g_padHeight = 2. * dR / dd4hep::mm ; - g_maxRow = nTPClayer ; - g_padGap = 0. ; - g_phiMax = 6.283185307e+00 ; // FIXME: where to define ? is it allways 2PI ? - //------------------------------------------------------ - - - for(int i=0 ; i < nTPClayer ; ++i){ - - Tube gas_tubL( r0 + (2*i) * dR , r0 + (2*i+1) * dR , zh ); - Volume gas_volL( _toString( i, "tpc_row_lower_%03d") , gas_tubL, part_mat); - part_vol.placeVolume( gas_volL, RotationZYX(0,0,0) ); - - Tube gas_tubU( r0 + (2*i+1) * dR , r0 + (2*i+2) * dR , zh ); - Volume gas_volU( _toString( i, "tpc_row_upper_%03d") , gas_tubU, part_mat); - - gas_volU.setSensitiveDetector( sens ); - - PlacedVolume pv = part_vol.placeVolume( gas_volU, RotationZYX(0,0,0) ) ; - pv.addPhysVolID("layer",i) ; - - DetElement layerDE( tpc , _toString( i, "tpc_row_upper_%03d") , x_det.id() ); - layerDE.setPlacement( pv ) ; - - Vector3D o( r0 + (2*i+1) * dR , 0. , 0. ) ; - - VolCylinder surf( gas_volU , SurfaceType(SurfaceType::Sensitive, SurfaceType::Invisible ) , dR , dR , o ) ; - - volSurfaceList( layerDE )->push_back( surf ) ; - } - - - break; - } - case 5: - tpcData->cathode=part_det; - break; - } - //Endplate - if(part_det.id()== 0){ - tpcData->endplate=part_det; - - // add a plane to the endcap volume - // note: u and v are exchanged: normal is along z ... - VolPlane surf( part_vol , SurfaceType( SurfaceType::Helper ) , px_tube.zhalf() , x_tube.zhalf(), u , n , v ) ; - volSurfaceList( part_det )->push_back( surf ) ; - - //modules - int mdcount=0; - for(xml_coll_t m(px_det,_U(modules)); m; ++m) { - xml_comp_t modules (m); - string m_name = modules.nameStr(); - for(xml_coll_t r(modules,_U(row)); r; ++r) { - xml_comp_t row(r); - int nmodules = row.nModules(); - int rowID=row.RowID(); - //shape of module - double pitch=row.rowPitch(); - double rmin=px_tube.rmin()+pitch/2+rowID*row.moduleHeight()+rowID*pitch/2; - double rmax=rmin+row.moduleHeight(); - double DeltaPhi=(2*M_PI-nmodules*(row.modulePitch()/(rmin+(rmax-rmin)/2)))/nmodules; - double zhalf=px_tube.zhalf(); - string mr_nam=m_name+_toString(rowID,"_Row%d"); - Volume mr_vol(mr_nam,Tube(rmin,rmax,zhalf,DeltaPhi),part_mat); - Material mr_mat(lcdd.material(px_mat.nameStr())); - Readout xml_pads(lcdd.readout(row.padType())); - - //placing modules - for(int md=0;md<nmodules;md++){ - string m_nam=m_name+_toString(rowID,"_Row%d")+_toString(md,"_M%d"); - - DetElement module(part_det,m_nam,mdcount); - mdcount++; - double rotz=md*2*M_PI/nmodules+row.modulePitch()/(rmin+(rmax-rmin))/2; - PlacedVolume m_phv = part_vol.placeVolume(mr_vol,RotationZYX(rotz,0,0)); - m_phv.addPhysVolID("module",md); - module.setPlacement(m_phv); - // Readout and placement must be present before adding extension, - // since they are aquired internally for optimisation reasons. (MF) - // module.addExtension<PadLayout>(new FixedPadAngleDiskLayout(module,readout)); - - }//modules - }//rows - }//module groups - }//endplate - - PlacedVolume part_phv = tpc_vol.placeVolume(part_vol,Transform3D(Rotation3D(part_rot),part_pos)); - //part_phv.addPhysVolID(part_nam,px_det.id()); - part_phv.addPhysVolID("side",0); - part_det.setPlacement(part_phv); - tpc.add(part_det); - - //now reflect it - if(reflect){ - Position r_pos(px_pos.x(),px_pos.y(),-px_pos.z()); - //Attention: rotation is given in euler angles - RotationZYX r_rot(0,M_PI,M_PI); - // Volume part_vol_r(lcdd,part_nam+"_negativ",part_tub,part_mat); - PlacedVolume part_phv2 = tpc_vol.placeVolume(part_vol,Transform3D(Rotation3D(r_rot),r_pos)); - //part_phv2.addPhysVolID(part_nam+"_negativ",px_det.id()+1); - part_phv2.addPhysVolID("side",1); - // needs a copy function for DetElement - // DetElement rdet(lcdd,part_nam+"_negativ",px_det.typeStr(),px_det.id()+1); - DetElement rdet = part_det.clone(part_nam+"_negativ",px_det.id()+1); - - if(part_det.id()== 0){ - VolPlane surf( part_vol , SurfaceType( SurfaceType::Helper ) , px_tube.zhalf() , x_tube.zhalf(), u , n , v ) ; - volSurfaceList( rdet )->push_back( surf ) ; - } - - rdet.setPlacement(part_phv2); - tpcData->endplate2 = rdet; - tpc.add(rdet); - } - }//subdetectors - tpc_vol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_det.visStr()); - -#ifdef DD4HEP_USE_GEAR - //--------------- create gear::TPCParameters and add them as Extension - // GearTPCParameters* gearTPC = new GearTPCParameters( g_driftlength , gear::PadRowLayout2D::POLAR ) ; - gear::TPCParametersImpl* gearTPC = new gear::TPCParametersImpl( g_driftlength , gear::PadRowLayout2D::POLAR ) ; - - gearTPC->setPadLayout( new gear::FixedPadSizeDiskLayout( g_rMin, g_rMax, g_padHeight, g_padWidth, g_maxRow, g_padGap, g_phiMax ) ) ; - - Tube t = DetElement(tpcData->innerWall).volume().solid() ; - g_inner_r = t->GetRmin() / dd4hep::mm ; - g_inner_wt = ( t->GetRmax() - t->GetRmin() ) / dd4hep::mm ; - - t = DetElement(tpcData->outerWall).volume().solid() ; - g_outer_r = t->GetRmax() / dd4hep::mm ; - g_outer_wt = ( t->GetRmax() - t->GetRmin() ) / dd4hep::mm ; - - gearTPC->setDoubleVal("tpcInnerRadius", g_inner_r ) ; // inner r of support tube - gearTPC->setDoubleVal("tpcOuterRadius", g_outer_r ) ; // outer radius of TPC - gearTPC->setDoubleVal("tpcInnerWallThickness", g_inner_wt) ; // thickness of inner shell - gearTPC->setDoubleVal("tpcOuterWallThickness", g_outer_wt) ; // thickness of outer shell - - // tpc.addExtension<GearTPCParameters>( gearTPC ) ; - - // tpc.addExtension<GearHandle<gear::TPCParametersImpl> >( new GearHandle<gear::TPCParametersImpl>( gearTPC ) ) ; - - tpc.addExtension< GearHandle >( new GearHandle( gearTPC, "TPCParameters" ) ) ; - - //-------------------------------------------------------------------- -#endif - - PlacedVolume phv = lcdd.pickMotherVolume(tpc).placeVolume(tpc_vol); - phv.addPhysVolID("system",x_det.id()); - tpc.setPlacement(phv); - return tpc; -} - -//first argument is the type from the xml file -DECLARE_DETELEMENT(ILDExTPC,create_element) diff --git a/examples/ILDExDet/src/ILDExVXD_geo.cpp b/examples/ILDExDet/src/ILDExVXD_geo.cpp deleted file mode 100644 index 485593b67bd27a0e7845d27648a5b26591bcdbcf..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/ILDExVXD_geo.cpp +++ /dev/null @@ -1,290 +0,0 @@ -// $Id: ILDExVXD_geo.cpp 673 2013-08-05 10:01:33Z gaede $ -//==================================================================== -// AIDA Detector description implementation for LCD -//-------------------------------------------------------------------- -// -// Author : M.Frank -// -//==================================================================== -#include "DD4hep/DetFactoryHelper.h" -#include "VXDData.h" - -#ifdef DD4HEP_USE_GEAR -#include "DDRec/DDGear.h" -#include "gearimpl/ZPlanarParametersImpl.h" -#endif - -#include "DDRec/Surface.h" - -using namespace std; -using namespace DD4hep; -using namespace DD4hep::Geometry; -using namespace DD4hep::DDRec ; -using namespace DDSurfaces ; - -#define no_split_ladders 0 - -static Ref_t create_element(LCDD& lcdd, xml_h e, SensitiveDetector sens) { - DetElement vxd; - xml_det_t x_det = e; - string name = x_det.nameStr(); - - Assembly assembly(name+"_assembly"); - - // replace assembly with cylinder of air: - xml_comp_t x_tube (x_det.child(_U(tubs))); - Tube envelope_cylinder(x_tube.rmin(),x_tube.rmax(),x_tube.zhalf()); - // Volume assembly ("vxd_envelope_cyl", envelope_cylinder ,lcdd.air()); - - PlacedVolume pv; - - VXDData* vxd_data = new VXDData(); - vxd.assign(vxd_data,name,x_det.typeStr()); - vxd_data->id = x_det.id(); - - -#ifdef DD4HEP_USE_GEAR - //--------------- gear: create gear::ZPlanarParameters and add them as Extension - gear::ZPlanarParametersImpl* gearZPlanar = new gear::ZPlanarParametersImpl( gear::ZPlanarParameters::CCD , 0.0, 0.0, 0.0, 0.0, 0.0 ) ; - // ZPlanarParametersImpl( int type, double shellInnerRadius, double shellOuterRadius, double shellHalfLength, double shellGap, double shellRadLength ) ; - // -> this VXD has no outer shell ... - vxd.addExtension<GearHandle>( new GearHandle( gearZPlanar, "VXDParameters" ) ) ; - //-------------------------------------------------------------------- -#endif - - for(xml_coll_t c(e,_U(layer)); c; ++c) { - - xml_comp_t x_layer (c); - - xml_comp_t x_support (x_layer.child(_U(support))); - xml_comp_t x_ladder (x_layer.child(_U(ladder))); - - int layer_id = x_layer.id(); - int nLadders = x_ladder.number(); - string layername = name+_toString(layer_id,"_layer%d"); - double dphi = 2.*M_PI/double(nLadders); - - - - - - /// ======== test layer assembly -> results in assembly in assembly and -#define use_layer_assembly 1 // crashes ild_exsimu -#if use_layer_assembly - - // --- create an assembly and DetElement for the layer - - Assembly layer_assembly( "layer_assembly" +_toString(layer_id,"_%d") ); - - DetElement layerDE( vxd , _toString(layer_id,"layer_%d"), x_det.id() ); - - pv = assembly.placeVolume( layer_assembly ); - pv.addPhysVolID("layer", layer_id ); - - layerDE.setPlacement( pv ) ; - - //-------------------------------- -#else - //========= - Assembly& layer_assembly = assembly ; - //========= - -#endif - - - - - - - - - -#if no_split_ladders - double zhalf = x_ladder.zhalf(); -#else - double zhalf = x_ladder.zhalf() / 2 ; -#endif - - double offset = x_ladder.offset(); - double sens_radius= x_ladder.radius(); - double sens_thick = x_ladder.thickness(); - double supp_thick = x_support.thickness(); - - // double radius = sens_radius + ((sens_thick+supp_thick)/2. - sens_thick/2.); - //fg: this is the radius(distance) of the support ladder which should be under(inside) the sensitive ladder - double radius = sens_radius - supp_thick ; - - double phi0 = x_layer.phi0() ; - - // double width = 2.*tan(dphi/2.)*(sens_radius-sens_thick/2.); - double width = x_ladder.width(); - - Box ladderbox ( (sens_thick+supp_thick)/2., width/2., zhalf ); - - Volume laddervol (layername+"_ladder",ladderbox,lcdd.air()); - - Material sensmat = lcdd.material(x_ladder.materialStr()); - Box sensbox (sens_thick/2., width/2., zhalf); - Volume sensvol (layername+"_sens",sensbox,sensmat); - - - // create a measurement plane for the tracking surface attched to the sensitive volume - Vector3D u( 0. , 1. , 0. ) ; - Vector3D v( 0. , 0. , 1. ) ; - Vector3D n( 1. , 0. , 0. ) ; - // Vector3D o( 0. , 0. , 0. ) ; - VolPlane surf( sensvol , SurfaceType(SurfaceType::Sensitive) , sens_thick/2 + supp_thick , sens_thick/2 , u,v,n ) ; //,o ) ; - - Material suppmat = lcdd.material(x_support.materialStr()); - Box suppbox (supp_thick/2.,width/2.,zhalf); - Volume suppvol (layername+"_supp",suppbox,suppmat); - - // --- position the sensitive on top of the support ! - Position senspos ( (sens_thick+supp_thick)/2. - sens_thick/2., 0, 0 ); - Position supppos ( (sens_thick+supp_thick)/2. - sens_thick - supp_thick/2., 0, 0 ); - - sens.setType("tracker"); - sensvol.setSensitiveDetector(sens); - sensvol.setAttributes(lcdd,x_det.regionStr(),x_det.limitsStr(),x_layer.visStr()); - - laddervol.placeVolume(sensvol,senspos); - laddervol.placeVolume(suppvol,supppos); - - VXDData::Layer layer; - // Add ladder layer - layer.NLadders = nLadders ; - layer.internalPhi0 = phi0 ; //M_PI/2. - dphi; // phi0 given wrt x-axis - internalPhi0 is wrt yaxis , negative orientation - layer.Distance = 0.0; // What is this really (?) : ladderDistance; - layer.Offset = offset; // offset given in direction of positive rotation (increasing phi) - layer.Thickness = supp_thick; - layer.Length = suppbox.x(); - layer.Width = suppbox.y(); - layer.RadLength = suppmat->GetMaterial()->GetRadLen(); - vxd_data->_lVec.push_back(layer); - - // Now add sensitive ladder layer - layer.NLadders = nLadders ; - layer.internalPhi0 = phi0 ; //M_PI/2. - dphi; // phi0 given wrt x-axis - internalPhi0 is wrt yaxis , negative orientation - layer.Distance = 0.0; // What is this really (?) : sensitiveDistance ; - layer.Offset = offset; // offset given in direction of positive rotation (increasing phi) - layer.Thickness = sens_thick; - layer.Length = sensbox.x(); - layer.Width = sensbox.y(); - layer.RadLength = sensmat->GetMaterial()->GetRadLen(); - vxd_data->_sVec.push_back(layer); - - - for(int j=0; j<nLadders; ++j) { - - double dj = double(j); - double phi = phi0 + dj*dphi ; - - string laddername = layername + _toString(j,"_ladder%d"); - - double lthick = sens_thick + supp_thick ; - - RotationZYX rot( phi , 0, 0 ) ; - - -#if no_split_ladders - - pv = layer_assembly.placeVolume( laddervol,Transform3D( rot, Position( (radius + lthick/2.)*cos(phi) - offset * sin( phi ) , - (radius + lthick/2.)*sin(phi) + offset * cos( phi ) , - 0. ) )); - - pv.addPhysVolID("layer", layer_id ).addPhysVolID( "module" , j ).addPhysVolID("sensor", 0 ) ; - - - DetElement ladderDE( layerDE , laddername , x_det.id() ); - ladderDE.setPlacement( pv ) ; - - -#else - - // put one wafer at plus z and one at minus z - - pv = layer_assembly.placeVolume( laddervol, Transform3D( rot , Position( (radius + lthick/2.)*cos(phi) - offset * sin( phi ) , - (radius + lthick/2.)*sin(phi) + offset * cos( phi ) , - zhalf ) ) ); - - pv.addPhysVolID("layer", layer_id ).addPhysVolID( "module" , j ).addPhysVolID("sensor", 0 ).addPhysVolID("side", 1 ) ; - - - -#if use_layer_assembly - DetElement ladderDEposZ( layerDE , laddername+"_posZ" , x_det.id() ); -#else - DetElement ladderDEposZ( vxd , laddername+"_posZ" , x_det.id() ); -#endif - - - - ladderDEposZ.setPlacement( pv ) ; - - volSurfaceList( ladderDEposZ )->push_back( surf ) ; - - - pv = layer_assembly.placeVolume( laddervol, Transform3D( rot , Position( (radius + lthick/2.)*cos(phi) - offset * sin( phi ) , - (radius + lthick/2.)*sin(phi) + offset * cos( phi ) , - -zhalf ) ) ); - - pv.addPhysVolID("layer", layer_id ).addPhysVolID( "module" , j ).addPhysVolID("sensor", 0 ).addPhysVolID("side", -1 ) ; ; - -#if use_layer_assembly - DetElement ladderDEnegZ( layerDE , laddername+"_negZ" , x_det.id() ); -#else - DetElement ladderDEnegZ( vxd , laddername+"_negZ" , x_det.id() ); - #endif - - ladderDEnegZ.setPlacement( pv ) ; - - - volSurfaceList( ladderDEnegZ)->push_back( surf ) ; - - -#endif - - //=========== debug test =============================== - // Surface* gSurf = new Surface( ladderDEnegZ, surf ) ; - //====================================================== - - - //pv = layer_assembly.placeVolume( sensvol, pos, rot ) ; - - } - vxd.setVisAttributes(lcdd, x_det.visStr(),laddervol); - -#ifdef DD4HEP_USE_GEAR - //----------------- gear --------------------------------------------- - double ladderRadLength = suppmat->GetMaterial()->GetRadLen() /dd4hep::mm ; - double sensitiveRadLength = sensmat->GetMaterial()->GetRadLen() /dd4hep::mm ; - - gearZPlanar->addLayer ( nLadders, phi0 , radius/dd4hep::mm, offset/dd4hep::mm , supp_thick/dd4hep::mm , 2*zhalf/dd4hep::mm, width/dd4hep::mm, ladderRadLength, - (radius+supp_thick)/dd4hep::mm, offset/dd4hep::mm , sens_thick/dd4hep::mm , 2*zhalf/dd4hep::mm , width/dd4hep::mm, sensitiveRadLength) ; - - // addLayer (int nLadders, double phi0, double ladderDistance, double ladderOffset, double ladderThickness, double ladderLength, double ladderWidth, double ladderRadLength, - // double sensitiveDistance, double sensitiveOffset, double sensitiveThickness, double sensitiveLength, double sensitiveWidth, double sensitiveRadLength) - //----------------- gear --------------------------------------------- -#endif - - layer_assembly->GetShape()->ComputeBBox() ; - - - } - Volume mother = lcdd.pickMotherVolume(vxd) ; - - pv = mother.placeVolume(assembly); - - pv.addPhysVolID( "system", x_det.id() ).addPhysVolID("side",0 ) ; - - vxd.setPlacement(pv); - - assembly->GetShape()->ComputeBBox() ; - // TGeoBBox* bbox = assembly->GetShape()->GetBBox() ; - - - - return vxd; -} - -DECLARE_DETELEMENT(ILDExVXD,create_element); diff --git a/examples/ILDExDet/src/convertToGear.cc b/examples/ILDExDet/src/convertToGear.cc deleted file mode 100644 index 35ae7025d27c9378e2d0fd7a4cab1e3cd48a48bb..0000000000000000000000000000000000000000 --- a/examples/ILDExDet/src/convertToGear.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include "DD4hep/LCDD.h" -#include "DD4hep/DD4hepUnits.h" -#include "DD4hep/Fields.h" - -#include "TGeoManager.h" - -//---- GEAR ---- -#include "gear/GEAR.h" -#include "gearxml/GearXML.h" - -#include "gearimpl/Util.h" -#include "gearimpl/ConstantBField.h" -#include "gearimpl/GearMgrImpl.h" - -#include "geartgeo/TGeoGearPointProperties.h" -#include "geartgeo/TGeoGearDistanceProperties.h" - -#include "DDGear.h" - -using namespace std ; -using namespace DD4hep ; -using namespace DD4hep::Geometry; -using namespace dd4hep ; - -//============================================================================= - -int main(int argc, char** argv ){ - - if( argc < 2 ) { - std::cout << " usage: convertToGear compact.xml [gear_file.xml]" << std::endl ; - exit(1) ; - } - - std::string inFile = argv[1] ; - - std::string outFile = ( argc>2 ? argv[2] : "" ) ; - - LCDD& lcdd = LCDD::getInstance(); - - lcdd.fromCompact( inFile ); - - gear::GearMgr* gearMgr = createGearMgr( lcdd ) ; - - //---------------------------------------------------------------------------------- - - // std::cout << " ***************************** GEAR parameters **************************************** " << std::endl ; - // std::cout << *gearMgr ; - // std::cout << " ************************* End of GEAR parameters ************************************* " << std::endl ; - - //---------------------------------------------------------------------------------- - - - if( outFile.empty() ){ - - outFile = "gear_" + gearMgr->getDetectorName() + ".xml" ; - } - - gear::GearXML::createXMLFile ( gearMgr, outFile ) ; - - std::cout << " ************************************************************** " << std::endl ; - std::cout << " created gear file : " << outFile << std::endl ; - std::cout << " ************************************************************** " << std::endl ; - - return 0; -} - -//=============================================================================