Author: [log in to unmask]
Date: Fri Jan 22 18:35:38 2016
New Revision: 4130
Log: (empty)
Added:
java/trunk/users/src/main/java/org/hps/users/byale/MollerAnalysis.java
Added: java/trunk/users/src/main/java/org/hps/users/byale/MollerAnalysis.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/byale/MollerAnalysis.java (added)
+++ java/trunk/users/src/main/java/org/hps/users/byale/MollerAnalysis.java Fri Jan 22 18:35:38 2016
@@ -0,0 +1,132 @@
+package org.hps.users.byale;
+
+import hep.aida.IAnalysisFactory;
+import hep.aida.IHistogram1D;
+import hep.aida.IHistogram2D;
+import hep.aida.IPlotter;
+import hep.aida.IPlotterFactory;
+import java.util.List;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.event.base.BaseMCParticle;
+import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author byale (modified from Matt's MCParticleAnalysisDriver)
+ */
+public class MollerAnalysis extends Driver {
+
+ private AIDA aida = AIDA.defaultInstance();
+ private String collectionName = "MCParticle";
+ IPlotter plotterMC;
+ IHistogram1D px;
+ IHistogram1D py;
+ IHistogram1D pz;
+ IHistogram1D pTot;
+ IHistogram2D EposEele;
+ IHistogram1D ePos;
+ IHistogram1D eEle1;
+ IHistogram1D eEle2;
+ IHistogram1D EepSum;
+ IHistogram1D EepSumEndpoint;
+ IHistogram1D EeepSum;
+ IHistogram1D EepDiff;
+
+ IHistogram2D ECalPosition;
+
+ @Override
+ protected void detectorChanged(Detector detector) {
+ System.out.println("MCParicleAnalysis::detectorChanged Setting up the plotter");
+ IAnalysisFactory fac = aida.analysisFactory();
+ IPlotterFactory pfac = fac.createPlotterFactory("MC Particles");
+
+ aida.tree().cd("/");
+// resetOccupancyMap(); // this is for calculatin
+ plotterMC = pfac.create("MC Particle Momentum");
+ plotterMC.createRegions(2, 2);
+ px = aida.histogram1D("px (GeV)", 50, -0.05, 0.14);
+ py = aida.histogram1D("py (GeV)", 50, -0.1, 0.1);
+ pz = aida.histogram1D("pz (GeV)", 50, -0.25, 2.5);
+ pTot = aida.histogram1D("angle X", 50, -0.01, 0.04);
+ plotterMC.region(0).plot(px);
+ plotterMC.region(1).plot(py);
+ plotterMC.region(2).plot(pz);
+ plotterMC.region(3).plot(pTot);
+ plotterMC.show();
+
+ EposEele = aida.histogram2D("Epos vs Eele", 50, 0, 2.0, 50, 0, 2.0);
+
+ ECalPosition = aida.histogram2D("ECalPosition", 50, -22, 22, 50, -5.5, 5.5);
+
+ ePos = aida.histogram1D("Epos", 50, 0, 2.0);
+ eEle1 = aida.histogram1D("Eele1", 50, 0, 2.0);
+ eEle2 = aida.histogram1D("Eele2", 50, 0, 2.0);
+ EepSumEndpoint = aida.histogram1D("Pair energy: Endpoint", 50, 1.5, 2.0);
+ EepSum = aida.histogram1D("Pair energy", 50, 0, 2.0);
+ EeepSum = aida.histogram1D("Trident energy", 50, 0, 2.0);
+
+ // pairs1
+ EepDiff = aida.histogram1D("Energy Diff", 50, 0, 2.0);
+
+
+ }
+
+ @Override
+ public void process(EventHeader event) {
+ /* make sure everything is there */
+ if (!event.hasCollection(MCParticle.class, collectionName))
+ return;
+
+ List<MCParticle> mcpList = event.get(MCParticle.class, collectionName);
+
+ MCParticle pos = null;
+ MCParticle ele1 = null;
+ MCParticle ele2 = null;
+
+ for (MCParticle mcp : mcpList) {
+ if (mcp.getCharge() < 0 && mcp.getMomentum().magnitude() > 0.025) {
+ px.fill(mcp.getPX());
+ py.fill(mcp.getPY());
+ pz.fill(mcp.getPZ());
+ pTot.fill(mcp.getPX() / mcp.getMomentum().magnitude());
+
+ ECalPosition.fill(mcp.getEndPoint().x(),mcp.getEndPoint().y());
+
+ }
+
+ if (!mcp.getParents().isEmpty())
+ if (mcp.getParents().get(0).getPDGID() == 622)
+ if (mcp.getCharge() > 0)
+ pos = mcp;
+ else if (ele1 == null)
+ ele1 = mcp;
+ else
+ ele2 = mcp;
+ }
+ if (ele1 != null && ele2 != null && pos != null) {
+ EposEele.fill(ele1.getEnergy(), pos.getEnergy());
+ EposEele.fill(ele2.getEnergy(), pos.getEnergy());
+ //EposEele.fill(Math.max(ele2.getEnergy(),ele1.getEnergy()), pos.getEnergy());
+
+ eEle1.fill(ele1.getEnergy());
+ eEle2.fill(ele2.getEnergy());
+ ePos.fill(pos.getEnergy());
+
+ EepSum.fill(ele1.getEnergy() + pos.getEnergy());
+ EepSum.fill(ele2.getEnergy() + pos.getEnergy());
+ EeepSum.fill(ele1.getEnergy() + pos.getEnergy() + ele2.getEnergy());
+
+ EepSumEndpoint.fill(ele1.getEnergy() + pos.getEnergy());
+ EepSumEndpoint.fill(ele2.getEnergy() + pos.getEnergy());
+
+ EepDiff.fill(ele1.getEnergy() - pos.getEnergy());
+ EepDiff.fill(ele2.getEnergy() - pos.getEnergy());
+
+ }
+
+ }
+}
|