Print

Print


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