Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN
FastTrackResidualDriver.java+70-661.6 -> 1.7
Fixed layer and side functions.

hps-java/src/main/java/org/lcsim/hps/users/phansson
FastTrackResidualDriver.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- FastTrackResidualDriver.java	11 May 2012 15:49:20 -0000	1.6
+++ FastTrackResidualDriver.java	27 Jun 2012 19:35:17 -0000	1.7
@@ -13,6 +13,8 @@
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.tracker.silicon.*;
 import org.lcsim.event.*;
 import org.lcsim.geometry.Detector;
@@ -83,12 +85,12 @@
         crystalCols = 46;
         crystalRows = 5;
         
-        ecalBeamgapCorr = 20.0;
+        ecalBeamgapCorr = 0.0;
         
         // Position of the conversion
         conversionZ = -1500.0; 
         
-        ecalClusterSel = 1;
+        ecalClusterSel = 0;
         
         IHistogramFactory hf = aida.histogramFactory();
         String side;
@@ -268,8 +270,7 @@
                 if(debug) System.out.println("icl " + icl);
                 int clid = ecal_cls.get(icl); 
                 if(debug) System.out.println("clid " + clid + " all clusters size " + ecal_all_clusters.size());
-                double p_cl[] = ecal_all_clusters.get(clid).getPosition();
-                int clpos[] = getCrystalPair(p_cl);
+                int clpos[] = getCrystalPair(ecal_all_clusters.get(clid));
                 if(debug) System.out.println("clpos " + clpos[0] + "," + clpos[1]);
                 ncl_ecal_map.get(iSide).fill(clpos[0], clpos[1]);
                 if(debug) System.out.println("clpos " + clpos[0] + "," + clpos[1]);
@@ -288,7 +289,7 @@
             
             
              
-            selclids = getCrystalPair(ecal_all_clusters.get(sel_ecal_idx).getPosition());
+            selclids = getCrystalPair(ecal_all_clusters.get(sel_ecal_idx));
             nselcl_ecal_map.get(iSide).fill(selclids[0], selclids[1]);
             
             selcl_ecal_e.get(iSide).fill(ecal_all_clusters.get(sel_ecal_idx).getEnergy());
@@ -338,6 +339,7 @@
             }
             //stripList = new ArrayList<SiTrackerHitStrip1D>();
             for ( SiTrackerHitStrip1D stripCluster : trackerHits ) {
+                System.out.println("cluster at " + stripCluster.getPositionAsVector().toString() + " " + stripCluster.getSensor().toString());
                 
                 isaxial = isAxialHit(stripCluster);
                 
@@ -352,7 +354,7 @@
                 }
                 
                 
-                layer = getLayerFromSensorName(name);
+                layer = getLayerFromSiCluster(stripCluster);
                 
                 si_side = getSideFromSiCluster(stripCluster);
                 
@@ -445,52 +447,29 @@
 //    }
 
  
