Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio on MAIN | |||
MyDBDvvH.java | +22 | added 1.1 | |
MyDBDvvHAnalysis.java | +163 | added 1.1 | |
PFOJetFindingDriver.java | +55 | added 1.1 | |
+240 |
analysis java example for the SiD DBD DSTs
diff -N MyDBDvvH.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ MyDBDvvH.java 11 Sep 2012 23:41:08 -0000 1.1 @@ -0,0 +1,22 @@
+import java.util.List; + +import org.lcsim.event.EventHeader; +import org.lcsim.event.MCParticle; +import org.lcsim.event.ReconstructedParticle; +import org.lcsim.util.Driver; +import org.lcsim.util.aida.AIDA; + +public class MyDBDvvH extends Driver { + private AIDA aida = AIDA.defaultInstance(); + public MyDBDvvH(){ +// add(new MyJetFindingDriver()); + add(new PFOJetFindingDriver()); + add(new MyDBDvvHAnalysis()); + }; + public void process(EventHeader event) { + super.process(event); // this takes care that the child Drivers are loaded and processed. +// List<List<MCParticle>> jetList = (List<List<MCParticle>>) event.get("jetList"); + List<List<ReconstructedParticle>> jetList = (List<List<ReconstructedParticle>>) event.get("jetList"); + aida.cloud1D("nJets").fill(jetList.size()); + } +}
\ No newline at end of file
diff -N MyDBDvvHAnalysis.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ MyDBDvvHAnalysis.java 11 Sep 2012 23:41:08 -0000 1.1 @@ -0,0 +1,163 @@
+import org.lcsim.util.aida.AIDA; +import hep.physics.vec.VecOp; +import java.util.List; +import org.lcsim.util.Driver; +import org.lcsim.event.*; + +import java.util.ArrayList; +import java.util.Collections; + +import org.lcsim.spacegeom.CartesianPoint; +import org.lcsim.spacegeom.CartesianVector; +import org.lcsim.spacegeom.SpacePoint; +import org.lcsim.spacegeom.SpaceVector; + + +public class MyDBDvvHAnalysis extends Driver +{ + // collections + protected String inputPfoCollection = "PandoraPFOCollection"; + protected String mcParticlesSkimmedName = "MCParticlesSkimmed"; + + + // First get the reconstructed particles from the event + List<ReconstructedParticle> PFOs = new ArrayList<ReconstructedParticle>(); + + + private AIDA aida = AIDA.defaultInstance(); + + protected void process(EventHeader event) + { + + // try { + PFOs = event.get(ReconstructedParticle.class, inputPfoCollection); + // } catch (IllegalArgumentException e) { + // print(HLEVEL_DEFAULT, e.getMessage(), true); + // } + + List<Track> tracklist = event.getTracks(); + int nTrks = tracklist.size(); + + + aida.cloud1D("Trk nTracks").fill(nTrks); + + +// List<MCParticle> particles = event.get(MCParticle.class,event.MC_PARTICLES); + List<MCParticle> particles = event.get(MCParticle.class,mcParticlesSkimmedName); + aida.cloud1D("Number of MC particles").fill(particles.size()); + for (MCParticle particle : particles) { + for (MCParticle mcp2 : particle.getParents()) { + int parentid = mcp2.getPDGID(); + if (Math.abs(parentid)==25) { + int id = particle.getPDGID(); + aida.cloud1D("All MC energy").fill(particle.getEnergy()); + aida.cloud1D("All MC cosTheta").fill(VecOp.cosTheta(particle.getMomentum())); + aida.cloud1D("All MC phi").fill(VecOp.phi(particle.getMomentum())); + aida.cloud1D("All MC H daughter ID").fill(id); + System.out.println("Parent type:"+mcp2.getType().getName()); + System.out.println("Daughter type:"+particle.getType().getName()); +// System.out.println("Starting point: "+mcp2.getOrigin().toString()); +// System.out.println("Momentum: "+mcp2.getMomentum()); +// System.out.println("Endpoint: "+mcp2.getEndPoint()); +// System.out.println("# Daughters: "+mcp2.getDaughters().size()); + System.out.println("Daughter id:"+id); + } + } + } + + +// -------------------------------------------------- + double EsumTrk = 0.0; + double PsumTrkX = 0.0; + double PsumTrkY = 0.0; + double PsumTrkZ = 0.0; + for (Track track : tracklist) { + // aida.cloud1D("Trk cosTheta").fill(track.getMomentum()); + TrackState trkstate = track.getTrackStates().get(0); + double[] momentum = trkstate.getMomentum(); + System.out.println("mom = " + momentum[0] + "," + momentum[1] + "," + momentum[2]); + + double PX = momentum[0]; + double PY = momentum[1]; + double PZ = momentum[2]; + double PT = Math.sqrt(PX*PX + PY*PY); + double P = Math.sqrt(PT*PT+PZ*PZ); + EsumTrk += P; + PsumTrkX += PX; + PsumTrkY += PY; + PsumTrkZ += PY; +// System.out.println("PT = "+PT); +// System.out.println("P = "+P); + double q = trkstate.getOmega()/Math.abs(trkstate.getOmega()); +// System.out.println("q = "+q); + double tlam = trkstate.getTanLambda(); +// System.out.println("tlam = "+tlam); + aida.cloud1D("Trk cosTheta").fill(PZ/P); + + } + double EvisTrk = EsumTrk; + double PTvisTrk = Math.sqrt(PsumTrkX*PsumTrkX+PsumTrkY*PsumTrkY); + double M2visTrk = EsumTrk*EsumTrk - PTvisTrk*PTvisTrk - PsumTrkZ*PsumTrkZ; + aida.cloud1D("Evis from Tracks").fill(EvisTrk); + aida.cloud1D("PTvis from Tracks").fill(PTvisTrk); + aida.cloud1D("M2vis from Tracks").fill(M2visTrk); + + + if ((PTvisTrk>20.0 && PTvisTrk<500.0) && + (EvisTrk>100.0 && EvisTrk<400.0) && + (nTrks>=6 && nTrks<=19)) { + aida.cloud1D("Select M2vis from Tracks").fill(M2visTrk); + } +// ----------------------------------------------------------------------------- + double EsumPFO = 0.0; + double PsumPFOX = 0.0; + double PsumPFOY = 0.0; + double PsumPFOZ = 0.0; + double eTotalInput = 0.0; + for (ReconstructedParticle pfo : PFOs) { + boolean passPfoSelection = true; + + int type = pfo.getType(); + SpaceVector momentum = new SpaceVector(pfo.getMomentum()); + double pT = momentum.rxy(); + double p = momentum.rxyz(); + double PX = momentum.x(); + double PY = momentum.y(); + double PZ = momentum.z(); + double cosTheta = momentum.cosTheta(); + double energy = pfo.getEnergy(); + EsumPFO += energy; + PsumPFOX += PX; + PsumPFOY += PY; + PsumPFOZ += PZ; + eTotalInput += energy; +// List<Cluster> pfoclusters = pfo.getClusters(); +// List<Track> pfotracks = pfo.getTracks(); + } + double EvisPFO = EsumPFO; + double PTvisPFO = Math.sqrt(PsumPFOX*PsumPFOX+PsumPFOY*PsumPFOY); + double M2visPFO = EsumPFO*EsumPFO - PTvisPFO*PTvisPFO - PsumPFOZ*PsumPFOZ; + aida.cloud1D("Evis from PFO").fill(EvisPFO); + aida.cloud1D("PTvis from PFO").fill(PTvisPFO); + aida.cloud1D("M2vis from PFO").fill(M2visPFO); + +// ------------------MC parent info for PFO selected events ---------------------------------------- + + if ((PTvisPFO>20.0 && PTvisPFO<500.0) && + (EvisPFO>100.0 && EvisPFO<400.0) && + (nTrks>=6 && nTrks<=19)) { + aida.cloud1D("Select M2vis from PFO").fill(M2visPFO); + for (MCParticle particle : particles) { + for (MCParticle mcp2 : particle.getParents()) { + int parentid = mcp2.getPDGID(); + if (Math.abs(parentid)==25) { + int id = particle.getPDGID(); + aida.cloud1D("PFO Selected MC H daughter ID").fill(id); + } + } + } + } + } +} + +
diff -N PFOJetFindingDriver.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ PFOJetFindingDriver.java 11 Sep 2012 23:41:08 -0000 1.1 @@ -0,0 +1,55 @@
+import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import hep.physics.jet.JadeEJetFinder; +import hep.physics.jet.JetFinder; +import hep.physics.vec.HepLorentzVector; +import hep.physics.vec.VecOp; + +import org.lcsim.util.aida.AIDA; +import org.lcsim.util.Driver; +import org.lcsim.event.*; + +import org.lcsim.spacegeom.CartesianPoint; +import org.lcsim.spacegeom.CartesianVector; +import org.lcsim.spacegeom.SpacePoint; +import org.lcsim.spacegeom.SpaceVector; + + +public class PFOJetFindingDriver extends Driver { + private double yCut = 0.001; + protected String inputPfoCollection = "PandoraPFOCollection"; + + + // First get the reconstructed particles from the event + List<ReconstructedParticle> PFOs = new ArrayList<ReconstructedParticle>(); + + public PFOJetFindingDriver() { + } + + public void process(EventHeader event) { + PFOs = event.get(ReconstructedParticle.class, inputPfoCollection); + + Map<HepLorentzVector, ReconstructedParticle> map = new HashMap<HepLorentzVector, ReconstructedParticle>(); + for (ReconstructedParticle pfo : PFOs) { + if (pfo.getCharge() != 0) { + map.put(pfo.asFourVector(), pfo); + } + } + JetFinder jetFind = new JadeEJetFinder(yCut); + List<List<ReconstructedParticle>> jetList = new ArrayList<List<ReconstructedParticle>>(); + jetFind.setEvent(map.keySet()); + for (int i = 0; i < jetFind.njets(); ++i) { + List<HepLorentzVector> jetVecList = jetFind.particlesInJet(i); + List<ReconstructedParticle> jetPartList = new ArrayList<ReconstructedParticle>(); + for (HepLorentzVector iVec : jetVecList) { + jetPartList.add(map.get(iVec)); + } + jetList.add(jetPartList); + } + event.put("jetList", jetList); + } +}
\ No newline at end of file
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