Author: [log in to unmask]
Date: Wed Aug 10 15:32:46 2016
New Revision: 4462
Log:
Added strip level information for first hit.
Modified:
java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java
Modified: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java
=============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java (original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/tuple/TupleDriver.java Wed Aug 10 15:32:46 2016
@@ -38,6 +38,11 @@
import org.lcsim.fit.helicaltrack.HelicalTrackFit;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.event.TrackerHit;
+import java.util.Collection;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.RawTrackerHit;
/**
* sort of an interface for DQM analysis drivers creates the DQM database
@@ -270,6 +275,9 @@
"TrkEcalX/D", "TrkEcalY/D",
"HasL1/B", "HasL2/B", "HasL3/B",
"FirstHitX/D", "FirstHitY/D",
+ "FirstHitT1/D", "FirstHitT2/D",
+ "FirstHitDEDx1/D", "FirstHitDEDx2/D",
+ "FirstClusterSize1/I", "FirstClusterSize2/I",
"LambdaKink1/D", "LambdaKink2/D", "LambdaKink3/D",
"PhiKink1/D", "PhiKink2/D", "PhiKink3/D",
"IsoStereo/D", "IsoAxial/D",
@@ -454,6 +462,23 @@
Hep3Vector atEcal = TrackUtils.getTrackPositionAtEcal(tweakedTrackState);
Hep3Vector firstHitPosition = VecOp.mult(beamAxisRotation, CoordinateTransformations.transformVectorToDetector(new BasicHep3Vector(track.getTrackerHits().get(0).getPosition())));
GenericObject kinks = GBLKinkData.getKinkData(event, track);
+
+ RelationalTable hitToStrips = TrackUtils.getHitToStripsTable(event);
+ RelationalTable hitToRotated = TrackUtils.getHitToRotatedTable(event);
+
+ double hitTimes[] = new double[2];
+ double hitdEdx[] = new double[2];
+ int hitClusterSize[] = new int[2];
+
+ track.getTrackerHits().get(0);
+ TrackerHit hit = track.getTrackerHits().get(0);
+ Collection<TrackerHit> htsList = hitToStrips.allFrom(hitToRotated.from(hit));
+ for (TrackerHit hts : htsList) {
+ int layer = ((HpsSiSensor) ((RawTrackerHit) hts.getRawHits().get(0)).getDetectorElement()).getLayerNumber();
+ hitTimes[layer % 2] = hts.getTime();
+ hitdEdx[layer % 2] = hts.getdEdx();
+ hitClusterSize[layer % 2] = hts.getRawHits().size();
+ }
tupleMap.put(prefix + "PX/D", pRot.x());
tupleMap.put(prefix + "PY/D", pRot.y());
@@ -474,7 +499,13 @@
tupleMap.put(prefix + "HasL2/B", iso[2] != null ? 1.0 : 0.0);
tupleMap.put(prefix + "HasL3/B", iso[4] != null ? 1.0 : 0.0);
tupleMap.put(prefix + "FirstHitX/D", firstHitPosition.x());
- tupleMap.put(prefix + "FirstHitY/D", firstHitPosition.y());
+ tupleMap.put(prefix + "FirstHitY/D", firstHitPosition.y());
+ tupleMap.put(prefix + "FirstHitT1/D", hitTimes[0]);
+ tupleMap.put(prefix + "FirstHitT2/D", hitTimes[1]);
+ tupleMap.put(prefix + "FirstHitDEDx1/D", hitdEdx[0]);
+ tupleMap.put(prefix + "FirstHitDEDx2/D", hitdEdx[1]);
+ tupleMap.put(prefix + "FirstClusterSize1/I", (double) hitClusterSize[0]);
+ tupleMap.put(prefix + "FirstClusterSize2/I", (double) hitClusterSize[1]);
tupleMap.put(prefix + "LambdaKink1/D", kinks!=null ? GBLKinkData.getLambdaKink(kinks, 1) : 0);
tupleMap.put(prefix + "LambdaKink2/D", kinks!=null ? GBLKinkData.getLambdaKink(kinks, 2) : 0);
tupleMap.put(prefix + "LambdaKink3/D", kinks!=null ? GBLKinkData.getLambdaKink(kinks, 3) : 0);
|