Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/HansWenzel/DualCorrection on MAIN
ElectronCalibrationDriver.java+58added 1.1
DualCorrection.java+77-71.3 -> 1.4
ElectronCorrection.java+62-591.3 -> 1.4
Resolution.java+137-271.1 -> 1.2
+334-93
1 added + 3 modified, total 4 files
 add driver to run the electron calibration wit JobControlManager

lcsim-contrib/src/main/java/org/lcsim/contrib/HansWenzel/DualCorrection
ElectronCalibrationDriver.java added at 1.1
diff -N ElectronCalibrationDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ElectronCalibrationDriver.java	10 Dec 2009 17:21:25 -0000	1.1
@@ -0,0 +1,58 @@
+/*
+ * This Driver is used to calibrate the correction of a dual readout calorimeter to electrons.
+ * (Determining the energy scale of the calorimeter response.)
+ * first it runs the Digitiser and then the Electron calibration module.
+ */
+package org.lcsim.contrib.HansWenzel.DualCorrection;
+
+import org.lcsim.contrib.HansWenzel.DualCorrection.DigiSim.CSClusdMJetDriver;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author wenzel
+ */
+public class ElectronCalibrationDriver extends Driver {
+
+    String AIDAFile = null;
+    String file_name = null;
+    CSClusdMJetDriver digi;
+    ElectronCorrection elec;
+
+    public ElectronCalibrationDriver() {
+        digi = new CSClusdMJetDriver();
+        add(digi);
+        elec = new ElectronCorrection();
+        add(elec);
+    }
+
+    @Override
+    public void startOfData() {
+        System.out.println("ElectronCalibrationDriver:startOfData");
+        if (AIDAFile != null) {
+            elec.setMyAIDAFilename(AIDAFile);
+        } else {
+            System.err.println("ElectronCalibrationDriver: AIDAFile variable must be set");
+            System.exit(1); // exit if variable is not set
+        }
+        if (file_name != null) {
+            elec.setMyFilename(file_name);
+        } else {
+            System.err.println("ElectronCalibrationDriver:  file_name variable must be set");
+            System.exit(1); // exit if variable is not set
+        }
+
+    }
+
+    public void setMyAIDAFilename(String AIDAFile) {
+        System.out.println("ElectronCalibrationDriver:setMyAIDAFilename");
+        this.AIDAFile = AIDAFile;
+        System.out.println(AIDAFile);
+    }
+
+    public void setMyFilename(String file_name) {
+        System.out.println("ElectronCalibrationDriver:setMyFilename");
+        this.file_name = file_name;
+        System.out.println(file_name);
+    }
+}

lcsim-contrib/src/main/java/org/lcsim/contrib/HansWenzel/DualCorrection
DualCorrection.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- DualCorrection.java	6 Oct 2009 20:06:04 -0000	1.3
+++ DualCorrection.java	10 Dec 2009 17:21:25 -0000	1.4
@@ -16,6 +16,8 @@
 import hep.aida.IFunctionFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IProfile1D;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
 import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -54,6 +56,7 @@
     ICloud1D Edep_dcor;
     ICloud1D Edep_dcor_new;
     ICloud1D Eceren_cor;
+    ICloud1D dlength;
     ICloud2D c_efrac_ratio;
     ICloud2D c_Ceren_vs_Edep;
     ICloud1D[] slice_comb;
@@ -88,11 +91,14 @@
         dpsf = aida.analysisFactory().createDataPointSetFactory(aida.tree());
         functionFactory = aida.analysisFactory().createFunctionFactory(aida.tree());
         gauss = functionFactory.createFunctionByName("gauss", "G");
-        E_cor = Electron_Correction();
-        C_cor = Cerenkov_Correction();
+        E_cor = Electron_digisCorrection_ccal02_d15();
+        //Electron_digis_QGSP_BERT_Correction();
+        C_cor = Cerenkov_digisCorrection_ccal02_d15();
+        //Cerenkov_digis_QGSP_BERT_Correction();
         D_cor = Dual_Correction();
         D_cor_new = Dual_Correction_new();
         aida.profile1D("ratio", 20, 0.4, 1.);
+        dlength = aida.histogramFactory().createCloud1D("dlength", "decay length combined ", 500000, "autoConvert = false");
         prof_combined = aida.histogramFactory().createProfile1D("ratio", "ratio combined", 20, 0.4, 1.);
         c_efrac_ratio = aida.histogramFactory().createCloud2D("c_efrac_ratio", "c_efrac_ratio combined ", 500000, "autoConvert = false");
         slice_comb = new ICloud1D[maxbin + 2];
