Print

Print


Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN
SVTHitRecoCorrelations.java+144-1041.3 -> 1.4
Added strip correlations, controlled with a flag.

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
SVTHitRecoCorrelations.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SVTHitRecoCorrelations.java	13 May 2012 21:38:20 -0000	1.3
+++ SVTHitRecoCorrelations.java	18 May 2012 20:19:13 -0000	1.4
@@ -11,6 +11,7 @@
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.TrackerHit;
@@ -40,14 +41,15 @@
     private String trackerName = "Tracker";
     private int eventCount;
     private List<SiSensor> sensors;
-    IPlotter plotter;
-    IPlotter plotter2;
-    IPlotter plotter3;
-    IPlotter plotter4;
-    IPlotter plotter5;
+    ArrayList< ArrayList<IPlotter> > plotter = new ArrayList< ArrayList<IPlotter> >();
     private Map<String, Integer> sensorRegionMap;
     private String outputPlots = null;
+    String types[] = {"Axial","Stereo", "HTH Y", "HTH X","AxialStrips","StereoStrips"};
+    String side[] = {"top","bottom"};
 
+    boolean doStrips = true;
+    
+    
     protected void detectorChanged(Detector detector) {
         plotterFrame = new AIDAFrame();
         plotterFrame.setTitle("HPS SVT Hit Reconstruction Correlation Plots");
@@ -63,67 +65,40 @@
 //            int region = computePlotterRegion(sensor);
 //            sensorRegionMap.put(sensor.getName(), region);
 //        }
-
         IAnalysisFactory fac = aida.analysisFactory();
-        plotter = fac.createPlotterFactory().create("Axial hits");
-        plotter.setTitle("Axial hits top");
-        plotterFrame.addPlotter(plotter);
-        plotters.add(plotter);
-        IPlotterStyle style = plotter.style();
-        style.setParameter("hist2DStyle", "colorMap");
-        style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style.statisticsBoxStyle().setVisible(false);
-        //style.dataStyle().fillStyle().setColor("yellow");
-        //style.dataStyle().errorBarStyle().setVisible(false);
-        plotter.createRegions(5, 5);
-        
-        plotter2 = fac.createPlotterFactory().create("Stereo hits");
-        plotter2.setTitle("Stereo hits top");
-        plotterFrame.addPlotter(plotter2);
-        plotters.add(plotter2);
-        IPlotterStyle style2 = plotter2.style();
-        style2.setParameter("hist2DStyle", "colorMap");
-        style2.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        style2.statisticsBoxStyle().setVisible(false);
-        
-        //style2.dataStyle().fillStyle().setColor("yellow");
-        //style2.dataStyle().errorBarStyle().setVisible(false);
-        plotter2.createRegions(5, 5);
-
-        plotter3 = fac.createPlotterFactory().create("HTH hits");
-        plotter3.setTitle("HTH hits Y top");
-        plotterFrame.addPlotter(plotter3);
-        plotters.add(plotter3);
-        IPlotterStyle style3 = plotter3.style();
-        style3.setParameter("hist2DStyle", "colorMap");
-        style3.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        //style3.statisticsBoxStyle().setVisibileStatistics("10");
-        style3.statisticsBoxStyle().setVisible(false);
-        //style3.dataStyle().fillStyle().setColor("yellow");
-        //style3.dataStyle().errorBarStyle().setVisible(false);
-        plotter3.createRegions(5, 5);
-        
-        plotter4 = fac.createPlotterFactory().create("HTH hits");
-        plotter4.setTitle("HTH hits X top");
-        plotterFrame.addPlotter(plotter4);
-        plotters.add(plotter4);
-        IPlotterStyle style4 = plotter4.style();
-        style4.setParameter("hist2DStyle", "colorMap");
-        style4.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-        //style3.statisticsBoxStyle().setVisibileStatistics("10");
-        style4.statisticsBoxStyle().setVisible(false);
-        //style3.dataStyle().fillStyle().setColor("yellow");
-        //style3.dataStyle().errorBarStyle().setVisible(false);
-        plotter4.createRegions(5, 5);
-
+        
+        
+        for (int i=0;i<2;++i) {
+            plotter.add(new ArrayList<IPlotter>());
+            
+            for (int t=0;t<6;++t) {
+                IPlotter tmp = fac.createPlotterFactory().create(types[t] + " " + side[i] + " hits");
+                tmp.setTitle(side[i] + " hits " + types[t]);
+                tmp.createRegions(5, 5);
+                plotter.get(i).add(tmp);
+                plotterFrame.addPlotter(tmp);
+                plotters.add(tmp);
+                
+                
+                IPlotterStyle style = tmp.style();
+                style.setParameter("hist2DStyle", "colorMap");
+                style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
+                style.statisticsBoxStyle().setVisible(false);
+                //style.dataStyle().fillStyle().setColor("yellow");
+                //style.dataStyle().errorBarStyle().setVisible(false);
+                
+            }
+        }
+        
+     
         
         for (SiSensor ref_sensor : sensors) {
             int ref_l = getLayer(ref_sensor);
             int ref_s = getSide(ref_sensor);
             boolean ref_a = isAxial(ref_sensor);
-            ref_l = getPhysLayer(ref_l,ref_a);
-            
+            ref_l = getPhysLayer(ref_l,ref_s,ref_a);
             
+            System.out.println("Sensor " + ref_sensor.getName() + " -> ref_s " + ref_s + " layer " + getLayer(ref_sensor) + " phys layer " + ref_l + " axial " + ref_a);
             //if (!ref_a) continue;
             //if (ref_s == 1 ) continue; //only top for now
 
@@ -132,24 +107,41 @@
                 int s = getSide(sensor);
                 boolean a = isAxial(sensor);
                 
-                l = getPhysLayer(l,a);
+                l = getPhysLayer(l,s,a);
                 
                 
                 //correlation with same side and axial/stereo
                 
                 if ( ref_a == a && ref_s == s ) {
-                
-                    if(s == 0 && a ) {
-                        IHistogram2D corPlot = aida.histogram2D("corr_TA_layer" + ref_l + "_layer" + l, 50, 10, 60.0, 50, 10, 60.0);
-                        int region = (ref_l-1) + (l-1)*5;
-                        //System.out.println("ref_l " + ref_l + " l " + l + "  ---> " + region);
-                        plotter.region(region).plot(corPlot);
+                    int region = (ref_l-1) + (l-1)*5;
+                    double ymin,ymax;
+                    if(s==0) {
+                        ymin=0;
+                        ymax=60;
+                    }else {
+                        ymin=-60;
+                        ymax=0;
                     }
-                    if(s == 0 && !a ) {
-                        IHistogram2D corPlot = aida.histogram2D("corr_TS_layer" + ref_l + "_layer" + l, 50, 10, 60.0, 50, 10, 60.0);
-                        int region = (ref_l-1) + (l-1)*5;
-                        //System.out.println("ref_l " + ref_l + " l " + l + "  ---> " + region);
-                        plotter2.region(region).plot(corPlot);
+                    if( a ) {
+                        if(!doStrips) { 
+                            IHistogram2D corPlot = aida.histogram2D(side[s] + "_" + types[0] + "_layer" + ref_l + "_layer" + l, 50, ymin,ymax, 50, ymin,ymax);
+                            plotter.get(s).get(0).region(region).plot(corPlot);
+                        }
+                        if(doStrips) {
+                            //IHistogram2D corPlot1 = aida.histogram2D(side[s] + "_" + types[4] + "_layer" + ref_l + "_layer" + l, 642, 0,641, 642, 0,641);
+                            IHistogram2D corPlot1 = aida.histogram2D(side[s] + "_" + types[4] + "_layer" + ref_l + "_layer" + l, 100, 0,641, 100, 0,641);
+                            plotter.get(s).get(4).region(region).plot(corPlot1);
+                        }
+                    } else {
+                        if(!doStrips) {
+                            IHistogram2D corPlot = aida.histogram2D(side[s] + "_" + types[1] + "_layer" + ref_l + "_layer" + l, 50, ymin, ymax, 50, ymin, ymax);
+                            plotter.get(s).get(1).region(region).plot(corPlot);
+                        }
+                        if(doStrips) {
+                            //IHistogram2D corPlot1 = aida.histogram2D(side[s] + "_" + types[5] + "_layer" + ref_l + "_layer" + l, 642, 0,641, 642, 0,641);
+                            IHistogram2D corPlot1 = aida.histogram2D(side[s] + "_" + types[5] + "_layer" + ref_l + "_layer" + l, 100, 0,641, 100, 0,641);
+                            plotter.get(s).get(5).region(region).plot(corPlot1);
+                        }
                     }
 
                 }
@@ -159,11 +151,22 @@
         
         for (int i=1;i<6;++i) {
             for (int ii=1;ii<6;++ii) {
-                IHistogram2D corPlot = aida.histogram2D("corrY_HTH_layer" + i + "_layer" + ii, 50, 10, 60.0, 50, 10, 60.0);
-                IHistogram2D corPlot1 = aida.histogram2D("corrX_HTH_layer" + i + "_layer" + ii, 60, -60, 60.0, 60, -60, 60.0);
-                int region = (i-1) + (ii-1)*5;
-                plotter3.region(region).plot(corPlot);
-                plotter4.region(region).plot(corPlot1);
+                for (int s=0;s<2;++s) {
+                    System.out.println(" i " + i + " ii " + " s " + side[s]);
+                    double ymin,ymax;
+                    if(s==0) {
+                        ymin=0;
+                        ymax=60;
+                    }else {
+                        ymin=-60;
+                        ymax=0;
+                    }
+                    IHistogram2D corPlot = aida.histogram2D(side[s] + "_Y_HTH_layer" + i + "_layer" + ii, 50,ymin, ymax, 50, ymin, ymax);
+                    IHistogram2D corPlot1 = aida.histogram2D(side[s] + "_X_HTH_layer" + i + "_layer" + ii, 60, ymin, ymax, 60, ymin,ymax);
+                    int region = (i-1) + (ii-1)*5;
+                    plotter.get(s).get(2).region(region).plot(corPlot);
+                    plotter.get(s).get(3).region(region).plot(corPlot1);
+                }
             }
         }
         
@@ -240,27 +243,42 @@
         for (SiTrackerHitStrip1D ref_cluster : stripHits) {
             SiSensor ref_sensor = ref_cluster.getSensor();
             boolean ref_a = isAxial(ref_sensor);
-            int ref_side = getSide(ref_sensor);
+            int ref_s = getSide(ref_sensor);
             int ref_l = getLayer(ref_sensor);
-            ref_l = getPhysLayer(ref_l,ref_a);
+            ref_l = getPhysLayer(ref_l,ref_s,ref_a);
+
+            SiTrackerIdentifierHelper ref_helper = ref_cluster.getIdentifierHelper();
+            IIdentifier ref_id = ref_cluster.getRawHits().get(0).getIdentifier();                    
+            int ref_strip = ref_helper.getElectrodeValue(ref_id);
+
+            
+            //if (ref_s ==0) continue;
+                
                 
             for (SiTrackerHitStrip1D cluster : stripHits) {
                 SiSensor sensor = cluster.getSensor();
                 boolean a = isAxial(sensor);
-                int side = getSide(sensor);
-                if (ref_a==a && ref_side==side) {
-                    int l = getLayer(sensor);
-                    l = getPhysLayer(l,a);
+                int s = getSide(sensor);
+                
+                if (ref_a==a && ref_s==s) {
                     
+                    int l = getLayer(sensor);
+                    l = getPhysLayer(l,s,a);
+                    SiTrackerIdentifierHelper helper = cluster.getIdentifierHelper();
+                    IIdentifier id = cluster.getRawHits().get(0).getIdentifier();                    
+                    int strip = helper.getElectrodeValue(id);
+                            //.hps_hit.getRawTrackerHit().getIdentifier();
                     
                     //int clusterSize = cluster.getRawHits().size();
                     //Move this to strip nr?
-                    if( side == 0 && a) {
-                            aida.histogram2D("corr_TA_layer" + ref_l + "_layer" + l).fill(ref_cluster.getPosition()[1],cluster.getPosition()[1]);
-                    }
-                    if( side == 0 && !a) {
-                            aida.histogram2D("corr_TS_layer" + ref_l + "_layer" + l).fill(ref_cluster.getPosition()[1],cluster.getPosition()[1]);
-                        
+                    //System.out.println("side " + side[s]);
+                    if( a) {
+                        if(!doStrips) aida.histogram2D(side[s] + "_" + types[0] + "_layer" + ref_l + "_layer" + l).fill(ref_cluster.getPosition()[1],cluster.getPosition()[1]);
+                        if(doStrips) aida.histogram2D(side[s] + "_" + types[4] + "_layer" + ref_l + "_layer" + l).fill(ref_strip,strip);
+                    } else {
+                        if(!doStrips) aida.histogram2D(side[s] + "_" + types[1] + "_layer" + ref_l + "_layer" + l).fill(ref_cluster.getPosition()[1],cluster.getPosition()[1]);
+                        if(doStrips) aida.histogram2D(side[s] + "_" + types[5] + "_layer" + ref_l + "_layer" + l).fill(ref_strip,strip);
+                            
                     }
                 }
             }
@@ -279,26 +297,28 @@
                 //HTH hits uses the axial layer nr i.e. odd numbers 1-10
                 layer_ref = (layer_ref+1)/2;
                 //How do I find the top or bottom side?
-                int side_ref = 0;
-                if (hit_ref.getPosition()[1] < 0 ) side_ref = 1;
+                int ref_s = 0;
+                if (hit_ref.getPosition()[1] < 0 ) ref_s = 1;
+                
+                
+                
                 
+                //if (ref_s ==0) continue;
+
                 for (TrackerHit h : hth) {
                     HelicalTrackHit hit = (HelicalTrackHit)h; 
                     
                     int layer = hit.Layer();
                     layer = (layer+1)/2;
                     String name = hit.Detector();
-                    int side = 0;
-                    if (hit.getPosition()[1] < 0 ) side = 1;
+                    int s = 0;
+                    if (hit.getPosition()[1] < 0 ) s = 1;
                     //System.out.println("Hit name " + name + " layer " + layer + "  x,y , z" + hit.getPosition()[0] + "," + hit.getPosition()[1] + "," + hit.getPosition()[2] );
                     //System.out.println("Hit name " + name + " layer " + layer_ref + "  x,y , z" + hit_ref.getPosition()[0] + "," + hit_ref.getPosition()[1] + "," + hit_ref.getPosition()[2] );
                     
-                    if ( side == side_ref) {               
-                        
-                        if( side == 0 ) {
-                            aida.histogram2D("corrY_HTH_layer" + layer_ref + "_layer" + layer).fill(hit_ref.getPosition()[1],hit.getPosition()[1]);
-                            aida.histogram2D("corrX_HTH_layer" + layer_ref + "_layer" + layer).fill(hit_ref.getPosition()[0],hit.getPosition()[0]);
-                        }
+                    if ( s == ref_s) {               
+                        aida.histogram2D(side[s] + "_Y_HTH_layer" + layer_ref + "_layer" + layer).fill(hit_ref.getPosition()[1],hit.getPosition()[1]);
+                        aida.histogram2D(side[s] + "_X_HTH_layer" + layer_ref + "_layer" + layer).fill(hit_ref.getPosition()[0],hit.getPosition()[0]);
                     }
                 }
                 
@@ -340,11 +360,21 @@
     }
 
     
-    private int getPhysLayer(int l,boolean axial) {
-        if(axial) {
-            l = (l+1)/2;
+    private int getPhysLayer(int l,int side, boolean axial) {
+        if(side==0) {
+            //top: odd are axial        
+            if(axial) {
+                l = (l+1)/2;
+            } else {
+                l = l/2;
+            }
         } else {
-            l = l/2;
+            //bottom
+            if(axial) {
+                l = l/2;
+            } else {
+                l = (l+1)/2;
+            }
         }
         return l;
     }
@@ -376,8 +406,18 @@
     private boolean isAxial(SiSensor sensor) {
          int v[] = getSideAndLayer(sensor);
          int layer = v[1];
-         if ( layer % 2 == 0 ) return false;
-         else return true;
+         if (v[0]==0) {
+             //top
+             if ( layer % 2 == 0 ) {
+                 return false;
+             }
+         } else {
+             //bottom
+             if ( layer % 2 != 0 ) {
+                 return false;
+             }
+         }
+         return true;
     }
     
   
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