Print

Print


Commit in lcsim/src/org/lcsim/recon/postrecon/leptonID/electron on MAIN
IsolatedHighPElectronIdentifier.java+48-121.2 -> 1.3
updated to work with current production

lcsim/src/org/lcsim/recon/postrecon/leptonID/electron
IsolatedHighPElectronIdentifier.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- IsolatedHighPElectronIdentifier.java	28 May 2009 13:58:42 -0000	1.2
+++ IsolatedHighPElectronIdentifier.java	17 Oct 2012 06:36:23 -0000	1.3
@@ -7,15 +7,21 @@
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.Track;
+import org.lcsim.event.TrackState;
 import org.lcsim.event.Cluster;
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.ReconstructedParticle;
 import org.lcsim.event.base.BaseReconstructedParticle;
+import org.lcsim.util.lcio.LCIOConstants;
+import org.lcsim.geometry.*;
 import hep.physics.vec.*;
 import java.util.*;
 import java.io.IOException;
 public class IsolatedHighPElectronIdentifier extends Driver
 {
    String rpl = "ReconstructedParticles";
+   protected String inputPfoCollection = "PandoraPFOCollection";
+
    double conect;
    double maxE;
    double minE;
@@ -38,14 +44,22 @@
    public void setConeCosTheta(double x){conect = x;}
    public void setMaxE(double x){maxE = x;}
    public void setMinE(double x){minE = x;}
+
+
+    //  List<ReconstructedParticle> rp = new ArrayList<ReconstructedParticle>();
+
    protected void process(EventHeader event)
    {
 //
 // Match Tracks with Recon Particles
 //
+
       List<Track> allTracks = event.get(Track.class,"Tracks");
       List<Track> unusedTracks = new ArrayList<Track>(allTracks);
-      List<ReconstructedParticle> rp = event.get(ReconstructedParticle.class,rpl);
+      //      List<ReconstructedParticle> rp = event.get(ReconstructedParticle.class,rpl);
+      List<ReconstructedParticle> rp = new ArrayList<ReconstructedParticle>();
+      rp = event.get(ReconstructedParticle.class, inputPfoCollection);
+
       Map<Track,ReconstructedParticle> ttorp = new HashMap<Track,ReconstructedParticle>();
       Map<Cluster,ReconstructedParticle> ctorp = new HashMap<Cluster,ReconstructedParticle>();
       for(ReconstructedParticle p:rp)
@@ -65,17 +79,19 @@
 // Map non-muon tracks > minE GeV to clusters within a 25 degree cone
 //
       List<Track> xtrae = new ArrayList<Track>();
-      List<Cluster> cl = event.get(Cluster.class,"Clusters");
+      //      List<Cluster> cl = event.get(Cluster.class,"Clusters");
+      List<Cluster> cl = event.get(Cluster.class,"ReconClusters");
       Map<Track,List<Cluster>> ttocll = new HashMap<Track,List<Cluster>>();
-      for(Track t:allTracks)
+      for(Track trck:allTracks)
       {
+	 TrackState t = trck.getTrackStates().get(0);
          boolean eid = false;
          Hep3Vector tp = new BasicHep3Vector(t.getMomentum());
          if(tp.magnitude() < minE)continue;
          if(tp.magnitude() > maxE)continue;
-         if(ttorp.containsKey(t))
+         if(ttorp.containsKey(trck))
          {
-            double mass = ttorp.get(t).getMass();
+            double mass = ttorp.get(trck).getMass();
             if( Math.abs(mass - .105) < .005)continue;
             if( Math.abs(mass - .0005) < .0001)eid = true;
          }
@@ -85,7 +101,20 @@
          {
             Hep3Vector cp = new BasicHep3Vector(c.getPosition());
             double ct = (tp.x()*cp.x()+tp.y()*cp.y()+tp.z()*cp.z())/tp.magnitude()/cp.magnitude();
-            double hec = c.getSubdetectorEnergies()[3] + c.getSubdetectorEnergies()[7];
+
+	    double hec = 0.0;
+	    
+	    List<CalorimeterHit> calhitsList = c.getCalorimeterHits();
+	    for (CalorimeterHit pfochit : calhitsList) {
+		IDDecoder _decoder = pfochit.getIDDecoder();
+		String dname = _decoder.getSubdetector().getName();
+		//		System.out.println(" name of subdetector for this hit " + dname);
+		if (dname.equals("HcalBarrel") || dname.equals("HcalEndcap")) {
+		    hec += pfochit.getCorrectedEnergy();
+		    //		    System.out.println(" HCAL energy contribution = "+pfochit.getCorrectedEnergy());
+		}
+	    }
+
             if(ct > conect)
             {
                tcl.add(c);
@@ -95,9 +124,9 @@
          double f = HcalE/tp.magnitude();
          if(!eid)
          {
-            if(f < .04)xtrae.add(t);
+	     if(f < 0.04)xtrae.add(trck); // .04
          }
-         ttocll.put(t,tcl);
+         ttocll.put(trck,tcl);
       }
       if(xtrae.size() < 1)return;
 //
@@ -173,12 +202,16 @@
             }
          }
       }
+      System.out.println("Removing and Adding Reconstructed Particles");
+
       for(ReconstructedParticle p:removelist)
       {
+         System.out.println("removing particle; mass = " + p.getMass());
          rp.remove(p);
       }
       for(ReconstructedParticle p:addlist)
       {
+         System.out.println("adding particle; mass = " + p.getMass());
          rp.add(p);
       }
    }
@@ -202,17 +235,20 @@
       }
       return p;
    }
-   public BaseReconstructedParticle makeElectronBRP(Track t)
+   public BaseReconstructedParticle makeElectronBRP(Track trck)
    {
+      TrackState t = trck.getTrackStates().get(0);
       Hep3Vector m = new BasicHep3Vector(t.getMomentum());
       double E = Math.sqrt(emass*emass + m.magnitudeSquared());
       BaseReconstructedParticle p = new BaseReconstructedParticle(E,m);
       p.setMass(emass);
-      p.setCharge((double) (t.getCharge()));
+      double tcharge = t.getOmega()/Math.abs(t.getOmega());
+      //      p.setCharge((double) (t.getOmega()/Math.abs(t.getOmega)));
+      p.setCharge(tcharge);
       p.setReferencePoint(origin);
-      if(t.getCharge() > 0.)p.setParticleIdUsed(eppid);
+      if(tcharge > 0.)p.setParticleIdUsed(eppid);
       else p.setParticleIdUsed(empid);
-      p.addTrack(t);
+      p.addTrack(trck);
       return p;
    }
 }
CVSspam 0.2.12


Use REPLY-ALL to reply to list

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