3 added files
lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio
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
lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio
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);
+ }
+ }
+ }
+ }
+ }
+}
+
+
lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio
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
CVSspam 0.2.12