Print

Print


Commit in lcsim/src/org/lcsim/contrib/SteveMagill on MAIN
ClusterToReconstructedParticleDriver.java+182added 1.1


lcsim/src/org/lcsim/contrib/SteveMagill
ClusterToReconstructedParticleDriver.java added at 1.1
diff -N ClusterToReconstructedParticleDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ClusterToReconstructedParticleDriver.java	23 Apr 2007 20:07:28 -0000	1.1
@@ -0,0 +1,182 @@
+package org.lcsim.contrib.SteveMagill;
+
+import hep.aida.ITree;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.particle.properties.ParticlePropertyManager;
+import hep.physics.particle.properties.ParticleType;
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.base.BaseReconstructedParticle;
+import org.lcsim.recon.cluster.fixedcone.FixedConeClusterer;
+import org.lcsim.recon.cluster.fixedcone.FixedConeClusterer.FixedConeDistanceMetric;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.recon.cluster.util.*;
+
+import static java.lang.Math.sqrt;
+import org.lcsim.event.ParticleID;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.event.base.BaseParticleID;
+/*
+ * SimpleClusterToReconstructedParticleExampleDriver.java
+ *
+ * Created on March 29, 2007, 1:52 PM
+ *
+ * $Id: ClusterToReconstructedParticleDriver.java,v 1.1 2007/04/23 20:07:28 magill Exp $
+ */
+
+/**
+ *
+ * @author Norman Graf
+ */
+public class ClusterToReconstructedParticleDriver extends Driver
+{
+    private AIDA aida = AIDA.defaultInstance();
+    private ITree _tree;
+    
+//    private FixedConeClusterer _fcc;
+//    private boolean _initialized;
+    
+    private String[] _photonnames;
+    private String _tracknames;
+    private String _neutralhadnames;
+    
+    private double _neutralMass;
+    private ParticleType _neutralParticleType;
+    
+    /** Creates a new instance of SimpleClusterToReconstructedParticleExampleDriver */
+    public ClusterToReconstructedParticleDriver()
+    {
+        _tree = aida.tree();
+    }
+    
+    protected void process(EventHeader event)
+    {
+//        if(!_initialized)
+//        {
+            // an example clusterer
+//            double radius = .05;
+//            double seed = 0.;
+//            double minE = .5; ;
+//            _fcc = new FixedConeClusterer(radius, seed, minE, FixedConeDistanceMetric.DPHIDTHETA);
+            
+            
+            // a particle hypothesis for the cluster ID
+            // 130 == K0L
+//            _neutralParticleType = ParticlePropertyManager.getParticlePropertyProvider().get(130);
+//            _neutralMass = _neutralParticleType.getMass();
+            
+//            System.out.println("using "+_neutralMass+" for neutral cluster mass");
+//            _initialized=true;
+//        }
+        
+        // array of ReconstructedParticles to add to the event...
+        List<ReconstructedParticle> rpList = new ArrayList<ReconstructedParticle>();
+        
+        // first, get tracks and add them to rpList
+        List<PerfectTrack> evtracks = event.get(PerfectTrack.class, "PerfectTracks");
+        for (PerfectTrack itrack : evtracks)
+        {
+            double TrE = itrack.getMCParticle().getEnergy();
+            double[] TrP = itrack.getMomentum();
+            Hep3Vector mom = new BasicHep3Vector(TrP[0],TrP[1],TrP[2]);
+            BaseReconstructedParticle rp = new BaseReconstructedParticle(TrE, mom);
+            rp.setMass(0.13957);
+            // rp.setMass(itrack.getMCParticle().getMass());
+            double trq = (double) itrack.getCharge();
+            rp.setCharge(trq);
+            ParticleID id = new BaseParticleID(itrack.getMCParticle().getType());
+            rp.addParticleID(id);
+            rp.addTrack(itrack);
+            rpList.add(rp);
+        }
+        
+        // now get photon clusters
+        List<BasicCluster> phobclusters = event.get(BasicCluster.class,"PhotonBClusters");
+        List<BasicCluster> phoecclusters = event.get(BasicCluster.class,"PhotonECClusters");
+        for (BasicCluster phobclus : phobclusters)
+        {
+            double ClE = phobclus.getEnergy()*1.015*1.013;
+            double[] pos = phobclus.getPosition();
+            double norm = sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2]);
+            double p = ClE/norm;
+            Hep3Vector mom = new BasicHep3Vector(p*pos[0], p*pos[1], p*pos[2]);
+            BaseReconstructedParticle rp = new BaseReconstructedParticle(ClE, mom);
+            rp.setMass(0);
+            ParticleType photype = ParticlePropertyManager.getParticlePropertyProvider().get(22);
+            ParticleID id = new BaseParticleID(photype);
+            rp.addParticleID(id);
+            rp.setParticleIdUsed(id);
+            rp.addCluster(phobclus);
+            rpList.add(rp);
+        }
+        for (BasicCluster phoecclus : phoecclusters)
+        {
+            double ClE = phoecclus.getEnergy()*1.015*1.013;
+            double[] pos = phoecclus.getPosition();
+            double norm = sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2]);
+            double p = ClE/norm;
+            Hep3Vector mom = new BasicHep3Vector(p*pos[0], p*pos[1], p*pos[2]);
+            BaseReconstructedParticle rp = new BaseReconstructedParticle(ClE, mom);
+            rp.setMass(0);
+            ParticleType photype = ParticlePropertyManager.getParticlePropertyProvider().get(22);
+            ParticleID id = new BaseParticleID(photype);
+            rp.addParticleID(id);
+            rp.setParticleIdUsed(id);
+            rp.addCluster(phoecclus);
+            rpList.add(rp);
+        }
+        
+        //  now get neutral hadron clusters
+        try
+        {
+        List<BasicCluster> neuhclusters = event.get(BasicCluster.class,"NeuHClusters");
+        for (BasicCluster neuhclus : neuhclusters)
+        {
+            double ClE = neuhclus.getEnergy()*1.3;
+            double[] pos = neuhclus.getPosition();
+            double norm = sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2]);
+            double p = ClE/norm;
+            Hep3Vector mom = new BasicHep3Vector(p*pos[0], p*pos[1], p*pos[2]);
+            BaseReconstructedParticle rp = new BaseReconstructedParticle(ClE, mom);
+            rp.setMass(718.5);
+            ParticleType neutype = ParticlePropertyManager.getParticlePropertyProvider().get(130);
+            ParticleID id = new BaseParticleID(neutype);
+            rp.addParticleID(id);
+            rp.setParticleIdUsed(id);
+            rp.addCluster(neuhclus);
+            rpList.add(rp);
+        }
+        } catch (java.lang.IllegalArgumentException ex)
+        {
+            System.out.println("No Neutral Hadron Clusters");
+        }
+        
+        // add the list of rps to the event...
+        event.put("AllRecoParticles",rpList, ReconstructedParticle.class,0);
+        //some simple histograms...
+        aida.cloud1D("Number of ReconstructedParticles found").fill(rpList.size());
+        for(ReconstructedParticle rp : rpList)
+        {
+            aida.cloud1D("rp energy").fill(rp.getEnergy());
+        }
+        
+    }
+    
+  public void setTrackNames(String tnames)
+  {
+      _tracknames = tnames;
+  }
+  public void setPhotonNames(String[] pnames)
+  {
+      _photonnames = pnames;
+  }
+  public void setNeutralHadNames(String nhnames)
+  {
+      _neutralhadnames = nhnames;
+  }
+}
\ No newline at end of file
CVSspam 0.2.8