Print

Print


Commit in mcd-analysis/src/main/java/org/lcsim/mcd/analysis on MAIN
DRCorrection/pion_lowen_calib_1ns.xml+42added 1.1
            /electron_correction_lowen_5ns.xml+34added 1.1
            /resolution_pions_1ns.xml+38added 1.1
            /pion_lowen_calib_5ns.xml+41added 1.1
            /DRFunctionFactory.java+120-121.1 -> 1.2
            /DRResolutionDriver.java+8-21.1 -> 1.2
            /DualCorrection.java+52-151.1 -> 1.2
            /ElectronCorrection.java+20-61.1 -> 1.2
            /Resolution.java+18-131.1 -> 1.2
lowenTimingAnalysis.java+157added 1.1
ILCstdhepdriver.java+70added 1.1
+600-48
6 added + 5 modified, total 11 files
Some minor changes to DualCorrection.

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
pion_lowen_calib_1ns.xml added at 1.1
diff -N pion_lowen_calib_1ns.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ pion_lowen_calib_1ns.xml	7 Apr 2014 15:13:48 -0000	1.1
@@ -0,0 +1,42 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+    
+    <classpath>
+        <jar>/home/aconway/NetBeansProjects/mcd-analysis/target/mcd-analysis-1.0-SNAPSHOT.jar</jar>
+    </classpath>
+
+    <inputFiles>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-10mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-25mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-50mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-75mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-100mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-200mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-500mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-750mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-1000mev.slcio</file>
+    </inputFiles>
+    <control>
+        <numberOfEvents>-1</numberOfEvents>
+    </control>
+
+    <execute>
+        <driver name="DRCalibrationDriver"/>
+    </execute>
+    <drivers>
+        <driver name="DRCalibrationDriver" 
+                type="org.lcsim.mcd.analysis.DRCorrection.DRCalibrationDriver">
+	  <myAIDAFilename>calibration-piplLowEn1ns.aida</myAIDAFilename>
+	  <myFilename>calibration-piplLowEn1ns.txt</myFilename>
+          <myPhysicsList>FTFP_BERT</myPhysicsList>
+          <myDetector>mcdrcal01</myDetector>
+          <myMaterial>PbW04</myMaterial>
+          <myDensity>8.28</myDensity>
+          <myrindex>2.21</myrindex>
+          <myCollectionName>piplLowEn1ns</myCollectionName>
+          <myCerenkovThres>0.0</myCerenkovThres>
+          <myIonizationThres>0.0</myIonizationThres>
+          <myTimeThres>1.0</myTimeThres>
+        </driver>
+    </drivers>
+</lcsim>

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
electron_correction_lowen_5ns.xml added at 1.1
diff -N electron_correction_lowen_5ns.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ electron_correction_lowen_5ns.xml	7 Apr 2014 15:13:48 -0000	1.1
@@ -0,0 +1,34 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+    
+    <classpath>
+        <jar>/home/aconway/NetBeansProjects/mcd-analysis/target/mcd-analysis-1.0-SNAPSHOT.jar</jar>
+    </classpath>
+
+    <inputFiles>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-10mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-25mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-50mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-75mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-100mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-200mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-500mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-750mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/electron/e-1000mev.slcio</file>
+    </inputFiles>
+    <control>
+        <numberOfEvents>-1</numberOfEvents>
+    </control>
+
+    <execute>
+        <driver name="ElectronCalibrationDriver"/>
+    </execute>
+    <drivers>
+        <driver name="ElectronCalibrationDriver" 
+                type="org.lcsim.mcd.analysis.DRCorrection.ElectronCalibrationDriver">
+	  <myAIDAFilename>calibration-electronLowEn1ns.aida</myAIDAFilename>
+	  <myFilename>calibration-electronLowEn1ns.txt</myFilename>
+   
+        </driver>
+    </drivers>
+</lcsim>
\ No newline at end of file

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
resolution_pions_1ns.xml added at 1.1
diff -N resolution_pions_1ns.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ resolution_pions_1ns.xml	7 Apr 2014 15:13:48 -0000	1.1
@@ -0,0 +1,38 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+  <classpath>
+        <jar>/home/aconway/NetBeansProjects/mcd-analysis/target/mcd-analysis-1.0-SNAPSHOT.jar</jar>
+</classpath>
+    <inputFiles>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-10mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-25mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-50mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-75mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-100mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-200mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-500mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-750mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-1000mev.slcio</file>
+    </inputFiles>
+    <control>
+        <numberOfEvents>-1</numberOfEvents>
+    </control>
+    <execute>
+        <driver name="DRResolutionDriver"/>
+    </execute>
+    <drivers>
+        <driver name="DRResolutionDriver" 
+                type="org.lcsim.mcd.analysis.DRCorrection.DRResolutionDriver">
+	  <myAIDAFilename>resolution_pipl-LowEn1ns.aida</myAIDAFilename>
+	  <myFilename>resolution_pipl-1ns.txt</myFilename>
+          <myPhysicsList>FTFP_BERT</myPhysicsList>
+          <myDetector>mcdrcal01</myDetector>
+          <myMaterial>PbW04</myMaterial>
+          <myDensity>8.28</myDensity>
+          <myrindex>2.21</myrindex>
+          <myCollectionName>piplLowEn1ns</myCollectionName>
+          <myCerenkovThres>0.0</myCerenkovThres>
+          <myIonizationThres>0.0</myIonizationThres>
+        </driver>
+    </drivers>
+</lcsim>

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
pion_lowen_calib_5ns.xml added at 1.1
diff -N pion_lowen_calib_5ns.xml
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ pion_lowen_calib_5ns.xml	7 Apr 2014 15:13:48 -0000	1.1
@@ -0,0 +1,41 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
+    
+    <classpath>
+        <jar>/home/aconway/NetBeansProjects/mcd-analysis/target/mcd-analysis-1.0-SNAPSHOT.jar</jar>
+    </classpath>
+
+    <inputFiles>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-10mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-25mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-50mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-75mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-100mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-200mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-500mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-750mev.slcio</file>
+        <file>/home/aconway/fermi/eventdata/slcio/singleparticle/lowen/pipl/pipl-1000mev.slcio</file>
+    </inputFiles>
+    <control>
+        <numberOfEvents>-1</numberOfEvents>
+    </control>
+
+    <execute>
+        <driver name="DRCalibrationDriver"/>
+    </execute>
+    <drivers>
+        <driver name="DRCalibrationDriver" 
+                type="org.lcsim.mcd.analysis.DRCorrection.DRCalibrationDriver">
+	  <myAIDAFilename>calibration-piplLowEn5ns.aida</myAIDAFilename>
+	  <myFilename>calibration-piplLowEn5ns.txt</myFilename>
+          <myPhysicsList>FTFP_BERT</myPhysicsList>
+          <myDetector>mcdrcal01</myDetector>
+          <myMaterial>PbW04</myMaterial>
+          <myDensity>8.28</myDensity>
+          <myrindex>2.21</myrindex>
+          <myCollectionName>piplLowEn5ns</myCollectionName>
+          <myCerenkovThres>0.0</myCerenkovThres>
+          <myIonizationThres>0.0</myIonizationThres>
+        </driver>
+    </drivers>
+</lcsim>

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
DRFunctionFactory.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- DRFunctionFactory.java	20 Mar 2014 20:24:47 -0000	1.1
+++ DRFunctionFactory.java	7 Apr 2014 15:13:48 -0000	1.2
@@ -41,7 +41,7 @@
         mp = new HashMap<DetectorConfiguration, ArrayList<IFunction>>();
         ArrayList<IFunction> al = new ArrayList<IFunction>();
         al = new ArrayList<IFunction>();
-        DetectorConfiguration dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "NoCuts", 0.02, 0.02, "FTFP_BERT");
+        DetectorConfiguration dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "NoCuts", 0.0, 0.0, "FTFP_BERT");
         IFunction Corfu = functionFactory.createFunctionByName("mcdrcal01_NoCuts_FTFP_BERT", "p4");
         Corfu.setParameter("p0", 0.794055);
         Corfu.setParameter("p1", 0.539570);
@@ -51,15 +51,15 @@
         al.add(Corfu);
         // adding or set elements in Map by put method key and value pair
         IFunction efu = functionFactory.createFunctionByName("ec_mcdrcal01_NoCuts_FTFPP_BERT", "p1");
-        efu.setParameter("p0", 4.026e-3);
-        efu.setParameter("p1", 0.9998);
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
         al.add(efu);
         IFunction Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_NoCuts_FTFP_BERT", "p1");
         Cerfu.setParameter("p0", 3.6605e-3);
         Cerfu.setParameter("p1", 1.87977e-5);
         al.add(Cerfu);
         mp.put(dualcor, al);
-        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "10ns", 0.02, 0.02, "FTFP_BERT");
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "10ns", 0.0, 0.0, "FTFP_BERT");
         Corfu = functionFactory.createFunctionByName("mcdrcal01_10ns_FTFP_BERT", "p4");
         Corfu.setParameter("p0", 0.435559);
         Corfu.setParameter("p1", 0.552895);
@@ -77,7 +77,7 @@
         Cerfu.setParameter("p1", 1.881998E-5);
         al.add(Cerfu);
         mp.put(dualcor, al);
-        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "proton-NoCuts", 0.02, 0.02, "FTFP_BERT");
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "proton-NoCuts", 0.0, 0.0, "FTFP_BERT");
         Corfu = functionFactory.createFunctionByName("mcdrcal01_protNoCuts_FTFP_BERT", "p4");
         Corfu.setParameter("p0", 0.794055);
         Corfu.setParameter("p1", 0.539570);
@@ -87,15 +87,15 @@
         al.add(Corfu);
         // adding or set elements in Map by put method key and value pair
         efu = functionFactory.createFunctionByName("ec_mcdrcal01_protNoCuts_FTFPP_BERT", "p1");
-        efu.setParameter("p0", 4.026e-3);
-        efu.setParameter("p1", 0.9998);
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
         al.add(efu);
         Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_protNoCuts_FTFP_BERT", "p1");
         Cerfu.setParameter("p0", 3.6605e-3);
         Cerfu.setParameter("p1", 1.87977e-5);
         al.add(Cerfu);
         mp.put(dualcor, al);
-        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "LowEnNoCuts", 0.02, 0.02, "FTFP_BERT");
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "LowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
         Corfu = functionFactory.createFunctionByName("mcdrcal01_LowEnNoCuts_FTFP_BERT", "p4");
         Corfu.setParameter("p0", 0.794055);
         Corfu.setParameter("p1", 0.539570);
