Commit in hps-java/src/main on MAIN | |||
resources/org/lcsim/hps/steering/OnlineTracking.lcsim | +1 | -1 | 1.6 -> 1.7 |
java/org/lcsim/hps/recon/tracking/DumbShaperFit.java | +17 | 1.3 -> 1.4 | |
java/org/lcsim/hps/users/mgraham/DataTrackerHitDriver.java | +1 | -1 | 1.3 -> 1.4 |
java/org/lcsim/hps/monitoring/svt/TrackingReconstructionPlots.java | +131 | added 1.1 | |
/SVTEventDisplay.java | +55 | -34 | 1.2 -> 1.3 |
resources/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt1.xml | +2 | -2 | 1.1 -> 1.2 |
+207 | -38 |
Changes for tracking recon
diff -u -r1.6 -r1.7 --- OnlineTracking.lcsim 3 May 2012 20:50:29 -0000 1.6 +++ OnlineTracking.lcsim 4 May 2012 14:06:37 -0000 1.7 @@ -60,7 +60,7 @@
<driver name="TrackerReconDriver" type="org.lcsim.hps.recon.tracking.TrackerReconDriver"> <debug>true</debug>
- <strategyResource>/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt0.xml</strategyResource>
+ <strategyResource>/org/lcsim/hps/recon/tracking/strategies/HPS-Test-4pt1.xml</strategyResource>
<stripMaxSeparation>20.0</stripMaxSeparation> <stripTolerance>1.0</stripTolerance> </driver>
diff -u -r1.3 -r1.4 --- DumbShaperFit.java 25 Apr 2012 20:21:24 -0000 1.3 +++ DumbShaperFit.java 4 May 2012 14:06:37 -0000 1.4 @@ -35,8 +35,25 @@
t0 =(pedSub[iMax]*24.0*(iMax)+pedSub[iMax-1]*24.0*(iMax-1))/(pedSub[iMax-1]+pedSub[iMax]) ; }
+ //mg...put in a cut here to make sure pulse shape is reasonable + //if not, set t0 to -99 (which will fail the later t0>0 cut + if(iMax==0||iMax==5) + t0=-99; + //make sure it goes up below iMax + for(int i=0;i<iMax;i++){ + if(pedSub[i+1]<pedSub[i]) + t0=-99; + } + //...and down below iMax + for(int i=iMax;i<5;i++){ + if(pedSub[i+1]>pedSub[i]) + t0=-99; + } +
fitresults.setAmp(maxADC); fitresults.setT0(t0);
+ +
return fitresults; } }
diff -u -r1.3 -r1.4 --- DataTrackerHitDriver.java 1 May 2012 17:59:22 -0000 1.3 +++ DataTrackerHitDriver.java 4 May 2012 14:06:37 -0000 1.4 @@ -204,7 +204,7 @@
*/ public void process(EventHeader event) { // Call sub-Driver processing.
- super.process(event);
+// super.process(event);
// Make new lists for output. // List<HPSFittedRawTrackerHit> rawHits = new ArrayList<HPSFittedRawTrackerHit>();
diff -N TrackingReconstructionPlots.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ TrackingReconstructionPlots.java 4 May 2012 14:06:37 -0000 1.1 @@ -0,0 +1,131 @@
+package org.lcsim.hps.monitoring.svt; + +import hep.aida.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.lcsim.detector.tracker.silicon.SiSensor; +import org.lcsim.event.EventHeader; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.Track; +import org.lcsim.geometry.Detector; +import org.lcsim.hps.monitoring.Resettable; +import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit; +import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants; +import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +/** + * + * @author mgraham + */ +public class TrackingReconstructionPlots extends Driver implements Resettable { + + private List<IPlotter> plotters = new ArrayList<IPlotter>(); + private AIDA aida = AIDA.defaultInstance(); + private String rawTrackerHitCollectionName = "SVTRawTrackerHits"; + private String fittedTrackerHitCollectionName = "SVTFittedRawTrackerHits"; + private String trackerHitCollectionName = "StripClusterer_SiTrackerHitStrip1D"; + private String helicalTrackHitCollectionName = "HelicalTrackHits"; + private String helicalTrackHitRelationsCollectionName = "HelicalTrackHitRelations"; + private String trackCollectionName = "MatchedTracks"; + private String trackerName = "Tracker"; + private Detector detector = null; + private int eventCount; + private List<SiSensor> sensors; + IPlotter plotter; + IPlotter plotter2; + IPlotter plotter3; + IPlotter plotter4; + IPlotter plotter5; + + protected void detectorChanged(Detector detector) { + this.detector = detector; + aida.tree().cd("/"); + + + sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class); + + + IAnalysisFactory fac = aida.analysisFactory(); + plotter = fac.createPlotterFactory().create("HPS SVT Timing Plots"); + plotters.add(plotter); + IPlotterStyle style = plotter.style(); + style.dataStyle().fillStyle().setColor("yellow"); + style.dataStyle().errorBarStyle().setVisible(false); + plotter.createRegions(2, 2); + + + + IHistogram1D trkPx = aida.histogram1D("Track Momentum (Px)", 25, -0.1, 0.1); + IHistogram1D trkPy = aida.histogram1D("Track Momentum (Py)", 25, -0.25, 0.25); + IHistogram1D trkPz = aida.histogram1D("Track Momentum (Pz)", 25, 0, 2.5); + IHistogram1D trkChi2 = aida.histogram1D("Track Chi2", 25, 0, 25.0); + + plotter.region(0).plot(trkPx); + plotter.region(1).plot(trkPy); + plotter.region(2).plot(trkPz); + plotter.region(3).plot(trkChi2); + + plotter.show(); + + } + + public TrackingReconstructionPlots() { + } + + public void setRawTrackerHitCollectionName(String rawTrackerHitCollectionName) { + this.rawTrackerHitCollectionName = rawTrackerHitCollectionName; + } + + public void setFittedTrackerHitCollectionName(String fittedTrackerHitCollectionName) { + this.fittedTrackerHitCollectionName = fittedTrackerHitCollectionName; + } + + public void setTrackerHitCollectionName(String trackerHitCollectionName) { + this.trackerHitCollectionName = trackerHitCollectionName; + } + + public void setHelicalTrackHitCollectionName(String helicalTrackHitCollectionName) { + this.helicalTrackHitCollectionName = helicalTrackHitCollectionName; + } + + public void setTrackCollectionName(String trackCollectionName) { + this.trackCollectionName = trackCollectionName; + } + + public void process(EventHeader event) { + if (!event.hasCollection(Track.class, trackCollectionName)) { + System.out.println(trackCollectionName + " does not exist; skipping event"); + return; + } + + List<Track> tracks = event.get(Track.class, trackCollectionName); + for (Track trk : tracks) { + aida.histogram1D("Track Momentum (Px)").fill(trk.getPZ()); + aida.histogram1D("Track Momentum (Py)").fill(trk.getPY()); + aida.histogram1D("Track Momentum (Pz)").fill(trk.getPX()); + aida.histogram1D("Track Chi2").fill(trk.getChi2()); + } + + + } + + public void endOfData() { + if (plotter != null) { + plotter.hide(); + } + + + } + + @Override + public void reset() { + int ns = sensors.size(); + for (int i = 0; i < ns; i++) { + aida.histogram1D(sensors.get(i).getName() + "_timing").reset(); + } + } +}
diff -u -r1.2 -r1.3 --- SVTEventDisplay.java 3 May 2012 20:50:29 -0000 1.2 +++ SVTEventDisplay.java 4 May 2012 14:06:37 -0000 1.3 @@ -8,9 +8,12 @@
import java.util.List; import org.lcsim.detector.tracker.silicon.*; import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawCalorimeterHit;
import org.lcsim.event.RawTrackerHit; import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.IDDecoder;
import org.lcsim.hps.monitoring.Resettable;
+import org.lcsim.hps.recon.ecal.HPSEcalConditions;
import org.lcsim.hps.recon.tracking.HPSFittedRawTrackerHit; import org.lcsim.hps.recon.tracking.HPSSVTCalibrationConstants; import org.lcsim.util.Driver;
@@ -31,7 +34,13 @@
private IPlotter plotter; private List<SiSensor> sensors; // private ICloud2D cl2D;
- private IHistogram2D svtDisp;
+ private IHistogram2D svtDispZX; + private IHistogram2D svtDispZY; + int integralWindow = 0; + IDDecoder dec; + String ecalSubdetectorName = "Ecal"; + String ecalCollectionName = "EcalReadoutHits"; + double zEcal = 160;
protected void detectorChanged(Detector detector) { this.detector = detector;
@@ -40,6 +49,13 @@
sensors = detector.getSubdetector(trackerName).getDetectorElement().findDescendants(SiSensor.class);
+ if (detector.getSubdetector(ecalSubdetectorName) == null) { + throw new RuntimeException("There is no subdetector called " + ecalSubdetectorName + " in this detector"); + } + + // Cache the IDDecoder for the ECal. + dec = detector.getSubdetector(ecalSubdetectorName).getReadout().getIDDecoder(); +
IAnalysisFactory fac = aida.analysisFactory();
@@ -49,20 +65,18 @@
plotters.add(plotter); IPlotterStyle style = plotter.style(); style.statisticsBoxStyle().setVisible(false);
- style.statisticsBoxStyle().setVisibileStatistics("Entries"); - style.dataStyle().fillStyle().setColor("black"); - style.dataStyle().errorBarStyle().setVisible(false); - style.dataStyle().markerStyle().setColor("blue"); - style.dataStyle().markerStyle().setSize(10);
+ style.setParameter("hist2DStyle", "colorMap"); + style.dataStyle().fillStyle().setParameter("colorMapScheme", "rainbow");
-
// style.dataStyle().fillStyle(). plotter.createRegions(1, 2);
- svtDisp=aida.histogram2D("SVT Raw Hits: z vs y",100,0,100,100,-10,10);
+ 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);
// cl2D = aida.cloud2D("SVT Raw Hits: z vs y");
- plotter.region(0).plot(svtDisp);
+ plotter.region(0).plot(svtDispZY);
+ plotter.region(1).plot(svtDispZX);
plotter.show(); }
@@ -79,63 +93,70 @@
} // aida.histogram2D("SVT Raw Hits: z vs y").reset();
- - svtDisp.reset();
+ + svtDispZX.reset(); + svtDispZY.reset();
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
- for (RawTrackerHit hrth : rawHits) {
+ for (RawTrackerHit hrth : rawHits) {
fillPlots(hrth);
- }
+ }
} } private void fillPlots(RawTrackerHit hit) {
- SiSensor sensor=(SiSensor) hit.getDetectorElement();
+ 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();
+ short[] adcVal = hit.getADCValues();
double ped = HPSSVTCalibrationConstants.getPedestal(sensor, strip);
- double noise = HPSSVTCalibrationConstants.getNoise(sensor, strip); - -// System.out.println(position.z()+" " + position.y());
+ 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);
- svtDisp.fill(position.z()/10.0,position.y()/10.0,maxAdc*100);
+ svtDispZY.fill(position.z() / 10.0, position.y() / 10.0, maxAdc); + svtDispZX.fill(position.z() / 10.0, position.x() / 10.0, maxAdc);
}
- }
+ }
private Hep3Vector getGlobalHitPosition(RawTrackerHit hit, SiSensorElectrodes electrodes) { Hep3Vector position = (((SiStrips) electrodes).getStripCenter(hit.getIdentifierFieldValue("strip"))); return ((SiSensor) electrodes.getDetectorElement()).getGeometry().getLocalToGlobal().transformed(position); }
- private boolean mask(Hep3Vector pos){ - double x=pos.x(); - double y=pos.y(); - double z=pos.z(); - - if(z>300&&z<320) - if(y>-50&&y<-20)
+ private boolean mask(Hep3Vector pos) { + double x = pos.x(); + double y = pos.y(); + double z = pos.z(); + + if (z > 300 && z < 320) + if (y > -50 && y < -20)
return true;
-
+
return false; }
-
+
@Override public void reset() { throw new UnsupportedOperationException("Not supported yet."); }
+ + public void setEcalCollectionName(String ecalCollectionName) { + this.ecalCollectionName = ecalCollectionName; + }
}
diff -u -r1.1 -r1.2 --- HPS-Test-4pt1.xml 3 May 2012 21:12:01 -0000 1.1 +++ HPS-Test-4pt1.xml 4 May 2012 14:06:38 -0000 1.2 @@ -9,8 +9,8 @@
<MinHits>4</MinHits> <MinConfirm>1</MinConfirm>
- <MaxDCA>8.0</MaxDCA> - <MaxZ0>8.0</MaxZ0>
+ <MaxDCA>25.0</MaxDCA> + <MaxZ0>45.0</MaxZ0>
<MaxChisq>250.0</MaxChisq> <BadHitChisq>100.0</BadHitChisq>
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