@@ -124,6 +130,17 @@
             if (particle.getGeneratorStatus() == 0) {
                 E_in = E_in + particle.getEnergy();
                 E_kin = E_kin + particle.getEnergy() - particle.getMass();
+                Hep3Vector end_point = particle.getEndPoint();
+                Hep3Vector start_point = particle.getOrigin();
+                Hep3Vector diff = VecOp.sub(end_point, start_point);
+                double decaylength = diff.magnitude();
+                dlength.fill(decaylength);
+                if (decaylength>500.)
+                {
+                    return;
+                }
+//                Hep3Vector decaylength = end_point.magnitude();
+
                 if (particle.getProductionTime() == 0.0) {
                     Particlename = particle.getType().getName();
                 }
@@ -133,6 +150,7 @@
         Ein = (int) Math.floor(E_kin + 0.5d);
         String E_str = Ein.toString();
         DirName = Particlename.concat(E_str);
+
         if (Ein != Ein_prev) {
             if (first) {
                 first = false;
@@ -164,6 +182,9 @@
             }
             System.out.println("DirName:  " + DirName);
         }
+
+
+
         List<List<SimCalorimeterHit>> simCalorimeterHitCollections = event.get(SimCalorimeterHit.class);
         double sumEEdep = 0.0;
         double sumECeren = 0.0;
@@ -171,12 +192,12 @@
         aida.profile1D("ratio", 20, 0.4, 1.);
         for (List<SimCalorimeterHit> simCalorimeterHits : simCalorimeterHitCollections) {
             String CollectionName = event.getMetaData(simCalorimeterHits).getName();
-            if (CollectionName.substring(0, 5).equals("Edep_")) {
+            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumEEdep = sumEEdep + calorimeterHit.getRawEnergy();
                 }
             } // end if Edep
-            if (CollectionName.substring(0, 6).equals("Ceren_")) {
+            if (CollectionName.startsWith("Ceren_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumECeren = sumECeren + calorimeterHit.getRawEnergy();
                 }
@@ -359,7 +380,7 @@
         }
     }
 
-    public void setMyVariable(String jpgfile) {
+    public void setMyAIDAFilename(String jpgfile) {
         System.out.println("setMyVariable");
         AIDAFile = jpgfile;
         System.out.println(AIDAFile);
@@ -395,10 +416,59 @@
         return ECor;
     }
 
+    IFunction Electron_digisCorrection() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 7.6521e-3);
+        ECor.setParameter("p1", 1.0046);
+        return ECor;
+    }
+
+    IFunction Electron_digisCorrection_PBWO() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 5.4245e-3);
+        ECor.setParameter("p1", 1.0042);
+        return ECor;
+    }
+
+    IFunction Electron_digisCorrection_ccal02_d15() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 1.1773e-3);
+        ECor.setParameter("p1", 1.0033);
+        return ECor;
+    }
+
+    IFunction Electron_digis_QGSP_BERT_Correction() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 7.6521e-3);
+        ECor.setParameter("p1", 1.0046);
+        return ECor;
+    }
+
     IFunction Cerenkov_Correction() {
         IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
-        ECor.setParameter("p0", -2.4961e-4);
-        ECor.setParameter("p1", 7655.0);
+        ECor.setParameter("p0", 7.9705);
+        ECor.setParameter("p1", 8858.5);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digisCorrection() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 8.5701e-3);
+        ECor.setParameter("p1", 7677.7);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digisCorrection_ccal02_d15() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 6.3057e-3);
+        ECor.setParameter("p1", 16584.);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digis_QGSP_BERT_Correction() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 8.5701e-3);
+        ECor.setParameter("p1", 7677.7);
         return ECor;
     }
 

lcsim-contrib/src/main/java/org/lcsim/contrib/HansWenzel/DualCorrection
ElectronCorrection.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- ElectronCorrection.java	6 Oct 2009 20:06:04 -0000	1.3
+++ ElectronCorrection.java	10 Dec 2009 17:21:25 -0000	1.4
@@ -3,6 +3,8 @@
 /**
  *
  * @author wenzel
+ * This Driver is used to calibrate the correction of a dual readout calorimeter to electrons.
+ * (Determining the energy scale of the calorimeter response.)
  */
 import hep.aida.ICloud1D;
 import hep.aida.IDataPoint;
