Print

Print


Commit in mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr on MAIN
backgroundAnalysisDriver.java+97-11.1 -> 1.2
DualCorrection.java+27-251.2 -> 1.3
Resolution.java+20-191.2 -> 1.3
electronCorrection.java+1-11.2 -> 1.3
+145-46
4 modified files
Fixed some bugs.

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr
backgroundAnalysisDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- backgroundAnalysisDriver.java	18 Apr 2014 22:02:58 -0000	1.1
+++ backgroundAnalysisDriver.java	19 Apr 2014 00:26:02 -0000	1.2
@@ -1,7 +1,12 @@
 package org.lcsim.mcd.analysis.DRCorrection.alexDRCorr;
 
+import hep.aida.IHistogram1D;
+import java.util.HashMap;
+import java.util.List;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
 import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 
 /**
  * Driver to look at machine backgrounds of a single event.
@@ -13,9 +18,100 @@
  * @author aconway
  */
 public class backgroundAnalysisDriver extends Driver {
+    AIDA aida = AIDA.defaultInstance();
+    IHistogram1D Edep_vs_tofl;
+    double[] t_cuts = {1.0,2.0,3.0,4.0,5.0,7.0,10.0};
+    
+    HashMap<Long,HashMap<Double,Double>> Scintmap;
+    HashMap<Long,HashMap<Double,Double>> Cerenmap;
+    HashMap<Long,HashMap<Double,Double>> Mucalmap;
+    
+    @Override
+    protected void startOfData() {
+        Scintmap = new HashMap<Long,HashMap<Double,Double>>();
+        Cerenmap = new HashMap<Long,HashMap<Double,Double>>();
+        Mucalmap = new HashMap<Long,HashMap<Double,Double>>();
+    }
     
     @Override
     protected void process(EventHeader event) {
-        
+        List<List<SimCalorimeterHit>> simCalorimeterHitCollections = event.get(SimCalorimeterHit.class);
+        for (List<SimCalorimeterHit> simCalHits : simCalorimeterHitCollections) {
+            String CollectionName = event.getMetaData(simCalHits).getName();
+            HashMap<Long,HashMap<Double,Double>> map;
+            String pfix = "MuCal";
+            if (CollectionName.contains("Edep")) {
+                pfix = "Scint";
+                map = Scintmap;
+            } else if (CollectionName.contains("Opti")) {
+                pfix = "Ceren";
+                map = Cerenmap;
+            } else {
+                map = Mucalmap;
+            }
+            for (SimCalorimeterHit hit : simCalHits) {
+                HashMap<Double,Double> submap;
+                if (map.containsKey((Long)hit.getCellID())) {
+                    submap = map.get((Long)hit.getCellID());
+                } else {
+                    submap = new HashMap<Double,Double>();
+                    map.put((Long)hit.getCellID(), submap);
+                }
+                int ncontribs = hit.getMCParticleCount();
+                double[] E_contribs = new double[t_cuts.length];
+                for (int i=0; i<ncontribs; i++) {
+                    double tdep = hit.getContributedTime(i);
+                    double tofl = tdep - hit.getPositionVec().magnitude()/299.79;
+                    double edep = hit.getContributedEnergy(i);
+                    aida.cloud1D(pfix + "/contribs/edep vs t").fill(tdep,edep);
+                    aida.cloud1D(pfix + "/contribs/edep vs tofl").fill(tofl,edep);
+                    double logt;
+                    if (tofl >= 0.0) {
+                        logt = Math.log10(tofl+0.001);
+                        aida.cloud1D(pfix + "/contribs/edep vs log tofl t>0").fill(logt,edep);
+                    } else {
+                        logt = -1.0*Math.log10(-1.0*tofl);
+                        aida.cloud1D(pfix + "/contribs/edep vs log tofl t<0").fill(logt,edep);
+                    }
+                    for (int j=0; j<t_cuts.length; j++) {
+                        if ( (tofl < t_cuts[j]) && (tofl > 0.0) ) {
+                            E_contribs[j] += edep;
+                        }
+                    }
+                }
+                for (int i=0; i<t_cuts.length; i++) {
+                    if (E_contribs[i] > 0.0) {
+                        aida.cloud1D(pfix + "/t_cuts/Edep " + String.valueOf(t_cuts[i]) + "ns").fill(E_contribs[i]);
+                        aida.cloud1D(pfix + "/t_cuts/log Edep " + String.valueOf(t_cuts[i]) + "ns").fill(Math.log10(E_contribs[i]));
+                        if (submap.containsKey(t_cuts[i])) {
+                            double newEdep = submap.get(t_cuts[i]) + E_contribs[i];
+                            submap.remove(t_cuts[i]);
+                            submap.put(t_cuts[i], newEdep);
+                        } else {
+                            submap.put(t_cuts[i], E_contribs[i]);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    @Override
+    protected void endOfData() {
+        mapPlots(Scintmap, "Scint");
+        mapPlots(Cerenmap, "Ceren");
+        mapPlots(Mucalmap, "Mucal");
+    }
+    
+    private void mapPlots(HashMap<Long,HashMap<Double,Double>> map, String name) {
+        for (HashMap<Double,Double> submap : map.values()) {
+            for (Double tcut : submap.keySet()) {
+                Double edep = submap.get(tcut);
+                String pfix = "/maps/" + name + "/Edep " + String.valueOf(tcut) + "ns";
+                aida.cloud1D(pfix).fill(Math.log10(edep));                
+                pfix = "/maps/" + name + "/wtd Edep " + String.valueOf(tcut) + "ns";
+                aida.cloud1D(pfix).fill(Math.log10(edep),edep);
+            }
+        }
     }
 }

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr
DualCorrection.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- DualCorrection.java	18 Apr 2014 22:02:58 -0000	1.2
+++ DualCorrection.java	19 Apr 2014 00:26:02 -0000	1.3
@@ -170,7 +170,7 @@
                                 E_contrib += calorimeterHit.getContributedEnergy(i);
                             }
                         }
-                        if (E_contrib > cutCon.S_thresh) {
+                        if (E_contrib > cutCon.S_thresh/1000.0) {
                             sumEEdep += E_contrib;
                         }
                     }
@@ -193,7 +193,7 @@
                             }
                         }
                         if (E_contrib > cutCon.C_thresh) {
-                            sumEEdep += E_contrib;
+                            sumECeren += E_contrib;
                         }
                     }
                     else {
@@ -204,30 +204,32 @@
         }
         Edep.fill(sumEEdep);
         Eceren.fill(sumECeren);
-        Edep_frac.fill(sumEEdep/E_kin);
-        
-        double[] xval = {0.0};
-        xval[0] = sumEEdep;
-        double sumEEdep_cor = corfus.getFunction("SC").value(xval);
-        xval[0] = sumECeren;
-        double sumECeren_cor = corfus.getFunction("CC").value(xval);
-        Edep_cor.fill(sumEEdep_cor);
-        Eceren_cor.fill(sumECeren_cor);
-        double ratio = sumECeren_cor / sumEEdep_cor;
-        double fraction = sumEEdep_cor / E_kin;
-        aida.cloud1D("frac").fill(fraction);
-        aida.cloud1D("c_CerenEdep_ratio").fill(ratio);
-        c_Ceren_vs_Edep.fill(sumECeren_cor, sumEEdep_cor);
-        aida.cloud2D("c_efrac_ratio").fill(ratio, fraction);
-        
-        int bin = (int) Math.rint(ratio / binwidth);
-        if (bin < 0) {
-            bin = 0;
-        }
-        if (bin > maxbin - 1) {
-            bin = maxbin;
+        Edep_frac.fill(sumEEdep / E_kin);
+
+        if (sumEEdep > 0.0) {
+            double[] xval = {0.0};
+            xval[0] = sumEEdep;
+            double sumEEdep_cor = corfus.getFunction("SC").value(xval);
+            xval[0] = sumECeren;
+            double sumECeren_cor = corfus.getFunction("CC").value(xval);
+            Edep_cor.fill(sumEEdep_cor);
+            Eceren_cor.fill(sumECeren_cor);
+            double ratio = sumECeren_cor / sumEEdep_cor;
+            double fraction = sumEEdep_cor / E_kin;
+            aida.cloud1D("frac").fill(fraction);
+            aida.cloud1D("c_CerenEdep_ratio").fill(ratio);
+            c_Ceren_vs_Edep.fill(sumECeren_cor, sumEEdep_cor);
+            aida.cloud2D("c_efrac_ratio").fill(ratio, fraction);
+
+            int bin = (int) Math.rint(ratio / binwidth);
+            if (bin < 0) {
+                bin = 0;
+            }
+            if (bin > maxbin - 1) {
+                bin = maxbin;
+            }
+            slice[bin].fill(fraction);
         }
-        slice[bin].fill(fraction);
     }
     
     // Run final fits

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr
Resolution.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- Resolution.java	18 Apr 2014 22:02:58 -0000	1.2
+++ Resolution.java	19 Apr 2014 00:26:02 -0000	1.3
@@ -182,7 +182,7 @@
                                 E_contrib += calorimeterHit.getContributedEnergy(i);
                             }
                         }
