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


lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
MCContribHitDriver.java added at 1.1
diff -N MCContribHitDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ MCContribHitDriver.java	12 Aug 2009 18:22:29 -0000	1.1
@@ -0,0 +1,110 @@
+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 org.lcsim.geometry.util.CalorimeterIDDecoder;
+import org.lcsim.util.hitmap.HitMap;
+
+/**
+ *  Diagnostic routine to calculate purities and efficiencies per particle and event
+ *  for charged particles
+ */
+
+public class MCContribHitDriver extends Driver
+{
+  public MCContribHitDriver() {
+  }
+
+  private String[] _scnames;
+  private String[] _chnames;
+  private String _sscout;
+  private String _mscout;
+  private String _schout;
+  private String _mchout;
+  private AIDA aida = AIDA.defaultInstance();
+  
+  public void process(EventHeader event) 
+  {
+      HitMap singhitmap = new HitMap();
+      HitMap multihitmap = new HitMap();
+      //  check scintillator colections here
+      for (int i=0; i<_scnames.length; i++)
+      {
+          List<CalorimeterHit> schits = event.get(CalorimeterHit.class,_scnames[i]);
+//          CalorimeterIDDecoder caldecoder = (CalorimeterIDDecoder) event.getMetaData(schits).getIDDecoder();
+          for (CalorimeterHit schit : schits)
+          {
+              Long hitid = schit.getCellID();
+              SimCalorimeterHit simhit = (SimCalorimeterHit) schit;
+              int nmcp = simhit.getMCParticleCount();
+              if(nmcp==1) singhitmap.put(hitid,schit);
+              if(nmcp>1) multihitmap.put(hitid,schit);
+          }            
+      }
+      List<CalorimeterHit> singhits = new Vector<CalorimeterHit>();
+      singhits.addAll(singhitmap.values());
+      event.put(_sscout,singhits);
+      List<CalorimeterHit> multihits = new Vector<CalorimeterHit>();
+      multihits.addAll(multihitmap.values());
+      event.put(_mscout,multihits);
+
+      //  same for cherenkov
+      HitMap singchhitmap = new HitMap();
+      HitMap multichhitmap = new HitMap();
+      for (int i=0; i<_chnames.length; i++)
+      {
+          List<CalorimeterHit> chhits = event.get(CalorimeterHit.class,_chnames[i]);
+//          CalorimeterIDDecoder caldecoder = (CalorimeterIDDecoder) event.getMetaData(chhits).getIDDecoder();
+
+          for (CalorimeterHit chhit : chhits)
+          {
+              Long hitid = chhit.getCellID();
+              SimCalorimeterHit simhit = (SimCalorimeterHit) chhit;
+              int nmcp = simhit.getMCParticleCount();
+              if(nmcp==1) singchhitmap.put(hitid,chhit);
+              if(nmcp>1) multichhitmap.put(hitid,chhit);
+          }            
+      }
+      List<CalorimeterHit> singchhits = new Vector<CalorimeterHit>();
+      singchhits.addAll(singchhitmap.values());
+      event.put(_schout,singchhits);
+      List<CalorimeterHit> multichhits = new Vector<CalorimeterHit>();
+      multichhits.addAll(multihitmap.values());
+      event.put(_mchout,multichhits);
+  }
+  
+  public void setScHitNames(String[] scnames)
+  {
+      _scnames = scnames;
+  }
+
+  public void setChHitNames(String[] chnames)
+  {
+      _chnames = chnames;
+  }
+
+  public void setOutSingScHitName(String sscout)
+  {
+      _sscout = sscout;
+  }
+
+  public void setOutMultiScHitName(String mscout)
+  {
+      _mscout = mscout;
+  }
+
+  public void setOutSingChHitName(String schout)
+  {
+      _schout = schout;
+  }
+
+  public void setOutMultiChHitName(String mchout)
+  {
+      _mchout = mchout;
+  }
+
+}
CVSspam 0.2.8