@@ -28,7 +30,7 @@
 
 public class ElectronCorrection extends Driver {
 
-    private AIDA aida = AIDA.defaultInstance();
+    private AIDA aida;
     String AIDAFile;
     String file_name;
     FileWriter fstream;
@@ -59,9 +61,11 @@
     String[] Fitters = {"Chi2", "leastsquares", "bml", "cleverchi2"};
     IFitter jminuit;
     IFitResult jminuitResult;
-    @Override
-    protected void startOfData() {
-        System.out.println("Start of Data:");
+
+    ElectronCorrection() {
+        file_name = "ElectronCorrection.txt";
+        AIDAFile = "ElectronCorrection.aida";
+        aida = AIDA.defaultInstance();
         dps_cerene = new IDataPointSet[Fitters.length];
         point_cerene = new int[Fitters.length];
         fitFactory = aida.analysisFactory().createFitFactory();
@@ -81,14 +85,8 @@
         point = 0;
         point_cerenemean = 0;
         gauss = functionFactory.createFunctionByName("gauss", "G");
-        fstream = null;
-        try {
-            fstream = new FileWriter(file_name);
-        } catch (IOException ex) {
-            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-        }
-        out = new BufferedWriter(fstream);
     }
+
     @Override
     protected void process(EventHeader event) {
         E_in = 0.0;
@@ -112,6 +110,7 @@
             if (first) {
                 first = false;
             } else {
+                System.out.println("ElectronCorrection:First Event");
                 convertandfit();
             }
             Ein_prev = Ein;
@@ -131,39 +130,55 @@
         double sumECeren = 0.0;
         for (List<SimCalorimeterHit> simCalorimeterHits : simCalorimeterHitCollections) {
             String CollectionName = event.getMetaData(simCalorimeterHits).getName();
-            if (CollectionName.substring(0, 5).equals("Edep_")) {
+
+            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumEEdep = sumEEdep + calorimeterHit.getRawEnergy();
                 }
             } // end if Edep
-            if (CollectionName.substring(0, 6).equals("Ceren_")) {
+            if (CollectionName.startsWith("Ceren_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumECeren = sumECeren + calorimeterHit.getRawEnergy();
                 }
             } // end if Ceren
         }     // end loop over calorimeter hit collections
+
         Edep.fill(sumEEdep);
         Eceren.fill(sumECeren);
     }
 
     @Override
     protected void endOfData() {
-        System.out.println("End of Data:");
+        System.out.println("ElectronCorrection:End of Data:");
         convertandfit();
-        aida.tree().cd("/");
+        fstream = null;
         try {
-            out.close();
+            fstream = new FileWriter(file_name);
         } catch (IOException ex) {
             Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
         }
+        out = new BufferedWriter(fstream);
+        aida.tree().cd("/");
         IFunction line = functionFactory.createFunctionByName("line", "p1");
         IFitter linefit = fitFactory.createFitter("Chi2", "jminuit");
         IFitResult resultline = linefit.fit(dps_emean, line);
         functionFactory.cloneFunction("e mean fitted line ", resultline.fittedFunction());
-        System.out.println("Chi2=" + resultline.quality());
+        double[] fresult = resultline.fittedParameters();
+        try {
+            out.write("Ionization scale results:\n");
+            out.write("Chi2 = " + resultline.quality() + "\n");
+            out.write(fresult[0] + " , " + fresult[1] + "\n");
+        } catch (IOException ex) {
+            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
+        }
         //
         // now deal with the cerenkov stuff:
         //
+        try {
+            out.write("Cerenkov scale results:\n");
+        } catch (IOException ex) {
+            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
+        }
         for (int i = 0; i < Fitters.length; i++) {
             System.out.println("Fitter:  " + Fitters[i]);
             resultline = linefit.fit(dps_cerene[i], line);
@@ -171,23 +186,36 @@
             System.out.println(fname);
             functionFactory.cloneFunction(fname, resultline.fittedFunction());
             System.out.println(Fitters[i] + ":  " + resultline.quality());
+            fresult = resultline.fittedParameters();
+            try {
+                out.write("Fitter:  " + Fitters[i]);
+                out.write("Chi2 = " + resultline.quality() + "\n");
+                out.write(fresult[0] + " , " + fresult[1] + "\n");
+            } catch (IOException ex) {
+                Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
+            }
         }
         try {
             aida.saveAs(AIDAFile);
         } catch (IOException ex) {
             Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
         }
+        try {
+            out.close();
+        } catch (IOException ex) {
+            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
+        }
     }
 
     @Override
     protected void resume() {
-        System.out.println("resume:");
-        firstEvent = true;
+        System.out.println("ElectronCorrection:resume");
+        firstEvent =true;
         aida.cloud1D("c_Edep_energy").reset();
     }
 
     protected void convertandfit() {
-        System.out.println("convert and fit:");
+        System.out.println("ElectronCorrection:convertandfit");
         IHistogram1D Edep_conv;
         if (Edep.isConverted()) {
             Edep_conv = Edep.histogram();
@@ -197,22 +225,18 @@
             double rmsc = Edep.rms();
             nsigmas = 3.;
             nbins = 100;
-            rmsc = meanc * 0.001;
+
             double minx = meanc - nsigmas * rmsc;
             double maxx = meanc + nsigmas * rmsc;
             Edep.setConversionParameters(nbins, minx, maxx);
             Edep.convertToHistogram();
             Edep_conv = Edep.histogram();
         }
+
         gauss.setParameter("amplitude", Edep_conv.maxBinHeight());
         gauss.setParameter("mean", Edep_conv.mean());
         gauss.setParameter("sigma", Edep_conv.rms());
-        try {
-            out.write(Particlename + "  " + Ein_prev + " GeV\n");
-            out.write(Edep_conv.maxBinHeight() + "," + Edep_conv.mean() + "," + Edep_conv.rms() + "\n");
-        } catch (IOException ex) {
-            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-        }
+
         dps_emean.addPoint();
         IDataPoint dp = dps_emean.point(point);
         dp.coordinate(1).setValue(Ein_prev);
@@ -222,7 +246,7 @@
         dp.coordinate(0).setErrorPlus(Edep_conv.rms());
         dp.coordinate(0).setErrorMinus(Edep_conv.rms());
         point++;
-        // chi 2 fit:
+// chi 2 fit:
         System.out.println("chi2 fit:");
         jminuit = fitFactory.createFitter("Chi2", "jminuit");
         jminuitResult = jminuit.fit(Edep_conv, gauss);
@@ -231,11 +255,6 @@
         result = jminuitResult.fittedParameters();
         functionFactory.cloneFunction("fitted gauss (jminuitchi2)", jminuitResult.fittedFunction());
         System.out.println(result[0] + "," + result[1] + "," + result[2]);
-        try {
-            out.write(result[0] + "," + result[1] + "," + result[2] + "\n");
-        } catch (IOException ex) {
-            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-        }
 
         // least squares fit:
         System.out.println("least squares fit:");
@@ -248,11 +267,6 @@
         double[] resultls = jminuitResultls.fittedParameters();
         functionFactory.cloneFunction("fitted gauss (jminuitls)", jminuitResultls.fittedFunction());
         System.out.println(resultls[0] + "," + resultls[1] + "," + resultls[2]);
-        try {
-            out.write(resultls[0] + "," + resultls[1] + "," + resultls[2] + "\n");
-        } catch (IOException ex) {
-            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-        }
         //
         // now deal with cerenkov response:
         //
@@ -262,7 +276,6 @@
             Eceren_conv = Eceren.histogram();
         } else {
             System.out.println("Converting Eceren");
-
             double meanc = Eceren.mean();
             double rmsc = Eceren.rms();
             nsigmas = 5.;
@@ -273,15 +286,10 @@
             Eceren.convertToHistogram();
             Eceren_conv = Eceren.histogram();
         }
+
         gauss.setParameter("amplitude", Eceren_conv.maxBinHeight());
         gauss.setParameter("mean", Eceren_conv.mean());
         gauss.setParameter("sigma", Eceren_conv.rms());
-        try {
-            out.write(Particlename + "  " + Ein_prev + " GeV\n");
-            out.write(Eceren_conv.maxBinHeight() + "," + Eceren_conv.mean() + "," + Eceren_conv.rms() + "\n");
-        } catch (IOException ex) {
-            Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-        }
         dps_cerenemean.addPoint();
         IDataPoint dp_cerenemean = dps_cerenemean.point(point_cerenemean);
         dp_cerenemean.coordinate(1).setValue(Ein_prev);
@@ -291,6 +299,7 @@
         dp_cerenemean.coordinate(0).setErrorPlus(Eceren_conv.rms());
         dp_cerenemean.coordinate(0).setErrorMinus(Eceren_conv.rms());
         point_cerenemean++;
+
         for (int i = 0; i < Fitters.length; i++) {
             System.out.println("Fitter:  " + Fitters[i]);
             gauss.setParameter("amplitude", Eceren_conv.maxBinHeight());
@@ -305,11 +314,6 @@
             System.out.println(functionname);
             functionFactory.cloneFunction(functionname, jminuitResult.fittedFunction());
             System.out.println(result[0] + "," + result[1] + "," + result[2]);
-            try {
-                out.write(result[0] + "," + result[1] + "," + result[2] + "\n");
-            } catch (IOException ex) {
-                Logger.getLogger(ElectronCorrection.class.getName()).log(Level.SEVERE, null, ex);
-            }
             IDataPoint dp_cerene = dps_cerene[i].addPoint();
             dp_cerene.coordinate(0).setValue(result[1]);
             dp_cerene.coordinate(0).setErrorPlus(Math.abs(result[2]));
@@ -327,16 +331,15 @@
         }
     }
 
-    public void setMyFilename(String filename) {
-        System.out.println("setMyFilename");
-        file_name = filename;
-        System.out.println(file_name);
-    }
-
-    public void setMyAIDAFilename(String jpgfile) {
-        System.out.println("setMyAIDAFilename");
-        AIDAFile = jpgfile;
+    public void setMyAIDAFilename(String AIDAFile) {
+        System.out.println("ElectronCalibrationDriver:setMyAIDAFilename");
+        this.AIDAFile = AIDAFile;
         System.out.println(AIDAFile);
     }
 
+    public void setMyFilename(String file_name) {
+        System.out.println("ElectronCalibrationDriver:setMyFilename");
+        this.file_name = file_name;
+        System.out.println(file_name);
+    }
 }

lcsim-contrib/src/main/java/org/lcsim/contrib/HansWenzel/DualCorrection
Resolution.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- Resolution.java	6 Oct 2009 20:06:04 -0000	1.1
+++ Resolution.java	10 Dec 2009 17:21:25 -0000	1.2
@@ -38,9 +38,9 @@
     IFitFactory fitFactory;
     IDataPointSetFactory dpsf;
     IFunction gauss;
-    boolean first;
-    boolean firstEvent;
-    double E_in;
+    static boolean first;
+    static boolean firstEvent;
+    static double E_in;
     Integer Ein;
     Integer Ein_prev;
     double E_kin;
@@ -66,6 +66,7 @@
     IFunction C_cor;
     IFunction D_cor;
     IFunction D_cor_new;
+    IFunction D_cor_digis;
     double xval[] = {10.};
 
     @Override
@@ -81,10 +82,13 @@
             point_Correctede[i] = 0;
             dps_Correctede[i] = dpsf.create(dpsname, "electron response mean", 2);
         }
