LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  August 2016

HPS-SVN August 2016

Subject:

r4463 - in /java/trunk/analysis/src/main/java/org/hps/analysis/tuple: TupleDriver.java WABTupleDriver.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Wed, 10 Aug 2016 23:00:56 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (831 lines)

Author: [log in to unmask]
Date: Wed Aug 10 16:00:53 2016
New Revision: 4463

Log:
track is optional; add start of a WAB driver

Added:
    java/trunk/analysis/src/main/java/org/hps/analysis/tuple/WABTupleDriver.java
      - copied, changed from r4462, java/trunk/analysis/src/main/java/org/hps/analysis/tuple/FEETupleDriver.java
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 16:00:53 2016
@@ -263,8 +263,8 @@
             "bscElePX/D", "bscElePY/D", "bscElePZ/D", "bscPosPX/D", "bscPosPY/D", "bscPosPZ/D", "bscEleP/D", "bscPosP/D",
             "tarElePX/D", "tarElePY/D", "tarElePZ/D", "tarPosPX/D", "tarPosPY/D", "tarPosPZ/D", "tarEleP/D", "tarPosP/D",
             "vzcElePX/D", "vzcElePY/D", "vzcElePZ/D", "vzcPosPX/D", "vzcPosPY/D", "vzcPosPZ/D", "vzcEleP/D", "vzcPosP/D",
-            "uncEleWtP/D","uncPosWtP/D","bscEleWtP/D","bscPosWtP/D","tarEleWtP/D","tarPosWtP/D", "vzcEleWtP/D","vzcPosWtP/D",
-            "uncWtM/D","bscWtM/D","tarWtM/D","vzcWtM/D"};
+            "uncEleWtP/D", "uncPosWtP/D", "bscEleWtP/D", "bscPosWtP/D", "tarEleWtP/D", "tarPosWtP/D", "vzcEleWtP/D", "vzcPosWtP/D",
+            "uncWtM/D", "bscWtM/D", "tarWtM/D", "vzcWtM/D"};
         tupleVariables.addAll(Arrays.asList(newVars));
     }
 
@@ -283,7 +283,7 @@
             "IsoStereo/D", "IsoAxial/D",
             "MinPositiveIso/D", "MinNegativeIso/D",
             "MatchChisq/D", "ClT/D", "ClE/D", "ClSeedE/D", "ClX/D", "ClY/D", "ClZ/D", "ClHits/I"};
-        
+
         for (int i = 0; i < newVars.length; i++) {
             newVars[i] = prefix + newVars[i];
         }
@@ -297,12 +297,12 @@
         int npos = 0;
         int ntrk = 0;
         for (ReconstructedParticle fsp : fspList) {
-           if (isGBL != TrackType.isGBL(fsp.getType())) {
+            if (isGBL != TrackType.isGBL(fsp.getType())) {
                 continue;
             }
             /*if (fsp.getClusters().isEmpty()){
-                continue;
-            }*/
+             continue;
+             }*/
             if (fsp.getCharge() != 0) {
                 ntrk++;
             }
@@ -323,83 +323,204 @@
             tupleMap.put("isPair1/B", triggerData.isPair1Trigger() ? 1.0 : 0.0);
         }
     }
