Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN | |||
SVTHitRecoCorrelations.java | +144 | -104 | 1.3 -> 1.4 |
Added strip correlations, controlled with a flag.
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;
}
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