-        E_cor = Electron_Correction();
-        C_cor = Cerenkov_Correction();
+        E_cor = Electron_digisCorrection();
+        //Electron_digis_QGSP_BERT_Correction();
+        C_cor = Cerenkov_digisCorrection();
+        //Cerenkov_digis_QGSP_BERT_Correction();
         D_cor = Dual_Correction();
-        D_cor_new = Dual_Correction_new();
+        D_cor_digis = Dual_Correction_digis();
+        //Dual_Correction_digis_QGSP_BERT();
         Ein_prev = 0;
         firstEvent = true;
         first = true;
@@ -105,6 +109,7 @@
     protected void process(EventHeader event) {
         E_in = 0.0;
         E_kin = 0.0;
+        //       System.out.println(event.getEventNumber());
         String DirName = null;
         List<MCParticle> particles = event.get(MCParticle.class, event.MC_PARTICLES);
         for (MCParticle particle : particles) {
@@ -119,11 +124,15 @@
         }
         Ein = (int) Math.floor(E_kin + 0.5d);
         String E_str = Ein.toString();
+ 
         DirName = Particlename.concat(E_str);
         if (Ein != Ein_prev) {
             if (first) {
+                System.out.println("Hi Hi");
                 first = false;
             } else {
+                System.out.println("E_in:  " + E_in);
+                System.out.println("Ein_prev:  " + Ein_prev);
                 convertandfit();
             }
             Ein_prev = Ein;
@@ -143,24 +152,25 @@
             Eceren_cor = aida.histogramFactory().createCloud1D("Eceren_cor", "corrected Cerenkov Cloud", 100000, "autoConvert = false");
             System.out.println("DirName:  " + DirName);
         }
+
         List<List<SimCalorimeterHit>> simCalorimeterHitCollections = event.get(SimCalorimeterHit.class);
         double sumEEdep = 0.0;
         double sumECeren = 0.0;
         for (List<SimCalorimeterHit> simCalorimeterHits : simCalorimeterHitCollections) {
             String CollectionName = event.getMetaData(simCalorimeterHits).getName();
-            if (CollectionName.substring(0, 5).equals("Edep_")) {
+            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumEEdep = sumEEdep + calorimeterHit.getRawEnergy();
                 }
             } // end if Edep
-            if (CollectionName.substring(0, 6).equals("Ceren_")) {
+            if (CollectionName.startsWith("Ceren_") && CollectionName.endsWith("DigiHits")) {
+
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     sumECeren = sumECeren + calorimeterHit.getRawEnergy();
                 }
             } // end if Corrected
         }     // end loop over calorimeter hit collections
 