-                        if (E_contrib > cutCon.S_thresh) {
+                        if (E_contrib > cutCon.S_thresh/1000.0) {
                             sumEEdep += E_contrib;
                         }
                     }
@@ -205,7 +205,7 @@
                             }
                         }
                         if (E_contrib > cutCon.C_thresh) {
-                            sumEEdep += E_contrib;
+                            sumECeren += E_contrib;
                         }
                     }
                     else {
@@ -216,23 +216,24 @@
         }
         Edep.fill(sumEEdep);
         ECeren.fill(sumECeren);
-        
-        xval[0] = sumEEdep;
-        double sumEEdep_cor = corfus.getFunction("SC").value(xval);
-        xval[0] = sumECeren;
-        double sumECeren_cor = corfus.getFunction("CC").value(xval);
-        Edep_cor.fill(sumEEdep_cor);
-        Eceren_cor.fill(sumECeren_cor);
-        
-        double ratio = sumECeren_cor / sumEEdep_cor;
-        double fraction = sumEEdep_cor / E_in;
-        xval[0] = ratio;
-        String cfname = "CS" + Ein.toString() + "gev";
-        double cfac = corfus.getFunction(cfname).value(xval);
-        Edep_dcor.fill(sumEEdep_cor / cfac);
-        String sfname = "S" + Ein.toString() + "gev";
-        double sfac = corfus.getFunction(sfname).parameter("mean");
-        Edep_scor.fill(sumEEdep_cor / sfac);
+        if (sumEEdep > 0.0) {
+            xval[0] = sumEEdep;
+            double sumEEdep_cor = corfus.getFunction("SC").value(xval);
+            xval[0] = sumECeren;
+            double sumECeren_cor = corfus.getFunction("CC").value(xval);
+            Edep_cor.fill(sumEEdep_cor);
+            Eceren_cor.fill(sumECeren_cor);
+
+            double ratio = sumECeren_cor / sumEEdep_cor;
+            double fraction = sumEEdep_cor / E_in;
+            xval[0] = ratio;
+            String cfname = "CS" + Ein.toString() + "gev";
+            double cfac = corfus.getFunction(cfname).value(xval);
+            Edep_dcor.fill(sumEEdep_cor / cfac);
+            String sfname = "S" + Ein.toString() + "gev";
+            double sfac = corfus.getFunction(sfname).parameter("mean");
+            Edep_scor.fill(sumEEdep_cor / sfac);
+        }
     }
 
     @Override

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection/alexDRCorr
electronCorrection.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- electronCorrection.java	18 Apr 2014 22:02:58 -0000	1.2
+++ electronCorrection.java	19 Apr 2014 00:26:02 -0000	1.3
@@ -150,7 +150,7 @@
                                 E_contrib += calorimeterHit.getContributedEnergy(i);
                             }
                         }
-                        if (E_contrib > cutCon.S_thresh) {
+                        if (E_contrib > cutCon.S_thresh/1000.0) {
                             sumEEdep += E_contrib;
                         }
                     }
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