hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.5 -r1.6
--- SVTHitRecoCorrelations.java 18 May 2012 21:34:13 -0000 1.5
+++ SVTHitRecoCorrelations.java 22 May 2012 17:15:42 -0000 1.6
@@ -8,8 +8,7 @@
import java.util.Map;
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.identifier.*;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
import org.lcsim.event.EventHeader;
@@ -31,9 +30,9 @@
*/
public class SVTHitRecoCorrelations extends Driver implements Resettable {
- private AIDAFrame plotterFrame;
+ private List<AIDAFrame> plotterFrame = new ArrayList<AIDAFrame>();
private List<IPlotter> plotters = new ArrayList<IPlotter>();
- private AIDA aida = AIDA.defaultInstance();
+ private AIDA aida = AIDA.defaultInstance();
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits";
private String trackerHitCollectionName = "StripClusterer_SiTrackerHitStrip1D";
@@ -44,16 +43,18 @@
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 types[] = {"RawStrips","ClusterY","ClusterX"};
String side[] = {"top","bottom"};
-
+
boolean doStrips = true;
protected void detectorChanged(Detector detector) {
- plotterFrame = new AIDAFrame();
- plotterFrame.setTitle("HPS SVT Hit Reconstruction Correlation Plots");
-
+ plotterFrame.add(new AIDAFrame());
+ plotterFrame.get(0).setTitle("HPS Top SVT Hit Reconstruction Correlation Plots");
+ plotterFrame.add(new AIDAFrame());
+ plotterFrame.get(1).setTitle("HPS Bottom SVT Hit Reconstruction Correlation Plots");
+
aida.tree().cd("/");
@@ -67,16 +68,44 @@
// }
IAnalysisFactory fac = aida.analysisFactory();
-
+ for(int i=0;i<2;++i) {
+ plotter.add(new ArrayList<IPlotter>());
+ for(int t=0;t<3;++t) {
+ IPlotter bcorr = fac.createPlotterFactory().create("compact_" + types[t] + " " + side[i] + " hits");
+ bcorr.setTitle("Cmpt "+ side[i] + " hits " + types[t]);
+ bcorr.createRegion();
+ plotter.get(i).add(bcorr);
+ plotterFrame.get(i).addPlotter(bcorr);
+ plotters.add(bcorr);
+
+
+ IPlotterStyle style = bcorr.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);
+ IHistogram2D corPlot;
+ //if(t==t) {
+ corPlot = aida.histogram2D("Cmpt_" + side[i] + "_" + types[t], 50*10, 0,10, 50*10, 0,10);
+ //}
+
+
+ plotter.get(i).get(t).region(0).plot(corPlot);
+ }
+ }
+
+ /*
for (int i=0;i<2;++i) {
plotter.add(new ArrayList<IPlotter>());
- for (int t=0;t<6;++t) {
+ for (int t=0;t<8;++t) {
IPlotter tmp = fac.createPlotterFactory().create(types[t] + " " + side[i] + " hits");
tmp.setTitle(side[i] + " hits " + types[t]);
- tmp.createRegions(5, 5);
+ if(i==2) tmp.createRegion();
+ else tmp.createRegions(5, 5);
plotter.get(i).add(tmp);
- plotterFrame.addPlotter(tmp);
+ plotterFrame.get(i).addPlotter(tmp);
plotters.add(tmp);
@@ -87,33 +116,44 @@
//style.dataStyle().fillStyle().setColor("yellow");
//style.dataStyle().errorBarStyle().setVisible(false);
+ IHistogram2D corPlot = aida.histogram2D("Cmpt_" + side[i] + "_" + types[t], 100*10, 0,10, 100*10, 0,10);
+ plotter.get(i).get(t).region(0).plot(corPlot);
+
}
}
+
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_s,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
+ if(ref_l>3) continue;
+
for (SiSensor sensor : sensors) {
int l = getLayer(sensor);
int s = getSide(sensor);
boolean a = isAxial(sensor);
- l = getPhysLayer(l,s,a);
+ //l = getPhysLayer(l,s,a);
+
+ if(l>3) continue;
//correlation with same side and axial/stereo
- if ( ref_a == a && ref_s == s ) {
+ //if ( ref_a == a && ref_s == s ) {
+ if ( ref_s == s ) {
int region = (ref_l-1) + (l-1)*5;
+ //int region = (ref_l-1) + (l-1)*5;
+ System.out.println("region " + region);
double ymin,ymax;
if(s==0) {
ymin=0;
@@ -131,6 +171,8 @@
//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);
+ IHistogram2D corPlot2 = aida.histogram2D(side[s] + "_" + types[6] + "_layer" + ref_l + "_layer" + l, 100, 0,641, 100, 0,641);
+ plotter.get(s).get(6).region(region).plot(corPlot2);
}
} else {
if(1==1) {
@@ -141,6 +183,9 @@
//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);
+ IHistogram2D corPlot2 = aida.histogram2D(side[s] + "_" + types[7] + "_layer" + ref_l + "_layer" + l, 100, 0,641, 100, 0,641);
+ plotter.get(s).get(7).region(region).plot(corPlot2);
+
}
}
@@ -169,11 +214,12 @@
}
}
}
+ */
-
-
- plotterFrame.pack();
- plotterFrame.setVisible(true);
+ for(int i=0;i<2;++i) {
+ plotterFrame.get(i).pack();
+ plotterFrame.get(i).setVisible(true);
+ }
}
public SVTHitRecoCorrelations() {
@@ -198,94 +244,156 @@
public void process(EventHeader event) {
-
-// if (!event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
-// System.out.println(rawTrackerHitCollectionName + " does not exist; skipping event");
-// int ns = sensors.size();
-// for (int i = 0; i < ns; i++) {
-// aida.histogram1D(sensors.get(i).getName() + "_raw_hits").fill(0);
-// aida.histogram1D(sensors.get(i).getName() + "_reco_hits").fill(0);
-// }
-//
-// return;
-// }
-//
-// if (!event.hasCollection(HPSFittedRawTrackerHit.class, fittedTrackerHitCollectionName)) {
-// System.out.println(fittedTrackerHitCollectionName + " does not exist; skipping event");
-// int ns = sensors.size();
-// for (int i = 0; i < ns; i++) {
-// int nraw = sensors.get(i).getReadout().getHits(RawTrackerHit.class).size();
-// aida.histogram1D(sensors.get(i).getName() + "_raw_hits").fill(nraw);
-// aida.histogram1D(sensors.get(i).getName() + "_reco_hits").fill(0);
-// }
-// return;
-// }
-//
-
++eventCount;
-// List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
-// List<HPSFittedRawTrackerHit> fittedrawHits = event.get(HPSFittedRawTrackerHit.class, fittedTrackerHitCollectionName);
- List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, trackerHitCollectionName);
-// for (HPSFittedRawTrackerHit hrth : fittedrawHits) {
-// double fittedAmp = hrth.getAmp();
-// double fittedT0 = hrth.getT0();
-// String sensorName = hrth.getRawTrackerHit().getDetectorElement().getName();
-// aida.histogram1D(sensorName + "_timing").fill(fittedT0);
-// aida.histogram1D(sensorName + "_amplitude").fill(fittedAmp);
-// }
-// for (SiSensor sensor : sensors) {
-// String sensorName = sensor.getName();
-// int nraw = sensor.getReadout().getHits(RawTrackerHit.class).size();
-// int nreco = sensor.getReadout().getHits(HPSFittedRawTrackerHit.class).size();
-// aida.histogram1D(sensorName + "_raw_hits").fill(nraw);
-// aida.histogram1D(sensorName + "_reco_hits").fill(nreco);
-// }
- for (SiTrackerHitStrip1D ref_cluster : stripHits) {
- SiSensor ref_sensor = ref_cluster.getSensor();
- boolean ref_a = isAxial(ref_sensor);
- int ref_s = getSide(ref_sensor);
- int ref_l = getLayer(ref_sensor);
- 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;
+ if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+
+ System.out.println("The RawTrackerHit collection " + rawTrackerHitCollectionName + " has " + rawHits.size() + " hits.");
+
+ for (RawTrackerHit ref_hit : rawHits) {
+ IIdentifierHelper ref_helper = ref_hit.getDetectorIdentifierHelper();
+ IIdentifier ref_id = ref_hit.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
+ boolean ref_a = isAxial(ref_s,ref_l);
+ //ref_l = getPhysLayer(ref_l,ref_s,ref_a);
+
+ ///if(ref_l>3) continue;
+
+ for (RawTrackerHit hit : rawHits) {
+
+ IIdentifierHelper helper = hit.getDetectorIdentifierHelper();
+
+ IIdentifier id = hit.getIdentifier();
+ int l = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int s = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+ boolean a = isAxial(s,l);
+ //l = getPhysLayer(l,s,a);
+
+ //if(l>3) continue;
+
+ //if (ref_a==a && ref_s==s) {
+ if (ref_s==s) {
+ IExpandedIdentifier ref_eid = ref_helper.unpack(ref_id);
+ IIdentifierDictionary ref_dict = ref_helper.getIdentifierDictionary();
+ int ref_strip = ref_eid.getValue(ref_dict.getFieldIndex("strip"));
+ IExpandedIdentifier eid = helper.unpack(id);
+ IIdentifierDictionary dict = helper.getIdentifierDictionary();
+ int strip = eid.getValue(dict.getFieldIndex("strip"));
+
+
+ double c_strip = ((double)strip)/640.0 + (l-1);
+ double c_ref_strip = ((double)ref_strip)/640.0 + (ref_l-1);
+
+ aida.histogram2D("Cmpt_" + side[s] + "_" + types[0]).fill(c_ref_strip,c_strip);
+
+
+
+
+
+
+
+
+ // Fill in the side and strip numbers.
+ //ref_eid.setValue(dict.getFieldIndex("side"), sideNumber);
+ //ref_eid.setValue(dict.getFieldIndex("strip"), stripNumber);
+
+ //int clusterSize = cluster.getRawHits().size();
+ //Move this to strip nr?
+ //System.out.println("side " + side[s]);
+// if( a) {
+// if(doStrips) aida.histogram2D(side[s] + "_" + types[6] + "_layer" + ref_l + "_layer" + l).fill(ref_strip,strip);
+// } else {
+// if(doStrips) aida.histogram2D(side[s] + "_" + types[7] + "_layer" + ref_l + "_layer" + l).fill(ref_strip,strip);
+//
+// }
+ }
+ }
+ }
+ }
+ else {
+
+ System.out.println("No " + rawTrackerHitCollectionName + " was found in this event.");
+ }
+
+
+
+
+
+
+
+ if (event.hasCollection(SiTrackerHitStrip1D.class, trackerHitCollectionName)) {
+ List<SiTrackerHitStrip1D> stripHits = event.get(SiTrackerHitStrip1D.class, trackerHitCollectionName);
+
+ System.out.println("The SiTrackerHitStrip1D collection " + trackerHitCollectionName + " has " + stripHits.size() + " hits.");
+
+ for (SiTrackerHitStrip1D ref_cluster : stripHits) {
+ SiSensor ref_sensor = ref_cluster.getSensor();
- for (SiTrackerHitStrip1D cluster : stripHits) {
- SiSensor sensor = cluster.getSensor();
- boolean a = isAxial(sensor);
- int s = getSide(sensor);
+ boolean ref_a = isAxial(ref_sensor);
+ int ref_s = getSide(ref_sensor);
+ int ref_l = getLayer(ref_sensor);
+ //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_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?
- //System.out.println("side " + side[s]);
- if( a) {
- if(1==1) 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(1==1) 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);
-
+
+ for (SiTrackerHitStrip1D cluster : stripHits) {
+ SiSensor sensor = cluster.getSensor();
+ boolean a = isAxial(sensor);
+ int s = getSide(sensor);
+
+ if (ref_s==s) {
+ //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();
+
+
+ double p = cluster.getPosition()[1]/50.0 + (l-1);
+ double ref_p = ref_cluster.getPosition()[1]/50.0 + (ref_l-1);
+
+ aida.histogram2D("Cmpt_" + side[s] + "_" + types[1]).fill(ref_p,p);
+
+ p = (cluster.getPosition()[0]+50.0)/100.0 + (l-1);
+ ref_p = (ref_cluster.getPosition()[0]+50.0)/100.0 + (ref_l-1);
+
+ aida.histogram2D("Cmpt_" + side[s] + "_" + types[2]).fill(ref_p,p);
+//
+//
+//
+// //int clusterSize = cluster.getRawHits().size();
+// //Move this to strip nr?
+// //System.out.println("side " + side[s]);
+// if( a) {
+// if(1==1) 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(1==1) 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);
+//
+// }
}
}
}
}
+ else {
+ System.out.println("No " + trackerHitCollectionName + " was found in this event.");
+ }
+
+ /*
if (event.hasCollection(TrackerHit.class, hthOutputCollectionName)) {
List<TrackerHit> hth = event.get(TrackerHit.class, hthOutputCollectionName);
@@ -329,7 +437,7 @@
System.out.println("No " + hthOutputCollectionName + " was found in this event.");
}
-
+ */
@@ -342,8 +450,10 @@
} catch (IOException ex) {
Logger.getLogger(SVTHitRecoCorrelations.class.getName()).log(Level.SEVERE, null, ex);
}
- plotterFrame.dispose();
- }
+ for(int i=0;i<2;++i) {
+ plotterFrame.get(i).dispose();
+ }
+ }
@Override
public void reset() {
@@ -420,8 +530,22 @@
return true;
}
-
-
+ private boolean isAxial(int ref_s,int ref_l) {
+ boolean ref_a=true;
+ if (ref_s==0) {
+ //top
+ if ( ref_l % 2 == 0 ) {
+ ref_a = false;
+ }
+ } else {
+ //bottom
+ if ( ref_l % 2 != 0 ) {
+ ref_a = false;
+ }
+ }
+ return ref_a;
+
+ }
}