Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/monitoring/svt/SVTEventDisplay.java | +59 | -30 | 1.3 -> 1.4 |
/SVTHitReconstructionPlots.java | +45 | -14 | 1.6 -> 1.7 |
/SVTHitPulsePlots.java | +42 | -8 | 1.8 -> 1.9 |
resources/org/lcsim/hps/steering/SvtEventDisplay.lcsim | +37 | -5 | 1.1 -> 1.2 |
+183 | -57 |
Minor fixes for tracking.
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) {
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; + }
}
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; + }
}
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">
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