Commit 87384f46 authored by Whitney Armstrong's avatar Whitney Armstrong
Browse files

Major restructuring/cleanup

- Renamed `GenericDetectors` -> `detectors`
- Removed `ConceptDetectors`. Full concepts should live outside of this
 repository. The  only full detector concepts should be within the
 context of `examples`.
- New version number 0.4.0
parent 56650ace
Pipeline #5288 failed with stages
in 1 minute and 41 seconds
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(NPDet
VERSION 0.3.2
VERSION 0.4.0
LANGUAGES CXX)
option(BUILD_DATA_MODEL "build the dd4pod datamodel" ON)
# Add library source directory name that appear in ./src
set(NPDet_LIB_NAMES
GenericDetectors
detectors
plugins
dd4pod
)
......@@ -16,15 +16,6 @@ set(NPDet_LIB_NAMES
set(NPDet_EXE_NAMES
)
# Add concept detector names
set(NPDet_CONCEPT_NAMES
erhic
#jleic
#sieic
solid
topside
)
# ---------------------------------------------------------------------------
# set default install prefix and build type
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
......@@ -72,11 +63,6 @@ foreach(anExeName ${NPDet_EXE_NAMES})
add_subdirectory("src/${anExeName}")
endforeach(anExeName)
# add the concept detector sub directories
foreach(aConceptName ${NPDet_CONCEPT_NAMES})
add_subdirectory("src/ConceptDetectors/${aConceptName}")
endforeach(aConceptName)
#----------------------------------------------------------------------------
# install examples
set(NPDet_EXAMPLES
......@@ -90,8 +76,6 @@ install(FILES ${NPDet_EXAMPLES}
add_subdirectory(src/config)
add_subdirectory(src/tools)
#----------------------------------------------------------------------------
# Install and export targets
install(EXPORT NPDetTargets
......
cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
# see https://rix0r.nl/blog/2015/08/13/cmake-guide/
# Must use GNUInstallDirs to install libraries into correct
# locations on all platforms.
include(GNUInstallDirs)
#-----------------------------------------------------------------------------------
set(ALIB clas12)
dd4hep_configure_output()
#dd4hep_package(${ALIB} MAJOR ${NPDet_VERSION_MAJOR} MINOR ${NPDet_VERSION_MINOR} PATCH ${NPDet_VERSION_PATCH}
# USES [ROOT REQUIRED COMPONENTS Geom GenVector]
# [DD4hep REQUIRED COMPONENTS DDCore DDRec]
# OPTIONAL XERCESC
# INCLUDE_DIRS include
# NOINSTALL
# )
dd4hep_add_plugin(${ALIB}
SOURCES
src/ALERTRecoilChamber.cpp
src/ALERTRecoilChamber_geo.cpp
src/DCGeometry.cxx
src/DCWire.cxx
src/GeoUtil.cxx
src/RCGeometry.cxx
src/RCWire.cxx
src/RHGeometry.cxx
src/StandInGeometryCLAS12_geo.cpp
NOINSTALL
)
target_link_libraries(${ALIB}
PUBLIC DD4hep::DDCore DD4hep::DDRec
)
target_compile_features(${ALIB}
PUBLIC cxx_auto_type
PUBLIC cxx_trailing_return_types
PRIVATE cxx_variadic_templates
PRIVATE cxx_std_17
)
install(TARGETS ${ALIB}
EXPORT NPDetTargets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)
#-----------------------------------------------------------------------------------
#set(digi_headers
# trackers/include/SimpleSiTrackerDigi.h
# )
#
#set(digi_source
# trackers/src/SimpleSiTrackerDigi.cpp
# )
#
#add_library(GenDigi SHARED ${digi_source})
#
#target_include_directories(GenDigi PUBLIC
# PRIVATE trackers/include
# PRIVATE calorimeters/include
# )
#
#target_compile_features(GenDigi
# PUBLIC cxx_auto_type
# PUBLIC cxx_trailing_return_types
# PRIVATE cxx_variadic_templates
# )
## For list of compile_features
## https://cmake.org/cmake/help/v3.9/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.html#prop_gbl:CMAKE_CXX_KNOWN_FEATURES
#
#target_link_libraries(GenDigi PUBLIC ROOT::MathCore)
#
#install(TARGETS GenDigi
# EXPORT NPDetTargets
# LIBRARY DESTINATION lib
# ARCHIVE DESTINATION lib
# RUNTIME DESTINATION bin
# INCLUDES DESTINATION include
# )
#
#install(FILES ${digi_headers} DESTINATION include/GenDigi)
clas12
======
![clas12 detector](compact/clas12.png)
Using `compact/run_example` :
```bash
cd compact
./run_example
```
This runs geant4 using `ddsim` with the general particle source configured in
`compact/gps.mac`. The compact file `clas12.xml` is used as the geometry.
The script must be executed from the `compact` directory.
<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="clas12" title="CLAS12"
author="Whitney Armstrong"
url=""
status="development"
version="$Id: compact.xml v1.0 2016-12-21$">
<comment>CLAS12 detector</comment>
</info>
<includes>
<gdmlFile ref="clas12_components/elements.xml" />
<gdmlFile ref="clas12_components/materials.xml" />
</includes>
<define>
<constant name="world_side" value="30000*mm"/>
<constant name="world_x" value="world_side"/>
<constant name="world_y" value="world_side"/>
<constant name="world_z" value="world_side"/>
<constant name="CrossingAngle" value="0.020*rad"/>
<constant name="CaloSides" value="12"/>
<constant name="MuonSides" value="8"/>
<constant name="EcalBarrel_ID" value="6"/>
<constant name="EcalBarrel_rmin" value="135.0*cm"/>
<constant name="EcalBarrel_zmax" value="282.50*cm"/>
<constant name="EcalEndcap_ID" value="7"/>
<constant name="EcalEndcap_rmin" value="21.0*cm"/>
<!-- Correction from going from inner circle to outer circle -->
<constant name="EcalEndcap_rmax" value="(EcalBarrel_rmin - 1.5*cm) / (cos(pi/CaloSides))"/>
<constant name="EcalEndcap_zmin" value="265.70*cm"/>
<constant name="HcalBarrel_ID" value="8"/>
<constant name="HcalBarrel_rmin" value="141.90*cm"/>
<constant name="HcalBarrel_layers" value="(int) 75"/>
<constant name="HcalBarrel_layer_thickness" value="1.0*cm + 0.65*cm"/>
<constant name="HcalEndcap_ID" value="9"/>
<constant name="HcalEndcap_zmin" value="EcalBarrel_zmax + 4.0*cm"/> <!-- Gap for cables -->
<constant name="HcalEndcap_rmin" value="50.0*cm"/>
<!-- Correction from going from inner circle to outer circle -->
<constant name="HcalEndcap_rmax" value="(HcalBarrel_rmin + HcalBarrel_layers * HcalBarrel_layer_thickness) / (cos(pi/CaloSides))"/>
<constant name="HcalEndcap_layers" value="60"/>
<constant name="HcalEndcap_layer_thickness" value="2.0*cm + 0.65*cm"/>
<constant name="HcalEndcap_zmax" value="HcalEndcap_zmin + HcalEndcap_layers * HcalEndcap_layer_thickness"/>
<constant name="HcalPlug_ID" value="10"/>
<constant name="tracking_region_radius" value="EcalBarrel_rmin - 1.0*mm"/>
<constant name="tracking_region_zmax" value="EcalEndcap_zmin - 1.0*mm"/>
<constant name="VXD_CF_sensor" value="0.026*cm"/>
<constant name="VXD_CF_support" value="0.05*cm"/>
<constant name="SolenoidBarrelInnerRadius" value="1000*cm"/>
<constant name="SolenoidCoilOuterZ" value="300*cm"/>
<constant name="SolenoidBarrelInnerCryostatThickness" value="5.0*cm"/>
<constant name="SolenoidBarrelInnerAirgapThickness" value="17.5*cm"/>
<constant name="SolenoidBarrelAlConductorThickness" value="40.0*cm"/>
<constant name="SolenoidBarrelQuenchbackThickness" value="3.0*cm"/>
<constant name="SolenoidBarrelOuterAirgapThickness" value="20.0*cm"/>
<constant name="SolenoidBarrelOuterCryostatThickness" value="4.0*cm"/>
<constant name="SolenoidEndcapCryostatThickness" value="6.0*cm"/>
<constant name="SolenoidEndcapAirgapThickness" value="12.0*cm"/>
<constant name="SolenoidBarrelOuterZ" value="SolenoidCoilOuterZ+SolenoidEndcapAirgapThickness"/>
<constant name="SolenoidBarrelConductorInnerRadius" value="SolenoidBarrelInnerRadius + SolenoidBarrelInnerCryostatThickness + SolenoidBarrelInnerAirgapThickness"/>
<constant name="SolenoidBarrelOuterCryostatInnerRadius" value="SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness + SolenoidBarrelQuenchbackThickness"/>
<constant name="SolenoidBarrelOuterRadius" value="SolenoidBarrelOuterCryostatInnerRadius + SolenoidBarrelOuterAirgapThickness + SolenoidBarrelOuterCryostatThickness"/>
<constant name="SolenoidalFieldRadius" value="(SolenoidBarrelConductorInnerRadius + SolenoidBarrelAlConductorThickness / 2.0)"/>
<constant name="MuonBarrel_ID" value="11"/>
<constant name="MuonBarrel_rmin" value="SolenoidBarrelOuterRadius + 1.0*cm"/>
<constant name="MuonBarrel_zmax" value="SolenoidBarrelOuterZ + SolenoidEndcapCryostatThickness"/>
<constant name="MuonBarrel_layers" value="15"/>
<constant name="MuonBarrel_layer_thickness" value="10.0*cm + 4.0*cm"/>
<constant name="MuonEndcap_ID" value="12"/>
<constant name="MuonEndcap_zmin" value="MuonBarrel_zmax + 10.0*cm"/> <!-- Space for cables etc. -->
<constant name="MuonEndcap_rmin" value="69.0*cm"/> <!-- Space for QD0 and anti-solenoid-->
<!-- Correction from going from inner circle to outer circle -->
<constant name="MuonEndcap_rmax" value="(MuonBarrel_rmin + 57.0*cm + MuonBarrel_layers*MuonBarrel_layer_thickness) / (cos(pi/MuonSides))"/>
<constant name="MuonEndcap_layers" value="18"/>
<constant name="MuonEndcap_layer_thickness" value="10.0*cm + 4.0*cm"/>
<constant name="MuonEndcap_zmax" value="MuonEndcap_zmin + MuonEndcap_layers * MuonEndcap_layer_thickness"/>
<constant name="LumiCal_rmin" value="6.4*cm"/>
<constant name="LumiCal_rmax" value="EcalEndcap_rmin + 3.0*cm"/>
<constant name="LumiCal_zmin" value="HcalEndcap_zmin"/>
<constant name="LumiCal_thickness" value="20*0.371*cm + 15*0.643*cm"/>
<constant name="LumiCal_zmax" value="LumiCal_zmin + LumiCal_thickness"/>
<constant name="LumiCalElectronics_rmax" value="LumiCal_rmax+5.0*cm"/>
<constant name="SupportTube_thickness" value="1.0*cm"/>
<constant name="ForwardVacuumValve_thickness" value="36.0*cm"/>
<constant name="ForwardShielding_thickness" value="5.0*cm"/>
<constant name="ForwardMask_thickness" value="10.0*cm"/>
<constant name="ForwardMask_zmin" value="LumiCal_zmax + ForwardShielding_thickness + ForwardVacuumValve_thickness"/>
<constant name="VertexSupport_r1" value="16.87*cm"/>
<constant name="VertexSupport_r2" value="18.42*cm"/>
<constant name="VertexSupport_zmax" value="240.48*cm"/>
<constant name="VertexBarrel_ID" value="1"/>
<constant name="VertexBarrel_zmax" value="240.0*cm"/>
<constant name="VertexBarrel_r1" value="2.7*cm"/>
<constant name="VertexBarrel_r2" value="3.8*cm"/>
<constant name="VertexBarrel_r3" value="5.1*cm"/>
<constant name="VertexBarrel_r4" value="6.4*cm"/>
<constant name="VertexBarrel_r5" value="7.7*cm"/>
<constant name="CentralBeamPipe_zmax" value="23.0*cm"/>
<constant name="CentralBeamPipe_rmax" value="VertexBarrel_r1 - 0.2*cm"/>
<constant name="CentralBeamPipe_thickness" value="CentralBeamPipe_rmax * 0.02"/> <!-- 1% of the diameter -->
<constant name="CentralBeamPipe_rmin" value="CentralBeamPipe_rmax - CentralBeamPipe_thickness"/>
<constant name="BeamPipe_thickness" value="0.4*cm"/>
<constant name="BeamPipe_endThickness" value="0.1*cm"/>
<constant name="BeamPipe_zmax" value="LumiCal_zmin - 0.5*cm"/>
<constant name="BeamPipe_rmax" value="19.0*cm"/>
<constant name="BeamPipe_rmin" value="BeamPipe_rmax - BeamPipe_thickness"/>
<constant name="bp_cone_slope" value="(BeamPipe_rmax-CentralBeamPipe_rmax)/(tracking_region_zmax-CentralBeamPipe_zmax)"/>
<constant name="BeamPipe_zmin" value="CentralBeamPipe_zmax + (BeamPipe_thickness - CentralBeamPipe_thickness)/bp_cone_slope"/>
<constant name="BeamPipeLiner_thickness" value="0.0*cm"/>
<constant name="VertexEndcap_ID" value="2"/>
<constant name="VertexEndcap_rmax" value="11.5*cm"/>
<constant name="VertexEndcap_z1" value="12.0*cm"/>
<constant name="VertexEndcap_z2" value="16.0*cm"/>
<constant name="VertexEndcap_z3" value="20.0*cm"/>
<constant name="VertexEndcap_z4" value="24.0*cm"/>
<constant name="VertexEndcap_offset" value="0.2*cm"/>
<constant name="VertexEndcapModules" value="16"/>
<constant name="VertexEndcap_rmin1" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
<constant name="VertexEndcap_rmin2" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
<constant name="VertexEndcap_rmin3" value="CentralBeamPipe_rmax + VertexEndcap_offset"/>
<constant name="VertexEndcap_rmin4" value="(VertexEndcap_z4 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + VertexEndcap_offset"/>
<constant name="SiTrackerBarrel_ID" value="3"/>
<constant name="SiTrackerEndcap_ID" value="4"/>
<constant name="ForwardTracker_ID" value="5"/>
<constant name="ForwardTrackerModules" value="16"/>
<constant name="ForwardTracker_rmax" value="16.87*cm"/>
<constant name="ForwardTracker_z1" value="28.0*cm"/>
<constant name="ForwardTracker_z2" value="50.0*cm"/>
<constant name="ForwardTracker_z3" value="83.0*cm"/>
<constant name="ForwardTracker_offset" value="0.2*cm"/>
<constant name="ForwardTracker_rmin1" value="(ForwardTracker_z1 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
<constant name="ForwardTracker_rmin2" value="(ForwardTracker_z2 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
<constant name="ForwardTracker_rmin3" value="(ForwardTracker_z3 - CentralBeamPipe_zmax)*bp_cone_slope + CentralBeamPipe_rmax + ForwardTracker_offset"/>
<constant name="VertexService_zmin" value="ForwardTracker_z1 + 1.0*cm"/>
<constant name="VertexService_zmax" value="VertexService_zmin + 2.0*cm"/>
<constant name="VertexServiceThickness" value="0.3*cm"/>
<constant name="VertexCableThickness" value="0.005*cm"/>
<constant name="BeamCal_rmax" value="13.0*cm"/>
<constant name="BeamCal_zmin" value="ForwardMask_zmin + ForwardMask_thickness"/>
<constant name="IncomingBP_radius" value="0.25*cm"/>
<constant name="IncomingBP_thickness" value="0.05*cm"/>
<constant name="OutgoingBP_radius" value="tan(CrossingAngle/2/rad)*BeamCal_zmin"/>
<constant name="OutgoingBP_thickness" value="0.1*cm"/>
<constant name="BeamCal_crossingAngle" value="CrossingAngle"/>
<constant name="BeamCal_outgoing_r" value="OutgoingBP_radius + 0.05*cm"/>
<constant name="BeamCal_incoming_r" value="IncomingBP_radius + 0.05*cm"/>
<constant name="Place_Center" value="0*cm"/>
</define>
<limits>
<limitset name="cal_limits">
<limit name="step_length_max" particles="*" value="5.0" unit="mm" />
</limitset>
<limitset name="SiTrackerBarrelRegionLimitSet">
<limit name="step_length_max" particles="*" value="5.0" unit="mm" />
<limit name="track_length_max" particles="*" value="5.0" unit="mm" />
<limit name="time_max" particles="*" value="5.0" unit="ns" />
<limit name="ekin_min" particles="*" value="0.01" unit="MeV" />
<limit name="range_min" particles="*" value="5.0" unit="mm" />
</limitset>
</limits>
<regions>
<region name="SiTrackerBarrelRegion" eunit="MeV" lunit="mm" cut="0.001" threshold="0.001">
<limitsetref name="SiTrackerBarrelRegionLimitSet"/>
</region>
</regions>
<comment>Common Generic visualization attributes</comment>
<display>
<vis name="InvisibleNoDaughters" showDaughters="false" visible="false"/>
<vis name="InvisibleWithDaughters" showDaughters="true" visible="false"/>
<vis name="GreenVis" alpha="0.5" r= "0.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
<vis name="RedVis" alpha="0.5" r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
<vis name="BlueVis" alpha="0.5" r= "0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
<vis name="OrangeVis" alpha="0.5" r= "1.0" g="0.45" b="0.0" showDaughters="true" visible="true"/>
<vis name="RedGreenVis" alpha="0.5" r= "1.0" g="1.0" b="0.0" showDaughters="true" visible="true"/>
<vis name="BlueGreenVis" alpha="0.5" r= "0.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
<vis name="PurpleVis" alpha="0.5" r= "1.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
<vis name="DoubleRedG" alpha="0.5" r= "2.0" g=".10" b="0.0" showDaughters="true" visible="true"/>
<vis name="RBG015" alpha="0.5" r= "0.0" g=".2" b="1.0" showDaughters="true" visible="true"/>
<vis name="RBG510" alpha="0.5" r= "1.0" g=".2" b="0.0" showDaughters="true" visible="true"/>
<vis name="RBG" alpha="0.5" r= "1.0" g="1.0" b="1.0" showDaughters="true" visible="true"/>
<vis name="GrayVis" alpha="0.5" r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/>
</display>
<!-- Definition of the used visualization attributes -->
<display>
<vis name="SiVertexModuleVis" alpha="1.0" r="1" g="1" b="0.6" drawingStyle="wireframe" showDaughters="true" visible="true"/>
<!--vis name="SiVertexModuleVis" alpha="1.0" r="1" g=".75" b="0" showDaughters="true" visible="true"/-->
<vis name="SiVertexSensitiveVis" alpha="1.0" r="1" g="0.2" b="0.2" drawingStyle="solid" showDaughters="true" visible="true"/>
<vis name="SiVertexPassiveVis" alpha="1.0" r="0" g="0.2" b="1" drawingStyle="solid" showDaughters="true" visible="true"/>
<vis name="SiVertexLayerVis" alpha="1.0" r="1" g="0.75" b="0" drawingStyle="solid" showDaughters="true" visible="true"/>
<!--vis name="SiVertexLayerVis" alpha=".10" r="0" g="1" b=".60" drawingStyle="wireframe" showDaughters="true" visible="false"/-->
</display>
<comment>Additional design specific material definitions</comment>
<!--<include ref="SiD/SiD_Materials.xml"/>-->
<detectors>
<detector id="77" name="StandInVolumes" vis="GreenVis" type="StandInGeometryCLAS12" >
</detector>
<detector id="1" name="ALERT" vis="RedVis" type="ALERTRecoilChamber" >
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<!--
<readout name="SiVertexBarrelHits">
<id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
</readout>
<readout name="SiTrackerBarrelHits">
<id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
</readout>
<readout name="SiTrackerEndcapHits">
<id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
</readout>
<readout name="SiVertexEndcapHits">
<id>system:8,barrel:3,layer:4,wedge:6,module:6,sensor:1,side:32:-2,strip:26</id>
</readout>
-->
</readouts>
<plugins>
<!--
<plugin name="DD4hep_SiTrackerBarrelSurfacePlugin">
<argument value="SiVertexBarrel" />
<argument value="dimension=2" />
</plugin>
<plugin name="DD4hep_SiTrackerEndcapSurfacePlugin">
<argument value="SiVertexEndcap"/>
<argument value="dimension=1"/>
</plugin>
<plugin name="DD4hep_SiTrackerBarrelSurfacePlugin">
<argument value="SiTrackerBarrel"/>
<argument value="dimension=2"/>
</plugin>
<plugin name="DD4hepVolumeManager" />
<plugin name="InstallSurfaceManager" />
-->
</plugins>
<fields>
<field name="GlobalSolenoid" type="solenoid"
inner_field="4.0*tesla"
outer_field="-0.6*tesla"
zmax="SolenoidCoilOuterZ"
outer_radius="SolenoidalFieldRadius">
</field>
</fields>
</lccdd>
<!-- ====================================================================== -->
<!-- -->
<!-- XML description of the complete SiD tracker detector -->
<!-- of the SiD linear collider detector design. -->
<!-- -->
<!-- Contained are the required -->
<!-- ++ global constants used uniquely by this module -->
<!-- ++ visualization attributes -->
<!-- ++ the definition of the readout structure and the -->
<!-- readout segmentation (if necessary) -->
<!-- ++ the include statements for the sensitive detectors and -->
<!-- the corresponding support structure(s) -->
<!-- -->
<!-- -->
<!-- @author M.Frank -->
<!-- @date 14/11/2014 -->
<!-- -->
<!-- ====================================================================== -->
<lccdd>
<!-- Definition of global dictionary constants -->
<define>
</define>
<!-- Definition of the used visualization attributes -->
<display>
<vis name="EcalBarrelVis" alpha="1.0" r="1.0" g="1.0" b="0.0" showDaughters="true" visible="false"/>
<vis name="EcalStaveVis" alpha="1.0" r="0.0" g="0.0" b="1.0" showDaughters="true" visible="true"/>
<vis name="EcalLayerVis" alpha="1.0" r="0.8" g="0.8" b="0.0" showDaughters="true" visible="true"/>
<vis name="EcalSensitiveVis" alpha="1.0" r="0.7" g="0.3" b="0.0" showDaughters="false" visible="true"/>
<vis name="EcalAbsorberVis" alpha="1.0" r="0.4" g="0.4" b="0.0" showDaughters="false" visible="true"/>
<!--vis name="EcalEndcapVis" alpha="1.0" r="0.77" g="0.74" b="0.86" showDaughters="true" visible="true"/-->
</display>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<readout name="EcalBarrelHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
<!--readout name="EcalEndcapHits">
<segmentation type="CartesianGridXY" grid_size_x="3.5" grid_size_y="3.5" />
<id>system:8,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout-->
</readouts>
<!-- Includes for sensitives and support -->
<include ref="JLAB_EMcalBarrel.xml"/>
<!--include ref="SiD_EcalEndcap.xml"/-->
<!--
-->
</lccdd>
<!-- ====================================================================== -->
<!-- -->
<!-- XML description of the electromagnetic calorimeter barrel detector -->
<!-- of the SiD linear collider detector design. -->
<!-- -->
<!-- ====================================================================== -->
<detectors>
<detector id="EcalBarrel_ID" name="EcalBarrel" type="DD4hep_EcalBarrel" readout="EcalBarrelHits" vis="EcalBarrelVis" calorimeterType="EM_BARREL">
<comment>Electromagnetic Calorimeter Barrel</comment>
<dimensions numsides="(int) CaloSides" rmin="EcalBarrel_rmin" z="EcalBarrel_zmax*2" />
<staves vis="EcalStaveVis"/>
<layer repeat="1" vis="EcalLayerVis">
<slice material = "Silicon" thickness = "0.032*cm" sensitive="yes" limits="cal_limits" vis="EcalSensitiveVis"/>
<slice material = "Copper" thickness = "0.005*cm" vis="EcalAbsorberVis"/>
<slice material = "Kapton" thickness = "0.030*cm" vis="EcalAbsorberVis"/>
<slice material = "Air" thickness = "0.033*cm" vis="InvisibleNoDaughters"/>
</layer>
<layer repeat="20" vis="EcalLayerVis">
<slice material = "TungstenDens24" thickness = "0.25*cm" vis="EcalAbsorberVis"/>
<slice material = "Air" thickness = "0.025*cm" vis="InvisibleNoDaughters"/>
<slice material = "Silicon" thickness = "0.032*cm" sensitive="yes" limits="cal_limits" vis="EcalSensitiveVis"/>
<slice material = "Copper" thickness = "0.005*cm" vis="EcalAbsorberVis"/>
<slice material = "Kapton" thickness = "0.030*cm" vis="EcalAbsorberVis"/>
<slice material = "Air" thickness = "0.033*cm" vis="InvisibleNoDaughters"/>
</layer>
<layer repeat="10" vis="EcalLayerVis">
<slice material = "TungstenDens24" thickness = "0.5*cm" vis="EcalAbsorberVis"/>
<slice material = "Air" thickness = "0.025*cm" vis="InvisibleNoDaughters"/>
<slice material = "Silicon" thickness = "0.032*cm" sensitive="yes" limits="cal_limits" vis="EcalSensitiveVis"/>
<slice material = "Copper" thickness = "0.005*cm" vis="EcalAbsorberVis"/>
<slice material = "Kapton" thickness = "0.030*cm" vis="EcalAbsorberVis"/>
<slice material = "Air" thickness = "0.033*cm" vis="InvisibleNoDaughters"/>
</layer>
</detector>
</detectors>
<!-- ====================================================================== -->
<!-- -->
<!-- XML description of the complete SiD tracker detector -->
<!-- of the SiD linear collider detector design. -->
<!-- -->
<!-- Contained are the required -->
<!-- ++ global constants used uniquely by this module -->
<!-- ++ visualization attributes -->
<!-- ++ the definition of the readout structure and the -->
<!-- readout segmentation (if necessary) -->
<!-- ++ the include statements for the sensitive detectors and -->
<!-- the corresponding support structure(s) -->
<!-- -->
<!-- -->
<!-- @author M.Frank -->
<!-- @date 14/11/2014 -->
<!-- -->
<!-- ====================================================================== -->
<lccdd>
<!-- Definition of the used visualization attributes -->
<display>
<vis name="SolenoidBarrelLayerVis" alpha="1" r="0" g="0.3" b="0.3" showDaughters="false" visible="true"/>
<vis name="SolenoidCoilEndsVis" alpha="1" r="0" g="0.9" b="0.9" showDaughters="false" visible="true"/>
<vis name="AntiSolenoidVis" alpha="1" r="0.3" g="1" b="1" showDaughters="false" visible="true"/>
</display>
<!-- Includes for sensitives and support -->
<detectors>
<comment>Solenoid</comment>
<detector name="SolenoidCoilBarrel" type="DD4hep_MultiLayerTracker" insideTrackingVolume="false" reflect="true">
<layer id="1" inner_r="SolenoidBarrelInnerRadius" outer_z="SolenoidBarrelOuterZ" vis="SolenoidBarrelLayerVis">
<slice material="Steel235" thickness="SolenoidBarrelInnerCryostatThickness" />
<slice material="Vacuum" thickness="SolenoidBarrelInnerAirgapThickness" />
</layer>
<layer id="2" inner_r="SolenoidBarrelConductorInnerRadius" outer_z="SolenoidCoilOuterZ" vis="SolenoidBarrelLayerVis">
<slice material="Aluminum" thickness="SolenoidBarrelAlConductorThickness" />
<slice material="Aluminum" thickness="SolenoidBarrelQuenchbackThickness" />
</layer>