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

lcsim-contrib/src/main/java/org/lcsim/contrib/SteveMagill
CorrScClusDriver.java added at 1.1
diff -N CorrScClusDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ CorrScClusDriver.java	14 Feb 2012 19:18:40 -0000	1.1
@@ -0,0 +1,114 @@
+package org.lcsim.contrib.SteveMagill;
+
+import hep.aida.ITree;
+import java.util.*;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.recon.cluster.util.*;
+
+public class CorrScClusDriver extends Driver
+{
+    private AIDA aida = AIDA.defaultInstance();
+    private ITree _tree;
+    private String _inclusters;
+    private String _outclusters;
+    private String _chidm;
+    private double _scfactor;
+    private double _ccfactor;
+    private double _p1;
+    private double _p2;
+    private double _p3;
+    private double _p4;
+    private double _sclc;
+    private double _cclc;
+    private boolean _cscdb = true;
+    
+    /** Creates a new instance of SimpleClusterToReconstructedParticleExampleDriver */
+    public CorrScClusDriver(double scfactor, double ccfactor, double p1, double p2, double p3, double p4, double sclc, double cclc)
+    {
+        _tree = aida.tree();
+        _scfactor = scfactor;  // calibration factor for scint cell energy
+        _ccfactor = ccfactor;  // calibration factor for ceren cell energy
+        _p1 = p1;
+        _p2 = p2;
+        _p3 = p3;
+        _p4 = p4;
+        _sclc = sclc;  // correction factor for scint clusterer - applied to hadron clusters
+        _cclc = cclc;  // correction factor for ceren clusterer
+    }
+    
+    protected void process(EventHeader event)
+    {
+
+        // get map of cerenkov hit and hit ID from event
+        Map<Long, CalorimeterHit> chmap = (Map<Long, CalorimeterHit>) event.get(_chidm);
+
+        //  make new corrected cluster list
+        List<BasicCluster> cclusters = new ArrayList<BasicCluster>();
+
+        //  get scintillator clusters from event
+        List<BasicCluster> sclusters = event.get(BasicCluster.class,_inclusters);
+        double sClEsum = 0.;
+        double cClEsum = 0.;
+        for (BasicCluster sclus : sclusters)
+        {
+            BasicCluster cclus = new BasicCluster();
+            cclus.addCluster(sclus);
+            double chE = 0.;
+            double ClE = _scfactor*sclus.getEnergy();
+            sClEsum += _scfactor*sclus.getEnergy();
+//            aida.cloud1D("Cluster E in RP routine").fill(ClE);
+            //  now loop over all hits in this cluster to get ceren energy
+            List<CalorimeterHit> clhits = sclus.getCalorimeterHits();
+            for (CalorimeterHit clhit : clhits)
+            {
+                long cid = clhit.getCellID();
+                boolean chit = chmap.containsKey(cid);
+                if (chit)
+                {
+                    CalorimeterHit cchit = chmap.get(cid);
+                    chE += _ccfactor*cchit.getCorrectedEnergy();
+                }
+            }
+            double csrat = chE/ClE;
+            if (csrat>1.) csrat = 1.;
+//            System.out.println(" CS Ratio " + csrat);
+            if (csrat<0.98)
+            {
+                _sclc = 1.05;  //  use 1.09 for CCAL02 and NN clusterer
+            } else
+            {
+                _sclc = 1.05;  //  use 1.05 for CCAL02 and NN clusterer
+            }
+            double cSclE = _sclc*ClE/(_p1+_p2*csrat+_p3*csrat*csrat+_p4*csrat*csrat*csrat);
+            cClEsum += _sclc*ClE/(_p1+_p2*csrat+_p3*csrat*csrat+_p4*csrat*csrat*csrat);
+            if (_cscdb) aida.cloud1D("C over S per Cluster").fill(csrat);
+            if (_cscdb) aida.cloud1D("CS Polynomial Correction Factor per Cluster").fill(_p1+_p2*csrat+_p3*csrat*csrat+_p4*csrat*csrat*csrat);
+
+            cclus.setEnergy(cSclE);
+            cclusters.add(cclus);
+        }
+
+        if (_cscdb) aida.cloud1D("Uncorr Scintillator Clus ESum").fill(sClEsum);
+        if (_cscdb) aida.cloud1D("CS Corrected Scintillator Clus Esum").fill(cClEsum);
+
+        // add the new cluster list to the event
+        event.put(_outclusters, cclusters, BasicCluster.class,0);
+        
+    }
+    
+  public void setInputClusterNames(String cname)
+  {
+      _inclusters = cname;
+  }
+  public void setOutputClusterNames(String outcname)
+  {
+      _outclusters = outcname;
+  }
+    public void setCHIDMapName(String chidm)
+  {
+      _chidm = chidm;
+  }
+}
\ 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