Skip to content
Snippets Groups Projects
Commit 0784c8a3 authored by guofangyi@ihep.ac.cn's avatar guofangyi@ihep.ac.cn
Browse files

Add CRD Ecal geometry

parent 4fa5b8a6
No related branches found
No related tags found
No related merge requests found
......@@ -2,4 +2,42 @@
# Package: DetCRD
# CEPC Reference Detector (CRD)
################################################################################
gaudi_subdir(DetCRD v0r0)
gaudi_depends_on_subdirs(GaudiKernel)
find_package(DD4hep COMPONENTS DDRec DDG4 DDParsers REQUIRED)
# find_package(DD4hep)
find_package(Geant4)
include(${Geant4_USE_FILE})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${DD4hep_ROOT}/cmake )
include( DD4hep )
find_package(ROOT COMPONENTS MathCore GenVector Geom REQUIRED)
install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/compact DESTINATION Detector/DetCRD)
set(DetCRD_src
src/Calorimeter/CRDEcal.cpp
)
gaudi_add_module(DetCRD
${DetCRD_src}
INCLUDE_DIRS
# DD4hep
# ROOT
# Geant4
src/include
LINK_LIBRARIES
# GaudiKernel
DD4hep
${DD4hep_COMPONENT_LIBRARIES}
# ROOT
# Geant4
)
set(LIBRARY_OUTPUT_PATH ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
message(STATUS "LIBRARY_OUTPUT_PATH -> ${LIBRARY_OUTPUT_PATH}")
dd4hep_generate_rootmap(DetCRD)
<?xml version="1.0" encoding="UTF-8"?>
<lccdd>
<includes>
<gdmlFile ref="elements.xml"/>
<gdmlFile ref="materials.xml"/>
</includes>
<define>
<constant name="world_size" value="30*m"/>
<constant name="world_x" value="world_size"/>
<constant name="world_y" value="world_size"/>
<constant name="world_z" value="world_size"/>
<constant name="ecalbarrel_inner_radius" value="1800*mm"/>
<constant name="ecalbarrel_thickness" value="300*mm"/> <!--Must be n*10*mm! -->
<constant name="ecalbarrel_zlength" value="4600*mm"/> <!--Must be n*10*mm! -->
</define>
<display>
<vis name="Invisible" showDaughters="false" visible="false"/>
<vis name="InvisibleWithChildren" showDaughters="true" visible="false"/>
<vis name="VisibleRed" r="1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
<vis name="VisibleBlue" r="0.0" g="0.0" b="1.0" showDaughters="false" visible="true"/>
<vis name="VisibleGreen" alpha="1.0" r="0.0" g="1.0" b="0.0" drawingStyle="solid" lineStyle="solid" showDaughters="true" visible="true"/>
</display>
<detectors>
<detector id="1" name="CaloDetector" type="CRDEcalBarrel" readout="CaloHitsCollection" vis="Invisible" sensitive="true">
<!-- Use cm as unit if you want to use Pandora for reconstruction -->
</detector>
</detectors>
<readouts>
<readout name="CaloHitsCollection">
<!-- <segmentation type="NoSegmentation"/> -->
<!--segmentation type="CartesianGridXYZ"
grid_size_x="1*cm"
grid_size_y="1*cm"
grid_size_z="1*cm"/-->
<id>block:8,layer:12,piece:12,bar:12</id>
</readout>
</readouts>
</lccdd>
<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
<?xml version="1.0" encoding="UTF-8"?>
<materials>
<!--
Air by weight from
http://www.engineeringtoolbox.com/air-composition-24_212.html
-->
<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>
<!-- We model vakuum just as very thin air -->
<material name="Vacuum">
<D type="density" unit="g/cm3" value="0.0000000001" />
<fraction n="0.754" ref="N"/>
<fraction n="0.234" ref="O"/>
<fraction n="0.012" ref="Ar"/>
</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"/>
<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>
<material name="G4_BGO" state="solid">
<MEE unit="eV" value="534.1"/>
<D value="7.13" unit="g/cm3" />
<fraction n="0.154126" ref="O"/>
<fraction n="0.174820" ref="Ge" />
<fraction n="0.671054" ref="Bi" />
</material>
</materials>
//====================================================================
// Detector description for CEPC Reference Detector ECal Barrel.
//--------------------------------------------------------------------
//
// Author : Fangyi Guo email: guofangyi@ihep.ac.cn
//
//====================================================================
#include "DD4hep/DetFactoryHelper.h"
#include "XML/Layering.h"
#include "XML/Utilities.h"
#include "DDRec/DetectorData.h"
#include "DDSegmentation/Segmentation.h"
#define MYDEBUG(x) std::cout << __FILE__ << ":" << __LINE__ << ": " << x << std::endl;
#define MYDEBUGVAL(x) std::cout << __FILE__ << ":" << __LINE__ << ": " << #x << ": " << x << std::endl;
using dd4hep::rec::LayeredCalorimeterData;
using namespace dd4hep;
using namespace std;
static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
xml_h e,
dd4hep::SensitiveDetector sens) {
xml_det_t x_det = e;
std::string det_name = x_det.nameStr();
std::string det_type = x_det.typeStr();
MYDEBUGVAL(det_name);
MYDEBUGVAL(det_type);
int detid = x_det.id();
//Global geometry
double R0 = theDetector.constant<double>("ecalbarrel_inner_radius");
double h0 = theDetector.constant<double>("ecalbarrel_thickness");
double Z0 = theDetector.constant<double>("ecalbarrel_zlength");
double dim_x1 = R0*tan(22.5*degree) + sqrt(2)*h0/2.;
double dim_x2 = dim_x1 - h0;
double dim_y = Z0/2.;
double dim_z = h0/2.;
double dx = dim_x1 - R0*tan(22.5*degree); //transport distance in x-axis
double r0 = R0+h0/2.; //rotation radius
//Crystal bar size
double barx = 10*mm; //Crystal size in R direction.
double bary = 10*mm; //Crystal size in z/phi direction (z for odd layer, phi for even layer).
int Nlayers = (int)h0/barx;
int Nbarz_odd = (int)Z0/bary;
int Nbarphi_odd; //Depends on layer. Layer1~5: 5. Layer7~23: 4. Layer25~27: 3.
int Nbarz_even = 12;
int Nbarphi_even; //Depends on layer
double barz_even = Z0/Nbarz_even; //~38 cm
double barz_odd; //Depends on layer
//Define detector and motherVolume(world)
dd4hep::DetElement ECAL(det_name, detid);
dd4hep::Volume motherVol = theDetector.pickMotherVolume(ECAL);
// Create a Tube-like envelope representing the whole detector volume
dd4hep::Tube envelope(R0, (R0+h0)/cos(22.5*degree), Z0/2, 0, 2*M_PI);
dd4hep::Material air(theDetector.material("Air"));
dd4hep::Volume envelopeVol(det_name, envelope, air);
dd4hep::PlacedVolume envelopePlv = motherVol.placeVolume(envelopeVol, Position(0,0,0));
envelopeVol.setVisAttributes(theDetector, x_det.visStr() );
ECAL.setPlacement(envelopePlv);
// dd4hep::Material det_pipe(theDetector.material("Steel235"));
// dd4hep::Volume pipe_vol("pipe", dd4hep::Tube(10*mm, 20*mm, 2300*mm), det_pipe);
// dd4hep::PlacedVolume pipePhv = motherVol.placeVolume(pipe_vol, Position(0.,0.,0.));
//Define specific material and volumen for detElement
dd4hep::Material mat_BGO(theDetector.material("G4_BGO"));
dd4hep::Trapezoid trap(dim_x1, dim_x2, dim_y, dim_y, dim_z);
dd4hep::Volume det_vol("trap_vol", trap, mat_BGO);
// det_vol.setVisAttributes(theDetector, x_det.visStr());
dd4hep::DetElement stavedet(ECAL, "trap",detid);
//Loop to place crystalls in one part
//Outer loop: layer (odd layer).
for(int ilayer=1; ilayer<=Nlayers; ilayer+=2){
double lx = dim_x1 - ilayer*10*mm;
//Loop in phi direction
if(ilayer<=5) Nbarphi_odd=5; else if(ilayer<=23) Nbarphi_odd=4; else Nbarphi_odd=3;
for(int iphi=1; iphi<=Nbarphi_odd; iphi++){
barz_odd = 2*lx/Nbarphi_odd;
//Loop in Z direction
dd4hep::Volume bar_odd("box_bar", dd4hep::Box(barz_odd/2, bary/2, barx/2), mat_BGO);
bar_odd.setSensitiveDetector(sens);
for(int iz=1; iz<=Nbarz_odd;iz++){
dd4hep::PlacedVolume plv = det_vol.placeVolume(bar_odd, Position((2*iphi-1)*barz_odd/2-lx, (2*iz-1)*barx/2-dim_y, (2*ilayer-1)*bary/2-dim_z));
plv.addPhysVolID("layer", ilayer).addPhysVolID("piece", iphi).addPhysVolID("bar", iz);
std::string barname = "CrystalBar_"+std::to_string(ilayer)+"_"+std::to_string(iphi)+"_"+std::to_string(iz);
dd4hep::DetElement sd(stavedet, barname, detid);
sd.setPlacement(plv);
}
}
}
//Loop in even layer
dd4hep::Volume bar_even("box_bar", dd4hep::Box(bary/2, barz_even/2, barx/2), mat_BGO);
bar_even.setSensitiveDetector(sens);
for(int ilayer=2; ilayer<=Nlayers; ilayer+=2){
double lx = dim_x1 - ilayer*10*mm;
//Loop in phi direction
Nbarphi_even = (int)floor(2*lx/bary);
for(int iphi=1; iphi<=Nbarphi_even; iphi++){
//Loop in Z direction
for(int iz=1; iz<=Nbarz_even;iz++){
dd4hep::PlacedVolume plv = det_vol.placeVolume(bar_even, Position(lx-(2*iphi-1)*bary/2, (2*iz-1)*barz_even/2-dim_y, (2*ilayer-1)*bary/2-dim_z));
plv.addPhysVolID("layer", ilayer).addPhysVolID("piece", iphi).addPhysVolID("bar", iz);
std::string barname = "CrystalBar_"+std::to_string(ilayer)+"_"+std::to_string(iphi)+"_"+std::to_string(iz);
dd4hep::DetElement sd(stavedet, barname, detid);
sd.setPlacement(plv);
}
}
}
//create a unique volume (PlacedVolume) for the detector
// dd4hep::Transform3D trans0(dd4hep::RotationX(-90*degree), dd4hep::Position(-dx, r0, 0.));
// dd4hep::PlacedVolume plv0 = motherVol.placeVolume(det_vol, trans0);
// stavedet.setPlacement(plv0);
for(int i=0;i<8;i++){
double rotAngle = 45*i*degree;
double posx = -r0*sin(rotAngle) - dx*cos(rotAngle);
double posy = r0*cos(rotAngle) - dx*sin(rotAngle);
dd4hep::Transform3D transform(dd4hep::RotationZ(rotAngle)*dd4hep::RotationX(-90*degree), dd4hep::Position(posx, posy, 0.));
dd4hep::PlacedVolume plv = envelopeVol.placeVolume(det_vol, transform);
plv.addPhysVolID("block", i);
DetElement sd(ECAL, _toString(i,"trap%3d"), detid);
sd.setPlacement(plv);
}
sens.setType("calorimeter");
MYDEBUG("create_detector DONE. ");
return ECAL;
}
DECLARE_DETELEMENT(CRDEcalBarrel, create_detector)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment