Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill on MAIN
MCRPdijetm.java+78added 1.1


lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
MCRPdijetm.java added at 1.1
diff -N MCRPdijetm.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ MCRPdijetm.java	12 Aug 2009 18:33:49 -0000	1.1
@@ -0,0 +1,78 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import hep.physics.vec.Hep3Vector;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.util.aida.AIDA;
+
+/*
+ * PFASelect includes fiducial cut to select region for PFA analysis
+ */
+
+public class MCRPdijetm extends Driver
+{
+    private String _jname;
+    private AIDA aida = AIDA.defaultInstance();
+
+    public MCRPdijetm()
+    {
+        
+    }
+    
+    protected void process(EventHeader event)
+    {
+        super.process(event);
+
+        //  get dijet mass if 2 jets
+        List<ReconstructedParticle> jets = event.get(ReconstructedParticle.class,_jname);
+        double jpx = 0.;
+        double jpy = 0.;
+        double jpz = 0.;
+        double Etot = 0.;
+        double jm2 = 0.;
+        int jind = 0;
+        double[] ejet = new double[10];
+        double[] pzjet = new double[10];
+        aida.cloud1D("Number of Jets from MCRPs").fill(jets.size());
+
+        for(ReconstructedParticle jet : jets)
+        {
+            Etot += jet.getEnergy();
+            Hep3Vector jmom = jet.getMomentum();
+            aida.cloud1D("MCParticle Jet pT").fill(Math.sqrt(jmom.x()*jmom.x()+jmom.y()*jmom.y()));
+            jpx += jmom.x();
+            jpy += jmom.y();
+            jpz += jmom.z();
+            ejet[jind] = jet.getEnergy();
+            jm2 += jet.getMass()*jet.getMass();
+            pzjet[jind] = jmom.z();
+            jind++;
+        }
+        double emin = 0.;
+        double pzj = 0.;
+        if (jind<3)
+        {
+            emin = ejet[1];
+            pzj = pzjet[1];
+            if (ejet[0] < ejet[1])
+            {
+                emin = ejet[0];
+                pzj = pzjet[0];
+            }
+//            aida.cloud1D("ycut for 2 jets").fill(2.*emin*(emin-Math.abs(pzj))/(Etot*Etot));
+        }
+        double ptot = Math.sqrt(jpx*jpx+jpy*jpy+jpz*jpz);
+        double jinv = Math.sqrt(Etot*Etot-ptot*ptot+jm2);
+        aida.cloud1D("Total MC Jet Mass").fill(jinv);
+        aida.cloud1D("Total MC E jets").fill(Etot);
+//        System.out.println("Total MC Jet Mass " + jinv);
+    }
+
+  public void setInputJets(String jname)
+  {
+      _jname = jname;
+  }
+  
+}
CVSspam 0.2.8