Commit in hps-java/src/main/java/org/lcsim/hps/monitoring/svt on MAIN | |||
SVTHitRecoCorrelations.java | +225 | -101 | 1.5 -> 1.6 |
Compactified the plots.
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; +
+ }
}
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