-
         Edep.fill(sumEEdep);
         xval[0] = sumEEdep;
         double sumEEdep_cor = E_cor.value(xval);
@@ -172,9 +182,9 @@
         double ratio = sumECeren_cor / sumEEdep_cor;
         double fraction = sumEEdep_cor / E_in;
         xval[0] = ratio;
-        double cfac = D_cor.value(xval);
-        Edep_dcor.fill(sumEEdep_cor / cfac);
-        cfac = D_cor_new.value(xval);
+//        double cfac = D_cor.value(xval);
+//        Edep_dcor.fill(sumEEdep_cor / cfac);
+        double cfac = D_cor_digis.value(xval);
         Edep_dcor_new.fill(sumEEdep_cor / cfac);
 
 
@@ -196,7 +206,8 @@
     @Override
     protected void resume() {
         System.out.println("resume:");
-        firstEvent = true;
+        firstEvent =
+                true;
         aida.cloud1D("c_Edep_energy").reset();
     }
 
@@ -211,14 +222,18 @@
 
             double meanc = Edep_dcor_new.mean();
             double rmsc = Edep_dcor_new.rms();
-            nsigmas = 5.;
-            nbins = 100;
+            nsigmas =
+                    5.;
+            nbins =
+                    100;
             double minx = meanc - nsigmas * rmsc;
             double maxx = meanc + nsigmas * rmsc;
             Edep_dcor_new.setConversionParameters(nbins, minx, maxx);
             Edep_dcor_new.convertToHistogram();