+
+//    protected TrackState fillParticleVariablesT(EventHeader event, ReconstructedParticle particle, String prefix) {
+//        Track track = particle.getTracks().get(0);
+//        TrackState trackState = track.getTrackStates().get(0);
+//        double[] param = new double[5];
+//        for (int i = 0; i < 5; i++) {
+//            param[i] = trackState.getParameters()[i] + ((trackState.getTanLambda() > 0) ? topTrackCorrection[i] : botTrackCorrection[i]);
+//        }
+////            Arrays.
+//        TrackState tweakedTrackState = new BaseTrackState(param, trackState.getReferencePoint(), trackState.getCovMatrix(), trackState.getLocation(), bfield);
+//        Hep3Vector pRot = VecOp.mult(beamAxisRotation, CoordinateTransformations.transformVectorToDetector(new BasicHep3Vector(tweakedTrackState.getMomentum())));
+//
+//        Double[] iso = TrackUtils.getIsolations(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
+//        double minPositiveIso = 9999;
+//        double minNegativeIso = 9999;
+//        double isoStereo = -9999, isoAxial = -9999;
+//        for (int i = 0; i < 6; i++) {
+//            if (iso[2 * i] != null) {
+//                if (pRot.y() < 0) {
+//                    isoStereo = iso[2 * i];
+//                    isoAxial = iso[2 * i + 1];
+//                } else {
+//                    isoAxial = iso[2 * i];
+//                    isoStereo = iso[2 * i + 1];
+//                }
+//                for (int j = 2 * i; j < 2 * i + 2; j++) {
+//                    if (iso[j] < 100) {
+//                        if (iso[j] > 0) {
+//                            if (minPositiveIso > 100 || iso[j] < minPositiveIso) {
+//                                minPositiveIso = iso[j];
+//                            }
+//                        } else {
+//                            if (minNegativeIso > 100 || iso[j] > minNegativeIso) {
+//                                minNegativeIso = iso[j];
+//                            }
+//                        }
+//                    }
+//                }
+//                break;
+//            }
+//        }
+//        double trkT = TrackUtils.getTrackTime(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
+//        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);
+//
+//        tupleMap.put(prefix + "PX/D", pRot.x());
+//        tupleMap.put(prefix + "PY/D", pRot.y());
+//        tupleMap.put(prefix + "PZ/D", pRot.z());
+//        tupleMap.put(prefix + "P/D", pRot.magnitude());
+//        tupleMap.put(prefix + "TrkZ0/D", tweakedTrackState.getZ0());
+//        tupleMap.put(prefix + "TrkLambda/D", tweakedTrackState.getTanLambda());
+//        tupleMap.put(prefix + "TrkD0/D", tweakedTrackState.getD0());
+//        tupleMap.put(prefix + "TrkPhi/D", tweakedTrackState.getPhi());
+//        tupleMap.put(prefix + "TrkOmega/D", tweakedTrackState.getOmega());
+//        tupleMap.put(prefix + "TrkEcalX/D", atEcal.x());
+//        tupleMap.put(prefix + "TrkEcalY/D", atEcal.y());
+//        tupleMap.put(prefix + "TrkChisq/D", track.getChi2());
+//        tupleMap.put(prefix + "TrkHits/I", (double) track.getTrackerHits().size());
+//        tupleMap.put(prefix + "TrkType/I", (double) particle.getType());
+//        tupleMap.put(prefix + "TrkT/D", trkT);
+//        tupleMap.put(prefix + "HasL1/B", iso[0] != null ? 1.0 : 0.0);
+//        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 + "LambdaKink1/D", GBLKinkData.getLambdaKink(kinks, 1));
+//        tupleMap.put(prefix + "LambdaKink2/D", GBLKinkData.getLambdaKink(kinks, 2));
+//        tupleMap.put(prefix + "LambdaKink3/D", GBLKinkData.getLambdaKink(kinks, 3));
+//        tupleMap.put(prefix + "PhiKink1/D", GBLKinkData.getPhiKink(kinks, 1));
+//        tupleMap.put(prefix + "PhiKink2/D", GBLKinkData.getPhiKink(kinks, 2));
+//        tupleMap.put(prefix + "PhiKink3/D", GBLKinkData.getPhiKink(kinks, 3));
+//        tupleMap.put(prefix + "IsoStereo/D", isoStereo);
+//        tupleMap.put(prefix + "IsoAxial/D", isoAxial);
+//        tupleMap.put(prefix + "MinPositiveIso/D", minPositiveIso);
+//        tupleMap.put(prefix + "MinNegativeIso/D", minNegativeIso);
+//        tupleMap.put(prefix + "MatchChisq/D", particle.getGoodnessOfPID());
+//        if (!particle.getClusters().isEmpty()) {
+//            Cluster cluster = particle.getClusters().get(0);
+//            tupleMap.put(prefix + "ClT/D", ClusterUtilities.getSeedHitTime(cluster));
+//            tupleMap.put(prefix + "ClE/D", cluster.getEnergy());
+//            tupleMap.put(prefix + "ClSeedE/D", ClusterUtilities.findSeedHit(cluster).getCorrectedEnergy());
+//            tupleMap.put(prefix + "ClX/D", cluster.getPosition()[0]);
+//            tupleMap.put(prefix + "ClY/D", cluster.getPosition()[1]);
+//            tupleMap.put(prefix + "ClZ/D", cluster.getPosition()[2]);
+//            tupleMap.put(prefix + "ClHits/I", (double) cluster.getCalorimeterHits().size());
+//        }
+//
+//        return tweakedTrackState;
+//    }
     
-    protected TrackState fillParticleVariablesT(EventHeader event, ReconstructedParticle particle, String prefix) {
-        Track track = particle.getTracks().get(0);
-        TrackState trackState = track.getTrackStates().get(0);
-        double[] param = new double[5];
-        for (int i = 0; i < 5; i++) {
-            param[i] = trackState.getParameters()[i] + ((trackState.getTanLambda() > 0) ? topTrackCorrection[i] : botTrackCorrection[i]);
-        }
+    protected TrackState fillParticleVariables(EventHeader event, ReconstructedParticle particle, String prefix) {
+        TrackState returnTrackState = null;
+
+        if (!particle.getTracks().isEmpty()) {
+            Track track = particle.getTracks().get(0);
+            TrackState trackState = track.getTrackStates().get(0);
+            double[] param = new double[5];
+            for (int i = 0; i < 5; i++) {
+                param[i] = trackState.getParameters()[i] + ((trackState.getTanLambda() > 0) ? topTrackCorrection[i] : botTrackCorrection[i]);
+            }
 //            Arrays.
-        TrackState tweakedTrackState = new BaseTrackState(param, trackState.getReferencePoint(), trackState.getCovMatrix(), trackState.getLocation(), bfield);
-        Hep3Vector pRot = VecOp.mult(beamAxisRotation, CoordinateTransformations.transformVectorToDetector(new BasicHep3Vector(tweakedTrackState.getMomentum())));
-
-        Double[] iso = TrackUtils.getIsolations(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
-        double minPositiveIso = 9999;
-        double minNegativeIso = 9999;
-        double isoStereo = -9999, isoAxial = -9999;
-        for (int i = 0; i < 6; i++) {
-            if (iso[2 * i] != null) {
-                if (pRot.y() < 0) {
-                    isoStereo = iso[2 * i];
-                    isoAxial = iso[2 * i + 1];
-                } else {
-                    isoAxial = iso[2 * i];
-                    isoStereo = iso[2 * i + 1];
-                }
-                for (int j = 2 * i; j < 2 * i + 2; j++) {
-                    if (iso[j] < 100) {
-                        if (iso[j] > 0) {
-                            if (minPositiveIso > 100 || iso[j] < minPositiveIso) {
-                                minPositiveIso = iso[j];
-                            }
-                        } else {
-                            if (minNegativeIso > 100 || iso[j] > minNegativeIso) {
-                                minNegativeIso = iso[j];
+            TrackState tweakedTrackState = new BaseTrackState(param, trackState.getReferencePoint(), trackState.getCovMatrix(), trackState.getLocation(), bfield);
+            Hep3Vector pRot = VecOp.mult(beamAxisRotation, CoordinateTransformations.transformVectorToDetector(new BasicHep3Vector(tweakedTrackState.getMomentum())));
+
+            Double[] iso = TrackUtils.getIsolations(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
+            double minPositiveIso = 9999;
+            double minNegativeIso = 9999;
+            double isoStereo = -9999, isoAxial = -9999;
+            for (int i = 0; i < 6; i++) {
+                if (iso[2 * i] != null) {
+                    if (pRot.y() < 0) {
+                        isoStereo = iso[2 * i];
+                        isoAxial = iso[2 * i + 1];
+                    } else {
+                        isoAxial = iso[2 * i];
+                        isoStereo = iso[2 * i + 1];
+                    }
+                    for (int j = 2 * i; j < 2 * i + 2; j++) {
+                        if (iso[j] < 100) {
+                            if (iso[j] > 0) {
+                                if (minPositiveIso > 100 || iso[j] < minPositiveIso) {
+                                    minPositiveIso = iso[j];
+                                }
+                            } else {
+                                if (minNegativeIso > 100 || iso[j] > minNegativeIso) {
+                                    minNegativeIso = iso[j];
+                                }
                             }
                         }
                     }
+                    break;
                 }
-                break;
-            }
-        }
-        double trkT = TrackUtils.getTrackTime(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
-        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);
-
-        tupleMap.put(prefix + "PX/D", pRot.x());
-        tupleMap.put(prefix + "PY/D", pRot.y());
-        tupleMap.put(prefix + "PZ/D", pRot.z());
-        tupleMap.put(prefix + "P/D", pRot.magnitude());
-        tupleMap.put(prefix + "TrkZ0/D", tweakedTrackState.getZ0());
-        tupleMap.put(prefix + "TrkLambda/D", tweakedTrackState.getTanLambda());
-        tupleMap.put(prefix + "TrkD0/D", tweakedTrackState.getD0());
-        tupleMap.put(prefix + "TrkPhi/D", tweakedTrackState.getPhi());
-        tupleMap.put(prefix + "TrkOmega/D", tweakedTrackState.getOmega());
-        tupleMap.put(prefix + "TrkEcalX/D", atEcal.x());
-        tupleMap.put(prefix + "TrkEcalY/D", atEcal.y());
-        tupleMap.put(prefix + "TrkChisq/D", track.getChi2());
-        tupleMap.put(prefix + "TrkHits/I", (double) track.getTrackerHits().size());
-        tupleMap.put(prefix + "TrkType/I", (double) particle.getType());
-        tupleMap.put(prefix + "TrkT/D", trkT);
-        tupleMap.put(prefix + "HasL1/B", iso[0] != null ? 1.0 : 0.0);
-        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 + "LambdaKink1/D", GBLKinkData.getLambdaKink(kinks, 1));
-        tupleMap.put(prefix + "LambdaKink2/D", GBLKinkData.getLambdaKink(kinks, 2));
-        tupleMap.put(prefix + "LambdaKink3/D", GBLKinkData.getLambdaKink(kinks, 3));
-        tupleMap.put(prefix + "PhiKink1/D", GBLKinkData.getPhiKink(kinks, 1));
-        tupleMap.put(prefix + "PhiKink2/D", GBLKinkData.getPhiKink(kinks, 2));
-        tupleMap.put(prefix + "PhiKink3/D", GBLKinkData.getPhiKink(kinks, 3));
-        tupleMap.put(prefix + "IsoStereo/D", isoStereo);
-        tupleMap.put(prefix + "IsoAxial/D", isoAxial);
-        tupleMap.put(prefix + "MinPositiveIso/D", minPositiveIso);
-        tupleMap.put(prefix + "MinNegativeIso/D", minNegativeIso);
-        tupleMap.put(prefix + "MatchChisq/D", particle.getGoodnessOfPID());
+            }
+
+            double trkT = TrackUtils.getTrackTime(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
+            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());
+            tupleMap.put(prefix + "PZ/D", pRot.z());
+            tupleMap.put(prefix + "P/D", pRot.magnitude());
+            tupleMap.put(prefix + "TrkZ0/D", tweakedTrackState.getZ0());
+            tupleMap.put(prefix + "TrkLambda/D", tweakedTrackState.getTanLambda());
+            tupleMap.put(prefix + "TrkD0/D", tweakedTrackState.getD0());
+            tupleMap.put(prefix + "TrkPhi/D", tweakedTrackState.getPhi());
+            tupleMap.put(prefix + "TrkOmega/D", tweakedTrackState.getOmega());
+            tupleMap.put(prefix + "TrkEcalX/D", atEcal.x());
+            tupleMap.put(prefix + "TrkEcalY/D", atEcal.y());
+            tupleMap.put(prefix + "TrkChisq/D", track.getChi2());
+            tupleMap.put(prefix + "TrkHits/I", (double) track.getTrackerHits().size());
+            tupleMap.put(prefix + "TrkType/I", (double) particle.getType());
+            tupleMap.put(prefix + "TrkT/D", trkT);
+            tupleMap.put(prefix + "HasL1/B", iso[0] != null ? 1.0 : 0.0);
+            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 + "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);
+            tupleMap.put(prefix + "PhiKink1/D", kinks != null ? GBLKinkData.getPhiKink(kinks, 1) : 0);
+            tupleMap.put(prefix + "PhiKink2/D", kinks != null ? GBLKinkData.getPhiKink(kinks, 2) : 0);
+            tupleMap.put(prefix + "PhiKink3/D", kinks != null ? GBLKinkData.getPhiKink(kinks, 3) : 0);
+            tupleMap.put(prefix + "IsoStereo/D", isoStereo);
+            tupleMap.put(prefix + "IsoAxial/D", isoAxial);
+            tupleMap.put(prefix + "MinPositiveIso/D", minPositiveIso);
+            tupleMap.put(prefix + "MinNegativeIso/D", minNegativeIso);
+            tupleMap.put(prefix + "MatchChisq/D", particle.getGoodnessOfPID());
+
+            returnTrackState = tweakedTrackState;
+        }
+
         if (!particle.getClusters().isEmpty()) {
             Cluster cluster = particle.getClusters().get(0);
             tupleMap.put(prefix + "ClT/D", ClusterUtilities.getSeedHitTime(cluster));
@@ -411,126 +532,8 @@
             tupleMap.put(prefix + "ClHits/I", (double) cluster.getCalorimeterHits().size());
         }
 
-        return tweakedTrackState;
-    }
-
-    protected TrackState fillParticleVariables(EventHeader event, ReconstructedParticle particle, String prefix) {
-  //  protected ReconstructedParticle fillParticleVariables(EventHeader event, ReconstructedParticle particle, String prefix) {
-
-    //if (!particle.getTracks().isEmpty()){
-        Track track = particle.getTracks().get(0);
-        TrackState trackState = track.getTrackStates().get(0);
-        double[] param = new double[5];
-        for (int i = 0; i < 5; i++) {
-            param[i] = trackState.getParameters()[i] + ((trackState.getTanLambda() > 0) ? topTrackCorrection[i] : botTrackCorrection[i]);
-        }
-//            Arrays.
-        TrackState tweakedTrackState = new BaseTrackState(param, trackState.getReferencePoint(), trackState.getCovMatrix(), trackState.getLocation(), bfield);
-        Hep3Vector pRot = VecOp.mult(beamAxisRotation, CoordinateTransformations.transformVectorToDetector(new BasicHep3Vector(tweakedTrackState.getMomentum())));
-
-        Double[] iso = TrackUtils.getIsolations(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
-        double minPositiveIso = 9999;
-        double minNegativeIso = 9999;
-        double isoStereo = -9999, isoAxial = -9999;
-        for (int i = 0; i < 6; i++) {
-            if (iso[2 * i] != null) {
-                if (pRot.y() < 0) {
-                    isoStereo = iso[2 * i];
-                    isoAxial = iso[2 * i + 1];
-                } else {
-                    isoAxial = iso[2 * i];
-                    isoStereo = iso[2 * i + 1];
-                }
-                for (int j = 2 * i; j < 2 * i + 2; j++) {
-                    if (iso[j] < 100) {
-                        if (iso[j] > 0) {
-                            if (minPositiveIso > 100 || iso[j] < minPositiveIso) {
-                                minPositiveIso = iso[j];
-                            }
-                        } else {
-                            if (minNegativeIso > 100 || iso[j] > minNegativeIso) {
-                                minNegativeIso = iso[j];
-                            }
-                        }
-                    }
-                }
-                break;
-            }
-        }
-        
-        double trkT = TrackUtils.getTrackTime(track, TrackUtils.getHitToStripsTable(event), TrackUtils.getHitToRotatedTable(event));
-        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());
-        tupleMap.put(prefix + "PZ/D", pRot.z());
-        tupleMap.put(prefix + "P/D", pRot.magnitude());
-        tupleMap.put(prefix + "TrkZ0/D", tweakedTrackState.getZ0());
-        tupleMap.put(prefix + "TrkLambda/D", tweakedTrackState.getTanLambda());
-        tupleMap.put(prefix + "TrkD0/D", tweakedTrackState.getD0());
-        tupleMap.put(prefix + "TrkPhi/D", tweakedTrackState.getPhi());
-        tupleMap.put(prefix + "TrkOmega/D", tweakedTrackState.getOmega());
-        tupleMap.put(prefix + "TrkEcalX/D", atEcal.x());
-        tupleMap.put(prefix + "TrkEcalY/D", atEcal.y());
-        tupleMap.put(prefix + "TrkChisq/D", track.getChi2());
-        tupleMap.put(prefix + "TrkHits/I", (double) track.getTrackerHits().size());
-        tupleMap.put(prefix + "TrkType/I", (double) particle.getType());
-        tupleMap.put(prefix + "TrkT/D", trkT);
-        tupleMap.put(prefix + "HasL1/B", iso[0] != null ? 1.0 : 0.0);
-        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 + "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);
-        tupleMap.put(prefix + "PhiKink1/D", kinks!=null ? GBLKinkData.getPhiKink(kinks, 1) : 0);
-        tupleMap.put(prefix + "PhiKink2/D", kinks!=null ? GBLKinkData.getPhiKink(kinks, 2) : 0);
-        tupleMap.put(prefix + "PhiKink3/D", kinks!=null ? GBLKinkData.getPhiKink(kinks, 3) : 0);
-        tupleMap.put(prefix + "IsoStereo/D", isoStereo);
-        tupleMap.put(prefix + "IsoAxial/D", isoAxial);
-        tupleMap.put(prefix + "MinPositiveIso/D", minPositiveIso);
-        tupleMap.put(prefix + "MinNegativeIso/D", minNegativeIso);
-        tupleMap.put(prefix + "MatchChisq/D", particle.getGoodnessOfPID());
-        
-        if (!particle.getClusters().isEmpty()) {
-            Cluster cluster = particle.getClusters().get(0);
-            tupleMap.put(prefix + "ClT/D", ClusterUtilities.getSeedHitTime(cluster));
-            tupleMap.put(prefix + "ClE/D", cluster.getEnergy());
-            tupleMap.put(prefix + "ClSeedE/D", ClusterUtilities.findSeedHit(cluster).getCorrectedEnergy());
-            tupleMap.put(prefix + "ClX/D", cluster.getPosition()[0]);
-            tupleMap.put(prefix + "ClY/D", cluster.getPosition()[1]);
-            tupleMap.put(prefix + "ClZ/D", cluster.getPosition()[2]);
-            tupleMap.put(prefix + "ClHits/I", (double) cluster.getCalorimeterHits().size());
-        }
-    
-        return tweakedTrackState;
-           
+        return returnTrackState;
+
         //return particle;    
     }
 
@@ -562,8 +565,8 @@
         BilliorVertex vzcVertex = vtxFitter.fitVertex(billiorTracks);
         ReconstructedParticle vzcV0 = HpsReconParticleDriver.makeReconstructedParticle(electron, positron, vzcVertex);
         Hep3Vector vzcMomRot = VecOp.mult(beamAxisRotation, vzcV0.getMomentum());
-        Hep3Vector vzcVtx = VecOp.mult(beamAxisRotation, vzcV0.getStartVertex().getPosition()); 
-        
+        Hep3Vector vzcVtx = VecOp.mult(beamAxisRotation, vzcV0.getStartVertex().getPosition());
+
         tupleMap.put("uncPX/D", uncMomRot.x());
         tupleMap.put("uncPY/D", uncMomRot.y());
         tupleMap.put("uncPZ/D", uncMomRot.z());
@@ -576,14 +579,14 @@
         tupleMap.put("uncElePX/D", uncV0.getStartVertex().getParameters().get("p1X"));
         tupleMap.put("uncElePY/D", uncV0.getStartVertex().getParameters().get("p1Y"));
         tupleMap.put("uncElePZ/D", uncV0.getStartVertex().getParameters().get("p1Z"));
-        tupleMap.put("uncEleP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
-                +Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
+        tupleMap.put("uncEleP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
+                + Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
         tupleMap.put("uncPosPX/D", uncV0.getStartVertex().getParameters().get("p2X"));
         tupleMap.put("uncPosPY/D", uncV0.getStartVertex().getParameters().get("p2Y"));
         tupleMap.put("uncPosPZ/D", uncV0.getStartVertex().getParameters().get("p2Z"));
-        tupleMap.put("uncPosP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
-                +Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
-               
+        tupleMap.put("uncPosP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
+                + Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
+
         tupleMap.put("bscPX/D", bscMomRot.x());
         tupleMap.put("bscPY/D", bscMomRot.y());
         tupleMap.put("bscPZ/D", bscMomRot.z());
@@ -596,14 +599,14 @@
         tupleMap.put("bscElePX/D", bscV0.getStartVertex().getParameters().get("p1X"));
         tupleMap.put("bscElePY/D", bscV0.getStartVertex().getParameters().get("p1Y"));
         tupleMap.put("bscElePZ/D", bscV0.getStartVertex().getParameters().get("p1Z"));
-        tupleMap.put("bscEleP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
-                +Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
+        tupleMap.put("bscEleP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
+                + Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
         tupleMap.put("bscPosPX/D", bscV0.getStartVertex().getParameters().get("p2X"));
         tupleMap.put("bscPosPY/D", bscV0.getStartVertex().getParameters().get("p2Y"));
         tupleMap.put("bscPosPZ/D", bscV0.getStartVertex().getParameters().get("p2Z"));
-        tupleMap.put("bscPosP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
-                +Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
-        
+        tupleMap.put("bscPosP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
+                + Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
+
         tupleMap.put("tarPX/D", tarMomRot.x());
         tupleMap.put("tarPY/D", tarMomRot.y());
         tupleMap.put("tarPZ/D", tarMomRot.z());
@@ -616,14 +619,14 @@
         tupleMap.put("tarElePX/D", tarV0.getStartVertex().getParameters().get("p1X"));
         tupleMap.put("tarElePY/D", tarV0.getStartVertex().getParameters().get("p1Y"));
         tupleMap.put("tarElePZ/D", tarV0.getStartVertex().getParameters().get("p1Z"));
-        tupleMap.put("tarEleP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
-                +Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
+        tupleMap.put("tarEleP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
+                + Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
         tupleMap.put("tarPosPX/D", tarV0.getStartVertex().getParameters().get("p2X"));
         tupleMap.put("tarPosPY/D", tarV0.getStartVertex().getParameters().get("p2Y"));
         tupleMap.put("tarPosPZ/D", tarV0.getStartVertex().getParameters().get("p2Z"));
-        tupleMap.put("tarPosP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
-                +Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
-        
+        tupleMap.put("tarPosP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
+                + Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
+
         tupleMap.put("vzcPX/D", vzcMomRot.x());
         tupleMap.put("vzcPY/D", vzcMomRot.y());
         tupleMap.put("vzcPZ/D", vzcMomRot.z());
@@ -636,125 +639,122 @@
         tupleMap.put("vzcElePX/D", vzcV0.getStartVertex().getParameters().get("p1X"));
         tupleMap.put("vzcElePY/D", vzcV0.getStartVertex().getParameters().get("p1Y"));
         tupleMap.put("vzcElePZ/D", vzcV0.getStartVertex().getParameters().get("p1Z"));
-        tupleMap.put("vzcEleP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
-                +Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
+        tupleMap.put("vzcEleP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
+                + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
         tupleMap.put("vzcPosPX/D", vzcV0.getStartVertex().getParameters().get("p2X"));
         tupleMap.put("vzcPosPY/D", vzcV0.getStartVertex().getParameters().get("p2Y"));
         tupleMap.put("vzcPosPZ/D", vzcV0.getStartVertex().getParameters().get("p2Z"));
-        tupleMap.put("vzcPosP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
-                +Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
-        
+        tupleMap.put("vzcPosP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
+                + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
+
         //////////////////////////////////////////////////////////////////////////////////////////
         int nEleClusters = electron.getClusters().size();
         int nPosClusters = positron.getClusters().size();
 
-        if (nEleClusters > 0){
-           
-            tupleMap.put("uncEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2))));
-            tupleMap.put("vzcEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2))));
-            tupleMap.put("tarEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2))));
-            tupleMap.put("bscEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2))));
-                    
-            if (nPosClusters > 0){
-
-                tupleMap.put("vzcPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                        Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2))));
-                tupleMap.put("tarPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                        Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)))); 
-                tupleMap.put("bscPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                        Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2))));
-                tupleMap.put("uncPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                        Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2))));         
-                
-                tupleMap.put("vzcWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), vzcV0));     
+        if (nEleClusters > 0) {
+
+            tupleMap.put("uncEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0),
+                    Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
+                            + Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2))));
+            tupleMap.put("vzcEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0),
+                    Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
+                            + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2))));
+            tupleMap.put("tarEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0),
+                    Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
+                            + Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2))));
+            tupleMap.put("bscEleWtP/D", MassCalculator.combinedMomentum(electron.getClusters().get(0), electron.getTracks().get(0),
+                    Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
+                            + Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2))));
+
+            if (nPosClusters > 0) {
+
+                tupleMap.put("vzcPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                        Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
+                                + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2))));
+                tupleMap.put("tarPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                        Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
+                                + Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2))));
+                tupleMap.put("bscPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                        Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
+                                + Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2))));
+                tupleMap.put("uncPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                        Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
+                                + Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2))));
+
+                tupleMap.put("vzcWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), vzcV0));
                 tupleMap.put("tarWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), tarV0));
                 tupleMap.put("bscWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), bscV0));
-                tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), uncV0));     
-                          
-            }
-            
-            else {//e- has cluster, e+ does not
-                tupleMap.put("vzcPosWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
-                tupleMap.put("bscPosWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
-                tupleMap.put("tarPosWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
-                tupleMap.put("uncPosWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
-                        +Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
+                tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getClusters().get(0), uncV0));
+
+            } else {//e- has cluster, e+ does not
+                tupleMap.put("vzcPosWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
+                        + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
+                tupleMap.put("bscPosWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
+                        + Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
+                tupleMap.put("tarPosWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
+                        + Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
+                tupleMap.put("uncPosWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
+                        + Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
                 tupleMap.put("vzcWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getTracks().get(0), vzcV0));
                 tupleMap.put("tarWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getTracks().get(0), tarV0));
                 tupleMap.put("bscWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getTracks().get(0), bscV0));
-                tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getTracks().get(0), uncV0));                      
-            }
-            
-        }
-        
-        if (nPosClusters>0 && nEleClusters==0){//e+ has cluster, e- does not
-            tupleMap.put("vzcPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
-                            +Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2))));
-            tupleMap.put("tarPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
-                            +Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)))); 
-            tupleMap.put("bscPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
-                            +Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2))));
-            tupleMap.put("uncPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0), 
-                    Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
-                            +Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2))));  
-            tupleMap.put("vzcEleWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("bscEleWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("tarEleWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("uncEleWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
-                    
+                tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getClusters().get(0), positron.getTracks().get(0), uncV0));
+            }
+
+        }
+
+        if (nPosClusters > 0 && nEleClusters == 0) {//e+ has cluster, e- does not
+            tupleMap.put("vzcPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                    Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
+                            + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2))));
+            tupleMap.put("tarPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                    Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
+                            + Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2))));
+            tupleMap.put("bscPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                    Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
+                            + Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2))));
+            tupleMap.put("uncPosWtP/D", MassCalculator.combinedMomentum(positron.getClusters().get(0), positron.getTracks().get(0),
+                    Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
+                            + Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2))));
+            tupleMap.put("vzcEleWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("bscEleWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("tarEleWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("uncEleWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
+
             tupleMap.put("vzcWtM/D", MassCalculator.combinedMass(electron.getTracks().get(0), positron.getClusters().get(0), vzcV0));
             tupleMap.put("tarWtM/D", MassCalculator.combinedMass(electron.getTracks().get(0), positron.getClusters().get(0), tarV0));
             tupleMap.put("bscWtM/D", MassCalculator.combinedMass(electron.getTracks().get(0), positron.getClusters().get(0), bscV0));
-            tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getTracks().get(0), positron.getClusters().get(0), uncV0));                
-        }   
-        
-        
-       if (nPosClusters==0 && nEleClusters==0){
-            tupleMap.put("vzcEleWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("vzcPosWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
-                    +Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
-            tupleMap.put("vzcWtM/D", vzcV0.getMass());  
-            tupleMap.put("tarEleWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("tarPosWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
-                    +Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
-            tupleMap.put("tarWtM/D", tarV0.getMass());    
-            tupleMap.put("bscEleWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("bscPosWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
-                    +Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
-            tupleMap.put("bscWtM/D", bscV0.getMass());    
-            tupleMap.put("uncEleWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
-                    +Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
-            tupleMap.put("uncPosWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2)+Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
-                    +Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
+            tupleMap.put("uncWtM/D", MassCalculator.combinedMass(electron.getTracks().get(0), positron.getClusters().get(0), uncV0));
+        }
+
+        if (nPosClusters == 0 && nEleClusters == 0) {
+            tupleMap.put("vzcEleWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(vzcV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("vzcPosWtP/D", Math.sqrt(Math.pow(vzcV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Y"), 2)
+                    + Math.pow(vzcV0.getStartVertex().getParameters().get("p2Z"), 2)));
+            tupleMap.put("vzcWtM/D", vzcV0.getMass());
+            tupleMap.put("tarEleWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(tarV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("tarPosWtP/D", Math.sqrt(Math.pow(tarV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(tarV0.getStartVertex().getParameters().get("p2Y"), 2)
+                    + Math.pow(tarV0.getStartVertex().getParameters().get("p2Z"), 2)));
+            tupleMap.put("tarWtM/D", tarV0.getMass());
+            tupleMap.put("bscEleWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(bscV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("bscPosWtP/D", Math.sqrt(Math.pow(bscV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(bscV0.getStartVertex().getParameters().get("p2Y"), 2)
+                    + Math.pow(bscV0.getStartVertex().getParameters().get("p2Z"), 2)));
+            tupleMap.put("bscWtM/D", bscV0.getMass());
+            tupleMap.put("uncEleWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p1X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p1Y"), 2)
+                    + Math.pow(uncV0.getStartVertex().getParameters().get("p1Z"), 2)));
+            tupleMap.put("uncPosWtP/D", Math.sqrt(Math.pow(uncV0.getStartVertex().getParameters().get("p2X"), 2) + Math.pow(uncV0.getStartVertex().getParameters().get("p2Y"), 2)
+                    + Math.pow(uncV0.getStartVertex().getParameters().get("p2Z"), 2)));
             tupleMap.put("uncWtM/D", uncV0.getMass());
-            
-       }
-       
+
+        }
+
         //////////////////////////////////////////////////////////////////////////////
     }
 

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/tuple/WABTupleDriver.java (from r4462, java/trunk/analysis/src/main/java/org/hps/analysis/tuple/FEETupleDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/tuple/FEETupleDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/tuple/WABTupleDriver.java	Wed Aug 10 16:00:53 2016
@@ -1,5 +1,6 @@
 package org.hps.analysis.tuple;
 
+import java.util.ArrayList;
 import java.util.List;
 import org.hps.recon.tracking.TrackType;
 import org.hps.record.triggerbank.AbstractIntData;
@@ -8,16 +9,18 @@
 import org.lcsim.event.GenericObject;
 import org.lcsim.event.ReconstructedParticle;
 
-public class FEETupleDriver extends TupleDriver {
+public class WABTupleDriver extends TupleDriver {
 
     private final String finalStateParticlesColName = "FinalStateParticles";
-    private final double tupleTrkPCut = 0.7;
+    private final double tupleMinECut = 0.5;
+    private final double tupleMaxECut = 1.3;
 
     @Override
     protected void setupVariables() {
         tupleVariables.clear();
         addEventVariables();
-        addParticleVariables("fsp");
+        addParticleVariables("ele");
+        addParticleVariables("pho");
     }
 
     @Override
@@ -41,20 +44,31 @@
         }
 
         List<ReconstructedParticle> fspList = event.get(ReconstructedParticle.class, finalStateParticlesColName);
+        List<ReconstructedParticle> eleList = new ArrayList<ReconstructedParticle>();
+        List<ReconstructedParticle> phoList = new ArrayList<ReconstructedParticle>();
 
         for (ReconstructedParticle fsp : fspList) {
-            if (isGBL != TrackType.isGBL(fsp.getType())) {
-                continue;
+            if (fsp.getCharge() == 0) {
+                phoList.add(fsp);
+            } else {
+                if (isGBL == TrackType.isGBL(fsp.getType()) && fsp.getCharge() < 0) {
+                    eleList.add(fsp);
+                }
             }
-            tupleMap.clear();
-            fillEventVariables(event, triggerData);
+        }
+        for (ReconstructedParticle ele : eleList) {
+            for (ReconstructedParticle pho : phoList) {
+                tupleMap.clear();
+                fillEventVariables(event, triggerData);
 
-            fillParticleVariables(event, fsp, "fsp");
+                fillParticleVariables(event, ele, "ele");
+                fillParticleVariables(event, pho, "pho");
 
-            if (tupleWriter != null) {
-                boolean trkCut = tupleMap.get("fspP/D") > tupleTrkPCut * ebeam;
-                if (!cutTuple || (trkCut)) {
-                    writeTuple();
+                if (tupleWriter != null) {
+                    boolean eCut = tupleMap.get("eleP/D") + tupleMap.get("phoClE/D") > tupleMinECut * ebeam && tupleMap.get("eleP/D") + tupleMap.get("phoClE/D") < tupleMaxECut * ebeam;
+                    if (!cutTuple || (eCut)) {
+                        writeTuple();
+                    }
                 }
             }
         }

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use