@@ -105,12 +105,120 @@
         al.add(Corfu);
         // adding or set elements in Map by put method key and value pair
         efu = functionFactory.createFunctionByName("ec_mcdrcal01_LowEnNoCuts_FTFPP_BERT", "p1");
-        efu.setParameter("p0", 4.026e-3);
-        efu.setParameter("p1", 0.9998);
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
         al.add(efu);
         Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_LowEnNoCuts_FTFP_BERT", "p1");
-        Cerfu.setParameter("p0", 3.6605e-3);
-        Cerfu.setParameter("p1", 1.87977e-5);
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "piplLowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_piplLowEnNoCuts_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.794055);
+        Corfu.setParameter("p1", 0.539570);
+        Corfu.setParameter("p2", -0.68976);
+        Corfu.setParameter("p3", 0.383136);
+        Corfu.setParameter("p4", 0.0);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_piplLowEnNoCuts_FTFP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_piplLowEnNoCuts_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "protonLowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_protonLowEnNoCuts_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.794055);
+        Corfu.setParameter("p1", 0.539570);
+        Corfu.setParameter("p2", -0.68976);
+        Corfu.setParameter("p3", 0.383136);
+        Corfu.setParameter("p4", 0.0);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_protonLowEnNoCuts_FTFPP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_protonLowEnNoCuts_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "neutronLowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_neutronLowEnNoCuts_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.794055);
+        Corfu.setParameter("p1", 0.539570);
+        Corfu.setParameter("p2", -0.68976);
+        Corfu.setParameter("p3", 0.383136);
+        Corfu.setParameter("p4", 0.0);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_neutronLowEnNoCuts_FTFPP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_neutronLowEnNoCuts_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "kaonLowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_kaonLowEnNoCuts_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.794055);
+        Corfu.setParameter("p1", 0.539570);
+        Corfu.setParameter("p2", -0.68976);
+        Corfu.setParameter("p3", 0.383136);
+        Corfu.setParameter("p4", 0.0);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_kaonLowEnNoCuts_FTFPP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_kaonLowEnNoCuts_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "electronLowEnNoCuts", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_electronLowEnNoCuts_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.794055);
+        Corfu.setParameter("p1", 0.539570);
+        Corfu.setParameter("p2", -0.68976);
+        Corfu.setParameter("p3", 0.383136);
+        Corfu.setParameter("p4", 0.0);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_electronLowEnNoCuts_FTFPP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_electronLowEnNoCuts_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
+        al.add(Cerfu);
+        mp.put(dualcor, al);
+        dualcor = new DetectorConfiguration("mcdrcal01", "PbW04", 8.28, 2.21, "piplLowEn1ns", 0.0, 0.0, "FTFP_BERT");
+        Corfu = functionFactory.createFunctionByName("mcdrcal01_piplLowEn1ns_FTFP_BERT", "p4");
+        Corfu.setParameter("p0", 0.206895);
+        Corfu.setParameter("p1", 0.599662);
+        Corfu.setParameter("p2", -0.331107);
+        Corfu.setParameter("p3", 0.559039);
+        Corfu.setParameter("p4", -0.346452);
+        al.add(Corfu);
+        // adding or set elements in Map by put method key and value pair
+        efu = functionFactory.createFunctionByName("ec_mcdrcal01_piplLowEn1ns_FTFP_BERT", "p1");
+        efu.setParameter("p0", 0.0);
+        efu.setParameter("p1", 1.0);
+        al.add(efu);
+        Cerfu = functionFactory.createFunctionByName("cc_mcdrcal01_piplLowEn1ns_FTFP_BERT", "p1");
+        Cerfu.setParameter("p0", -6.81e-4);
+        Cerfu.setParameter("p1", 1.8837e-5);
         al.add(Cerfu);
         mp.put(dualcor, al);
     }

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
DRResolutionDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- DRResolutionDriver.java	20 Mar 2014 20:24:47 -0000	1.1
+++ DRResolutionDriver.java	7 Apr 2014 15:13:48 -0000	1.2
@@ -23,8 +23,9 @@
     private Double Density = 8.28;
     private Double rindex = 2.21;
     private String CollectionName = "10ns";
-    private Double CerenkovThres = 0.02;
-    private Double IonizationThres = 0.02;
+    private Double CerenkovThres = 0.0;
+    private Double IonizationThres = 0.0;
+    private Double TimeThres = 1.0;
     private String PhysicsList = "FTFP_BERT";
     String AIDAFile = null;
     String file_name = null;
@@ -60,6 +61,7 @@
         resol.setMyCollectionName(CollectionName);
         resol.setMyCerenkovThres(CerenkovThres);
         resol.setMyIonizationThres(IonizationThres);
+        resol.setMyTimeThres(TimeThres);
         resol.startOfData();
 
     }
@@ -111,4 +113,8 @@
     public void setMyIonizationThres(double IonizationThres) {
         this.IonizationThres = IonizationThres;
     }