-            Edep_dcor_new_conv = Edep_dcor_new.histogram();
+            Edep_dcor_new_conv =
+                    Edep_dcor_new.histogram();
         }
+
         gauss.setParameter("amplitude", Edep_dcor_new_conv.maxBinHeight());
         gauss.setParameter("mean", Edep_dcor_new_conv.mean());
         gauss.setParameter("sigma", Edep_dcor_new_conv.rms());
@@ -229,16 +244,21 @@
             Logger.getLogger(Resolution.class.getName()).log(Level.SEVERE, null, ex);
         }
 
-        for (int i = 0; i < Fitters.length; i++) {
+        for (int i = 0; i <
+                Fitters.length; i++) {
             System.out.println("Fitter:  " + Fitters[i]);
             gauss.setParameter("amplitude", Edep_dcor_new_conv.maxBinHeight());
             gauss.setParameter("mean", Edep_dcor_new_conv.mean());
             gauss.setParameter("sigma", Edep_dcor_new_conv.rms());
-            jminuit = fitFactory.createFitter(Fitters[i], "jminuit");
-            jminuitResult = jminuit.fit(Edep_dcor_new_conv, gauss);
+            jminuit =
+                    fitFactory.createFitter(Fitters[i], "jminuit");
+            jminuitResult =
+                    jminuit.fit(Edep_dcor_new_conv, gauss);
             System.out.println("jminuit " + Fitters[i] + ":  " + jminuitResult.quality());
-            result = jminuitResult.fittedParameters();
-            errors = jminuitResult.errors();
+            result =
+                    jminuitResult.fittedParameters();
+            errors =
+                    jminuitResult.errors();
             String functionname = "Corrected fitted gauss  " + Fitters[i];
             System.out.println(functionname);
             functionFactory.cloneFunction(functionname, jminuitResult.fittedFunction());
@@ -266,15 +286,13 @@
     }
 
     public void setMyFilename(String filename) {
-        System.out.println("setMyFilename");
         file_name = filename;
-        System.out.println(file_name);
     }
-    public void setMyVariable(String jpgfile) {
-        System.out.println("setMyVariable");
-        AIDAFile = jpgfile;
-        System.out.println(AIDAFile);
+
+    public void setMyAIDAFilename(String aidafile) {
+        AIDAFile = aidafile;
     }
+
     IFunction Electron_Correction() {
         IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
         ECor.setParameter("p0", -1.9834e-3);
@@ -282,6 +300,13 @@
         return ECor;
     }
 
+    IFunction Electron_digisCorrection() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 7.6521e-3);
+        ECor.setParameter("p1", 1.0046);
+        return ECor;
+    }
+
     IFunction Cerenkov_Correction() {
         IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
         ECor.setParameter("p0", -2.4961e-4);
@@ -289,6 +314,13 @@
         return ECor;
     }
 