-
-    private int[] getCrystalPair(Hep3Vector cluster) {
-        double pos[] = {cluster.x(),cluster.y(),0.};
-        return getCrystalPair(pos);        
-    }
-    
-     private int[] getCrystalPair(double[] cluster) {
-        double x = cluster[0];
-        double y = cluster[1];
-        int position[] = new int[2];
-        position[0] = (int)Math.floor(x/crystalX);
-        
-        position[1] = (int) Math.floor( (y - beamGap * Math.signum(y) ) / crystalY);
-         return position; 
+    public int[] getCrystalPair(HPSEcalCluster cluster) {
+        int[] pos = new int[2];
+        pos[0] = cluster.getSeedHit().getIdentifierFieldValue("ix");
+        pos[1] = cluster.getSeedHit().getIdentifierFieldValue("iy");
         
-    }
-
-    private double[] getClusterPosition(HPSEcalCluster cluster) {
-        CalorimeterHit hit = cluster.getSeedHit();
-        //return cluster.getPosition();
-        
-        //IDDecoder dec = dec.getSubdetector("Ecal").getIDDecoder();
-//        dec.setID(hit.getCellID());
-//        int ix = dec.getValue("ix");
-//        int iy = dec.getValue("iy");
-//        double position[] = new double[2];
-//        position[0] = crystalX * ix;
-//        position[1] = crystalY * iy + beamGap * Math.signum(iy);
-        if (debug) System.out.println("Getting cluster position");
-        double pos[] = cluster.getPosition();
-        if (debug) System.out.println("Found " + pos[0] + "," + pos[1] + "," + pos[2]);
-        return pos; 
+        //System.out.println("cluster ix,iy " + pos[0] + "," + pos[1] + "    from pos  " + cluster.getSeedHit().getPositionVec().toString());
+        return pos;
+        //getCrystalPair(cluster.getPosition());
     }
     
+    
     private List<Integer> getEcalClustersForFastTracking(List<HPSEcalCluster> clusters, String side) {
         if(side!="up" && side!="down") {
             throw new RuntimeException("This ecal side" + side + " do not exist!!");
         }
         List<Integer> cls = new ArrayList<Integer>();
         boolean save;
-        double [] pos;
+        int [] pos;
         
         for (int i=0;i<clusters.size();++i) {
             save=false;
             
-            pos = getClusterPosition(clusters.get(i));
+            pos = getCrystalPair(clusters.get(i));
             
             if(pos[1]>=0 && side=="up") {
                 save=true;
@@ -567,20 +546,25 @@
 
      
     private boolean isAxialHit(SiTrackerHitStrip1D strip) {
-        boolean axial = false;
-        Hep3Vector m = strip.getMeasuredCoordinate();
-        //System.out.println("y " + m.y() + " -> abs(y) " + Math.abs(m.y()) );
-        if ( Math.abs((Math.abs(m.y())-1.0))<0.0000000001 ) {
-            axial = true;
-            //System.out.println( " ===> " + axial );
-        }
-        return axial;
+        String side = this.getSideFromSiCluster(strip);
+        int layer = this.getLayerFromSiCluster(strip);
+        return layer%2==0 ? false : true;
+        
+        //int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+        //int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom
+//        boolean axial = false;
+//        Hep3Vector m = strip.getMeasuredCoordinate();
+//        //System.out.println("y " + m.y() + " -> abs(y) " + Math.abs(m.y()) );
+//        if ( Math.abs((Math.abs(m.y())-1.0))<0.0000000001 ) {
+//            axial = true;
+//            //System.out.println( " ===> " + axial );
+//        }
+//        return axial;
     }
         
     private int getNAxialHits(List<SiTrackerHitStrip1D> trackerHits, String side) {
         int nhits=0;
         for ( SiTrackerHitStrip1D stripCluster : trackerHits ) {
-            
             if(isAxialHit(stripCluster)) {
                 String si_side = getSideFromSiCluster(stripCluster);
                 
@@ -602,7 +586,7 @@
         for ( SiTrackerHitStrip1D stripCluster : trackerHits ) {
             
             if(isAxialHit(stripCluster)==false) continue;
-           
+            
             si_side = getSideFromSiCluster(stripCluster);
 
             if( side == si_side) {
@@ -614,7 +598,7 @@
                     throw new RuntimeException("SiSensor name " + name + " is invalid?");
                 }
             
-                l = getLayerFromSensorName(name);
+                l = this.getLayerFromSiCluster(stripCluster);
                 if ( l == layer) ++nhits;
             
             } 
@@ -645,18 +629,20 @@
                     System.err.println("This name is too short!!");
                     throw new RuntimeException("SiSensor name " + name + " is invalid?");
                 }
-            
-                l = getLayerFromSensorName(name);
+                l = this.getLayerFromSiCluster(stripCluster);
+                
                 
                 //Turn this into the layer scheme I use
-                if(side=="down") {
-                    //even numbers are used
-                    i = (l/2) - 1;
-                    n[i] = n[i] + 1;
-                } else {
                     i = ((l+1)/2) - 1;
                     n[i] = n[i] + 1;                    
-                }
+//                if(side=="down") {
+//                    i = ((l+1)/2) - 1;
+//                    n[i] = n[i] + 1;                    
+//                } else {
+//                    //even numbers are used
+//                    i = (l/2) - 1;
+//                    n[i] = n[i] + 1;
+//                }
             
             } 
 
@@ -666,14 +652,32 @@
     }   
     
      private String getSideFromSiCluster(SiTrackerHitStrip1D stripCluster) {       
-        Hep3Vector posVec = stripCluster.getPositionAsVector();
-        double yHit = posVec.y();
-        String side;
-        if (yHit>=0.0) side = "up";
-        else side = "down";
-        return side;
+         IIdentifierHelper ref_helper = stripCluster.getIdentifierHelper();
+         IIdentifier ref_id = stripCluster.getSensor().getIdentifier();
+                int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom
+                return ref_s==0 ? "up" : "down";
+////        Hep3Vector posVec = stripCluster.getPositionAsVector();
+////        double yHit = posVec.y();
+////        String side;
+////        if (yHit>=0.0) side = "up";
+////        else side = "down";
+////        return side;
+    }
+
+     private int getLayerFromSiCluster(SiTrackerHitStrip1D stripCluster) {       
+         IIdentifierHelper ref_helper = stripCluster.getIdentifierHelper();
+         IIdentifier ref_id = stripCluster.getSensor().getIdentifier();
+                int ref_l = ref_helper.getValue(ref_id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+                int ref_s = ref_helper.getValue(ref_id, "module"); // 0-1; module number is top or bottom
+                return ref_l;
+////        Hep3Vector posVec = stripCluster.getPositionAsVector();
+////        double yHit = posVec.y();
+////        String side;
+////        if (yHit>=0.0) side = "up";
+////        else side = "down";
+////        return side;
     }
-
     
     private int getLayerFromSensorName(String name) {
             int ilayer = -1;// = Integer.parseInt(layer.substring(layer.length()-1));
@@ -691,7 +695,7 @@
             } else {
                 throw new RuntimeException("This sensor name do not have a layer!");
             }
-            
+            System.out.println("Name " + name + " -> layer " + ilayer);
             return ilayer;
     }
     
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1