Print

Print


Author: [log in to unmask]
Date: Wed Dec 10 17:51:27 2014
New Revision: 3446

Log:
commiting temp changes

Added:
    projects/lcsim/sandbox/HpsTracker2.java

Added: projects/lcsim/sandbox/HpsTracker2.java
 =============================================================================
--- projects/lcsim/sandbox/HpsTracker2.java	(added)
+++ projects/lcsim/sandbox/HpsTracker2.java	Wed Dec 10 17:51:27 2014
@@ -0,0 +1,129 @@
+package org.lcsim.detector.converter.compact.subdetector;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.converter.compact.SubdetectorDetectorElement;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+/**
+ * Class describing an {@link HPSTracker2} subdetector. 
+ * 
+ * @author Omar Moreno <[log in to unmask]>
+ * @author Jeremy McCormick <[log in to unmask]>
+ *
+ */
+public class HpsTracker2 extends SubdetectorDetectorElement {
+    
+    private boolean debug = false;
+    
+    // List of stereo layers composing the SVT
+	List<SvtStereoLayer> stereoPairs = new ArrayList<SvtStereoLayer>(); 
+	
+	public HpsTracker2(String name, IDetectorElement parent) {
+		super(name, parent);
+	}
+	
+	/**
+	 * Get a collection of stereo pairs ({@link SvtStereoLayer}) composing the SVT.
+	 * 
+	 * @return List of stereo pairs
+	 */
+	public List<SvtStereoLayer> getStereoPairs(){
+	    return Collections.unmodifiableList(stereoPairs);
+	}
+
+	/**
+	 * Get the collection of {@link HpsSiSensor} composing the SVT. 
+	 * 
+	 * @return List of sensors
+	 */
+	public List<HpsSiSensor> getSensors(){
+	    List<HpsSiSensor> list = this.findDescendants(HpsSiSensor.class);
+	    if(debug) {
+	        System.out.printf("%s: found %d HpsSiSensors\n",getClass().getSimpleName(), list.size());
+	        System.out.printf("%s: %45s %5s %5s\n",getClass().getSimpleName(), "<name>", "<layerID>", "<moduleID>");
+	        for(HpsSiSensor sensor : list) {
+	            System.out.printf("%s: %45s %5d %5d\n",getClass().getSimpleName(), sensor.getName(), sensor.getLayerNumber(), sensor.getModuleNumber());
+	        }
+	    }
+	    return list;
+	}
+	
+	/**
+	 * Get a {@link HpsSiSensor} by layer and module number.
+	 * 
+	 * @param layer The SVT layer number
+	 * @param module The SVT module number
+	 * @return Corresponding sensor
+	 */
+	public HpsSiSensor getSensor(int layer, int module){
+	    for(HpsSiSensor sensor : this.getSensors()){
+	        if(sensor.getLayerNumber() == layer && sensor.getModuleNumber() == module) 
+	            return sensor; 
+	    }
+	    return null;
+	}
+	
+	/**
+	 * Get the maximum layer number present in the collection of {@link HpsSiSensor}.
+	 * 
+	 * @return maximum layer number
+	 */
+	private int getMaxLayerNumber(){
+	    int maxLayerNumber = 0;
+	    for(HpsSiSensor sensor : this.getSensors()){
+	       if(sensor.getLayerNumber() > maxLayerNumber) maxLayerNumber = sensor.getLayerNumber();
+	    }
+	    return maxLayerNumber; 
+	}
+
+	/**
+	 * Get the maximum module number present in the collection of {@link HpsSiSensor}.
+	 * 
+	 * @return maximum module number
+	 */
+	private int getMaxModuleNumber(){
+	    int maxModuleID = 0; 
+	    for(HpsSiSensor sensor : this.getSensors()){
+	       if(sensor.getModuleNumber() > maxModuleID) maxModuleID = sensor.getModuleNumber();
+	    }
+	    return maxModuleID; 
+	}
+	
+	/**
+	 * Method that loops through the collection of {@link HpsSiSensor} and creates 
+	 * stereo layers. A stereo layer is composed of two adjacent sensors (stereo and axial)
+	 * with the same module number.
+	 */
+	public void createStereoLayers(){
+
+	    System.out.printf("%s: create stereo layers\n",getClass().getSimpleName());
+        
+	    HpsSiSensor firstSensor = null;
+        HpsSiSensor secondSensor = null;
+
+        System.out.printf("%s: %10s %10s %42s %42s\n",getClass().getSimpleName(), "layerID/moduleID", "layerID/moduleID", "sensor1", "sensor2");
+
+        
+        for(int layerID = 1; layerID <= this.getMaxLayerNumber(); layerID+=2 ){
+            for(int moduleID = 0; moduleID <= this.getMaxModuleNumber(); moduleID++){
+    
+                firstSensor = this.getSensor(layerID, moduleID); 
+                secondSensor = this.getSensor(layerID+1, moduleID);
+
+                System.out.printf("%s: %10d/%d %10d/%d %42s %42s\n",getClass().getSimpleName(), 
+                        layerID,moduleID, layerID+1, moduleID, 
+                        firstSensor==null?"-":firstSensor.getName(), 
+                        secondSensor==null?"-":secondSensor.getName());
+                
+                if(firstSensor == null || secondSensor == null) {
+                    continue; 
+                }
+               
+                stereoPairs.add(new SvtStereoLayer((layerID+1)/2, firstSensor, secondSensor));
+            }
+        }
+    }
+}

########################################################################
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