+    
+    public void setMyTimeThres(Double TimeThres) {
+        this.TimeThres = TimeThres;
+    }
 }

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
DualCorrection.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- DualCorrection.java	20 Mar 2014 20:24:47 -0000	1.1
+++ DualCorrection.java	7 Apr 2014 15:13:48 -0000	1.2
@@ -19,6 +19,7 @@
 import hep.aida.IFunctionFactory;
 import hep.aida.IHistogram1D;
 import hep.aida.IProfile1D;
+import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 import hep.physics.vec.VecOp;
 import java.io.BufferedWriter;
@@ -93,9 +94,10 @@
     private String Material = "PbW04";
     private Double Density = 8.28;
     private Double rindex = 2.21;
-    private String CollectionName = "LowEnNoCuts";
-    private Double CerenkovThres = 0.02;
-    private Double IonizationThres = 0.02;
+    private String CollectionName = "electronLowEnNoCuts";
+    private Double CerenkovThres = 0.0;
+    private Double IonizationThres = 0.0;
+    private Double TimeThres = 0.0;
     private String PhysicsList = "FTFP_BERT";
 
     @Override
@@ -160,6 +162,7 @@
     protected void process(EventHeader event) {
         E_in = 0.0;
         E_kin = 0.0;
+        Hep3Vector origin = new BasicHep3Vector(0,0,0);
         String DirName = null;
         List<MCParticle> particles = event.get(MCParticle.class, event.MC_PARTICLES);
         for (MCParticle particle : particles) {
@@ -167,6 +170,7 @@
 //            if (particle.getGeneratorStatus() == 0) {
                 E_in = E_in + particle.getEnergy();
                 E_kin = E_kin + particle.getEnergy() - particle.getMass();
+                origin = particle.getOrigin();
 //                Hep3Vector end_point = particle.getEndPoint();
 //                Hep3Vector start_point = particle.getOrigin();
 //                Hep3Vector diff = VecOp.sub(end_point, start_point);
@@ -181,10 +185,21 @@
             }
             break;
         }
-        Ein = (int) Math.floor(E_kin + 0.5d);
+        if (E_kin < 1.01) {
+            Ein = (int) Math.floor(1000.0*E_kin + 0.5d);
+        } else {
+            Ein = (int) Math.floor(E_kin + 0.5d);
+        }
+//        System.out.println("!!! "+String.valueOf(1000.0*E_kin + 0.5d));
+//        System.out.println("!!! Ein: "+ Ein);
+//        System.out.println("!!! Ein_prev: "+Ein_prev);
+//        System.out.println("!!! E_kin: "+String.valueOf(E_kin));
+//        System.out.println("Particlename: "+Particlename);
+//        System.out.println("Part_prev: "+Part_prev);
         String E_str = Ein.toString();
         DirName = Particlename.concat(E_str);
