Author: [log in to unmask]
Date: Wed Oct 29 00:35:43 2014
New Revision: 3403
Log:
Unit test to check if sensors of type HpsTestRunSiSensor are created when the attribute "type" of the element "module" is set to "HpsTestRunSiSensor".
Added:
projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/detector/converter/compact/HpsTestRunSiSensorConverterTest.java (with props)
projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HpsTestRunSiSensorConverterTest.xml
Added: projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/detector/converter/compact/HpsTestRunSiSensorConverterTest.java
=============================================================================
--- projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/detector/converter/compact/HpsTestRunSiSensorConverterTest.java (added)
+++ projects/lcsim/trunk/detector-framework/src/test/java/org/lcsim/detector/converter/compact/HpsTestRunSiSensorConverterTest.java Wed Oct 29 00:35:43 2014
@@ -0,0 +1,95 @@
+package org.lcsim.detector.converter.compact;
+
+import java.io.InputStream;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.lcsim.detector.converter.compact.subdetector.HpsTracker2;
+import org.lcsim.detector.converter.compact.subdetector.SvtStereoLayer;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
+import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.GeometryReader;
+
+/**
+ * Unit test for the {@link HPSTracker2Converter} when the sensor type
+ * is equal to {@link HpsTestRunSiSensor}
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ */
+public class HpsTestRunSiSensorConverterTest extends TestCase {
+
+ Detector detector = null;
+
+ //-----------------//
+ //--- Constants ---//
+ //-----------------//
+ private static final int TOTAL_NUMBER_OF_SENSORS = 20;
+ private static final int TOTAL_NUMBER_OF_STEREO_LAYERS = 10;
+ private static final String SUBDETECTOR_NAME = "Tracker";
+ private static final String RESOURCE = "/org/lcsim/geometry/subdetector/HpsTestRunSiSensorConverterTest.xml";
+
+ /*public static Test suite() {
+ return new TestSuite(HPSTracker2ConverterTest.class);
+ }*/
+
+ public void setUp() {
+
+ InputStream in = this.getClass().getResourceAsStream(RESOURCE);
+
+ GeometryReader reader = new GeometryReader();
+
+ try {
+ detector = reader.read(in);
+ }
+ catch (Throwable x) {
+ throw new RuntimeException(x);
+ }
+ }
+
+
+ public void testHPSTracker2Converter() {
+
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: Checking if the correct number of sensors were created.");
+ List<HpsSiSensor> sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
+ assertTrue("[ " + this.getClass().getSimpleName() + " ]: The wrong number of sensors were created.", sensors.size() == TOTAL_NUMBER_OF_SENSORS);
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: Total number of sensors that were created: " + sensors.size());
+
+
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: Checking if sensor is instance of HpsTestRunSiSensor.");
+ for(HpsSiSensor sensor : sensors) {
+ assertTrue("[ " + this.getClass().getSimpleName() + " ]: Sensor is of wrong type: " + sensor.getClass().getSimpleName(),
+ sensor instanceof HpsTestRunSiSensor);
+ }
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: Sensors are all instances of HpsTestRunSiSensor.");
+
+
+ // Check that the correct number of stereo layers were created
+ System.out.println("[ HPSTracker2ConverterTest ]: Checking if the correct number of stereo layers were created.");
+ List<SvtStereoLayer> stereoLayers = ((HpsTracker2) detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement()).getStereoPairs();
+ // Check that the number of stereo layers created is as expected
+ assertTrue("The wrong number of stereo layers were created.", stereoLayers.size() == TOTAL_NUMBER_OF_STEREO_LAYERS);
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: Total number of stereo layers created: " + stereoLayers.size());
+
+ for(SvtStereoLayer stereoLayer : stereoLayers){
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: " + stereoLayer.toString());
+
+ // The sensors comprising the stereo layer should belong to the same detector volume
+ assertTrue("Sensors belong to different detector volumes.",
+ stereoLayer.getAxialSensor().getModuleNumber() == stereoLayer.getStereoSensor().getModuleNumber());
+
+ // If the stereo layer is part of the top detector volume, the axial layers have an odd layer number.
+ // If the stereo layer is part of the bottom detector volumen, the axial layers have an even layer number.
+ System.out.println("[ " + this.getClass().getSimpleName() + " ]: check if the layers are oriented correctly.");
+ if(stereoLayer.getAxialSensor().isTopLayer()){
+ assertTrue("Sensors composing the stereo layer are flipped", stereoLayer.getAxialSensor().getLayerNumber()%2 == 1);
+ } else {
+ assertTrue("Sensors composing the stereo layer are flipped", stereoLayer.getAxialSensor().getLayerNumber()%2 == 0);
+
+ }
+ }
+ }
+}
Added: projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HpsTestRunSiSensorConverterTest.xml
=============================================================================
--- projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HpsTestRunSiSensorConverterTest.xml (added)
+++ projects/lcsim/trunk/detector-framework/src/test/resources/org/lcsim/geometry/subdetector/HpsTestRunSiSensorConverterTest.xml Wed Oct 29 00:35:43 2014
@@ -0,0 +1,145 @@
+<lccdd xmlns:compact="http://www.lcsim.org/schemas/compact/1.0"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+ xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
+
+ <info name="HPS-Test-JLAB-v4pt0">
+ <comment>HPS Test Proposal detector</comment>
+ </info>
+
+ <define>
+
+ <!-- world -->
+ <constant name="world_side" value="500.0*cm" />
+ <constant name="world_x" value="world_side" />
+ <constant name="world_y" value="world_side" />
+ <constant name="world_z" value="world_side" />
+
+ <!-- tracking region -->
+ <constant name="tracking_region_radius" value="200.0*cm"/>
+ <constant name="tracking_region_min" value="5.0*cm"/>
+ <constant name="tracking_region_zmax" value="100.0*cm"/>
+
+ <!-- SVT module dimensions -->
+ <constant name="moduleLength" value="100.0"/>
+ <constant name="moduleWidth" value="40.34"/>
+
+ <!-- SVT sensor dimensions -->
+ <constant name="sensorLength" value="98.33"/>
+ <!-- Sensor width is slightly under the real value of 38.34 mm so that sisim doesn't break. -->
+ <constant name="sensorWidth" value="38.3399"/>
+
+ <!-- module tilt for stereo angle -->
+ <constant name="SA" value="0.10" />
+ <constant name="SA2" value="0.05" />
+
+ <constant name="pi" value="3.14159" />
+ <!-- module z placement -->
+ <constant name="zCent1" value="10*cm"/>
+ <constant name="zCent2" value="20*cm"/>
+ <constant name="zCent3" value="30*cm"/>
+ <constant name="zCent4" value="50*cm"/>
+ <constant name="zCent5" value="70*cm"/>
+
+ <!-- module z gaps -->
+ <constant name="ygap1" value="0.30*cm" />
+ <constant name="ygap2" value="0.60*cm" />
+ <constant name="ygap3" value="0.90*cm" />
+ <constant name="ygap4" value="1.5*cm" />
+ <constant name="ygap5" value="2.1*cm" />
+
+ <!-- module z plane distance -->
+ <constant name="zPlaneDist" value="1.0*cm"/>
+
+ <!-- ecal -->
+ <constant name="ecal_front" value="13.3/2*mm" />
+ <constant name="ecal_back" value="16/2*mm" />
+ <constant name="ecal_z" value="160/2*mm" />
+
+ </define>
+
+ <materials>
+
+ <!-- Set tracking material to vacuum. -->
+ <material name="TrackingMaterial">
+ <D type="density" unit="g/cm3" value="0.0000000000000001"/>
+ <fraction n="1.0" ref="Air" />
+ </material>
+
+ </materials>
+
+ <detectors>
+
+ <detector id="1" name="Tracker" type="HPSTracker2" readout="TrackerHits" combineHits="true">
+ <comment> The Silicon Vertex Tracker.</comment>
+ <module name="TestRunModule" type="HpsTestRunSiSensor">
+ <box x="moduleLength" y="moduleWidth" />
+ <module_component thickness="0.032*cm" material = "Silicon" sensitive="true">
+ <dimensions x="sensorLength" y="sensorWidth" />
+ </module_component>
+ <module_component thickness="0.02*cm" material = "Carbon" sensitive="false"/>
+ </module>
+ <layer id="1">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="21.67" z="100.0" rx="0.0" ry="0.0" rz="-1.5707963267948966"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-21.67" z="100.0" rx="0.0" ry="0.0" rz="-1.6707963267948966"/>
+ </layer>
+ <layer id="2">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="21.67" z="110.0" rx="0.0" ry="3.14159" rz="-4.812386326794897"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-21.67" z="110.0" rx="0.0" ry="3.14159" rz="-4.712386326794896"/>
+ </layer>
+ <layer id="3">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="23.17" z="200.0" rx="0.0" ry="0.0" rz="-1.5707963267948966"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-23.17" z="200.0" rx="0.0" ry="0.0" rz="-1.6707963267948966"/>
+ </layer>
+ <layer id="4">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="23.17" z="210.0" rx="0.0" ry="3.14159" rz="-4.812386326794897"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-23.17" z="210.0" rx="0.0" ry="3.14159" rz="-4.712386326794896"/>
+ </layer>
+ <layer id="5">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="24.67" z="300.0" rx="0.0" ry="0.0" rz="-1.5707963267948966"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-24.67" z="300.0" rx="0.0" ry="0.0" rz="-1.6707963267948966"/>
+ </layer>
+ <layer id="6">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="24.67" z="310.0" rx="0.0" ry="3.14159" rz="-4.812386326794897"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-24.67" z="310.0" rx="0.0" ry="3.14159" rz="-4.712386326794896"/>
+ </layer>
+ <layer id="7">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="27.67" z="500.0" rx="0.0" ry="0.0" rz="-1.5707963267948966"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-27.67" z="500.0" rx="0.0" ry="0.0" rz="-1.6207963267948966"/>
+ </layer>
+ <layer id="8">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="27.67" z="510.0" rx="0.0" ry="3.14159" rz="-4.762386326794896"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-27.67" z="510.0" rx="0.0" ry="3.14159" rz="-4.712386326794896"/>
+ </layer>
+ <layer id="9">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="30.67" z="700.0" rx="0.0" ry="0.0" rz="-1.5707963267948966"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-30.67" z="700.0" rx="0.0" ry="0.0" rz="-1.6207963267948966"/>
+ </layer>
+ <layer id="10">
+ <module_placement name="TestRunModule" id="0" x="0.0" y="30.67" z="710.0" rx="0.0" ry="3.14159" rz="-4.762386326794896"/>
+ <module_placement name="TestRunModule" id="1" x="0.0" y="-30.67" z="710.0" rx="0.0" ry="3.14159" rz="-4.712386326794896"/>
+ </layer>
+ </detector>
+ </detectors>
+
+ <readouts>
+ <readout name="TrackerHits">
+ <id>system:6,barrel:3,layer:4,module:12,sensor:1,side:32:-2,strip:12</id>
+ </readout>
+ </readouts>
+
+ <fields>
+ <field type="BoxDipole"
+ name="AnalyzingDipole"
+ x="0*cm"
+ y="0*cm"
+ z="45.22*cm"
+ dx="22.86*cm"
+ dy="7.62*cm"
+ dz="46.22*cm"
+ bx="0.0"
+ by="-0.5"
+ bz="0.0">
+ </field>
+ </fields>
+
+</lccdd>
########################################################################
Use REPLY-ALL to reply to list
To unsubscribe from the LCDET-SVN list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1
|