Print

Print


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