-        if (Ein != Ein_prev || Particlename.equals(Part_prev) != true) {
+//        if (Ein != Ein_prev || Particlename.equals(Part_prev) != true) {
+        if ( !Ein.equals(Ein_prev) || !Particlename.equals(Part_prev)) {
             if (first) {
                 first = false;
             } else {
@@ -192,12 +207,15 @@
                 fitprofile(aida.profile1D("ratio"), "dodo");
                 convertandfit(slice, conv_slice);
             }
-            Ein_prev = Ein;
-            Part_prev = Particlename;
             System.out.println("First Event:");
             System.out.println("E_in:  " + E_in);
             System.out.println("E_kin:  " + E_kin);
             System.out.println("Name:  " + Particlename);
+            System.out.println("Part_prev: "+Part_prev);
+            System.out.println("Ein: "+Ein);
+            System.out.println("Ein_prev: "+Ein_prev);
+            Ein_prev = Ein;
+            Part_prev = Particlename;
             aida.tree().cd("/");
             aida.tree().mkdir(DirName);
             aida.tree().cd(DirName);
@@ -224,13 +242,14 @@
             if (colName.contains("Edep")) {
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
-                    if (t_thresh > 0.0 || e_thresh > 0.0) {
+                    if (TimeThres > 0.0 || IonizationThres > 0.0) {
+                        Hep3Vector diffvec = VecOp.sub(calorimeterHit.getPositionVec(), origin);
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
-                            double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
+                            double tofl = tdep - diffvec.magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
-                            if ( (tofl < t_thresh) && (edep > e_thresh) ) {
+                            if ( (tofl < TimeThres) && (edep > IonizationThres) ) {
                                 sumEEdep += edep;
                             }
                         }
@@ -243,13 +262,14 @@
             if (colName.contains("Opti")) {
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
-                    if (t_thresh > 0.0 || e_thresh > 0.0) {
+                    if (TimeThres > 0.0 || CerenkovThres > 0.0) {
+                        Hep3Vector diffvec = VecOp.sub(calorimeterHit.getPositionVec(), origin);
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
-                            double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
+                            double tofl = tdep - diffvec.magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
-                            if ( (tofl < t_thresh) && (edep > e_thresh) ) {
+                            if ( (tofl < TimeThres) && (edep > CerenkovThres) ) {
                                 sumECeren += edep;
                             }
                         }
@@ -279,7 +299,7 @@
         xval[0] = ratio;
         prof_combined.fill(ratio, fraction);
         c_efrac_ratio.fill(ratio, fraction);
-        highratioplots(event,simCalorimeterHitCollections,ratio, fraction);
+        //highratioplots(event,simCalorimeterHitCollections,ratio, fraction);
         int bin = (int) Math.rint(ratio / binwidth);
         if (bin < 0) {
             bin = 0;
@@ -418,7 +438,12 @@
                     gauss.setParameter("mean", conv_slices[i].mean());
                     gauss.setParameter("sigma", conv_slices[i].rms());
                     jminuit = fitFactory.createFitter(Fitters[ii], "jminuit");
-                    jminuitResult = jminuit.fit(conv_slices[i], gauss);
+                    try {
+                        jminuitResult = jminuit.fit(conv_slices[i], gauss);
+                    } catch (RuntimeException ex) {
+                        System.out.println("Runtime Exception caught in fit!");
+                        System.out.println(ex.toString());
+                    }
                     System.out.println("jminuit " + Fitters[ii] + ":  " + jminuitResult.quality());
                     result = jminuitResult.fittedParameters();
                     errors = jminuitResult.errors();
@@ -452,6 +477,12 @@
             functionFactory.cloneFunction(fname, jminuitResult.fittedFunction());
             System.out.println(Fitters[ii] + ":  " + jminuitResult.quality());
         }
+        try {
+            aida.saveAs(AIDAFile);
+            System.out.println("AIDAFile Saved.");
+        } catch (IOException ex) {
+            Logger.getLogger(DualCorrection.class.getName()).log(Level.SEVERE, null, ex);
+        }
     }
 
     public void setMyAIDAFilename(String jpgfile) {
@@ -489,7 +520,9 @@
     }
 
     public void setMyCollectionName(String CollectionName) {
+        System.out.println("DualCorrection:setMyCollectionName");
         this.CollectionName = CollectionName;
+        System.out.println(CollectionName);
     }
 
     public void setMyCerenkovThres(Double CerenkovThres) {
@@ -499,6 +532,10 @@
     public void setMyIonizationThres(Double IonizationThres) {
         this.IonizationThres = IonizationThres;
     }
+    
+    public void setMyTimeThres(Double TimeThres) {
+        this.TimeThres = TimeThres;
+    }
 
     double roundTwoDecimals(double d) {
         DecimalFormat twoDForm = new DecimalFormat("#.##");

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
ElectronCorrection.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ElectronCorrection.java	20 Mar 2014 20:24:47 -0000	1.1
+++ ElectronCorrection.java	7 Apr 2014 15:13:48 -0000	1.2
@@ -8,7 +8,6 @@
  * This Driver is used to calibrate the correction of a dual readout calorimeter to electrons.
  * (Determining the energy scale of the calorimeter response.)
  */
-import org.lcsim.mcd.analysis.*;
 import hep.aida.ICloud1D;
 import hep.aida.IDataPoint;
 import hep.aida.IDataPointSet;
@@ -19,6 +18,9 @@
 import hep.aida.IFunction;
 import hep.aida.IFunctionFactory;
 import hep.aida.IHistogram1D;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
 import java.io.BufferedWriter;
 import java.io.FileWriter;
 import java.io.IOException;
@@ -69,7 +71,7 @@
 
     public ElectronCorrection() {
         // if e_thresh > 0 then t_thresh MUST be > 0 as well.
-        t_thresh = 10.0;
+        t_thresh = 1.0;
         e_thresh = -1.0;
         file_name = "ElectronCorrection.txt";
         AIDAFile = "ElectronCorrection.aida";
@@ -99,6 +101,7 @@
     protected void process(EventHeader event) {
         E_in = 0.0;
         E_kin = 0.0;
+        Hep3Vector origin = new BasicHep3Vector(0,0,0);
         String DirName = null;
         List<MCParticle> particles = event.get(MCParticle.class, event.MC_PARTICLES);
         for (MCParticle particle : particles) {
@@ -107,14 +110,23 @@
                 E_kin = E_kin + particle.getEnergy() - particle.getMass();
                 if (particle.getProductionTime() == 0.0) {
                     Particlename = particle.getType().getName();
+                    origin = particle.getOrigin();
                 }
             }
             break;
         }
-        Ein = (int) Math.floor(E_kin + 0.5d);
+        if (E_kin < 1.01) {
+            Ein = (int) Math.floor(1000.0*E_kin + 0.5d);
+        } else {
+            Ein = (int) Math.floor(E_kin + 0.5d);
+        }
         String E_str = Ein.toString();
         DirName = Particlename.concat(E_str);
-        if (Ein != Ein_prev) {
+//        System.out.println("E_in: "+String.valueOf(E_in));
+//        System.out.println("E_kin: "+String.valueOf(E_kin));
+//        System.out.println("Ein: "+String.valueOf(Ein));
+//        System.out.println("Ein_prev: "+String.valueOf(Ein_prev));
+        if (!Ein.equals(Ein_prev)) {
             if (first) {
                 first = false;
             } else {
@@ -142,10 +154,11 @@
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     if (t_thresh > 0.0 || e_thresh > 0.0) {
+                        Hep3Vector diffvec = VecOp.sub(calorimeterHit.getPositionVec(), origin);
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
-                            double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
+                            double tofl = tdep - diffvec.magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
                             if ( (tofl < t_thresh) && (edep > e_thresh) ) {
                                 sumEEdep += edep;
@@ -161,10 +174,11 @@
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
                     if (t_thresh > 0.0 || e_thresh > 0.0) {
+                        Hep3Vector diffvec = VecOp.sub(calorimeterHit.getPositionVec(), origin);
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
-                            double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
+                            double tofl = tdep - diffvec.magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
                             if ( (tofl < t_thresh) && (edep > e_thresh) ) {
                                 sumECeren += edep;

mcd-analysis/src/main/java/org/lcsim/mcd/analysis/DRCorrection
Resolution.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- Resolution.java	20 Mar 2014 20:24:47 -0000	1.1
+++ Resolution.java	7 Apr 2014 15:13:48 -0000	1.2
@@ -70,9 +70,7 @@
     IFunction C_cor;
     IFunction D_cor;
     double xval[] = {10.};
-    
-    double t_thresh;
-    double e_thresh;
+
 
     //
     // default detector configuration:
@@ -82,15 +80,14 @@
     private Double Density = 8.28;
     private Double rindex = 2.21;
     private String CollectionName = "NoCuts";
-    private Double CerenkovThres = 0.02;
-    private Double IonizationThres = 0.02;
+    private Double CerenkovThres = 0.0;
+    private Double IonizationThres = 0.0;
+    private Double TimeThres = 1.0;
     private String PhysicsList = "FTFP_BERT";
 
     @Override
     protected void startOfData() {
         System.out.println("Start of Data:");
-        t_thresh = -1.0;
-        e_thresh = -1.0;
         dps_Correctede = new IDataPointSet[Fitters.length];
         dps_Resolution = new IDataPointSet[Fitters.length];
         dps_DCorrFrac = new IDataPointSet[Fitters.length];
@@ -151,11 +148,15 @@
             }
             break;
         }
-        Ein = (int) Math.floor(E_kin + 0.5d);
+        if (E_kin < 1.01) {
+            Ein = (int) Math.floor(1000.0*E_kin + 0.5d);
+        } else {
+            Ein = (int) Math.floor(E_kin + 0.5d);
+        }
         String E_str = Ein.toString();
 //        System.out.println(E_str+" GeV "+Particlename);
         DirName = Particlename.concat(E_str);
-        if (Ein != Ein_prev) {
+        if (!Ein.equals(Ein_prev)) {
             if (first) {
                 first = false;
             } else {
@@ -188,13 +189,13 @@
             if (colName.contains("Edep")) {
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
-                    if (t_thresh > 0.0 || e_thresh > 0.0) {
+                    if (TimeThres > 0.0 || IonizationThres > 0.0) {
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
                             double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
-                            if ( (tofl < t_thresh) && (edep > e_thresh) ) {
+                            if ( (tofl < TimeThres) && (edep > IonizationThres) ) {
                                 sumEEdep += edep;
                             }
                         }
@@ -207,13 +208,13 @@
             if (colName.contains("Opti")) {
 //            if (CollectionName.startsWith("Edep_") && CollectionName.endsWith("DigiHits")) {
                 for (SimCalorimeterHit calorimeterHit : simCalorimeterHits) {
-                    if (t_thresh > 0.0 || e_thresh > 0.0) {
+                    if (TimeThres > 0.0 || CerenkovThres > 0.0) {
                         int ncontribs = calorimeterHit.getMCParticleCount();
                         for (int i=0; i<ncontribs; i++) {
                             double tdep = calorimeterHit.getContributedTime(i);
                             double tofl = tdep - calorimeterHit.getPositionVec().magnitude()/299.79;
                             double edep = calorimeterHit.getContributedEnergy(i);
-                            if ( (tofl < t_thresh) && (edep > e_thresh) ) {
+                            if ( (tofl < TimeThres) && (edep > CerenkovThres) ) {
                                 sumECeren += edep;
                             }
                         }
@@ -382,6 +383,10 @@
     public void setMyIonizationThres(Double IonizationThres) {
         this.IonizationThres = IonizationThres;
     }
+    public void setMyTimeThres(Double TimeThres) {
+        this.TimeThres = TimeThres;
+    }
+    
     public void setMynsigmas(double nsigmas) {
         this.nsigmas = nsigmas;
     }

mcd-analysis/src/main/java/org/lcsim/mcd/analysis
lowenTimingAnalysis.java added at 1.1
diff -N lowenTimingAnalysis.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ lowenTimingAnalysis.java	7 Apr 2014 15:13:48 -0000	1.1
@@ -0,0 +1,157 @@
+package org.lcsim.mcd.analysis;
+
+import hep.aida.IFunction;
+import hep.aida.IFunctionFactory;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.SimCalorimeterHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+public class lowenTimingAnalysis extends Driver {
+    private AIDA aida = AIDA.defaultInstance();
+    
+    double totEdep;
+    double totOpti;
+    
+    Hep3Vector origin;
+    
+    @Override
+    protected void startOfData() {
+    }
+    @Override
+    protected void process(EventHeader event) {
+        double E_in = 0.0;
+        double E_kin = 0.0;
+        String particlename = "unknown";
+        origin = new BasicHep3Vector(0,0,0);
+        List<MCParticle> particles = event.get(MCParticle.class, event.MC_PARTICLES);
+        for (MCParticle particle : particles) {
+            if (particle.getParents().isEmpty()) {
+                E_in += particle.getEnergy();
+                E_kin += particle.getEnergy() - particle.getMass();
+                origin = particle.getOrigin();
+                particlename = particle.getType().getName();
+            }
+        }
+        
+        List<SimCalorimeterHit> EdepHitList = new ArrayList<SimCalorimeterHit>();
+        EdepHitList.addAll(event.get(SimCalorimeterHit.class, "ECalBarrelEdepHits"));
+        EdepHitList.addAll(event.get(SimCalorimeterHit.class, "HCalBarrelEdepHits"));
+        EdepHitList.addAll(event.get(SimCalorimeterHit.class, "ECalEndcapEdepHits"));
+        EdepHitList.addAll(event.get(SimCalorimeterHit.class, "HCalEndcapEdepHits"));
+        
+        List<SimCalorimeterHit> OptiHitList = new ArrayList<SimCalorimeterHit>();
+        OptiHitList.addAll(event.get(SimCalorimeterHit.class, "ECalBarrelOptiHits"));
+        OptiHitList.addAll(event.get(SimCalorimeterHit.class, "HCalBarrelOptiHits"));
+        OptiHitList.addAll(event.get(SimCalorimeterHit.class, "ECalEndcapOptiHits"));
+        OptiHitList.addAll(event.get(SimCalorimeterHit.class, "HCalEndcapOptiHits"));
+        
+        double sumEdep_tcut = 0.0;
+        double sumEdep = 0.0;
+        for (SimCalorimeterHit hit : EdepHitList) {
+            sumEdep += hit.getRawEnergy();
+            int ncontribs = hit.getMCParticleCount();
+            for (int i = 0; i < ncontribs; i++) {
+                double tdep = hit.getContributedTime(i);
+                Hep3Vector diffvec = VecOp.sub(origin, hit.getPositionVec());
+                double dx = origin.x() - hit.getPositionVec().x();
+                double tofl = tdep - diffvec.magnitude()/299.79;
+                if (tofl < 2.0 && dx > -100.0) {
+                    sumEdep_tcut += hit.getContributedEnergy(i);
+                }
+            }
+        }
+        double sumOpti_tcut = 0.0;
+        double sumOpti = 0.0;
+        for (SimCalorimeterHit hit : OptiHitList) {
+            sumOpti += hit.getRawEnergy()*1.87977e-5;
+            int ncontribs = hit.getMCParticleCount();
+            for (int i = 0; i < ncontribs; i++) {
+                double tdep = hit.getContributedTime(i);
+                Hep3Vector diffvec = VecOp.sub(origin, hit.getPositionVec());
+                double dx = hit.getPositionVec().x() - origin.x();
+                double tofl = tdep - diffvec.magnitude()/299.79;
+                if (tofl < 2.0 && dx > -100.0) {
+                    sumOpti_tcut += hit.getContributedEnergy(i)*1.87977e-5;
+                }
+            }
+        }
+        aida.cloud1D("event/sumEdep").fill(sumEdep);
+        aida.cloud1D("event/sumOpti").fill(sumOpti);
+        aida.cloud1D("event/sumEdep_tcut").fill(sumEdep_tcut);
+        aida.cloud1D("event/sumOpti_tcut").fill(sumOpti_tcut);
+        aida.cloud1D("event/frac Edep tcut").fill(sumEdep_tcut/sumEdep);
+        aida.cloud1D("event/frac Opti tcut").fill(sumOpti_tcut/sumOpti);
+        
+        if (sumEdep_tcut/sumEdep > 0.98) {
+            timingPlots(EdepHitList, particlename, "fastEdep/Edep", E_in, E_kin, 1.0);
+            timingPlots(OptiHitList, particlename, "fastEdep/Opti", E_in, E_kin, 1.87977e-5);
+        } else {
+            timingPlots(EdepHitList, particlename, "slowEdep/Edep", E_in, E_kin, 1.0);
+            timingPlots(OptiHitList, particlename, "slowEdep/Opti", E_in, E_kin, 1.87977e-5);
+        }
+        if (sumOpti_tcut/sumOpti > 0.98) {
+            timingPlots(EdepHitList, particlename, "fastOpti/Edep", E_in, E_kin, 1.0);
+            timingPlots(OptiHitList, particlename, "fastOpti/Opti", E_in, E_kin, 1.87977e-5);
+        } else {
+            timingPlots(EdepHitList, particlename, "slowOpti/Edep", E_in, E_kin, 1.0);
+            timingPlots(OptiHitList, particlename, "slowOpti/Opti", E_in, E_kin, 1.87977e-5);
+        }
+    }
+    
+    private void timingPlots(List<SimCalorimeterHit> sCalHits, String particlename, String colName, double E_in, double E_kin, double escale) {
+        int Ein;
+        if (E_kin < 1.01) {
+            Ein = (int) Math.floor(1000.0*E_kin + 0.5d);
+        } else {
+            Ein = (int) Math.floor(E_kin + 0.5d);
+        }
+        String E_str = String.valueOf(Ein);
+        String pfix = particlename + "/" + colName + "/";
+        String pfix_en = particlename + "/" + E_str + "/" + colName + "/";
+        
+        for (SimCalorimeterHit sCalHit : sCalHits) {
+            Hep3Vector diffvec = VecOp.sub(sCalHit.getPositionVec(), origin);
+            int ncontribs = sCalHit.getMCParticleCount();
+            for (int i = 0; i < ncontribs; i++) {
+                double tdep = sCalHit.getContributedTime(i);
+                double logTime = Math.log10(tdep);
+                if (tdep < 10000.0) {
+                    double tofl = tdep - diffvec.magnitude() / 299.79;
+                    double logTofl = Math.log10(tofl + 0.1);
+                    double edep = sCalHit.getContributedEnergy(i);
+                    edep *= escale;
+                    aida.cloud1D(pfix + "lin/edep frac E_in t").fill(tdep, edep / E_in);
+                    aida.cloud1D(pfix + "lin/edep frac E_in tofl").fill(tofl, edep / E_in);
+                    aida.cloud1D(pfix + "lin/edep frac E_kin t").fill(tdep, edep / E_kin);
+                    aida.cloud1D(pfix + "lin/edep frac E_kin tofl").fill(tofl, edep / E_kin);
+                    aida.cloud1D(pfix_en + "lin/edep t").fill(tdep, edep);
+                    aida.cloud1D(pfix_en + "lin/edep tofl").fill(tofl, edep);
+                    aida.cloud1D(pfix_en + "lin/edep frac E_in t").fill(tdep, edep / E_in);
+                    aida.cloud1D(pfix_en + "lin/edep frac E_in tofl").fill(tofl, edep / E_in);
+                    aida.cloud1D(pfix_en + "lin/edep frac E_kin t").fill(tdep, edep / E_kin);
+                    aida.cloud1D(pfix_en + "lin/edep frac E_kin tofl").fill(tofl, edep / E_kin);
+
+                    aida.cloud1D(pfix + "log/edep frac E_in t").fill(logTime, edep / E_in);
+                    aida.cloud1D(pfix + "log/edep frac E_in tofl").fill(logTofl, edep / E_in);
+                    aida.cloud1D(pfix + "log/edep frac E_kin t").fill(logTime, edep / E_kin);
+                    aida.cloud1D(pfix + "log/edep frac E_kin tofl").fill(logTofl, edep / E_kin);
+                    aida.cloud1D(pfix_en + "log/edep t").fill(logTime, edep);
+                    aida.cloud1D(pfix_en + "log/edep tofl").fill(logTofl, edep);
+                    aida.cloud1D(pfix_en + "log/edep frac E_in t").fill(logTime, edep / E_in);
+                    aida.cloud1D(pfix_en + "log/edep frac E_in tofl").fill(logTofl, edep / E_in);
+                    aida.cloud1D(pfix_en + "log/edep frac E_kin t").fill(logTime, edep / E_kin);
+                    aida.cloud1D(pfix_en + "log/edep frac E_kin tofl").fill(logTofl, edep / E_kin);
+                    aida.cloud2D(pfix_en + "log/t vs dist").fill(logTofl, diffvec.magnitude(),edep);
+                }
+            }
+        }
+    }
+}

mcd-analysis/src/main/java/org/lcsim/mcd/analysis
ILCstdhepdriver.java added at 1.1
diff -N ILCstdhepdriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ILCstdhepdriver.java	7 Apr 2014 15:13:49 -0000	1.1
@@ -0,0 +1,70 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+//package org.lcsim.mcd.analysis;
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.base.BaseMCParticle;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+/**
+ *
+ * @author aconway
+ */
+
+public class ILCstdhepdriver extends Driver {
+    private AIDA aida = AIDA.defaultInstance();
+    
+    protected void process(EventHeader event) {
+        List<MCParticle> particles = event.get(MCParticle.class,"MCParticle");
+        List<MCParticle> children = new ArrayList<MCParticle>();
+        
+       boolean hfound = false;
+       MCParticle higgs = null;
+	for (MCParticle particle : particles) {
+            // 25 == h0/H01
+	    if ((particle.getPDGID()==25)&&(!hfound)) {
+                higgs = particle;
+                children.addAll(particle.getDaughters());
+                hfound=true;
+            }
+	}
+        String decayname = children.get(0).getType().getName();
+        
+        List<MCParticle> fsChildren = getAllFSChildren(higgs);
+
+        String pfix = "/"+decayname+"/";
+        for (MCParticle p : fsChildren) {
+            String particlename = p.getType().getName();
+            aida.cloud1D(pfix+particlename+"/momentum").fill(p.getMomentum().magnitude());
+            aida.cloud1D(pfix+particlename+"/energy").fill(p.getEnergy());
+            aida.cloud1D(pfix+particlename+"/log momentum").fill(Math.log10(p.getMomentum().magnitude()));
+            aida.cloud1D(pfix+particlename+"/log energy").fill(Math.log10(p.getEnergy()));
+            // TODO: look at relative composition of shower particles and energies. Is most of the energy in an event in low energy hadrons?
+            
+        }
+    }
+    
+        // recursively searches the parent's children for final state particles
+    public List<MCParticle> getAllFSChildren(MCParticle parent) {
+        List<MCParticle> AllChildren = new ArrayList<MCParticle>();
+        
+        List<MCParticle> children = parent.getDaughters();
+        
+        for (MCParticle child:children) {
+            if (child.getGeneratorStatus() == 1) {
+                AllChildren.add(child);
+            }
+            else {
+                AllChildren.addAll(getAllFSChildren(child));
+            }
+        }
+        return AllChildren;
+    }
+}
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