Author: [log in to unmask]
Date: Tue Mar 31 19:29:03 2015
New Revision: 2645
Log:
define hit time cuts relative to other hits, not any absolute time
Modified:
java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim
java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim
java/trunk/tracking/src/main/java/org/hps/recon/tracking/HelicalTrackHitDriver.java
java/trunk/tracking/src/main/java/org/hps/recon/tracking/HitTimeTrackCheck.java
Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim (original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineRecon.lcsim Tue Mar 31 19:29:03 2015
@@ -37,13 +37,15 @@
</driver>
<driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
<debug>false</debug>
- <clusterTimeCut>12.0</clusterTimeCut>
+ <!--<clusterTimeCut>12.0</clusterTimeCut>-->
+ <maxDt>16.0</maxDt>
<maxSeperation>20.0</maxSeperation>
<tolerance>1.0</tolerance>
</driver>
<driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
<strategyResource>HPS-Full.xml</strategyResource>
<debug>false</debug>
+ <rmsTimeCut>8.0</rmsTimeCut>
</driver>
<driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
<debug>0</debug>
Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim (original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/HPS2014OfflineTruthRecon.lcsim Tue Mar 31 19:29:03 2015
@@ -38,13 +38,15 @@
</driver>
<driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
<debug>false</debug>
- <clusterTimeCut>12.0</clusterTimeCut>
+ <!--<clusterTimeCut>12.0</clusterTimeCut>-->
+ <maxDt>16.0</maxDt>
<maxSeperation>20.0</maxSeperation>
<tolerance>1.0</tolerance>
</driver>
<driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
<strategyResource>HPS-Full.xml</strategyResource>
<debug>false</debug>
+ <rmsTimeCut>8.0</rmsTimeCut>
</driver>
<driver name="GBLDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
<debug>0</debug>
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 Mar 31 19:29:03 2015
@@ -6,6 +6,7 @@
import hep.physics.vec.VecOp;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hps.recon.tracking.axial.HelicalTrack2DHit;
@@ -49,6 +50,7 @@
private boolean _debug = false;
private double _clusterTimeCut = -99; // if negative, don't cut..otherwise,
// dt cut time in ns
+ private double maxDt = -99; // max time difference between the two hits in a cross
private String _subdetectorName = "Tracker";
private final Map<String, String> _stereomap = new HashMap<String, String>();
private List<SvtStereoLayer> stereoLayers = null;
@@ -87,6 +89,10 @@
*/
public void setClusterTimeCut(double dtCut) {
this._clusterTimeCut = dtCut;
+ }
+
+ public void setMaxDt(double maxDt) {
+ this.maxDt = maxDt;
}
/**
@@ -332,7 +338,12 @@
} // Loop over stereo pairs
}
- for (HelicalTrackCross cross : helicalTrackCrosses) {
+ for (Iterator<HelicalTrackCross> iter = helicalTrackCrosses.listIterator(); iter.hasNext();) {
+ HelicalTrackCross cross = iter.next();
+ if (maxDt > 0 && Math.abs(cross.getStrips().get(0).time() - cross.getStrips().get(1).time()) > maxDt) {
+ iter.remove();
+ continue;
+ }
if (cross.getMCParticles() != null)
for (MCParticle mcp : cross.getMCParticles())
mcrelations.add(new MyLCRelation((HelicalTrackHit) cross, mcp));
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/HitTimeTrackCheck.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/HitTimeTrackCheck.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/HitTimeTrackCheck.java Tue Mar 31 19:29:03 2015
@@ -16,7 +16,8 @@
public class HitTimeTrackCheck implements TrackCheck {
private final double rmsTimeCut;
- private final int minTrackHits = 10;
+// private final int minTrackHits = 10;
+ private final int minTrackHits = 6;
private int seedsChecked = 0;
private int seedsPassed = 0;
private int tracksChecked = 0;
@@ -29,18 +30,29 @@
@Override
public boolean checkSeed(SeedCandidate candidate) {
// System.out.format("seed with %d hits\n", candidate.getHits().size());
- seedsChecked++;
int nStrips = 0;
+ double meanTime = 0;
+ for (HelicalTrackHit hth : candidate.getHits()) {
+ for (HelicalTrackStrip hts : ((HelicalTrackCross) hth).getStrips()) {
+ nStrips++;
+ meanTime += hts.time();
+ }
+ }
+ meanTime /= nStrips;
double rmsTime = 0;
for (HelicalTrackHit hth : candidate.getHits()) {
for (HelicalTrackStrip hts : ((HelicalTrackCross) hth).getStrips()) {
- nStrips++;
- rmsTime += hts.time() * hts.time();
+ rmsTime += Math.pow(hts.time() - meanTime, 2);
+// rmsTime += hts.time() * hts.time();
+// rmsTime += Math.abs(hts.time());
}
}
+// if (nStrips<6) return true;
+ seedsChecked++;
// rmsTime = Math.sqrt(rmsTime / nStrips);
// System.out.format("seed RMS %f on %d hits\n",rmsTime,nStrips);
boolean passCheck = (rmsTime < minTrackHits * rmsTimeCut * rmsTimeCut);
+// boolean passCheck = (rmsTime < minTrackHits * rmsTimeCut);
if (passCheck) {
seedsPassed++;
}
@@ -56,15 +68,25 @@
// System.out.format("track with %d hits\n", track.getTrackerHits().size());
tracksChecked++;
int nStrips = 0;
+ double meanTime = 0;
+ for (TrackerHit hit : track.getTrackerHits()) {
+ for (HelicalTrackStrip hts : ((HelicalTrackCross) hit).getStrips()) {
+ nStrips++;
+ meanTime += hts.time();
+ }
+ }
+ meanTime /= nStrips;
double rmsTime = 0;
for (TrackerHit hit : track.getTrackerHits()) {
for (HelicalTrackStrip hts : ((HelicalTrackCross) hit).getStrips()) {
- nStrips++;
- rmsTime += hts.time() * hts.time();
+ rmsTime += Math.pow(hts.time() - meanTime, 2);
+// rmsTime += hts.time() * hts.time();
+// rmsTime += Math.abs(hts.time());
}
}
rmsTime = Math.sqrt(rmsTime / nStrips);
- System.out.format("track RMS %f on %d hits\n", rmsTime, nStrips);
+// rmsTime = rmsTime / nStrips;
+// System.out.format("track RMS %f on %d hits\n", rmsTime, nStrips);
boolean passCheck = (rmsTime < rmsTimeCut);
if (passCheck) {
tracksPassed++;
|