Print

Print


Hi Norman, 

See below.

On Fri, Jun 5, 2015 at 1:31 PM, Graf, Norman A. <[log in to unmask]> wrote:
Hello All,
  I've noticed that the photon ReconstructedParticle momentum is always (0,0,0) .

While looking at the code in org.hps.recon.particle.ReconParticleDriver I
confirmed that this is what is being done, but also noted that the energy in the
ReconstructedParticle is being set before the cluster correction is applied.

​I didn't realize this was being done.  We should change it ASAP.​
 

        // If any cluster remain unmatched after the tracks are finished,
        // they should be processed into additional reconstructed particles.
        if (!unmatchedClusters.isEmpty()) // Iterate over the remaining unmatched clusters.
        {
            for (Cluster unmatchedCluster : unmatchedClusters) {
                // Create a reconstructed particle to represent the
                // unmatched cluster.
                ReconstructedParticle particle = new BaseReconstructedParticle();
                HepLorentzVector fourVector = new BasicHepLorentzVector(0, 0, 0, 0);   //<===   zero momentum

                // Add the cluster to the particle.
                particle.addCluster(unmatchedCluster);

                // Set the reconstructed particle properties based on
                // the cluster properties.
                ((BasicHepLorentzVector) fourVector).setT(unmatchedCluster.getEnergy());   //<==== energy being set here
                ((BaseReconstructedParticle) particle).setCharge(0);
                ((BaseReconstructedParticle) particle).set4Vector(fourVector);              //<==== RP energy being set here

                // The particle is assumed to be a photon, since it
                // did not leave any track.
                ((BaseReconstructedParticle) particle).setParticleIdUsed(new SimpleParticleID(22, 0, 0, 0));

                if (unmatchedCluster.getType() == ClusterType.RECON.getType()) {
                    int pid = particle.getParticleIDUsed().getPDG();
                    // If not electron....
                    if (pid != 11) {
                        // Set PID and apply corrections.
                        ((BaseCluster) unmatchedCluster).setParticleId(pid);
                        ClusterUtilities.applyCorrections(unmatchedCluster);   //<==== cluster energy being corrected here
                    }
                }

                // Add the particle to the reconstructed particle list.
                particles.add(particle);
            }
        }

This was unexpected behavior to me, but I wanted to check with everyone that
no one was relying on this feature before changing anything.

​When this driver was first written, it was decided that the energy would come from the Ecal and the momentum would come from the SVT.​  This is why the photon momentum was set to zero.  That said ....

I'd like to propose that we set the momentum based on the cluster position assuming the photon
originates from (0,0,0) and use the corrected cluster energy for the photon energy.

​I think this is fine and you should go ahead and make the necessary changes to the code.​
 

Norman

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1



Use REPLY-ALL to reply to list

To unsubscribe from the HPS-SOFTWARE list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=HPS-SOFTWARE&A=1