Commit in mcd-analysis/src/main/java/org/lcsim/mcd/analysis on MAIN | |||
DRCorrection/pion_lowen_calib_1ns.xml | +42 | added 1.1 | |
/electron_correction_lowen_5ns.xml | +34 | added 1.1 | |
/resolution_pions_1ns.xml | +38 | added 1.1 | |
/pion_lowen_calib_5ns.xml | +41 | added 1.1 | |
/DRFunctionFactory.java | +120 | -12 | 1.1 -> 1.2 |
/DRResolutionDriver.java | +8 | -2 | 1.1 -> 1.2 |
/DualCorrection.java | +52 | -15 | 1.1 -> 1.2 |
/ElectronCorrection.java | +20 | -6 | 1.1 -> 1.2 |
/Resolution.java | +18 | -13 | 1.1 -> 1.2 |
lowenTimingAnalysis.java | +157 | added 1.1 | |
ILCstdhepdriver.java | +70 | added 1.1 | |
+600 | -48 |
Some minor changes to DualCorrection.
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>
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
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>
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>
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); }
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; + }
}
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("#.##");
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;
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; }
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); + } + } + } + } +}
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; + } +}
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