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);