lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
diff -N TrShCompDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrShCompDriver.java 14 Feb 2012 19:23:18 -0000 1.1
@@ -0,0 +1,167 @@
+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.event.CalorimeterHit;
+import org.lcsim.event.SimCalorimeterHit;
+import hep.physics.vec.Hep3Vector;
+import org.lcsim.event.Track;
+import org.lcsim.recon.cluster.util.BasicCluster;
+import org.lcsim.spacegeom.*;
+import org.lcsim.event.base.*;
+import org.lcsim.event.MCParticle;
+
+/**
+ * Diagnostic routine - checks cluster ID
+ */
+
+public class TrShCompDriver extends Driver
+{
+ public TrShCompDriver() {
+ }
+
+ private String _tmclusname;
+ private String _tcclusname;
+ private String _tpclusname;
+ private String _tsclusname;
+ private String _tcalclusmap;
+ private AIDA aida = AIDA.defaultInstance();
+ private boolean perfPFAD = true;
+ private boolean muons = false;
+
+ public void process(EventHeader event)
+ {
+
+ int NMipCl = 0; // number of mip clusters
+ int nhitstm = 0; // number of hits in a mip cluster
+ try
+ {
+ List<BasicCluster> tmclusters = event.get(BasicCluster.class,_tmclusname);
+ aida.cloud1D("Number of Mip Clusters").fill(tmclusters.size());
+ for (BasicCluster tmclus : tmclusters)
+ {
+ NMipCl++;
+ int numhits = tmclus.getSize();
+ nhitstm += tmclus.getSize(); // sum hits from all mips in event
+ double tmclE = tmclus.getEnergy();
+ aida.cloud1D("Tr Mip Clus E").fill(tmclE);
+ aida.cloud1D("Tr Mip Clus Size").fill(numhits);
+ aida.cloud2D("Tr Mip NumHits vs E").fill(tmclE,numhits);
+ }
+ }
+ catch(java.lang.IllegalArgumentException ex)
+ {
+ System.out.println("requested object not found in event " + _tmclusname);
+ }
+
+ int NCoreCl = 0; // number of core clusters
+ int nhitstc = 0; // number of hits in a core cluster
+ try
+ {
+ List<BasicCluster> tcclusters = event.get(BasicCluster.class,_tcclusname);
+ aida.cloud1D("Number of Tr Core Clusters").fill(tcclusters.size());
+ for (BasicCluster tcclus : tcclusters)
+ {
+ NCoreCl++;
+ int numhits = tcclus.getSize();
+ nhitstc += tcclus.getSize(); // sum hits from all cores in event
+ double tcclE = tcclus.getEnergy();
+ aida.cloud1D("Tr Core Clus E").fill(tcclE);
+ aida.cloud1D("Tr Core Clus Size").fill(numhits);
+ aida.cloud2D("Tr Core NumHits vs E").fill(tcclE,numhits);
+ }
+ }
+ catch(java.lang.IllegalArgumentException ex)
+ {
+ System.out.println("requested object not found in event " + _tcclusname);
+ }
+
+ int NILSPCl = 0; // number of ILSP clusters
+ int nhitstp = 0; // number of hits in a ILSP cluster
+ try
+ {
+ List<BasicCluster> tpclusters = event.get(BasicCluster.class,_tpclusname);
+ aida.cloud1D("Number of ILSP Clusters").fill(tpclusters.size());
+ for (BasicCluster tpclus : tpclusters)
+ {
+ NILSPCl++;
+ int numhits = tpclus.getSize();
+ nhitstp += tpclus.getSize(); // sum hits from all mips in event
+ double tpclE = tpclus.getEnergy();
+ aida.cloud1D("Tr ILSP Clus E").fill(tpclE);
+ aida.cloud1D("Tr ILSP Clus Size").fill(numhits);
+ aida.cloud2D("Tr ILSP NumHits vs E").fill(tpclE,numhits);
+ }
+ }
+ catch(java.lang.IllegalArgumentException ex)
+ {
+ System.out.println("requested object not found in event " + _tpclusname);
+ }
+
+ int NShowCl = 0; // number of shower clusters
+ int nhitsts = 0; // number of hits in a shower cluster
+ try
+ {
+ List<BasicCluster> tsclusters = event.get(BasicCluster.class,_tsclusname);
+ aida.cloud1D("Number of Shower Clusters").fill(tsclusters.size());
+ for (BasicCluster tsclus : tsclusters)
+ {
+ NShowCl++;
+ int numhits = tsclus.getSize();
+ nhitstm += tsclus.getSize(); // sum hits from all mips in event
+ double tsclE = tsclus.getEnergy();
+ aida.cloud1D("Tr Shower Clus E").fill(tsclE);
+ aida.cloud1D("Tr Shower Clus Size").fill(numhits);
+ aida.cloud2D("Tr Shower NumHits vs E").fill(tsclE,numhits);
+ }
+ }
+ catch(java.lang.IllegalArgumentException ex)
+ {
+ System.out.println("requested object not found in event " + _tsclusname);
+ }
+
+// now check track cal matches - start from track cal cluster map
+ Map<Track, BasicCluster> tcmap = (Map<Track, BasicCluster>) event.get(_tcalclusmap);
+ for (Track itr : tcmap.keySet())
+ {
+ // make sure there is a cluster linked to this track
+ if (tcmap.get(itr) != null)
+ {
+ BasicCluster tccl = tcmap.get(itr);
+ double clE = tccl.getEnergy();
+ double trP = Math.sqrt(itr.getPX()*itr.getPX()+itr.getPY()*itr.getPY()+itr.getPZ()*itr.getPZ());
+ aida.cloud1D("E over p of Track Cal Cluster").fill(clE/trP);
+ aida.cloud1D("E of Track Cal Cluster").fill(clE);
+ }
+ }
+
+ }
+
+ public void setTrMipClusName(String tmclusname)
+ {
+ _tmclusname = tmclusname;
+ }
+
+ public void setTrCoreClusName(String tcclusname)
+ {
+ _tcclusname = tcclusname;
+ }
+
+ public void setTrPointClusName(String tpclusname)
+ {
+ _tpclusname = tpclusname;
+ }
+
+ public void setTrShowerClusName(String tsclusname)
+ {
+ _tsclusname = tsclusname;
+ }
+
+ public void setTrCalClusMap(String tcalclusmap)
+ {
+ _tcalclusmap = tcalclusmap;
+ }
+
+}