Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio on MAIN
MyDBDvvH.java+22added 1.1
MyDBDvvHAnalysis.java+163added 1.1
PFOJetFindingDriver.java+55added 1.1
+240
3 added files
analysis java example for the SiD DBD DSTs

lcsim-contrib/src/main/java/org/lcsim/contrib/homer/vvHratio
MyDBDvvH.java added at 1.1
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
MyDBDvvHAnalysis.java added at 1.1
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
PFOJetFindingDriver.java added at 1.1
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


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