Author: [log in to unmask]
Date: Tue Dec 1 12:13:47 2015
New Revision: 3996
Log:
tweaks for time cal
Added:
java/trunk/users/src/main/java/org/hps/users/meeg/TrackCleanupDriver.java
- copied, changed from r3232, java/trunk/users/src/main/java/org/hps/users/meeg/ReconParticleCleanupDriver.java
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
java/trunk/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/TrackingMonitoring.java Tue Dec 1 12:13:47 2015
@@ -571,7 +571,7 @@
IHistogram1D hitTimeResidual = getSensorPlot(plotDir + trackCollectionName + "/" + triggerType + "/" + timeresidDir + "hitTimeResidual_", getNiceSensorName(sensor));
IFitResult result = fitGaussian(hitTimeResidual, fitter, "range=\"(-20.0,20.0)\"");
if (result != null) {
- LOGGER.info(String.format("%s\t%f\t%f\t%d\t%d", getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID()));
+ System.out.format("%s\t%f\t%f\t%d\t%d\t%f\n", getNiceSensorName(sensor), result.fittedParameters()[1], result.fittedParameters()[2], sensor.getFebID(), sensor.getFebHybridID(), sensor.getT0Shift());
}
}
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java Tue Dec 1 12:13:47 2015
@@ -427,7 +427,7 @@
Collection<TrackerHit> htsList = hittostrip.allFrom(cross);
for (TrackerHit strip : htsList) {
Set<HelicalTrackHit> sharedCrosses = hittostrip.allTo(strip);
- System.out.println(sharedCrosses.size());
+// System.out.println(sharedCrosses.size());
if (sharedCrosses.size() > 1) {
// this.getLogger().warning(String.format("removing possible ghost hit"));
iter.remove();
Copied: java/trunk/users/src/main/java/org/hps/users/meeg/TrackCleanupDriver.java (from r3232, java/trunk/users/src/main/java/org/hps/users/meeg/ReconParticleCleanupDriver.java)
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/meeg/ReconParticleCleanupDriver.java (original)
+++ java/trunk/users/src/main/java/org/hps/users/meeg/TrackCleanupDriver.java Tue Dec 1 12:13:47 2015
@@ -1,13 +1,14 @@
package org.hps.users.meeg;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
-import org.hps.recon.ecal.cluster.ClusterUtilities;
import org.hps.recon.tracking.TrackUtils;
import org.lcsim.event.EventHeader;
-import org.lcsim.event.ReconstructedParticle;
import org.lcsim.event.RelationalTable;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.util.Driver;
/**
@@ -17,119 +18,142 @@
* @author Sho Uemura <[log in to unmask]>
* @version $Id: $
*/
-public class ReconParticleCleanupDriver extends Driver {
+public class TrackCleanupDriver extends Driver {
- private final String finalStateParticlesColName = "FinalStateParticles";
- private final String[] v0ColNames = {"UnconstrainedV0Candidates", "BeamspotConstrainedV0Candidates", "TargetConstrainedV0Candidates"};
+ private final String trackColName = "MatchedTracks";
+// private final String finalStateParticlesColName = "FinalStateParticles";
+// private final String[] v0ColNames = {"UnconstrainedV0Candidates", "BeamspotConstrainedV0Candidates", "TargetConstrainedV0Candidates"};
- private double fsDeltaT = 43.5;
- private double fsDeltaTCut = -1;
- private double maxTrackDt = -1;
- private boolean discardUnmatchedTracks = false;
-
- public void setDiscardUnmatchedTracks(boolean discardUnmatchedTracks) {
- this.discardUnmatchedTracks = discardUnmatchedTracks;
- }
-
- /**
- * Center value for (cluster - track) time cut.
- *
- * @param fsDeltaT
- */
- public void setFsDeltaT(double fsDeltaT) {
- this.fsDeltaT = fsDeltaT;
- }
-
- /**
- * Cut window half-width for (cluster - track) time cut. Negative value
- * disables this cut.
- *
- * @param fsDeltaTCut
- */
- public void setFsDeltaTCut(double fsDeltaTCut) {
- this.fsDeltaTCut = fsDeltaTCut;
- }
-
- /**
- * Cut window half-width for (track - track) time cut. Negative value
- * disables this cut.
- *
- * @param maxTrackDt
- */
- public void setMaxTrackDt(double maxTrackDt) {
- this.maxTrackDt = maxTrackDt;
- }
+// private double fsDeltaT = 43.5;
+// private double fsDeltaTCut = -1;
+// private double maxTrackDt = -1;
+// private boolean discardUnmatchedTracks = false;
+//
+// public void setDiscardUnmatchedTracks(boolean discardUnmatchedTracks) {
+// this.discardUnmatchedTracks = discardUnmatchedTracks;
+// }
+//
+// /**
+// * Center value for (cluster - track) time cut.
+// *
+// * @param fsDeltaT
+// */
+// public void setFsDeltaT(double fsDeltaT) {
+// this.fsDeltaT = fsDeltaT;
+// }
+//
+// /**
+// * Cut window half-width for (cluster - track) time cut. Negative value
+// * disables this cut.
+// *
+// * @param fsDeltaTCut
+// */
+// public void setFsDeltaTCut(double fsDeltaTCut) {
+// this.fsDeltaTCut = fsDeltaTCut;
+// }
+//
+// /**
+// * Cut window half-width for (track - track) time cut. Negative value
+// * disables this cut.
+// *
+// * @param maxTrackDt
+// */
+// public void setMaxTrackDt(double maxTrackDt) {
+// this.maxTrackDt = maxTrackDt;
+// }
@Override
public void process(EventHeader event) {
RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event);
RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
- for (Iterator<ReconstructedParticle> iter = event.get(ReconstructedParticle.class, finalStateParticlesColName).listIterator(); iter.hasNext();) {
- ReconstructedParticle fs = iter.next();
- if (discardUnmatchedTracks && fs.getClusters().isEmpty()) {//track without cluster, discard
- iter.remove();
- continue;
- }
-
- if (fs.getTracks().isEmpty()) {//cluster without track (photon), keep
- continue;
- }
-
- if (!fs.getClusters().isEmpty() && !fs.getTracks().isEmpty()) {
- double deltaT = ClusterUtilities.getSeedHitTime(fs.getClusters().get(0)) - TrackUtils.getTrackTime(fs.getTracks().get(0), hitToStrips, hitToRotated);
- if (fsDeltaTCut > 0 && Math.abs(deltaT - fsDeltaT) > fsDeltaTCut) {//bad track-cluster time match, discard
- iter.remove();
- }
- }
- }
-
- Set<ReconstructedParticle> fsParticles = new HashSet<ReconstructedParticle>(event.get(ReconstructedParticle.class, finalStateParticlesColName));
-
- for (String colName : v0ColNames) {
- v0Loop:
- for (Iterator<ReconstructedParticle> iter = event.get(ReconstructedParticle.class, colName).listIterator(); iter.hasNext();) {
- ReconstructedParticle v0 = iter.next();
-
- ReconstructedParticle[] particles = new ReconstructedParticle[2];
- for (ReconstructedParticle particle : v0.getParticles()) // tracks.addAll(particle.getTracks()); //add add electron first, then positron...down below
- {
- if (particle.getCharge() < 0) {
- particles[0] = particle;
- } else if (particle.getCharge() > 0) {
- particles[1] = particle;
- } else {
- throw new RuntimeException("expected only electron and positron in vertex, got something with charge 0");
- }
- }
- if (particles[0] == null || particles[1] == null) {
- throw new RuntimeException("vertex needs e+ and e- but is missing one or both");
- }
- double deltaT = TrackUtils.getTrackTime(particles[0].getTracks().get(0), hitToStrips, hitToRotated) - TrackUtils.getTrackTime(particles[1].getTracks().get(0), hitToStrips, hitToRotated); //electron time - positron time
-
- if (hasSharedStrips(v0, hitToStrips, hitToRotated)) {
- iter.remove();
- continue;
- }
- if (maxTrackDt > 0 && Math.abs(deltaT) > maxTrackDt) {
- iter.remove();
- continue;
- }
- for (ReconstructedParticle particle : v0.getParticles()) {
- if (!fsParticles.contains(particle)) {
- iter.remove();
- continue v0Loop;
+ List<Track> tracks = event.get(Track.class, trackColName);
+
+ {
+ Iterator<Track> iter = tracks.iterator();
+ trackLoop:
+ while (iter.hasNext()) {
+ Track track = iter.next();
+ for (TrackerHit hit : track.getTrackerHits()) {
+ Set<TrackerHit> htsList = hitToStrips.allFrom(hitToRotated.from(hit));
+ for (TrackerHit strip : htsList) {
+// System.out.println(hittostrip.allTo(strip).size());
+ Set<HelicalTrackHit> sharedCrosses = hitToStrips.allTo(strip);
+ if (sharedCrosses.size() > 1) {
+// this.getLogger().warning(String.format("removing track with possible ghost hit"));
+ iter.remove();
+ continue trackLoop;
+ }
}
}
}
}
+
+// for (Iterator<ReconstructedParticle> iter = event.get(ReconstructedParticle.class, finalStateParticlesColName).listIterator(); iter.hasNext();) {
+// ReconstructedParticle fs = iter.next();
+// if (discardUnmatchedTracks && fs.getClusters().isEmpty()) {//track without cluster, discard
+// iter.remove();
+// continue;
+// }
+//
+// if (fs.getTracks().isEmpty()) {//cluster without track (photon), keep
+// continue;
+// }
+//
+// if (!fs.getClusters().isEmpty() && !fs.getTracks().isEmpty()) {
+// double deltaT = ClusterUtilities.getSeedHitTime(fs.getClusters().get(0)) - TrackUtils.getTrackTime(fs.getTracks().get(0), hitToStrips, hitToRotated);
+// if (fsDeltaTCut > 0 && Math.abs(deltaT - fsDeltaT) > fsDeltaTCut) {//bad track-cluster time match, discard
+// iter.remove();
+// }
+// }
+// }
+//
+// Set<ReconstructedParticle> fsParticles = new HashSet<ReconstructedParticle>(event.get(ReconstructedParticle.class, finalStateParticlesColName));
+//
+// for (String colName : v0ColNames) {
+// v0Loop:
+// for (Iterator<ReconstructedParticle> iter = event.get(ReconstructedParticle.class, colName).listIterator(); iter.hasNext();) {
+// ReconstructedParticle v0 = iter.next();
+//
+// ReconstructedParticle[] particles = new ReconstructedParticle[2];
+// for (ReconstructedParticle particle : v0.getParticles()) // tracks.addAll(particle.getTracks()); //add add electron first, then positron...down below
+// {
+// if (particle.getCharge() < 0) {
+// particles[0] = particle;
+// } else if (particle.getCharge() > 0) {
+// particles[1] = particle;
+// } else {
+// throw new RuntimeException("expected only electron and positron in vertex, got something with charge 0");
+// }
+// }
+// if (particles[0] == null || particles[1] == null) {
+// throw new RuntimeException("vertex needs e+ and e- but is missing one or both");
+// }
+// double deltaT = TrackUtils.getTrackTime(particles[0].getTracks().get(0), hitToStrips, hitToRotated) - TrackUtils.getTrackTime(particles[1].getTracks().get(0), hitToStrips, hitToRotated); //electron time - positron time
+//
+// if (hasSharedStrips(v0, hitToStrips, hitToRotated)) {
+// iter.remove();
+// continue;
+// }
+// if (maxTrackDt > 0 && Math.abs(deltaT) > maxTrackDt) {
+// iter.remove();
+// continue;
+// }
+// for (ReconstructedParticle particle : v0.getParticles()) {
+// if (!fsParticles.contains(particle)) {
+// iter.remove();
+// continue v0Loop;
+// }
+// }
+// }
+// }
}
- private static boolean hasSharedStrips(ReconstructedParticle vertex, RelationalTable hittostrip, RelationalTable hittorotated) {
- return hasSharedStrips(vertex.getParticles().get(0), vertex.getParticles().get(1), hittostrip, hittorotated);
- }
-
- private static boolean hasSharedStrips(ReconstructedParticle fs1, ReconstructedParticle fs2, RelationalTable hittostrip, RelationalTable hittorotated) {
- return TrackUtils.hasSharedStrips(fs1.getTracks().get(0), fs2.getTracks().get(0), hittostrip, hittorotated);
- }
+// private static boolean hasSharedStrips(ReconstructedParticle vertex, RelationalTable hittostrip, RelationalTable hittorotated) {
+// return hasSharedStrips(vertex.getParticles().get(0), vertex.getParticles().get(1), hittostrip, hittorotated);
+// }
+//
+// private static boolean hasSharedStrips(ReconstructedParticle fs1, ReconstructedParticle fs2, RelationalTable hittostrip, RelationalTable hittorotated) {
+// return TrackUtils.hasSharedStrips(fs1.getTracks().get(0), fs2.getTracks().get(0), hittostrip, hittorotated);
+// }
}
|