hps-java/src/main/java/org/lcsim/hps/monitoring/svt
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;
}