Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill on MAIN | |||
TJetBMCorr.java | +120 | added 1.1 |
diff -N TJetBMCorr.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ TJetBMCorr.java 14 Feb 2012 19:31:48 -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 TJetBMCorr 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 TJetBMCorr() + { + + } + + 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("All Track Invariant Mass per Jet").fill(minv); + aida.cloud1D("All Track Prime Invariant Mass per Jet").fill(mprime); + aida.cloud1D("Delta M All Track per 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; + } + +}
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