Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill on MAIN
ScinClusCorrDriver.java+57added 1.1


lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
ScinClusCorrDriver.java added at 1.1
diff -N ScinClusCorrDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ScinClusCorrDriver.java	12 Aug 2009 18:32:50 -0000	1.1
@@ -0,0 +1,57 @@
+package org.lcsim.contrib.SteveMagill;
+
+import java.util.*;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.recon.cluster.util.BasicCluster;
+
+/**
+ *  Diagnostic routine to calculate purities and efficiencies per particle and event
+ *  for charged particles
+ */
+
+public class ScinClusCorrDriver extends Driver
+{
+  public ScinClusCorrDriver() {
+  }
+
+  private String _sclinkmap;
+  private AIDA aida = AIDA.defaultInstance();
+  
+  public void process(EventHeader event) 
+  {
+      //  get map linking cherenkov clusters to scintillator clusters
+      Map<BasicCluster, BasicCluster> ScChmap = (Map<BasicCluster, BasicCluster>) event.get(_sclinkmap);
+
+      //  get scintillator clusters and correct
+      double sclusE = 0.;
+      double chclusE = 0.;
+      for (BasicCluster sclus : ScChmap.keySet())
+      {
+          int nhits = sclus.getSize();
+          sclusE += 1.013*sclus.getEnergy();
+          if (nhits>10)
+          {
+              aida.cloud1D("Scintillator Cluster E").fill(sclusE);
+              BasicCluster chclus = ScChmap.get(sclus);
+              chclusE += 8326.*chclus.getEnergy();
+              aida.cloud1D("Cherenkov Cluster E").fill(chclusE);
+              aida.cloud2D("Scint vs Cher Cluster E").fill(chclusE,sclusE);
+              double csrat = chclusE/sclusE;
+//              aida.cloud2D("Scin over E vs Cheren over Scin for Cluster").fill(csrat,sclusE/20.);
+//              double csclusE = sclusE/(.83-.24*csrat+.29*csrat*csrat);
+              double csclusE = sclusE/(.765-.719*csrat+.794*csrat*csrat);
+              aida.cloud1D("Cher Corrected Scintillator cluster E").fill(csclusE);
+              aida.cloud1D("Size of Cher Corr").fill(sclusE/csclusE);
+              sclus.setEnergy(csclusE);  // set energy of cluster to corrected result
+          }
+      }
+  }
+
+  public void setScChMapName(String sclinkmap)
+  {
+      _sclinkmap = sclinkmap;
+  }
+  
+}
CVSspam 0.2.8