Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill on MAIN | |||
TrBMCorr.java | +87 | added 1.1 |
diff -N TrBMCorr.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ TrBMCorr.java 14 Feb 2012 19:30:21 -0000 1.1 @@ -0,0 +1,87 @@
+package org.lcsim.contrib.SteveMagill; + +import java.util.*; +import java.util.ArrayList; +import org.lcsim.event.EventHeader; +import org.lcsim.util.Driver; +import org.lcsim.event.Track; +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 + */ + +public class TrBMCorr extends Driver +{ + private String _trname; // list of tracks to use + private String _delmname; // name of object containing deltaM value + private String _trspname; // name of track-spacepoint map to use + private AIDA aida = AIDA.defaultInstance(); + + public TrBMCorr() + { + + } + + protected void process(EventHeader event) + { + super.process(event); + + // get tracks from event and track-spacepoint map to use + List<Track> tracks = event.get(Track.class, _trname); + Map<Track, SpacePoint> trep = (Map<Track, SpacePoint>) event.get(_trspname); + // make Nayeli's mass correction and store as event object + List<Double> Ddelm = new ArrayList<Double>(); + double trpx = 0.; + double trpy = 0.; + double trpz = 0.; + double Etot = 0.; + double trpxprime = 0.; + double trpyprime = 0.; + double trpzprime = 0.; + for(Track tr : tracks) + { + trpx += tr.getPX(); + trpy += tr.getPY(); + trpz += tr.getPZ(); + double etr = Math.sqrt(tr.getPX()*tr.getPX()+tr.getPY()*tr.getPY()+tr.getPZ()*tr.getPZ()+.0195); // use pion mass squared + Etot += etr; + SpacePoint endpSP = trep.get(tr); + 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; + Ddelm.add(delm); + aida.cloud1D("All Track Invariant Mass").fill(minv); + aida.cloud1D("All Track Prime Invariant Mass").fill(mprime); + aida.cloud1D("Delta M All Track Mp M").fill(delm); +// System.out.println("MC FS Invariant Mass " + minv); + event.put(_delmname, Ddelm); + + } + + public void setInputTrackList(String trname) + { + _trname = trname; + } + + public void setTrackSpacepointMap(String trspname) + { + _trspname = trspname; + } + + public void setDeltaMObjectName(String delmname) + { + _delmname = delmname; + } + +}
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