From 29639c0cae20e3a0b462adba386fc88422555c21 Mon Sep 17 00:00:00 2001
From: Tom Polakovic <tpolakovic@anl.gov>
Date: Tue, 21 Jul 2020 15:21:39 -0500
Subject: [PATCH] simulation script

---
 trackers/roman_pot.xml     | 108 +++++++++++++++++++++++++++++++++++++
 trackers/roman_pot_simu.sh |   6 +++
 2 files changed, 114 insertions(+)
 create mode 100644 trackers/roman_pot.xml
 create mode 100755 trackers/roman_pot_simu.sh

diff --git a/trackers/roman_pot.xml b/trackers/roman_pot.xml
new file mode 100644
index 00000000..6db76136
--- /dev/null
+++ b/trackers/roman_pot.xml
@@ -0,0 +1,108 @@
+<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="RomanPot_example" title="Roman Pot detector example"
+        author="Tomas Polakovic"
+        url="https://eicweb.phy.anl.gov/EIC/NPDet"
+        status="development"
+        version="$Id: compact.xml v1.0 2016-12-21$">
+    <comment>A simplified Roman pot detector</comment>        
+  </info>
+
+  <includes>
+    <gdmlFile  ref="elements.xml"/>
+    <gdmlFile  ref="materials.xml"/>
+  </includes>
+  
+  <define>
+    <constant name="world_side" value="30*m"/>
+    <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"/>
+  </define>
+
+  <limits>
+    <limitset name="cal_limits">
+      <limit name="step_length_max" particles="*" value="5.0" unit="mm" />
+    </limitset>
+    <limitset name="SimpleRomanPotRegionLimitSet">
+      <limit name="step_length_max" particles="*" value="1.0" unit="mm" />
+      <limit name="track_length_max" particles="*" value="1.0" unit="mm" />
+      <limit name="time_max" particles="*" value="0.1" unit="ns" />
+      <limit name="ekin_min" particles="*" value="0.001" unit="MeV" />
+      <limit name="range_min" particles="*" value="0.1" unit="mm" />
+    </limitset>
+  </limits>
+  <regions>
+    <region name="SimpleRomanPotRegion" eunit="MeV" lunit="mm" cut="0.0001" threshold="0.0001">
+      <limitsetref name="SimpleRomanPotRegionLimitSet"/>
+    </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.3"  r= "1.0" g="0.0" b="0.0" showDaughters="true" visible="true"/>
+    <vis name="BlueVis"        alpha="0.3"  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>
+
+  <detectors>
+    <detector id = "1" name = "MyRomanPot" type = "RomanPot" readout =
+              "ForwardRomanPotHits" vis = "InvisibleWithDaughters">
+      <dimensions x = "3.0*cm" y = "3.0*cm" delta = "0.5*cm" />
+      <frame x = "10.0*cm" y = "5.0*cm" z = "2*cm" />
+      <position z_offset = "20.0*m" rotation = "false" vmax = "10*cm" v = "0.5*cm" />
+      <layer repeat = "5">
+        <slice material="Carbon"  thickness="0.5*mm"  vis = "BlueVis" />
+        <slice material="Silicon" thickness="0.3*mm"  vis = "GreenVis" sensitive = "true"  />
+        <slice material="Carbon"  thickness="0.5*mm"  vis = "BlueVis" />
+        <slice material="Vacuum"  thickness="1.0*mm"  vis="InvisibleWithDaughters" />
+      </layer>
+    </detector>
+  </detectors>
+
+  <!--  Definition of the readout segmentation/definition  -->
+  <readouts>
+    <readout name="ForwardRomanPotHits">
+      <segmentation type="CartesianGridXY" grid_size_x="0.05*mm" grid_size_y="0.05*mm" />
+      <id>system:5,element:5,frame:4,layer:4,slice:5,x:32:-16,y:-16</id>
+    </readout>
+  </readouts>
+
+  <plugins>
+    <!--
+    <plugin name="DD4hep_GenericSurfaceInstallerPlugin">
+      <argument value="MyRomanPot"/>
+      <argument value="dimension=2"/>
+      <argument value="u_x=-1."/>
+      <argument value="v_y=-1."/>
+      <argument value="n_z=1."/>
+    </plugin>	
+    -->
+    <plugin name="InstallSurfaceManager"/>
+  </plugins>
+
+  <fields>
+    <field name="GlobalSolenoid" type="solenoid" 
+      inner_field="4.0*tesla"
+      outer_field="-0.6*tesla" 
+      zmax="3*m"
+      outer_radius="2*m">
+    </field>
+  </fields>
+</lccdd>
diff --git a/trackers/roman_pot_simu.sh b/trackers/roman_pot_simu.sh
new file mode 100755
index 00000000..5159f51f
--- /dev/null
+++ b/trackers/roman_pot_simu.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+ddsim --runType batch -N 100 \
+	--inputFiles ../data/forward_ions.hepmc \
+	--compactFile ./roman_pot.xml \
+	--outputFile ./roman_pot_out.root
-- 
GitLab