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