Print

Print


Author: [log in to unmask]
Date: Fri Jun  5 14:01:38 2015
New Revision: 3098

Log:
photon momentum now calculated based on cluster position assuming it originated from (0,0,0)
photon energy now comes from corrected cluster energy

Modified:
    java/trunk/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java

Modified: java/trunk/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java
 =============================================================================
--- java/trunk/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java	(original)
+++ java/trunk/recon/src/main/java/org/hps/recon/particle/ReconParticleDriver.java	Fri Jun  5 14:01:38 2015
@@ -4,6 +4,7 @@
 import hep.physics.vec.BasicHepLorentzVector;
 import hep.physics.vec.Hep3Vector;
 import hep.physics.vec.HepLorentzVector;
+import hep.physics.vec.VecOp;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -297,24 +298,13 @@
         if (!unmatchedClusters.isEmpty()) // Iterate over the remaining unmatched clusters.
         {
             for (Cluster unmatchedCluster : unmatchedClusters) {
-                // Create a reconstructed particle to represent the
-                // unmatched cluster.
+                // Create a reconstructed particle to represent the unmatched cluster.
                 ReconstructedParticle particle = new BaseReconstructedParticle();
-                HepLorentzVector fourVector = new BasicHepLorentzVector(0, 0, 0, 0);
-
-                // Add the cluster to the particle.
-                particle.addCluster(unmatchedCluster);
-
-                // Set the reconstructed particle properties based on
-                // the cluster properties.
-                ((BasicHepLorentzVector) fourVector).setT(unmatchedCluster.getEnergy());
-                ((BaseReconstructedParticle) particle).setCharge(0);
-                ((BaseReconstructedParticle) particle).set4Vector(fourVector);
-
-                // The particle is assumed to be a photon, since it
-                // did not leave any track.
+                
+                // The particle is assumed to be a photon, since it did not leave a track.
                 ((BaseReconstructedParticle) particle).setParticleIdUsed(new SimpleParticleID(22, 0, 0, 0));
                 
+                // apply cluster corrections
                 if (unmatchedCluster.getType() == ClusterType.RECON.getType()) {
                     int pid = particle.getParticleIDUsed().getPDG();
                     // If not electron....
@@ -324,6 +314,18 @@
                         ClusterUtilities.applyCorrections(unmatchedCluster);
                     }
                 }
+                //get energy and direction from the cluster
+                Hep3Vector p = new BasicHep3Vector(unmatchedCluster.getPosition());
+                double e = unmatchedCluster.getEnergy();
+                // create momentum vector from direction unit vector times the energy (massless photon)
+                HepLorentzVector fourVector = new BasicHepLorentzVector(e, VecOp.mult(e, VecOp.unit(p)));
+
+                // Add the cluster to the particle.
+                particle.addCluster(unmatchedCluster);
+
+                // Set the reconstructed particle properties based on the cluster properties.
+                ((BaseReconstructedParticle) particle).setCharge(0);
+                ((BaseReconstructedParticle) particle).set4Vector(fourVector);
 
                 // Add the particle to the reconstructed particle list.
                 particles.add(particle);