+    IFunction Cerenkov_digisCorrection() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 8.5701e-3);
+        ECor.setParameter("p1", 7677.7);
+        return ECor;
+    }
+
     IFunction Dual_Correction() {
         IFunction ECor = functionFactory.createFunctionByName("DualCor", "p3");
         ECor.setParameter("p0", 1.0900819852754733);
@@ -306,4 +338,82 @@
         ECor.setParameter("p3", 0.62872);
         return ECor;
     }
+
+    IFunction Dual_Correction_digis() {
+        IFunction ECor = functionFactory.createFunctionByName("DualCor_new", "p3");
+        ECor.setParameter("p0", 0.52415);
+        ECor.setParameter("p1", 0.37964);
+        ECor.setParameter("p2", -0.60463);
+        ECor.setParameter("p3", 0.66544);
+        return ECor;
+    }
+
+    IFunction Dual_Correction_digis_QGSP_BERT() {
+        IFunction ECor = functionFactory.createFunctionByName("DualCor_new", "p3");
+        ECor.setParameter("p0", 0.53412);
+        ECor.setParameter("p1", 0.56611);
+        ECor.setParameter("p2", -0.57106);
+        ECor.setParameter("p3", 0.37394);
+        return ECor;
+    }
+
+    IFunction Electron_digis_QGSP_BERT_Correction() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 7.6521e-3);
+        ECor.setParameter("p1", 1.0046);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digis_QGSP_BERT_Correction() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 8.5701e-3);
+        ECor.setParameter("p1", 7677.7);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digisCorrection_PBWO() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 7.9705e-3);
+        ECor.setParameter("p1", 8858.5);
+        return ECor;
+    }
+
+    IFunction Electron_digisCorrection_PBWO() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 5.4245e-3);
+        ECor.setParameter("p1", 1.0042);
+        return ECor;
+    }
+
+    IFunction Dual_Correction_digis_PBWO() {
+        IFunction ECor = functionFactory.createFunctionByName("DualCor_new", "p3");
+        ECor.setParameter("p0", 0.52340);
+        ECor.setParameter("p1", 0.37940);
+        ECor.setParameter("p2", -0.60846);
+        ECor.setParameter("p3", 0.66510);
+        return ECor;
+    }
+
+    IFunction Electron_digisCorrection_ccal02_d15() {
+        IFunction ECor = functionFactory.createFunctionByName("ECor", "p1");
+        ECor.setParameter("p0", 1.1773e-3);
+        ECor.setParameter("p1", 1.0033);
+        return ECor;
+    }
+
+    IFunction Cerenkov_digisCorrection_ccal02_d15() {
+        IFunction ECor = functionFactory.createFunctionByName("ECerenCor", "p1");
+        ECor.setParameter("p0", 6.3057e-3);
+        ECor.setParameter("p1", 16584.);
+        return ECor;
+    }
+
+    IFunction Dual_Correction_digis_ccal02_d15() {
+        IFunction ECor = functionFactory.createFunctionByName("DualCor_new", "p3");
+        ECor.setParameter("p0", 0.59275);
+        ECor.setParameter("p1", -0.063934);
+        ECor.setParameter("p2", 0.46452);
+        ECor.setParameter("p3", -0.025751);
+        return ECor;
+    }
 }
CVSspam 0.2.8