Print

Print


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

lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
PFATJetBMCorr.java added at 1.1
diff -N PFATJetBMCorr.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ PFATJetBMCorr.java	14 Feb 2012 19:31:02 -0000	1.1
@@ -0,0 +1,120 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.*;
+import java.util.ArrayList;
+import org.lcsim.util.Driver;
+import org.lcsim.recon.cluster.util.*;
+import org.lcsim.event.*;
+import org.lcsim.spacegeom.*;
+import hep.physics.vec.Hep3Vector;
+import org.lcsim.util.aida.AIDA;
+
+/*
+ * Calculates effect of B-field by determining delta M from tracks in jets
+ */
+
+public class PFATJetBMCorr extends Driver
+{
+    private String _jetname;  // list of jets to use
+    private String _delmname;  //  name of object containing deltaM value
+    private String _trspname;  // name of track-spacepoint map to use
+    private String _tdmapname;  // name of track jet-deltaM map
+    private String _tcclname;  // name of track cluster map for tracks matched to clusters
+    private AIDA aida = AIDA.defaultInstance();
+
+    public PFATJetBMCorr()
+    {
+        
+    }
+    
+    protected void process(EventHeader event)
+    {
+        super.process(event);
+
+        //  get track jets from event
+        List<ReconstructedParticle> trjets = event.get(ReconstructedParticle.class, _jetname);
+        //  get tracks from event and track-spacepoint map to use
+        Map<Track, SpacePoint> trep = (Map<Track, SpacePoint>) event.get(_trspname);
+        //  get track cal clus map also
+        Map<Track, BasicCluster> tclmap = (Map<Track, BasicCluster>) event.get(_tcclname);
+        //  make Nayeli's mass correction and store as event object
+        List<Double> Ddelm = new ArrayList<Double>();
+        //  make a map linking track jet to its delta M value
+        Map<ReconstructedParticle, Double> tjDmap = new HashMap<ReconstructedParticle, Double>();
+        for(ReconstructedParticle trjet : trjets)
+        {
+            double trpx = 0.;
+            double trpy = 0.;
+            double trpz = 0.;
+            double Etot = 0.;
+            double trpxprime = 0.;
+            double trpyprime = 0.;
+            double trpzprime = 0.;
+
+            //  first, need to get list of RPs in this jet
+            List<ReconstructedParticle> rps = trjet.getParticles();
+//            System.out.println("Size of Tr Jet " + rps.size());
+            for (ReconstructedParticle rp : rps)
+            {
+                //  get list of tracks for this particle - one to one for these jets
+                List<Track> trks = rp.getTracks();
+                for (Track trk : trks)
+                {
+                    //  check map of track cal clusters to see if track 4V used in RPs
+//                    if (tclmap.get(trk) != null) System.out.println("This track used");
+                    if (tclmap.get(trk) != null) continue;
+                    trpx += trk.getPX();
+                    trpy += trk.getPY();
+                    trpz += trk.getPZ();
+                    double etr = Math.sqrt(trk.getPX()*trk.getPX()+trk.getPY()*trk.getPY()+trk.getPZ()*trk.getPZ()+.0195);  // use pion mass squared
+                    Etot += etr;
+                    SpacePoint endpSP = trep.get(trk);
+                    Hep3Vector endp = new SpacePoint(endpSP);
+                    double rmag = endp.magnitude();
+                    trpxprime += etr*endp.x()/rmag;
+                    trpyprime += etr*endp.y()/rmag;
+                    trpzprime += etr*endp.z()/rmag;
+                }
+            }
+            double pptot = Math.sqrt(trpxprime*trpxprime+trpyprime*trpyprime+trpzprime*trpzprime);
+            double mprime = Math.sqrt(Etot*Etot-pptot*pptot);
+            double ptot = Math.sqrt(trpx*trpx+trpy*trpy+trpz*trpz);
+            double minv = Math.sqrt(Etot*Etot-ptot*ptot);
+            double delm = mprime-minv;
+            if (delm<0.) delm = 0.;
+            Ddelm.add(delm);
+            aida.cloud1D("PFA Track Invariant Mass per jet").fill(minv);
+            aida.cloud1D("PFA Track Prime Invariant Mass per jet").fill(mprime);
+            aida.cloud1D("Delta M PFA Track Jet Mp M").fill(delm);
+            tjDmap.put(trjet, delm);
+        }
+        event.put(_delmname, Ddelm);
+        event.put(_tdmapname,tjDmap);
+    }
+
+  public void setInputJetList(String jetname)
+  {
+      _jetname = jetname;
+  }
+
+  public void setTrackSpacepointMap(String trspname)
+  {
+      _trspname = trspname;
+  }
+
+    public void setTrackDelMMap(String tdmapname)
+  {
+      _tdmapname = tdmapname;
+  }
+
+  public void setDeltaMObjectName(String delmname)
+  {
+      _delmname = delmname;
+  }
+
+  public void setTrCClusMapName(String tcclname)
+  {
+      _tcclname = tcclname;
+  }
+
+}
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