Skip to content
Snippets Groups Projects
Commit 6dac6e04 authored by Jihee Kim's avatar Jihee Kim
Browse files

Merge branch 'master' of https://eicweb.phy.anl.gov/EIC/NPDet

parents aeb79414 0e020f3b
Branches
Tags
No related merge requests found
Showing
with 1025 additions and 328 deletions
......@@ -32,6 +32,7 @@ endif()
# ---------------------------------------------------------------------------
# load additional OS dependent settings
include(cmake/os.cmake)
include(cmake/root.cmake)
#----------------------------------------------------------------------------
# Find Libraries
......
......@@ -6,7 +6,7 @@
/gps/number 1
/gps/ene/type Gauss
/gps/ene/mono 3.0 GeV
/gps/ene/mono 5.0 GeV
/gps/ene/sigma 2.0 GeV
/gps/pos/type Volume
......@@ -16,7 +16,7 @@
/gps/pos/halfz 0.01 cm
/gps/position 0 0 0
#/gps/direction 1 0 0
#/gps/direction 0 0.1 1
/gps/ang/type iso
/run/beamOn 100
#!/bin/bash
rm -f simple_example_out.slcio
rm -f simple_example_out.root
#ddsim --runType run --enableG4GPS \
# --macroFile gps.mac \
......@@ -15,7 +13,7 @@ rm -f simple_example_out.root
ddsim --runType run --enableG4GPS \
--macroFile gps.mac \
--compactFile ./solid.xml \
--compactFile ./solid_sidis.xml \
--outputFile simple_example_out.root
#anajob example1_ddsim_out.slcio | tail -n 30 > collections.txt
......
......@@ -146,4 +146,10 @@
<composite n="3" ref="O" />
</material>
<material name="EJ204">
<D value="1.032" unit="g/cm3" />
<composite n="521" ref="H" />
<composite n="474" ref="C" />
</material>
</materials>
......@@ -232,7 +232,6 @@
<detector id="77" name="StandInVolumes" vis="GreenVis" type="StandInGeometrySOLID" >
</detector>
<!--
<detector id="2" name="GEMTracker_PVDIS" vis="RedVis" type="GEMTrackerDiscSOLID" readout="GEMTrackerHits" >
<layer id="1" z="157.5*cm" inner_r="48.0*cm" outer_r="122.0*cm" phi0_offset=" 0.5*deg" />
<layer id="2" z="185.5*cm" inner_r="59.0*cm" outer_r="143.0*cm" phi0_offset=" 0.0*deg" />
......@@ -240,14 +239,19 @@
<layer id="4" z="306 *cm" inner_r="105.0*cm" outer_r="230.0*cm" phi0_offset="-0.5*deg" />
<layer id="5" z="315 *cm" inner_r="109.0*cm" outer_r="237.0*cm" phi0_offset="-0.5*deg" />
</detector>
-->
<detector id="2" name="GEMTracker_SIDIS" vis="RedVis" type="GaplessGEMTrackerDisc" readout="GEMTrackerHits" >
<layer id="1" z="-175 *cm" inner_r="36*cm" outer_r="87.0*cm" phi0_offset="0.0*deg" Nmodules="30" />
<layer id="2" z="-150 *cm" inner_r="21*cm" outer_r="98.0*cm" phi0_offset="0.0*deg" Nmodules="24" />
<layer id="3" z="-119 *cm" inner_r="25*cm" outer_r="112.0*cm" phi0_offset="0.0*deg" Nmodules="21" />
<layer id="4" z="-68 *cm" inner_r="32*cm" outer_r="135.0*cm" phi0_offset="0.0*deg" Nmodules="21" />
<layer id="5" z="5 *cm" inner_r="42*cm" outer_r="100.0*cm" phi0_offset="0.0*deg" Nmodules="29" />
<layer id="6" z="92 *cm" inner_r="55*cm" outer_r="123.0*cm" phi0_offset="0.0*deg" Nmodules="25" />
<detector id="3" name="FAEC_SIDIS" type="EMCalorimeterSoLID" readout="EMCalHits" vis="InvisibleWithDaughters" >
<comment>Foward Angle Electromagnetic Calorimeter (FAEC) for PVDIS</comment>
<dimensions rmin="110*cm" rmax="265*cm" z0="320*cm" rmod="6.25*cm" rtol="1.0*cm" />
<layer repeat="1" vis="InvisibleWithDaughters">
<slice material = "Lead" thickness = "1.12*cm" vis="BlueVis"/>
<slice material = "EJ204" thickness = "6.25*cm" vis="PurpleVis" sensitive="yes"/>
</layer>
<layer repeat="194" vis="GreenVis">
<slice material = "Lead" thickness = "0.05*cm"/>
<slice material = "EJ204" thickness = "0.15*cm" sensitive="yes" limits="cal_limits"/>
<slice material = "Air" thickness = "0.012*2*cm"/>
</layer>
</detector>
</detectors>
......@@ -257,6 +261,9 @@
<readout name="GEMTrackerHits">
<id>system:8,layer:5,module:14,sensor:2,side:32:-2,strip:24</id>
</readout>
<readout name="EMCalHits">
<id>system:6,barrel:3,module:4,layer:6,slice:5,x:32:-16,y:-16</id>
</readout>
<!--
<readout name="SiTrackerBarrelHits">
<id>system:8,barrel:3,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
......
<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="solid" title="SoLID"
author="Whitney Armstrong"
url=""
status="development"
version="$Id: compact.xml v1.0 2016-12-21$">
<comment>SoLID detector</comment>
</info>
<includes>
<gdmlFile ref="solid_components/elements.xml" />
<gdmlFile ref="solid_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="tracker_region_zmax" value="5*m"/>
<constant name="tracker_region_rmax" value="5*m"/>
<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="150*cm"/>
<constant name="SolenoidCoilOuterZ" value="300*cm"/>
<constant name="SolenoidBarrelInnerCryostatThickness" value="1.0*cm"/>
<constant name="SolenoidBarrelInnerAirgapThickness" value="1.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="StandInGeometrySOLID" > </detector>-->
<!--<detector id="2" name="GEMTracker_SIDIS" vis="RedVis" type="GaplessGEMTrackerDisc" readout="GEMTrackerHits" >
<layer id="1" z="-175 *cm" inner_r="36*cm" outer_r="87.0*cm" phi0_offset="0.0*deg" Nmodules="30" />
<layer id="2" z="-150 *cm" inner_r="21*cm" outer_r="98.0*cm" phi0_offset="0.0*deg" Nmodules="24" />
<layer id="3" z="-119 *cm" inner_r="25*cm" outer_r="112.0*cm" phi0_offset="0.0*deg" Nmodules="21" />
<layer id="4" z="-68 *cm" inner_r="32*cm" outer_r="135.0*cm" phi0_offset="0.0*deg" Nmodules="21" />
<layer id="5" z="5 *cm" inner_r="42*cm" outer_r="100.0*cm" phi0_offset="0.0*deg" Nmodules="29" />
<layer id="6" z="92 *cm" inner_r="55*cm" outer_r="123.0*cm" phi0_offset="0.0*deg" Nmodules="25" />
</detector>
-->
<detector id="3" name="LAEC_SIDIS" type="EMCalorimeterSoLID" readout="LAECalHits" vis="InvisibleWithDaughters" >
<comment>Large Angle Electromagnetic Calorimeter (LAEC) for SIDIS</comment>
<dimensions rmin="83*cm" rmax="140*cm" z0="-65*cm" rmod="6.25*cm" rtol="1.0*cm" />
<layer repeat="1" vis="InvisibleWithDaughters">
<slice material = "Lead" thickness = "1.12*cm" vis="BlueVis"/>
<slice material = "EJ204" thickness = "6.25*cm" vis="PurpleVis" sensitive="yes"/>
</layer>
<layer repeat="194" vis="GreenVis">
<slice material = "Lead" thickness = "0.05*cm"/>
<slice material = "EJ204" thickness = "0.15*cm" sensitive="yes" limits="cal_limits"/>
<slice material = "Air" thickness = "0.012*2*cm"/>
</layer>
</detector>
<detector id="4" name="FAEC_SIDIS" type="EMCalorimeterSoLID" readout="EMCalHits" vis="InvisibleWithDaughters" >
<comment>Forward Angle Electromagnetic Calorimeter (FAEC) for SIDIS</comment>
<dimensions rmin="98*cm" rmax="230*cm" z0="415*cm" rmod="6.25*cm" rtol="1.0*cm" />
<layer repeat="1" vis="InvisibleWithDaughters">
<slice material = "Lead" thickness = "1.12*cm" vis="BlueVis"/>
<slice material = "EJ204" thickness = "6.25*cm" vis="PurpleVis" sensitive="yes"/>
</layer>
<layer repeat="194" vis="GreenVis">
<slice material = "Lead" thickness = "0.05*cm"/>
<slice material = "EJ204" thickness = "0.15*cm" sensitive="yes" limits="cal_limits"/>
<slice material = "Air" thickness = "0.012*2*cm"/>
</layer>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<readout name="EMCalHits">
<segmentation type="NoSegmentation" />
<id>system:6,module:20,layer:10,slice:5,x:48:-8,y:-8</id>
</readout>
<readout name="LAECalHits">
<segmentation type="NoSegmentation" />
<id>system:6,module:20,layer:10,slice:5,x:48:-8,y:-8</id>
</readout>
<!--
<readout name="GEMTrackerHits">
<id>system:6,layer:5,module:14,sensor:2,side:32:-2,strip:24</id>
</readout>
<readout name="LAECalHits">
<id>system:6,module:24,layer:6,slice:5</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="1.5*tesla"
outer_field="-0.6*tesla"
zmax="SolenoidCoilOuterZ"
outer_radius="SolenoidalFieldRadius">
</field>
</fields>
</lccdd>
//==========================================================================
// SoLID Electromagnetic Calorimeter Implementation
//--------------------------------------------------------------------------
// Author : C. Peng
//==========================================================================
#include "DD4hep/DetFactoryHelper.h"
#include "DD4hep/Printout.h"
#include "XML/Layering.h"
#include "TMath.h"
#include "DDRec/Surface.h"
#include "DDRec/DetectorData.h"
#include "Math/Point2D.h"
#include <algorithm>
using namespace std;
using namespace dd4hep;
using namespace dd4hep::rec;
typedef ROOT::Math::XYPoint Point;
// checks if a point is inside a unit hexagon
// lside = 1, center at (0, 0), and vertices at (1, 0), (-1, 0)
template<class T>
bool in_hex(const T &p)
{
// Check length (squared) against inner and outer radius
double l2 = p.x() * p.x() + p.y() * p.y();
if (l2 > 1.0) return false;
if (l2 < 0.75) return true; // (sqrt(3)/2)^2 = 3/4
// Check against borders
double py = p.y() * 1.15470053838; // 2/sqrt(3)
if (py > 1.0 || py < -1.0) return false;
double px = 0.5 * py + p.x();
if (px > 1.0 || px < -1.0) return false;
if ((py - px) > 1.0 || (py - px) < -1.0) return false;
return true;
}
// recursively fill hexagon in a ring
void add_hex(Point p, std::vector<Point> &res, double lside, double rmin, double rmax, double tol = 1e-6)
{
// center is outside of the boundaries
if (p.r() > (rmax + tol) || p.r() < (rmin - tol)) { return; }
// already exist
for (auto &pt : res) {
if (in_hex((p - pt)/lside)) { return; }
}
// add into container
res.emplace_back(p);
// recursively check neigbors, 2.*sqrt(3)/2.*lside
double d = lside*1.732050807568877;
// pi/3
static double sext = 1.0471975512;
for (int i = 0; i < 6; ++i) {
add_hex(Point(p.x() + d*sin(i*sext), p.y() + d*cos(i*sext)), res, lside, rmin, rmax, tol);
}
}
// create the detector
static Ref_t createDetector(Detector& desc, xml::Handle_t handle, SensitiveDetector sens)
{
static double tolerance = 0e0;
Layering layering(handle);
xml_det_t x_det = handle;
Material air = desc.air();
int det_id = x_det.id();
string det_name = x_det.nameStr();
xml_comp_t x_dim = x_det.dimensions();
double rmin = x_dim.rmin();
double rmax = x_dim.rmax();
double rmod = x_dim.attr<double>(_Unicode(rmod));
double rtol = x_dim.attr<double>(_Unicode(rtol));
double det_z0 = x_dim.z0();
double len_z = layering.totalThickness();
// detector volume
DetElement sdet(det_name, det_id);
Volume motherVol = desc.pickMotherVolume(sdet);
Tube tube(rmin - rmod, rmax + rmod, len_z/2.);
Volume envelope(det_name, tube, air);
PlacedVolume env_phv = motherVol.placeVolume(envelope, Position(0., 0., det_z0 + len_z/2.));
env_phv.addPhysVolID("system", det_id);
sdet.setPlacement(env_phv);
sens.setType("calorimeter");
// a modular vollume
PolyhedraRegular m_hex(6, 0., rmod, len_z);
Volume mod_vol("module", m_hex, air);
DetElement mod_DE("module0", 0);
// layer start point
double l_pos_z = -len_z/2.;
int l_num = 1;
// Loop over the sets of layer elements in the detector.
for (xml_coll_t li(x_det,_U(layer)); li; ++li) {
xml_comp_t x_layer = li;
int repeat = x_layer.repeat();
// Loop over number of repeats for this layer.
for (int j = 0; j < repeat; j++) {
string l_name = _toString(l_num,"layer%d");
double l_thickness = layering.layer(l_num-1)->thickness(); // Layer's thickness.
Position l_pos(0, 0, l_pos_z + l_thickness/2); // Position of the layer.
PolyhedraRegular l_hex(6, 0., rmod, l_thickness);
Volume l_vol(l_name,l_hex,air);
DetElement layer_DE(mod_DE, l_name, det_id);
// Loop over the sublayers or slices for this layer.
int s_num = 1;
double s_pos_z = -(l_thickness / 2);
for (xml_coll_t si(x_layer,_U(slice)); si; ++si) {
xml_comp_t x_slice = si;
string s_name = _toString(s_num,"slice%d");
double s_thick = x_slice.thickness();
PolyhedraRegular s_hex(6, 0., rmod, s_thick);
Volume s_vol(s_name, s_hex, desc.material(x_slice.materialStr()));
DetElement slice(layer_DE, s_name, det_id);
if (x_slice.isSensitive()) {
s_vol.setSensitiveDetector(sens);
}
slice.setAttributes(desc, s_vol, x_slice.regionStr(), x_slice.limitsStr(), x_slice.visStr());
s_vol.setVisAttributes(desc.invisible());
// Slice placement.
PlacedVolume slice_phv = l_vol.placeVolume(s_vol, Position(0, 0, s_pos_z + s_thick/2));
slice_phv.addPhysVolID("slice", s_num);
slice.setPlacement(slice_phv);
// Increment Z position of slice.
s_pos_z += s_thick;
// Increment slice number.
++s_num;
}
// Set region, limitset, and vis of layer.
layer_DE.setAttributes(desc, l_vol, x_layer.regionStr(), x_layer.limitsStr(), x_layer.visStr());
l_vol.setVisAttributes(desc.invisible());
PlacedVolume layer_phv = mod_vol.placeVolume(l_vol, l_pos);
layer_phv.addPhysVolID("layer", l_num);
layer_DE.setPlacement(layer_phv);
// Increment to next layer Z position.
l_pos_z += l_thickness;
++l_num;
}
}
// automatically fill the ring, start with a seed module centered at (0., 0.)
std::vector<Point> res;
int nm = int(rmin/(rmod*sqrt(3.))) + 1;
add_hex(Point(0., nm*rmod*sqrt(3.)), res, rmod, rmin, rmax, rtol);
// std::cout << det_name << ": " << res.size() << " modules." << std::endl;
// sort for a better organized id
sort(res.begin(), res.end(),
[](const Point &p1, const Point &p2) {
if (p1.y() == p2.y()) { return p1.x() < p2.x(); }
return p1.y() < p2.y();
});
int nmod = 0;
for (auto &p : res) {
PlacedVolume pv = envelope.placeVolume(mod_vol, Position(p.x(), p.y(), 0.));
pv.addPhysVolID("system", det_id);
pv.addPhysVolID("module", nmod+1);
auto amod = (nmod == 0 ? mod_DE : mod_DE.clone("module" + std::to_string(nmod+1), nmod+1));
amod.setPlacement(pv);
sdet.add(amod);
nmod++;
}
// Set envelope volume attributes.
envelope.setAttributes(desc, x_det.regionStr(), x_det.limitsStr(), x_det.visStr());
return sdet;
}
DECLARE_DETELEMENT(EMCalorimeterSoLID, createDetector)
......@@ -5,12 +5,14 @@ cmake_minimum_required(VERSION 3.3 FATAL_ERROR)
# locations on all platforms.
include(GNUInstallDirs)
include ( ${DD4hep_DIR}/cmake/DD4hep.cmake )
dd4hep_configure_output()
#-----------------------------------------------------------------------------------
find_package(Acts REQUIRED COMPONENTS Core IdentificationPlugin TGeoPlugin DD4hepPlugin )
dd4hep_configure_output()
add_subdirectory(pid/sdet)
#dd4hep_package (GenDetectors MAJOR ${NPDet_VERSION_MAJOR} MINOR ${NPDet_VERSION_MINOR} PATCH ${NPDet_VERSION_PATCH}
# USES [ROOT REQUIRED COMPONENTS Geom GenVector]
# [DD4hep REQUIRED COMPONENTS DDCore DDRec]
......@@ -43,6 +45,7 @@ dd4hep_add_plugin(GenDetectors
)
target_link_libraries(GenDetectors
PUBLIC DDG4_PIDsdet
PUBLIC DD4hep::DDCore DD4hep::DDRec
PUBLIC ActsCore
)
......
......@@ -14,12 +14,12 @@
/gps/pos/centre 0.0 0.0 0.0 cm
/gps/pos/radius 0.01 cm
/gps/pos/halfz 0.01 cm
/gps/position 0 0 0.0 m
/gps/position 0 0 -6.0 m
/gps/direction 0 0.2 1.0
/gps/direction 0 0.07 1.0
#/gps/ang/type iso
#/control/execute vis.mac
/control/execute vis.mac
/run/beamOn 1
# Macro file for the initialization of example B1
# in interactive session
#
# Set some default verbose
/control/verbose 2
/control/saveHistory
/run/verbose 2
#
# Change the default number of threads (in multi-threaded mode)
#/run/numberOfThreads 4
#
# Initialize kernel
/run/initialize
#
# Visualization setting
/control/macroPath /home/whit/stow/alert_software/share/c12sim
/control/execute vis.mac
/vis/open OGL 800x800-0+0
/vis/drawVolume
#/vis/viewer/set/viewpointThetaPhi 180. 0.
#/vis/viewer/zoom 30.
#/vis/viewer/set/style wireframe
#/vis/scene/add/axes 0 0 0 1 m
/vis/scene/add/trajectories rich smooth
/vis/modeling/trajectories/create/drawByCharge
/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
/vis/scene/add/hits
/vis/scene/endOfEventAction accumulate 200
/vis/viewer/flush
# Macro file for the visualization setting in the initialization phase
# of the B1 example when running in interactive mode
#
# Use these open statements to open selected visualization
#
# Use this open statement to create an OpenGL view:
/vis/open OGL 600x600-0+0
#
# Use this open statement to create an OpenInventor view:
#/vis/open OI
#
# Use this open statement to create a .prim file suitable for
# viewing in DAWN:
#/vis/open DAWNFILE
#
# Use this open statement to create a .heprep file suitable for
# viewing in HepRApp:
#/vis/open HepRepFile
#
# Use this open statement to create a .wrl file suitable for
# viewing in a VRML viewer:
#/vis/open VRML2FILE
#
# Disable auto refresh and quieten vis messages whilst scene and
# trajectories are established:
#/vis/viewer/set/autoRefresh false
#/vis/verbose errors
#
# Draw geometry:
/vis/drawVolume
#
# Specify view angle:
/vis/viewer/set/viewpointVector 0 0 0
/vis/viewer/set/lightsVector 0 0 0
#
# Specify style (surface, wireframe, auxiliary edges,...)
/vis/viewer/set/style wireframe
/vis/viewer/set/auxiliaryEdge true
/vis/viewer/set/lineSegmentsPerCircle 100
#
# Draw smooth trajectories at end of event, showing trajectory points
# as markers 2 pixels wide:
/vis/scene/add/trajectories smooth
#/vis/modeling/trajectories/create/drawByCharge
#/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
#/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
#
# Draw hits at end of event:
#/vis/scene/add/hits
#
# To draw only gammas:
#/vis/filtering/trajectories/create/particleFilter
#/vis/filtering/trajectories/particleFilter-0/add gamma
#
# To invert the above, drawing all particles except gammas,
# keep the above two lines but also add:
#/vis/filtering/trajectories/particleFilter-0/invert true
#
# Many other options are available with /vis/modeling and /vis/filtering.
# For example, to select colour by particle ID:
#/vis/modeling/trajectories/create/drawByParticleID
#/vis/modeling/trajectories/drawByParticleID-0/default/setDrawStepPts true
# To select or override default colours (note: e+ is blue by default):
#/vis/modeling/trajectories/list
#/vis/modeling/trajectories/drawByParticleID-0/set e+ yellow
/vis/modeling/trajectories/create/drawByOriginVolume
/vis/modeling/trajectories/drawByOriginVolume-0/set resist_phys red
/vis/modeling/trajectories/drawByOriginVolume-0/set Cr_phys green
/vis/modeling/trajectories/drawByOriginVolume-0/set Nb_phys blue
/vis/modeling/trajectories/drawByOriginVolume-0/set SiO2_phys black
#
# To superimpose all of the events from a given run:
/vis/scene/endOfEventAction accumulate -1
#
# Decorations
# Name
/vis/set/textColour green
/vis/set/textLayout right
#/vis/scene/add/text2D 0.9 -.9 24 ! ! exampleB1
# or, if your system does not support right-adjustment
#/vis/scene/add/text2D 0 -.9 24 ! ! exampleB1
#/vis/set/textLayout # Revert to normal (left adjusted) layout
#/vis/set/textColour # Revert to default text colour (blue)
#
# Axes, scale, etc.
#/vis/scene/add/scale # Simple scale line
#/vis/scene/add/axes # Simple axes: x=red, y=green, z=blue.
#/vis/scene/add/eventID # Drawn at end of event
/vis/scene/add/date # Date stamp
#/vis/scene/add/logo2D # Simple logo
#/vis/scene/add/logo # 3D logo
#
# Frame
#/vis/set/colour red
#/vis/set/lineWidth 2
#/vis/scene/add/frame # Simple frame around the view
#/vis/set/colour # Revert to default colour (white)
#/vis/set/lineWidth # Revert to default line width (1.)
#
# Attach text to one edge of Shape1, with a small, fixed offset
#/vis/scene/add/text 0 6 -4 cm 18 4 4 Shape1
# Attach text to one corner of Shape2, with a small, fixed offset
#/vis/scene/add/text 6 7 10 cm 18 4 4 Shape2
#
# To get nice view
#/vis/geometry/set/visibility World 0 false
#/vis/geometry/set/visibility Envelope 0 false
/vis/viewer/set/style surface
/vis/viewer/set/hiddenMarker true
#/vis/viewer/set/viewpointThetaPhi 90 135
#
# Re-establish auto refreshing and verbosity:
/vis/viewer/set/autoRefresh true
#/vis/verbose warnings
#
# For file-based drivers, use this to create an empty detector view:
/run/beamOn 10
/vis/scene/add/scale 0.1 um z 0.0 0.0 1.0 manual 0.15 0.15 0.05 um
/vis/viewer/flush
/vis/viewer/set/background white
/vis/viewer/set/targetPoint 0.0 0.0 0.0 cm
/vis/viewer/set/viewpointThetaPhi 90 0
/vis/viewer/zoom 100000
/vis/viewer/refresh
{
"material": "N2 gas",
"property": "index of refraction",
"data": {
"wavelengths": [
150.0, 160.0, 170.0, 180.0, 190.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0,
260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 340.0, 350.0, 360.0,
370.0, 380.0, 390.0, 400.0, 410.0, 420.0, 430.0, 440.0, 450.0, 460.0, 470.0,
480.0, 490.0, 500.0, 510.0, 520.0, 530.0, 540.0, 550.0, 560.0, 570.0, 580.0,
590.0, 600.0, 610.0, 620.0, 630.0, 640.0, 650.0, 660.0, 670.0, 680.0, 690.0,
700.0, 710.0, 720.0, 730.0, 740.0, 750.0, 760.0, 770.0, 780.0, 790.0,
800.0],
"energies": [8.26667, 7.75, 7.29412, 6.88889, 6.52632, 6.2, 5.90476,
5.63636, 5.3913, 5.16667, 4.96, 4.76923, 4.59259, 4.42857, 4.27586,
4.13333, 4.0, 3.875, 3.75758, 3.64706, 3.54286, 3.44444, 3.35135,
3.26316, 3.17949, 3.1, 3.02439, 2.95238, 2.88372, 2.81818, 2.75556,
2.69565, 2.6383, 2.58333, 2.53061, 2.48, 2.43137, 2.38462, 2.33962,
2.2963, 2.25455, 2.21429, 2.17544, 2.13793, 2.10169, 2.06667,
2.03279, 2.0, 1.96825, 1.9375, 1.90769, 1.87879, 1.85075, 1.82353,
1.7971, 1.77143, 1.74648, 1.72222, 1.69863, 1.67568, 1.65333,
1.63158, 1.61039, 1.58974, 1.56962, 1.55],
"index of refraction": [1.0004, 1.00038,
1.00037, 1.00036, 1.00035, 1.00034, 1.00034, 1.00033, 1.00033,
1.00032, 1.00032, 1.00032, 1.00032, 1.00032, 1.00031, 1.00031,
1.00031, 1.00031, 1.00031, 1.00031, 1.00031, 1.00031, 1.00031,
1.00031, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003,
1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003,
1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003,
1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003,
1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003, 1.0003,
1.0003, 1.0003, 1.0003]
},
"comments": "Standard conditions: 0 °C; 101 325 Pa.",
"reference": "https://refractiveindex.info/?shelf=main&book=N2&page=Griesmann"
}
<lccdd>
<info name="beam_pipe" title="Beam pipe test"
author="Whitney Armstrong"
url="https://eicweb.phy.anl.gov/EIC/NPDet"
status="development"
version="">
<comment>EIC Beam Pipe</comment>
</info>
<includes>
<gdmlFile ref="elements.xml"/>
<gdmlFile ref="materials.xml"/>
<gdmlFile ref="material_properties.xml"/>
</includes>
<material_properties>
<material_properties_table name="N2derp">
<data file="N2_index_of_refraction.json" />
</material_properties_table>
</material_properties>
<derps>
</derps>
<define>
<constant name="world_side" value="10*m"/>
<constant name="world_x" value="world_side"/>
<constant name="world_y" value="world_side"/>
<constant name="world_z" value="10*world_side"/>
<constant name="CrossingAngle" value="0.020*rad"/>
<constant name="CentralBeamPipe_length" value="50.0*cm"/>
<constant name="CentralBeamPipe_thickness" value="0.1*mm"/>
<constant name="CentralBeamPipe_radius" value="3.5*cm"/>
<constant name="CentralBeamPipe_z" value="0.0*cm"/>
<constant name="UpStreamBeamPipe_length" value="150.0*cm"/>
<constant name="UpStreamBeamPipe_thickness" value="0.1*mm"/>
<constant name="UpStreamBeamPipe_radius" value="5*cm"/>
<constant name="UpStreamBeamPipe_z" value="-1.0*(CentralBeamPipe_length+UpStreamBeamPipe_length)/2.0"/>
<constant name="DownStreamBeamPipe_length" value="250.0*cm"/>
<constant name="DownStreamBeamPipe_thickness" value="0.1*mm"/>
<constant name="DownStreamBeamPipe_radius" value="5*cm"/>
<constant name="DownStreamBeamPipe_z" value="1.0*(CentralBeamPipe_length+DownStreamBeamPipe_length)/2.0"/>
<constant name="Place_Center" value="0*cm"/>
<constant name="ForwardTrackerPlane_z0" value="400*cm"/>
<constant name="tracking_region_radius" value="1.0*cm"/>
<constant name="tracking_region_zmax" value="2.0*m"/>
<constant name="tracker_region_rmax" value="tracking_region_radius"/>
<constant name="tracker_region_zmax" value="tracking_region_zmax"/>
</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>
<limits>
<limitset name="Tracker_limits">
<limit name="step_length_max" particles="*" value="5.0" unit="mm" />
</limitset>
</limits>
<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="1.0" r= "0.75" g="0.75" b="0.75" showDaughters="true" visible="true"/>
</display>
<detectors>
<detector id="5" name="ForwardRich" type="ForwardRICH" vis="BlueGreenVis" >
</detector>
<!--
<detector
name="TrackerPlanes"
type="ForwardPlaneTracker"
vis="PurpleVis"
id="1"
limits="Tracker_limits"
readout="TPCollection"
insideTrackingVolume="true">
<layer z_offset="ForwardTrackerPlane_z0+10*cm" id="0">
<module name="SinglePlane" thickness="1*cm" x_half="100*cm" y_half="100*cm" material="CarbonFiber" vis="BlueVis" />
<sensitive thickness="0.1*mm" material="Air" vis="GreenVis" />
</layer>
<layer z_offset="ForwardTrackerPlane_z0+20*cm" id="1">
<module name="SinglePlane1" thickness="1*cm" x_half="100*cm" y_half="100*cm" material="CarbonFiber" vis="BlueVis" />
<sensitive thickness="0.1*mm" material="Air" vis="GreenVis" />
</layer>
<layer z_offset="ForwardTrackerPlane_z0+40*cm" id="2">
<module name="SinglePlane2" thickness="1*cm" x_half="100*cm" y_half="100*cm" material="CarbonFiber" vis="BlueVis" />
<sensitive thickness="0.1*mm" material="Air" vis="GreenVis" />
</layer>
<layer z_offset="ForwardTrackerPlane_z0+70*cm" id="3">
<module name="SinglePlane3" thickness="1*cm" x_half="100*cm" y_half="100*cm" material="CarbonFiber" vis="BlueVis" />
<sensitive thickness="0.1*mm" material="Air" vis="GreenVis" />
</layer>
<layer z_offset="ForwardTrackerPlane_z0+100*cm" id="4">
<module name="SinglePlane4" thickness="1*cm" x_half="100*cm" y_half="100*cm" material="CarbonFiber" vis="BlueVis" />
<sensitive thickness="0.1*mm" material="Air" vis="GreenVis" />
</layer>
</detector>
-->
</detectors>
<!--
<readouts>
<readout name="TPCollection">
<segmentation type="CartesianGridXY" grid_size_x="10.0*cm" grid_size_y="10.0*cm" />
<id>system:5,layer:9,module:8,x:32:-16,y:-16</id>
</readout>
</readouts>
-->
</lccdd>
/control/verbose 2
/run/initialize
/gps/verbose 2
/gps/particle e-
/gps/number 3
/gps/ene/type Gauss
/gps/ene/mono 9.0 GeV
/gps/ene/sigma 3.0 GeV
/gps/pos/type Volume
/gps/pos/shape Cylinder
/gps/pos/centre 0.0 0.0 0.0 cm
/gps/pos/radius 0.01 cm
/gps/pos/halfz 0.01 cm
/gps/position 0 0 0
#/gps/direction 1 0 0
/gps/ang/type iso
/gps/ang/mintheta 178 deg
/run/beamOn 100
<?xml version="1.0" encoding="UTF-8"?>
<material_properties>
<material_properties_table name="N2">
<data file="N2_index_of_refraction.json" />
</material_properties_table>
<!--
<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_properties>
#!/bin/bash
rm -f forward_rich.slcio
rm -f forward_rich.root
#ddsim --runType run --enableG4GPS \
# --macroFile gps.mac \
# --compactFile detectors/SiD/slic/sieic3/sieic3_compact.xml \
# --outputFile slic_ddsim_out.slcio
#ddsim --runType run --enableG4GPS \
# --macroFile gps.mac \
# --compactFile detectors/SiD/compact/sid_working/sidloi3_v00.xml \
# --outputFile example1_ddsim_out.slcio
#ddsim --runType run --enableG4GPS \
# --macroFile gps.mac \
# --compactFile ./gem_tracker_disc.xml \
# --outputFile test_tracker_disc.root
ddsim --runType run --enableG4GPS \
--macroFile gps.mac \
--compactFile ./roman_pots.xml \
--outputFile roman_pot_test.root
#anajob example1_ddsim_out.slcio | tail -n 30 > collections.txt
#rm outputfile.slcio
#Marlin steering_files/basicsteering.xml
#
#anajob outputfile.slcio | tail -n 30 > collections2.txt
......@@ -116,14 +116,15 @@
<detectors>
<detector id="1" name="ForwardRICH" type="GenericRICH" readout="ForwardRICHHits" vis="RedVis" material="N2cherenkov">
<dimensions rmin="10*cm" rmax1="40*cm" rmax2="80*cm" zmin="20*cm" zmax="120*cm"/>
<dimensions rmin="10*cm" rmax1="80*cm" rmax2="120*cm" zmin="20*cm" zmax="120*cm"/>
</detector>
</detectors>
<!-- Definition of the readout segmentation/definition -->
<readouts>
<readout name="ForwardRICHHits">
<id>system:5,layer:4,module:14,sensor:2,side:32:-2,strip:24</id>
<segmentation type="CartesianGridXY" grid_size_x="3*mm" grid_size_y="3*mm" />
<id>system:5,layer:4,module:14,x:32:-16,y:-16</id>
</readout>
</readouts>
......
<lccdd>
<info name="TestMaterialProperties"
title="Test reading of TGeo's Material Properties"
author="Markus Frank"
url="None"
status="development"
version="1.0">
<comment>Test reading of TGeo's Material Properties</comment>
</info>
<define>
<constant name="world_side" value="1*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"/>
</define>
<properties>
<matrix name="RINDEX__0x123aff00" coldim="2" values="
2.034*eV 1.3435
2.068*eV 1.344
2.103*eV 1.3445
2.139*eV 1.345
2.177*eV 1.3455
2.216*eV 1.346
2.256*eV 1.3465
2.298*eV 1.347
2.341*eV 1.3475
2.386*eV 1.348
2.433*eV 1.3485
2.481*eV 1.3492
2.532*eV 1.35
2.585*eV 1.3505
2.640*eV 1.351
2.697*eV 1.3518
2.757*eV 1.3522
2.820*eV 1.3530
2.885*eV 1.3535
2.954*eV 1.354
3.026*eV 1.3545
3.102*eV 1.355
3.181*eV 1.3555
3.265*eV 1.356
3.353*eV 1.3568
3.446*eV 1.3572
3.545*eV 1.358
3.649*eV 1.3585
3.760*eV 1.359
3.877*eV 1.3595
4.002*eV 1.36
4.136*eV 1.3608
"/>
<matrix name="ABSLENGTH__0x123aff00" coldim="2" values="
2.034*eV 3.448*m
2.068*eV 4.082*m
2.103*eV 6.329*m
2.139*eV 9.174*m
2.177*eV 12.346*m
2.216*eV 13.889*m
2.256*eV 15.152*m
2.298*eV 17.241*m
2.341*eV 18.868*m
2.386*eV 20.000*m
2.433*eV 26.316*m
2.481*eV 35.714*m
2.532*eV 45.455*m
2.585*eV 47.619*m
2.640*eV 52.632*m
2.697*eV 52.632*m
2.757*eV 55.556*m
2.820*eV 52.632*m
2.885*eV 52.632*m
2.954*eV 47.619*m
3.026*eV 45.455*m
3.102*eV 41.667*m
3.181*eV 37.037*m
3.265*eV 33.333*m
3.353*eV 30.000*m
3.446*eV 28.500*m
3.545*eV 27.000*m
3.649*eV 24.500*m
3.760*eV 22.000*m
3.877*eV 19.500*m
4.002*eV 17.500*m
4.136*eV 14.500*m
"/>
<matrix name= "FASTCOMPONENT__0x123aff00" coldim="2" values="
2.034*eV 1
2.068*eV 1
2.103*eV 1
2.139*eV 1
2.177*eV 1
2.216*eV 1
2.256*eV 1
2.298*eV 1
2.341*eV 1
2.386*eV 1
2.433*eV 1
2.481*eV 1
2.532*eV 1
2.585*eV 1
2.640*eV 1
2.697*eV 1
2.757*eV 1
2.820*eV 1
2.885*eV 1
2.954*eV 1
3.026*eV 1
3.102*eV 1
3.181*eV 1
3.265*eV 1
3.353*eV 1
3.446*eV 1
3.545*eV 1
3.649*eV 1
3.760*eV 1
3.877*eV 1
4.002*eV 1
4.136*eV 1
"/>
<matrix name= "SLOWCOMPONENT__0x123aff00" coldim="2" values="
2.034*eV 0.01
2.068*eV 1
2.103*eV 2
2.139*eV 3
2.177*eV 4
2.216*eV 5
2.256*eV 6
2.298*eV 7
2.341*eV 8
2.386*eV 9
2.433*eV 8
2.481*eV 7
2.532*eV 6
2.585*eV 4
2.640*eV 3
2.697*eV 2
2.757*eV 1
2.820*eV 0.01
2.885*eV 1
2.954*eV 2
3.026*eV 3
3.102*eV 4
3.181*eV 5
3.265*eV 6
3.353*eV 7
3.446*eV 8
3.545*eV 9
3.649*eV 8
3.760*eV 7
3.877*eV 6
4.002*eV 5
4.136*eV 4
"/>
<ignore>
<matrix name= "REFLECTIVITY__0x123aff00" coldim="2" values="
2.034*eV
2.068*eV
2.103*eV
2.139*eV
2.177*eV
2.216*eV
2.256*eV
2.298*eV
2.341*eV
2.386*eV
2.433*eV
2.481*eV
2.532*eV
2.585*eV
2.640*eV
2.697*eV
2.757*eV
2.820*eV
2.885*eV
2.954*eV
3.026*eV
3.102*eV
3.181*eV
3.265*eV
3.353*eV
3.446*eV
3.545*eV
3.649*eV
3.760*eV
3.877*eV
4.002*eV
4.136*eV
"/>
</ignore>
</properties>
<includes>
<gdmlFile ref="${DD4hepINSTALL}/DDDetectors/compact/elements.xml"/>
</includes>
<materials>
<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="Water">
<D type="density" value="1.0" unit="g/cm3"/>
<composite n="2" ref="H"/>
<composite n="1" ref="O"/>
<property name="RINDEX" ref="RINDEX__0x123aff00"/>
<property name="ABSLENGTH" ref="ABSLENGTH__0x123aff00"/>
<property name="FASTCOMPONENT" ref="FASTCOMPONENT__0x123aff00"/>
<property name="SLOWCOMPONENT" ref="SLOWCOMPONENT__0x123aff00"/>
</material>
</materials>
</lccdd>
/run/beamOn 1
/gun/position 0 cm,0 cm,0 cm
/gun/particle e-
/gun/direction 0 0.1 1
/gun/energy 5 GeV
/gun/number 1
/run/beamOn 10
#/control/verbose 2
#/run/initialize
#
#/gps/verbose 2
#/gps/particle e-
#/gps/number 1
#
#/gps/ene/type Gauss
#/gps/ene/mono 2.5 GeV
#/gps/ene/sigma 2.0 GeV
#
#/gps/pos/type Volume
#/gps/pos/shape Cylinder
#/gps/pos/centre 0.0 0.0 0.0 cm
#/gps/pos/radius 0.01 cm
#/gps/pos/halfz 0.01 cm
#/gps/position 0 0 0.0 m
#
#/gps/direction 0 0.2 1.0
##/gps/ang/type iso
#
#
##/control/execute vis.mac
#
#/run/beamOn 10
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment