Author: [log in to unmask]
Date: Wed Aug 10 12:33:46 2016
New Revision: 4459
Log:
added lots of variables for weighting the mass and momentum for further studies
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 12:33:46 2016
@@ -5,6 +5,7 @@
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.HepLorentzVector;
import hep.physics.vec.VecOp;
+
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -12,7 +13,9 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+
import org.apache.commons.lang3.StringUtils;
+import org.hps.analysis.ecal.MassCalculator;
import org.hps.conditions.beam.BeamEnergy;
import org.hps.recon.ecal.cluster.ClusterUtilities;
import org.hps.recon.particle.HpsReconParticleDriver;
@@ -250,7 +253,13 @@
"tarPX/D", "tarPY/D", "tarPZ/D", "tarP/D",
"tarVX/D", "tarVY/D", "tarVZ/D", "tarChisq/D", "tarM/D",
"vzcPX/D", "vzcPY/D", "vzcPZ/D", "vzcP/D",
- "vzcVX/D", "vzcVY/D", "vzcVZ/D", "vzcChisq/D", "vzcM/D"};
+ "vzcVX/D", "vzcVY/D", "vzcVZ/D", "vzcChisq/D", "vzcM/D",
+ "uncElePX/D", "uncElePY/D", "uncElePZ/D", "uncPosPX/D", "uncPosPY/D", "uncPosPZ/D", "uncEleP/D", "uncPosP/D",
+ "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"};
tupleVariables.addAll(Arrays.asList(newVars));
}
@@ -266,6 +275,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];
}
@@ -279,9 +289,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;
+ }*/
if (fsp.getCharge() != 0) {
ntrk++;
}
@@ -302,8 +315,8 @@
tupleMap.put("isPair1/B", triggerData.isPair1Trigger() ? 1.0 : 0.0);
}
}
-
- protected TrackState fillParticleVariables(EventHeader event, ReconstructedParticle particle, String prefix) {
+
+ 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];
@@ -393,6 +406,102 @@
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);
+
+ 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", 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 particle;
+ }
+
protected void fillVertexVariables(EventHeader event, List<BilliorTrack> billiorTracks, ReconstructedParticle electron, ReconstructedParticle positron) {
BilliorVertexer vtxFitter = new BilliorVertexer(TrackUtils.getBField(event.getDetector()).y());
vtxFitter.setBeamSize(beamSize);
@@ -421,8 +530,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());
@@ -432,7 +541,17 @@
tupleMap.put("uncVZ/D", uncVtx.z());
tupleMap.put("uncChisq/D", uncV0.getStartVertex().getChi2());
tupleMap.put("uncM/D", uncV0.getMass());
-
+ tupleMap.put("uncElePX/D", uncVertex.getParameters().get("p1X"));
+ tupleMap.put("uncElePY/D", uncVertex.getParameters().get("p1Y"));
+ tupleMap.put("uncElePZ/D", uncVertex.getParameters().get("p1Z"));
+ tupleMap.put("uncEleP/D", Math.sqrt(Math.pow(uncVertex.getParameters().get("p1X"), 2)+Math.pow(uncVertex.getParameters().get("p1Y"), 2)
+ +Math.pow(uncVertex.getParameters().get("p1Z"), 2)));
+ tupleMap.put("uncPosPX/D", uncVertex.getParameters().get("p2X"));
+ tupleMap.put("uncPosPY/D", uncVertex.getParameters().get("p2Y"));
+ tupleMap.put("uncPosPZ/D", uncVertex.getParameters().get("p2Z"));
+ tupleMap.put("uncPosP/D", Math.sqrt(Math.pow(uncVertex.getParameters().get("p2X"), 2)+Math.pow(uncVertex.getParameters().get("p2Y"), 2)
+ +Math.pow(uncVertex.getParameters().get("p2Z"), 2)));
+
tupleMap.put("bscPX/D", bscMomRot.x());
tupleMap.put("bscPY/D", bscMomRot.y());
tupleMap.put("bscPZ/D", bscMomRot.z());
@@ -442,7 +561,17 @@
tupleMap.put("bscVZ/D", bscVtx.z());
tupleMap.put("bscChisq/D", bscV0.getStartVertex().getChi2());
tupleMap.put("bscM/D", bscV0.getMass());
-
+ tupleMap.put("bscElePX/D", bsconVertex.getParameters().get("p1X"));
+ tupleMap.put("bscElePY/D", bsconVertex.getParameters().get("p1Y"));
+ tupleMap.put("bscElePZ/D", bsconVertex.getParameters().get("p1Z"));
+ tupleMap.put("bscEleP/D", Math.sqrt(Math.pow(bsconVertex.getParameters().get("p1X"), 2)+Math.pow(bsconVertex.getParameters().get("p1Y"), 2)
+ +Math.pow(bsconVertex.getParameters().get("p1Z"), 2)));
+ tupleMap.put("bscPosPX/D", bsconVertex.getParameters().get("p2X"));
+ tupleMap.put("bscPosPY/D", bsconVertex.getParameters().get("p2Y"));
+ tupleMap.put("bscPosPZ/D", bsconVertex.getParameters().get("p2Z"));
+ tupleMap.put("bscPosP/D", Math.sqrt(Math.pow(bsconVertex.getParameters().get("p2X"), 2)+Math.pow(bsconVertex.getParameters().get("p2Y"), 2)
+ +Math.pow(bsconVertex.getParameters().get("p2Z"), 2)));
+
tupleMap.put("tarPX/D", tarMomRot.x());
tupleMap.put("tarPY/D", tarMomRot.y());
tupleMap.put("tarPZ/D", tarMomRot.z());
@@ -452,7 +581,17 @@
tupleMap.put("tarVZ/D", tarVtx.z());
tupleMap.put("tarChisq/D", tarV0.getStartVertex().getChi2());
tupleMap.put("tarM/D", tarV0.getMass());
-
+ tupleMap.put("tarElePX/D", tarVertex.getParameters().get("p1X"));
+ tupleMap.put("tarElePY/D", tarVertex.getParameters().get("p1Y"));
+ tupleMap.put("tarElePZ/D", tarVertex.getParameters().get("p1Z"));
+ tupleMap.put("tarEleP/D", Math.sqrt(Math.pow(tarVertex.getParameters().get("p1X"), 2)+Math.pow(tarVertex.getParameters().get("p1Y"), 2)
+ +Math.pow(tarVertex.getParameters().get("p1Z"), 2)));
+ tupleMap.put("tarPosPX/D", tarVertex.getParameters().get("p2X"));
+ tupleMap.put("tarPosPY/D", tarVertex.getParameters().get("p2Y"));
+ tupleMap.put("tarPosPZ/D", tarVertex.getParameters().get("p2Z"));
+ tupleMap.put("tarPosP/D", Math.sqrt(Math.pow(tarVertex.getParameters().get("p2X"), 2)+Math.pow(tarVertex.getParameters().get("p2Y"), 2)
+ +Math.pow(tarVertex.getParameters().get("p2Z"), 2)));
+
tupleMap.put("vzcPX/D", vzcMomRot.x());
tupleMap.put("vzcPY/D", vzcMomRot.y());
tupleMap.put("vzcPZ/D", vzcMomRot.z());
@@ -462,6 +601,129 @@
tupleMap.put("vzcVZ/D", vzcVtx.z());
tupleMap.put("vzcChisq/D", vzcV0.getStartVertex().getChi2());
tupleMap.put("vzcM/D", vzcV0.getMass());
+ tupleMap.put("vzcElePX/D", vzcVertex.getParameters().get("p1X"));
+ tupleMap.put("vzcElePY/D", vzcVertex.getParameters().get("p1Y"));
+ tupleMap.put("vzcElePZ/D", vzcVertex.getParameters().get("p1Z"));
+ tupleMap.put("vzcEleP/D", Math.sqrt(Math.pow(vzcVertex.getParameters().get("p1X"), 2)+Math.pow(vzcVertex.getParameters().get("p1Y"), 2)
+ +Math.pow(vzcVertex.getParameters().get("p1Z"), 2)));
+ tupleMap.put("vzcPosPX/D", vzcVertex.getParameters().get("p2X"));
+ tupleMap.put("vzcPosPY/D", vzcVertex.getParameters().get("p2Y"));
+ tupleMap.put("vzcPosPZ/D", vzcVertex.getParameters().get("p2Z"));
+ tupleMap.put("vzcPosP/D", Math.sqrt(Math.pow(vzcVertex.getParameters().get("p2X"), 2)+Math.pow(vzcVertex.getParameters().get("p2Y"), 2)
+ +Math.pow(vzcVertex.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));
+ 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("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("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", uncV0.getMass());
+
+ }
+
+ //////////////////////////////////////////////////////////////////////////////
}
protected void addMCTridentVariables() {
|