Author: [log in to unmask] Date: Fri Aug 28 16:48:12 2015 New Revision: 3453 Log: Only vertex particle of the same type. Set the reference point of the particle to the vertex position. Modified: java/trunk/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java Modified: java/trunk/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/particle/HpsReconParticleDriver.java Fri Aug 28 16:48:12 2015 @@ -56,6 +56,11 @@ // on the pairs. for(ReconstructedParticle positron : positrons) { for(ReconstructedParticle electron : electrons) { + + // Only vertex particles that are of the same type. This is + // only needed when using multiple track collections. + if (positron.getType() != electron.getType()) continue; + // Get the tracks associated with the electron and // the positron. Track electronTrack = electron.getTracks().get(0); @@ -156,12 +161,16 @@ * from the child particles and vertex given as an argument. */ private ReconstructedParticle makeReconstructedParticle(ReconstructedParticle electron, ReconstructedParticle positron, BilliorVertex vtxFit){ + // Create a new reconstructed particle to represent the V0 // candidate and populate it with the electron and positron. ReconstructedParticle candidate = new BaseReconstructedParticle(); ((BaseReconstructedParticle) candidate).setStartVertex(vtxFit); candidate.addParticle(electron); candidate.addParticle(positron); + + // Set the type of the V0 particle. This will only be needed for pass 2. + ((BaseReconstructedParticle) candidate).setType(electron.getType()); // TODO: The calculation of the total fitted momentum should be // done within BilloirVertex. @@ -169,10 +178,10 @@ // with the reconstructed candidate particle. ((BaseReconstructedParticle) candidate).setMass(vtxFit.getParameters().get("invMass")); Hep3Vector fittedMomentum = new BasicHep3Vector(vtxFit.getParameters().get("p1X"), - vtxFit.getParameters().get("p1Y"), + vtxFit.getParameters().get("p1Y"), vtxFit.getParameters().get("p1Z")); fittedMomentum = VecOp.add(fittedMomentum, new BasicHep3Vector(vtxFit.getParameters().get("p2X"), - vtxFit.getParameters().get("p2Y"), + vtxFit.getParameters().get("p2Y"), vtxFit.getParameters().get("p2Z"))); fittedMomentum = CoordinateTransformations.transformVectorToDetector(fittedMomentum); HepLorentzVector fourVector = new BasicHepLorentzVector(0, 0, 0, 0); @@ -186,6 +195,9 @@ // Add the ReconstructedParticle to the vertex. vtxFit.setAssociatedParticle(candidate); + // Set the vertex position as the reference point of the V0 particle + ((BaseReconstructedParticle) candidate).setReferencePoint(vtxFit.getPosition()); + // Return the V0 candidate. return candidate; }