4 modified files
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.3 -r1.4
--- SVTEventDisplay.java 4 May 2012 14:06:37 -0000 1.3
+++ SVTEventDisplay.java 6 May 2012 08:57:38 -0000 1.4
@@ -7,12 +7,15 @@
import java.util.ArrayList;
import java.util.List;
import org.lcsim.detector.tracker.silicon.*;
+import org.lcsim.event.CalorimeterHit;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawCalorimeterHit;
import org.lcsim.event.RawTrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.ecal.HPSEcalCluster;
import org.lcsim.hps.recon.ecal.HPSEcalConditions;
import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit;
import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants;
@@ -28,6 +31,8 @@
private List<IPlotter> plotters = new ArrayList<IPlotter>();
private AIDA aida = AIDA.defaultInstance();
private String rawTrackerHitCollectionName = "RawTrackerHitMaker_RawTrackerHits";
+ private String helicalTrackHitCollectionName = "HelicalTrackHits";
+ // String eCalClusterCollectionName = "EcalClusters";
private String trackerName = "Tracker";
private int eventCount;
private Detector detector = null;
@@ -39,8 +44,8 @@
int integralWindow = 0;
IDDecoder dec;
String ecalSubdetectorName = "Ecal";
- String ecalCollectionName = "EcalReadoutHits";
- double zEcal = 160;
+ String ecalCollectionName = "EcalClusters";
+ double zEcal = 130;
protected void detectorChanged(Detector detector) {
this.detector = detector;
@@ -71,8 +76,8 @@
// style.dataStyle().fillStyle().
plotter.createRegions(1, 2);
- svtDispZY = aida.histogram2D("SVT Raw Hits: z vs y", 50, 0, 100, 100, -10, 10);
- svtDispZX = aida.histogram2D("SVT Raw Hits: z vs x", 50, 0, 100, 100, -10, 10);
+ svtDispZY = aida.histogram2D("SVT Raw Hits: z vs y", 50, 0, 140, 50, -10, 10);
+ svtDispZX = aida.histogram2D("SVT Raw Hits: z vs x", 50, 0, 140, 100, -30, 30);
// cl2D = aida.cloud2D("SVT Raw Hits: z vs y");
plotter.region(0).plot(svtDispZY);
@@ -81,12 +86,17 @@
}
- public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
- this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
- }
+// public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) {
+// this.rawTrackerHitCollectionName = rawTrackerHitCollectionName;
+// }
+ public void setHelicalTrackHitCollectionName(String helicalTrackHitCollectionName) {
+ this.helicalTrackHitCollectionName = helicalTrackHitCollectionName;
+ }
+
public void process(EventHeader event) {
- if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+// if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+ if (event.hasCollection(HelicalTrackHit.class, helicalTrackHitCollectionName)) {
++eventCount;
if (!HPSSVTCalibrationConstants.calibrationLoaded()) {
HPSSVTCalibrationConstants.loadCalibrationConstants();
@@ -96,42 +106,61 @@
svtDispZX.reset();
svtDispZY.reset();
- List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
- for (RawTrackerHit hrth : rawHits) {
+ List<HelicalTrackHit> rawHits = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName);
+ for (HelicalTrackHit hrth : rawHits) {
fillPlots(hrth);
}
+
+ List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
+ // System.out.println("Number of ECAL clusters="+clusters.size());
+ for (HPSEcalCluster cluster : clusters) {
+ dec.setID(cluster.getSeedHit().getCellID());
+ CalorimeterHit seedHit = cluster.getSeedHit();
+// System.out.println("z = "+seedHit.getPosition()[2]+" y = "+seedHit.getPosition()[1]);
+// if(cluster.getEnergy()/10>500)
+ svtDispZY.fill(zEcal, seedHit.getPosition()[1]/10, cluster.getEnergy()/10);
+ svtDispZY.fill(zEcal, seedHit.getPosition()[0]/10, cluster.getEnergy()/10);
+ }
+ }else{
+ System.out.println("SVTEventDisplay: Event has no HelicalTrackHits");
}
}
- private void fillPlots(RawTrackerHit hit) {
+ private void fillPlots(HelicalTrackHit hit) {
- SiSensor sensor = (SiSensor) hit.getDetectorElement();
- SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) (sensor.getIdentifierHelper());
- int strip = hit.getIdentifierFieldValue("strip");
- ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(hit.getIdentifier()));
- SiSensorElectrodes electrodes = ((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
- Hep3Vector position = getGlobalHitPosition(hit, electrodes);
-
- short[] adcVal = hit.getADCValues();
- double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
+// SiSensor sensor = (SiSensor) hit.getDetectorElement();
+// SiTrackerIdentifierHelper _sid_helper = (SiTrackerIdentifierHelper) (sensor.getIdentifierHelper());
+// int strip = hit.getIdentifierFieldValue("strip");
+// ChargeCarrier carrier = ChargeCarrier.getCarrier(_sid_helper.getSideValue(hit.getIdentifier()));
+// SiSensorElectrodes electrodes = ((SiSensor) hit.getDetectorElement()).getReadoutElectrodes(carrier);
+// Hep3Vector position = getGlobalHitPosition(hit, electrodes);
+
+// short[] adcVal = hit.getADCValues();
+// double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
+// double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip);
// aida.cloud2D("SVT Raw Hits: z vs y").fill(position.z() / 10.0, position.y() / 10.0);
// aida.histogram2D("SVT Raw Hits: z vs y").fill(position.z()/10.0,position.y()/10.0);
// aida.histogram2D("SVT Raw Hits: z vs y").fill(position.z()/10.0,position.y()/10.0);
- double maxAdc = -9999;
- for (int i = 0; i < 6; i++) {
- if (adcVal[i] - ped > maxAdc)
- maxAdc = adcVal[i] - ped;
- }
+// double maxAdc = -9999;
+// for (int i = 0; i < 6; i++) {
+// if (adcVal[i] - ped > maxAdc)
+// maxAdc = adcVal[i] - ped;
+// }
// if(noise<70){
- if (noise < 70 && !mask(position)) {
+ // if (noise < 70 && !mask(position)) {
// System.out.println(sensor.getName()+" strip # "+strip+" "+position.z()+" " + position.y());
// svtDisp.fill(position.z()/10.0,position.y()/10.0);
- svtDispZY.fill(position.z() / 10.0, position.y() / 10.0, maxAdc);
- svtDispZX.fill(position.z() / 10.0, position.x() / 10.0, maxAdc);
- }
+// svtDispZY.fill(position.z() / 10.0, position.y() / 10.0, maxAdc);
+// svtDispZX.fill(position.z() / 10.0, position.x() / 10.0, maxAdc);
+
+ // svtDispZY.fill(position.z() / 10.0, position.y() / 10.0, 1000.0);
+ // svtDispZX.fill(position.z() / 10.0, position.x() / 10.0, 1000.0);
+ // }
+ svtDispZY.fill(hit.z() / 10.0, hit.y() / 10.0, 1000.0);
+ svtDispZX.fill(hit.z() / 10.0, hit.x() / 10.0, 1000.0);
+
}
private Hep3Vector getGlobalHitPosition(RawTrackerHit hit, SiSensorElectrodes electrodes) {
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.6 -r1.7
--- SVTHitReconstructionPlots.java 6 May 2012 00:01:13 -0000 1.6
+++ SVTHitReconstructionPlots.java 6 May 2012 08:57:38 -0000 1.7
@@ -2,7 +2,11 @@
import hep.aida.*;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -35,6 +39,7 @@
IPlotter plotter3;
IPlotter plotter4;
IPlotter plotter5;
+ private Map<String, Integer> sensorRegionMap;
protected void detectorChanged(Detector detector) {
plotterFrame = new AIDAFrame();
@@ -45,6 +50,12 @@
sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+ // Map a map of sensors to their region numbers in the plotter.
+ sensorRegionMap = new HashMap<String, Integer>();
+ for (SiSensor sensor : sensors) {
+ int region = computePlotterRegion(sensor);
+ sensorRegionMap.put(sensor.getName(), region);
+ }
IAnalysisFactory fac = aida.analysisFactory();
plotter = fac.createPlotterFactory().create("HPS SVT Timing Plots");
@@ -93,21 +104,19 @@
style5.dataStyle().errorBarStyle().setVisible(false);
plotter5.createRegions(5, 4);
- int ns = sensors.size();
- for (int i = 0; i < ns; i++) {
- IHistogram1D timingPlot = aida.histogram1D(sensors.get(i).getName() + "_timing", 50, 0, 25.0);
- IHistogram1D amplitudePlot = aida.histogram1D(sensors.get(i).getName() + "_amplitude", 50, 0, 2000.0);
-
- IHistogram1D nrawPlot = aida.histogram1D(sensors.get(i).getName() + "_raw_hits", 10, 0, 9.0);
- IHistogram1D nrecoPlot = aida.histogram1D(sensors.get(i).getName() + "_reco_hits", 10, 0, 9.0);
- IHistogram1D clusterSizePlot = aida.histogram1D(sensors.get(i).getName() + "_cluster_size", 9, 1, 9.0);
-
- plotter.region(i).plot(timingPlot);
- plotter2.region(i).plot(amplitudePlot);
- plotter3.region(i).plot(nrawPlot);
- plotter4.region(i).plot(nrecoPlot);
- plotter5.region(i).plot(clusterSizePlot);
+ for (SiSensor sensor : sensors) {
+ IHistogram1D timingPlot = aida.histogram1D(sensor.getName() + "_timing", 50, 0, 25.0);
+ IHistogram1D amplitudePlot = aida.histogram1D(sensor.getName() + "_amplitude", 50, 0, 2000.0);
+ IHistogram1D nrawPlot = aida.histogram1D(sensor.getName() + "_raw_hits", 10, 0, 9.0);
+ IHistogram1D nrecoPlot = aida.histogram1D(sensor.getName() + "_reco_hits", 10, 0, 9.0);
+ IHistogram1D clusterSizePlot = aida.histogram1D(sensor.getName() + "_cluster_size", 9, 1, 9.0);
+ int region = sensorRegionMap.get(sensor.getName());
+ plotter.region(region).plot(timingPlot);
+ plotter2.region(region).plot(amplitudePlot);
+ plotter3.region(region).plot(nrawPlot);
+ plotter4.region(region).plot(nrecoPlot);
+ plotter5.region(region).plot(clusterSizePlot);
}
plotterFrame.pack();
@@ -197,4 +206,26 @@
aida.histogram1D(sensors.get(i).getName() + "_reco_hits").reset();
}
}
+
+ private int computePlotterRegion(SiSensor sensor) {
+
+ IIdentifierHelper helper = sensor.getIdentifierHelper();
+ IIdentifier id = sensor.getIdentifier();
+
+ int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+
+ // Compute the sensor's x and y grid coordinates and then translate to region number.
+ int ix = (layer - 1) / 2;
+ int iy = 0;
+ if (module > 0) {
+ iy += 2;
+ }
+ if (layer % 2 == 0) {
+ iy += 1;
+ }
+ int region = ix * 4 + iy;
+ //System.out.println(sensor.getName() + "; lyr=" + layer + "; mod=" + module + " -> xy[" + ix + "][" + iy + "] -> reg="+region);
+ return region;
+ }
}
hps-java/src/main/java/org/lcsim/hps/monitoring/svt
diff -u -r1.8 -r1.9
--- SVTHitPulsePlots.java 6 May 2012 00:01:13 -0000 1.8
+++ SVTHitPulsePlots.java 6 May 2012 08:57:38 -0000 1.9
@@ -2,7 +2,11 @@
import hep.aida.*;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
import org.lcsim.detector.tracker.silicon.SiSensor;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
@@ -28,7 +32,8 @@
private IPlotter plotter3;
private IPlotter plotter2;
private List<SiSensor> sensors;
-
+ private Map<String, Integer> sensorRegionMap;
+
protected void detectorChanged(Detector detector) {
plotterFrame = new AIDAFrame();
plotterFrame.setTitle("HPS SVT Pulse Plots");
@@ -39,6 +44,13 @@
sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+ // Map a map of sensors to their region numbers in the plotter.
+ sensorRegionMap = new HashMap<String, Integer>();
+ for (SiSensor sensor : sensors) {
+ int region = computePlotterRegion(sensor);
+ sensorRegionMap.put(sensor.getName(), region);
+ }
+
IAnalysisFactory fac = aida.analysisFactory();
@@ -64,14 +76,13 @@
style2.dataStyle().errorBarStyle().setVisible(false);
style2.dataStyle().markerStyle().setColor("blue");
plotter2.createRegions(5, 4);
+ for (SiSensor sensor : sensors) {
+ IHistogram2D adcVsChanPlot = aida.histogram2D(sensor.getName() + "_AdcVsChan", 100, -100, 2000, 640, 0, 639);
+ IProfile pulsePlot = aida.profile1D(sensor.getName() + "_pulse", 6, 0, 24 * 6.0);
+ int region = sensorRegionMap.get(sensor.getName());
- int ns = sensors.size();
- for (int i = 0; i < ns; i++) {
- IHistogram2D adcVsChanPlot = aida.histogram2D(sensors.get(i).getName() + "_AdcVsChan", 100, -100, 2000, 640, 0, 639);
- IProfile pulsePlot = aida.profile1D(sensors.get(i).getName() + "_pulse", 6, 0, 24 * 6.0);
-
- plotter3.region(i).plot(pulsePlot);
- plotter2.region(i).plot(adcVsChanPlot);
+ plotter3.region(region).plot(pulsePlot);
+ plotter2.region(region).plot(adcVsChanPlot);
}
plotterFrame.pack();
plotterFrame.setVisible(true);
@@ -149,4 +160,27 @@
aida.profile1D(sensors.get(i).getName() + "_pulse").reset();
}
}
+
+
+ private int computePlotterRegion(SiSensor sensor) {
+
+ IIdentifierHelper helper = sensor.getIdentifierHelper();
+ IIdentifier id = sensor.getIdentifier();
+
+ int layer = helper.getValue(id, "layer"); // 1-10; axial layers are odd layers; stereo layers are even
+ int module = helper.getValue(id, "module"); // 0-1; module number is top or bottom
+
+ // Compute the sensor's x and y grid coordinates and then translate to region number.
+ int ix = (layer - 1) / 2;
+ int iy = 0;
+ if (module > 0) {
+ iy += 2;
+ }
+ if (layer % 2 == 0) {
+ iy += 1;
+ }
+ int region = ix * 4 + iy;
+ //System.out.println(sensor.getName() + "; lyr=" + layer + "; mod=" + module + " -> xy[" + ix + "][" + iy + "] -> reg="+region);
+ return region;
+ }
}
hps-java/src/main/resources/org/lcsim/hps/steering
diff -u -r1.1 -r1.2
--- SvtEventDisplay.lcsim 3 May 2012 20:50:29 -0000 1.1
+++ SvtEventDisplay.lcsim 6 May 2012 08:57:38 -0000 1.2
@@ -8,19 +8,39 @@
<execute>
<driver name="SVTSetupDriver"/>
<driver name="HPSSVTDAQMaps"/>
- <driver name="RawTrackerHitMaker"/>
+ <driver name="EcalRawConverter"/>
+ <driver name="EcalClusterer"/>
+ <driver name="RawTrackerHitMaker"/>
+ <driver name="RawTrackerHitFitterDriver"/>
+ <driver name="TrackerHitDriver"/>
+ <driver name="TrackerReconDriver"/>
<driver name="SVTEventDisplay"/>
<driver name="CleanupDriver"/>
</execute>
<drivers>
- <driver name="RawTrackerHitFitterDriver"
+ <driver name="EcalRawConverter"
+ type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+ <driver name="EcalClusterer"
+ type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
+ <ecalName>Ecal</ecalName>
+ <ecalCollectionName>EcalCalHits</ecalCollectionName>
+ </driver>
+
+ <driver name="RawTrackerHitFitterDriver"
type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
+ <rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
+ <fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
<fitAlgorithm>Analytic</fitAlgorithm>
</driver>
+ <driver name="TrackerHitDriver"
+ type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
+
+
<driver name="SVTEventDisplay"
- type="org.lcsim.hps.monitoring.svt.SVTEventDisplay">
- <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
+ type="org.lcsim.hps.monitoring.svt.SVTEventDisplay">
</driver>
<driver name="SVTSetupDriver"
@@ -29,7 +49,19 @@
<driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
- <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
+
+ <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
+ <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
+ </driver>
+
+
+ <driver name="TrackerReconDriver"
+ type="org.lcsim.hps.recon.tracking.TrackerReconDriver">
+ <debug>false</debug>
+ <strategyResource>/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt1.xml</strategyResource>
+ <stripMaxSeparation>20.0</stripMaxSeparation>
+ <stripTolerance>1.0</stripTolerance>
+ </driver>
<driver name="CleanupDriver"
type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
CVSspam 0.2.12