diff --git a/data/MINERvA/CCcoh/Enu_nu_cov.csv b/data/MINERvA/CCcoh/Enu_nu_cov.csv new file mode 100644 index 0000000..d3c67e4 --- /dev/null +++ b/data/MINERvA/CCcoh/Enu_nu_cov.csv @@ -0,0 +1,9 @@ +0.000966 0.0013858 -0.0000418 0.0000749 0.0000835 0.0000468 0.0000249 0.0000121 0.0000058 +0.0013858 0.0037297 0.0010112 0.0008641 0.0005755 0.0002781 0.0001472 0.0000721 0.0000347 +-0.0000418 0.0010112 0.0006594 0.0004378 0.0002607 0.0001148 0.0000578 0.0000279 0.000014 +0.0000749 0.0008641 0.0004378 0.0005827 0.0002926 0.0001208 0.0000568 0.000027 0.0000136 +0.0000835 0.0005755 0.0002607 0.0002926 0.0003194 0.0001052 0.0000456 0.0000194 0.0000092 +0.0000468 0.0002781 0.0001148 0.0001208 0.0001052 0.0001256 0.0000411 0.0000135 0.0000044 +0.0000249 0.0001472 0.0000578 0.0000568 0.0000456 0.0000411 0.0000588 0.0000138 0.0000041 +0.0000121 0.0000721 0.0000279 0.000027 0.0000194 0.0000135 0.0000138 0.0000207 0.0000051 +0.0000058 0.0000347 0.000014 0.0000136 0.0000092 0.0000044 0.0000041 0.0000051 0.0000079 diff --git a/data/MINERvA/CCcoh/Enu_nu_data.csv b/data/MINERvA/CCcoh/Enu_nu_data.csv new file mode 100644 index 0000000..09b96cd --- /dev/null +++ b/data/MINERvA/CCcoh/Enu_nu_data.csv @@ -0,0 +1,10 @@ +1.5 3.952E-39 1.02054E-39 +2 2.485E-39 3.97519E-40 +3 2.736E-39 3.94069E-40 +4 3.096E-39 6.23424E-40 +5 5.037E-39 9.30209E-40 +7 6.54E-39 1.15673E-39 +9 6.321E-39 1.3913E-39 +11 8.205E-39 1.60107E-39 +15 1.233E-38 2.33955E-39 +20 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Enu_nubar_cov.csv b/data/MINERvA/CCcoh/Enu_nubar_cov.csv new file mode 100644 index 0000000..9927991 --- /dev/null +++ b/data/MINERvA/CCcoh/Enu_nubar_cov.csv @@ -0,0 +1,9 @@ +0.00276 0.000561 -0.000195 0.000146 0.000396 0.000638 0.000844 0.001117 0.00086 +0.000561 0.002771 0.00159 0.000965 0.002011 0.003759 0.005241 0.00715 0.005339 +-0.000195 0.00159 0.002332 0.001524 0.002409 0.003629 0.005109 0.007435 0.005552 +0.000146 0.000965 0.001524 0.003053 0.002976 0.002489 0.003197 0.004467 0.003481 +0.000396 0.002011 0.002409 0.002976 0.010258 0.006499 0.007921 0.011924 0.006963 +0.000638 0.003759 0.003629 0.002489 0.006499 0.028482 0.019417 0.02304 0.01485 +0.000844 0.005241 0.005109 0.003197 0.007921 0.019417 0.06033 0.04348 0.021354 +0.001117 0.00715 0.007435 0.004467 0.011924 0.02304 0.04348 0.114784 0.039661 +0.00086 0.005339 0.005552 0.003481 0.006963 0.01485 0.021354 0.039661 0.152195 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Enu_nubar_data.csv b/data/MINERvA/CCcoh/Enu_nubar_data.csv new file mode 100644 index 0000000..0be5d2b --- /dev/null +++ b/data/MINERvA/CCcoh/Enu_nubar_data.csv @@ -0,0 +1,10 @@ +1.5 2.54E-40 5.2543E-40 +2 2.049E-39 5.26972E-40 +3 2.673E-39 4.82637E-40 +4 1.725E-39 5.52784E-40 +5 3.928E-39 1.01278E-39 +7 6.84E-39 1.68804E-39 +9 9.917E-39 2.45641E-39 +11 1.5896E-38 3.38843E-39 +15 9.931E-39 3.90069E-39 +20 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Epi_nu_cov.csv b/data/MINERvA/CCcoh/Epi_nu_cov.csv new file mode 100644 index 0000000..69541d5 --- /dev/null +++ b/data/MINERvA/CCcoh/Epi_nu_cov.csv @@ -0,0 +1,9 @@ +0.000966 0.0013858 -0.0000418 0.0000749 0.0000835 0.0000468 0.0000249 0.0000121 0.0000058 +0.0013858 0.0037297 0.0010112 0.0008641 0.0005755 0.0002781 0.0001472 0.0000721 0.0000347 +-0.0000418 0.0010112 0.0006594 0.0004378 0.0002607 0.0001148 0.0000578 0.0000279 0.000014 +0.0000749 0.0008641 0.0004378 0.0005827 0.0002926 0.0001208 0.0000568 0.000027 0.0000136 +0.0000835 0.0005755 0.0002607 0.0002926 0.0003194 0.0001052 0.0000456 0.0000194 0.0000092 +0.0000468 0.0002781 0.0001148 0.0001208 0.0001052 0.0001256 0.0000411 0.0000135 0.0000044 +0.0000249 0.0001472 0.0000578 0.0000568 0.0000456 0.0000411 0.0000588 0.0000138 0.0000041 +0.0000121 0.0000721 0.0000279 0.000027 0.0000194 0.0000135 0.0000138 0.0000207 0.0000051 +0.0000058 0.0000347 0.000014 0.0000136 0.0000092 0.0000044 0.0000041 0.0000051 0.0000079 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Epi_nu_data.csv b/data/MINERvA/CCcoh/Epi_nu_data.csv new file mode 100644 index 0000000..7917269 --- /dev/null +++ b/data/MINERvA/CCcoh/Epi_nu_data.csv @@ -0,0 +1,10 @@ +0 5.67E-40 2.88E-40 +0.25 3.473E-39 5.68E-40 +0.5 1.426E-39 2.34E-40 +0.75 1.508E-39 2.22E-40 +1 1.213E-39 1.61E-40 +1.5 7.14E-40 9.4E-41 +2 4.29E-40 6E-41 +2.5 2.27E-40 3.4E-41 +3.5 1.16E-40 2E-41 +4 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Epi_nubar_cov.csv b/data/MINERvA/CCcoh/Epi_nubar_cov.csv new file mode 100644 index 0000000..0ffac41 --- /dev/null +++ b/data/MINERvA/CCcoh/Epi_nubar_cov.csv @@ -0,0 +1,9 @@ +0.0007803 0.0014033 0.0001656 0.0001398 0.0000948 0.0000417 0.0000181 0.000004 0.0000014 +0.0014033 0.0077102 0.0016934 0.0010592 0.0005185 0.0001968 0.0000902 0.0000224 0.0000075 +0.0001656 0.0016934 0.0011912 0.0006337 0.0002988 0.0001055 0.0000484 0.0000138 0.0000057 +0.0001398 0.0010592 0.0006337 0.0008985 0.0003508 0.0001187 0.0000451 0.0000109 0.0000052 +0.0000948 0.0005185 0.0002988 0.0003508 0.0004187 0.0001104 0.0000365 0.0000066 0.0000028 +0.0000417 0.0001968 0.0001055 0.0001187 0.0001104 0.0001744 0.000041 0.000009 0.0000016 +0.0000181 0.0000902 0.0000484 0.0000451 0.0000365 0.000041 0.0000898 0.000016 0.0000031 +0.000004 0.0000224 0.0000138 0.0000109 0.0000066 0.000009 0.000016 0.0000326 0.0000054 +0.0000014 0.0000075 0.0000057 0.0000052 0.0000028 0.0000016 0.0000031 0.0000054 0.000007 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Epi_nubar_data.csv b/data/MINERvA/CCcoh/Epi_nubar_data.csv new file mode 100644 index 0000000..4db6975 --- /dev/null +++ b/data/MINERvA/CCcoh/Epi_nubar_data.csv @@ -0,0 +1,10 @@ +0 4.23E-40 2.79213E-40 +0.25 2.245E-39 8.77707E-40 +0.5 1.342E-39 3.45527E-40 +0.75 1.467E-39 3.00188E-40 +1 1.129E-39 2.04841E-40 +1.5 6.59E-40 1.32019E-40 +2 3.93E-40 9.46414E-41 +2.5 1.82E-40 5.70088E-41 +3.5 7.3E-41 2.62488E-41 +4 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Thpi_nu_cov.csv b/data/MINERvA/CCcoh/Thpi_nu_cov.csv new file mode 100644 index 0000000..1a831bb --- /dev/null +++ b/data/MINERvA/CCcoh/Thpi_nu_cov.csv @@ -0,0 +1,12 @@ +3.7820000E-06 2.7170000E-06 1.8670000E-06 1.2740000E-06 1.1640000E-06 8.7800000E-07 1.0400000E-06 9.2200000E-07 7.0900000E-07 4.0700000E-07 5.4600000E-07 5.4600000E-07 +2.7170000E-06 4.5150000E-06 2.4610000E-06 1.4840000E-06 1.3900000E-06 1.0720000E-06 1.2670000E-06 1.1370000E-06 8.7300000E-07 5.1500000E-07 6.9800000E-07 7.0000000E-07 +1.8670000E-06 2.4610000E-06 2.6340000E-06 1.3920000E-06 1.1070000E-06 8.7600000E-07 1.0050000E-06 8.8800000E-07 6.8900000E-07 4.0500000E-07 5.0700000E-07 4.8200000E-07 +1.2740000E-06 1.4840000E-06 1.3920000E-06 1.8430000E-06 1.0270000E-06 7.4600000E-07 7.2000000E-07 5.9600000E-07 4.7200000E-07 2.6100000E-07 2.3900000E-07 1.7200000E-07 +1.1640000E-06 1.3900000E-06 1.1070000E-06 1.0270000E-06 1.2880000E-06 7.0900000E-07 6.4300000E-07 5.5200000E-07 4.3400000E-07 2.5300000E-07 2.6300000E-07 2.1600000E-07 +8.7800000E-07 1.0720000E-06 8.7600000E-07 7.4600000E-07 7.0900000E-07 9.3400000E-07 5.7500000E-07 4.3200000E-07 3.2100000E-07 2.0000000E-07 2.0400000E-07 1.5600000E-07 +1.0400000E-06 1.2670000E-06 1.0050000E-06 7.2000000E-07 6.4300000E-07 5.7500000E-07 9.4600000E-07 5.9300000E-07 4.0300000E-07 2.4000000E-07 3.0700000E-07 2.7600000E-07 +9.2200000E-07 1.1370000E-06 8.8800000E-07 5.9600000E-07 5.5200000E-07 4.3200000E-07 5.9300000E-07 7.6900000E-07 4.6300000E-07 2.4300000E-07 2.9800000E-07 2.7800000E-07 +7.0900000E-07 8.7300000E-07 6.8900000E-07 4.7200000E-07 4.3400000E-07 3.2100000E-07 4.0300000E-07 4.6300000E-07 5.1800000E-07 2.6500000E-07 2.4900000E-07 2.2100000E-07 +4.0700000E-07 5.1500000E-07 4.0500000E-07 2.6100000E-07 2.5300000E-07 2.0000000E-07 2.4000000E-07 2.4300000E-07 2.6500000E-07 2.9000000E-07 2.0700000E-07 1.5900000E-07 +5.4600000E-07 6.9800000E-07 5.0700000E-07 2.3900000E-07 2.6300000E-07 2.0400000E-07 3.0700000E-07 2.9800000E-07 2.4900000E-07 2.0700000E-07 3.6400000E-07 2.6600000E-07 +5.4600000E-07 7.0000000E-07 4.8200000E-07 1.7200000E-07 2.1600000E-07 1.5600000E-07 2.7600000E-07 2.7800000E-07 2.2100000E-07 1.5900000E-07 2.6600000E-07 3.2900000E-07 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Thpi_nu_data.csv b/data/MINERvA/CCcoh/Thpi_nu_data.csv new file mode 100644 index 0000000..6c964dc --- /dev/null +++ b/data/MINERvA/CCcoh/Thpi_nu_data.csv @@ -0,0 +1,13 @@ +0 1.14E-40 1.92094E-41 +5 1.33E-40 2.1095E-41 +10 1.15E-40 1.66433E-41 +15 1.09E-40 1.36015E-41 +20 7.3E-41 1.16619E-41 +25 5.4E-41 9.43398E-42 +30 4.2E-41 9.43398E-42 +35 2.7E-41 8.94427E-42 +40 1.8E-41 7.2111E-42 +45 5E-42 5E-42 +50 -5E-42 6.32456E-42 +60 -8E-42 5.38516E-42 +70 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Thpi_nubar_cov.csv b/data/MINERvA/CCcoh/Thpi_nubar_cov.csv new file mode 100644 index 0000000..fac4f43 --- /dev/null +++ b/data/MINERvA/CCcoh/Thpi_nubar_cov.csv @@ -0,0 +1,12 @@ +3.3460000E-06 1.7960000E-06 1.2590000E-06 8.5100000E-07 1.3010000E-06 7.7800000E-07 9.9000000E-07 7.7600000E-07 7.2300000E-07 1.8300000E-07 2.5100000E-07 9.0100000E-07 +1.7960000E-06 4.3450000E-06 2.1650000E-06 1.5990000E-06 2.5320000E-06 1.9160000E-06 2.4200000E-06 1.8270000E-06 9.3500000E-07 2.6600000E-07 3.1000000E-07 1.0490000E-06 +1.2590000E-06 2.1650000E-06 3.0030000E-06 1.4040000E-06 1.8650000E-06 1.4260000E-06 1.8250000E-06 1.4050000E-06 8.7600000E-07 3.1300000E-07 3.4900000E-07 9.6000000E-07 +8.5100000E-07 1.5990000E-06 1.4040000E-06 2.3250000E-06 1.8410000E-06 1.3210000E-06 1.5460000E-06 1.1950000E-06 5.5800000E-07 2.3500000E-07 1.7600000E-07 3.5700000E-07 +1.3010000E-06 2.5320000E-06 1.8650000E-06 1.8410000E-06 3.3490000E-06 2.1040000E-06 2.4450000E-06 1.8890000E-06 8.8800000E-07 3.5600000E-07 3.3700000E-07 8.5800000E-07 +7.7800000E-07 1.9160000E-06 1.4260000E-06 1.3210000E-06 2.1040000E-06 2.1650000E-06 2.0470000E-06 1.4970000E-06 6.0100000E-07 3.1800000E-07 2.7900000E-07 5.5400000E-07 +9.9000000E-07 2.4200000E-06 1.8250000E-06 1.5460000E-06 2.4450000E-06 2.0470000E-06 2.8370000E-06 1.9090000E-06 7.4600000E-07 3.1400000E-07 3.4500000E-07 8.3100000E-07 +7.7600000E-07 1.8270000E-06 1.4050000E-06 1.1950000E-06 1.8890000E-06 1.4970000E-06 1.9090000E-06 1.9270000E-06 8.5000000E-07 3.3500000E-07 2.9700000E-07 6.8900000E-07 +7.2300000E-07 9.3500000E-07 8.7600000E-07 5.5800000E-07 8.8800000E-07 6.0100000E-07 7.4600000E-07 8.5000000E-07 1.0810000E-06 4.9500000E-07 3.1000000E-07 6.6800000E-07 +1.8300000E-07 2.6600000E-07 3.1300000E-07 2.3500000E-07 3.5600000E-07 3.1800000E-07 3.1400000E-07 3.3500000E-07 4.9500000E-07 5.1000000E-07 2.4000000E-07 2.4500000E-07 +2.5100000E-07 3.1000000E-07 3.4900000E-07 1.7600000E-07 3.3700000E-07 2.7900000E-07 3.4500000E-07 2.9700000E-07 3.1000000E-07 2.4000000E-07 3.4000000E-07 3.5000000E-07 +9.0100000E-07 1.0490000E-06 9.6000000E-07 3.5700000E-07 8.5800000E-07 5.5400000E-07 8.3100000E-07 6.8900000E-07 6.6800000E-07 2.4500000E-07 3.5000000E-07 1.1260000E-06 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Thpi_nubar_data.csv b/data/MINERvA/CCcoh/Thpi_nubar_data.csv new file mode 100644 index 0000000..3cdfed1 --- /dev/null +++ b/data/MINERvA/CCcoh/Thpi_nubar_data.csv @@ -0,0 +1,13 @@ +0 6.8E-41 1.84391E-41 +5 1.2E-40 2.12132E-41 +10 8.8E-41 1.76918E-41 +15 9.1E-41 1.48661E-41 +20 7.2E-41 1.83848E-41 +25 3.9E-41 1.5E-41 +30 3.1E-41 1.64012E-41 +35 1.9E-41 1.42127E-41 +40 1.1E-41 1.08167E-41 +45 0.1E-62 7.2111E-42 +50 -4E-42 6.40312E-42 +60 -5E-42 1.04403E-41 +70 0 0 \ No newline at end of file diff --git a/data/MINERvA/CCcoh/Enu_antinu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/Enu_antinu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_antinu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/Enu_antinu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/Enu_antinu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/Enu_antinu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_antinu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/Enu_antinu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/Enu_antinu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/Enu_antinu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_antinu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/Enu_antinu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/Enu_antinu_XSec.csv b/data/MINERvA/CCcoh/callums/Enu_antinu_XSec.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_antinu_XSec.csv rename to data/MINERvA/CCcoh/callums/Enu_antinu_XSec.csv diff --git a/data/MINERvA/CCcoh/Enu_nu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/Enu_nu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_nu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/Enu_nu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/Enu_nu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/Enu_nu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_nu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/Enu_nu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/Enu_nu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/Enu_nu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_nu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/Enu_nu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/Enu_nu_XSec.csv b/data/MINERvA/CCcoh/callums/Enu_nu_XSec.csv similarity index 100% rename from data/MINERvA/CCcoh/Enu_nu_XSec.csv rename to data/MINERvA/CCcoh/callums/Enu_nu_XSec.csv diff --git a/data/MINERvA/CCcoh/Epi_antinu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/Epi_antinu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_antinu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/Epi_antinu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/Epi_antinu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/Epi_antinu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_antinu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/Epi_antinu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/Epi_antinu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/Epi_antinu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_antinu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/Epi_antinu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/callums/Epi_antinu_XSec.csv b/data/MINERvA/CCcoh/callums/Epi_antinu_XSec.csv new file mode 100755 index 0000000..28e8693 --- /dev/null +++ b/data/MINERvA/CCcoh/callums/Epi_antinu_XSec.csv @@ -0,0 +1,10 @@ +0 0.423 0.146 0.238 +0.25 2.245 0.313 0.820 +0.5 1.342 0.142 0.315 +0.75 1.467 0.127 0.272 +1.0 1.129 0.094 0.182 +1.5 0.659 0.073 0.110 +2.0 0.393 0.059 0.074 +2.5 0.182 0.035 0.045 +3.5 0.073 0.017 0.020 +4.0 0.000 0.000 0.000 diff --git a/data/MINERvA/CCcoh/Epi_nu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/Epi_nu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_nu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/Epi_nu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/Epi_nu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/Epi_nu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_nu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/Epi_nu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/Epi_nu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/Epi_nu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_nu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/Epi_nu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/Epi_nu_XSec.csv b/data/MINERvA/CCcoh/callums/Epi_nu_XSec.csv similarity index 100% rename from data/MINERvA/CCcoh/Epi_nu_XSec.csv rename to data/MINERvA/CCcoh/callums/Epi_nu_XSec.csv diff --git a/data/MINERvA/CCcoh/th_antinu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/th_antinu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/th_antinu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/th_antinu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/th_antinu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/th_antinu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/th_antinu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/th_antinu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/th_antinu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/th_antinu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/th_antinu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/th_antinu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/th_antinu_XSec.csv b/data/MINERvA/CCcoh/callums/th_antinu_XSec.csv similarity index 100% rename from data/MINERvA/CCcoh/th_antinu_XSec.csv rename to data/MINERvA/CCcoh/callums/th_antinu_XSec.csv diff --git a/data/MINERvA/CCcoh/th_nu_Covar_flux.csv b/data/MINERvA/CCcoh/callums/th_nu_Covar_flux.csv similarity index 100% rename from data/MINERvA/CCcoh/th_nu_Covar_flux.csv rename to data/MINERvA/CCcoh/callums/th_nu_Covar_flux.csv diff --git a/data/MINERvA/CCcoh/th_nu_Covar_stat.csv b/data/MINERvA/CCcoh/callums/th_nu_Covar_stat.csv similarity index 100% rename from data/MINERvA/CCcoh/th_nu_Covar_stat.csv rename to data/MINERvA/CCcoh/callums/th_nu_Covar_stat.csv diff --git a/data/MINERvA/CCcoh/th_nu_Covar_sys.csv b/data/MINERvA/CCcoh/callums/th_nu_Covar_sys.csv similarity index 100% rename from data/MINERvA/CCcoh/th_nu_Covar_sys.csv rename to data/MINERvA/CCcoh/callums/th_nu_Covar_sys.csv diff --git a/data/MINERvA/CCcoh/th_nu_XSec.csv b/data/MINERvA/CCcoh/callums/th_nu_XSec.csv similarity index 100% rename from data/MINERvA/CCcoh/th_nu_XSec.csv rename to data/MINERvA/CCcoh/callums/th_nu_XSec.csv diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.cxx index 2ee44ec..d31528d 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.cxx @@ -1,87 +1,77 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1DEnu_antinu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1DEnu_antinu::MINERvA_CCCOHPI_XSec_1DEnu_antinu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1DEnu_antinu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Reverse Horn Current numu \n" \ "Signal: Any event with 1 mu+, 1pi-, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("E_{#nu} (GeV)"); fSettings.SetYTitle("d#sigma/dE_{#nu} (cm^{2}/GeV/C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numub"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1DEnu_antinu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_antinu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_antinu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_antinu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_antinu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nubar_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nubar_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); }; void MINERvA_CCCOHPI_XSec_1DEnu_antinu::FillEventVariables(FitEvent *event) { fXVar = event->GetNeutrinoIn()->fP.E()/1000.; return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1DEnu_antinu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numu + 12C --> mu- + pi+ + 12C' return SignalDef::isCCCOH(event, -14, -211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1DEnu_antinu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.h index b075690..d7e5d81 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_antinu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DENU_ANTINU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DENU_ANTINU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1DEnu_antinu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1DEnu_antinu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1DEnu_antinu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.cxx index f38eb52..80ef368 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.cxx @@ -1,87 +1,77 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1DEnu_nu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1DEnu_nu::MINERvA_CCCOHPI_XSec_1DEnu_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1DEnu_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current numu \n" \ "Signal: Any event with 1 mu-, 1pi+, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("E_{#nu} (GeV)"); fSettings.SetYTitle("d#sigma/dE_{#nu} (cm^{2}/GeV/C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numu"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1DEnu_nu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Enu_nu_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); }; void MINERvA_CCCOHPI_XSec_1DEnu_nu::FillEventVariables(FitEvent *event) { fXVar = event->GetNeutrinoIn()->fP.E()/1000.; return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1DEnu_nu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numu + 12C --> mu- + pi+ + 12C' return SignalDef::isCCCOH(event, 14, 211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1DEnu_nu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.h index 647e5d5..8619992 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEnu_nu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DENU_NU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DENU_NU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1DEnu_nu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1DEnu_nu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1DEnu_nu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.cxx index 6baf075..1b0b7cd 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.cxx @@ -1,91 +1,81 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1DEpi_antinu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1DEpi_antinu::MINERvA_CCCOHPI_XSec_1DEpi_antinu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1DEpi_antinu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Reverse Horn Current numu \n" \ "Signal: Any event with 1 mu+, 1pi-, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("E_{#pi} (GeV)"); fSettings.SetYTitle("d#sigma/dE_{#pi} (cm^{2}/GeV/C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numub"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1DEpi_antinu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_antinu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_antinu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_antinu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_antinu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)/TotalIntegratedFlux("width")*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); }; void MINERvA_CCCOHPI_XSec_1DEpi_antinu::FillEventVariables(FitEvent *event) { if (event->NumFSParticle(-211) == 0) return; TLorentzVector Ppi = event->GetHMFSParticle(-211)->fP; fXVar = Ppi.E()/1000.; return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1DEpi_antinu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numu + 12C --> mu- + pi+ + 12C' return SignalDef::isCCCOH(event, -14, -211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1DEpi_antinu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.h index fbcee07..6f45792 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_antinu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DEPI_ANTINU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DEPI_ANTINU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1DEpi_antinu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1DEpi_antinu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1DEpi_antinu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.cxx index 6701f30..575659b 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.cxx @@ -1,91 +1,81 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1DEpi_nu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1DEpi_nu::MINERvA_CCCOHPI_XSec_1DEpi_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1DEpi_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current numu \n" \ "Signal: Any event with 1 mu-, 1pi+, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("E_{#pi} (GeV)"); fSettings.SetYTitle("d#sigma/dE_{#pi} (cm^{2}/GeV/C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numu"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1DEpi_nu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Epi_nu_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)/TotalIntegratedFlux("width")*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); - + std::cout << "MINERvA_CCCOHPI_XSec_1DEpi_nu.cxx : Data Integral = " << fDataHist->Integral() << std::endl; }; void MINERvA_CCCOHPI_XSec_1DEpi_nu::FillEventVariables(FitEvent *event) { if (event->NumFSParticle(211) == 0) return; TLorentzVector Ppi = event->GetHMFSParticle(211)->fP; fXVar = Ppi.E()/1000.; return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1DEpi_nu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numu + 12C --> mu- + pi+ + 12C' return SignalDef::isCCCOH(event, 14, 211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1DEpi_nu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.h index 3233b49..53045e4 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1DEpi_nu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DEPI_NU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DEPI_NU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1DEpi_nu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1DEpi_nu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1DEpi_nu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.cxx index 1912a63..774c621 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.cxx @@ -1,92 +1,82 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1Dth_antinu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1Dth_antinu::MINERvA_CCCOHPI_XSec_1Dth_antinu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1Dth_antinu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Reverse Horn Current numu \n" \ "Signal: Any event with 1 mu+, 1pi-, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("#theta_{#pi} (deg.)"); fSettings.SetYTitle("d#sigma/d#theta_{#pi} (cm^{2}/deg./C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numub"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1Dth_antinu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_antinu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_antinu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_antinu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_antinu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Thpi_nubar_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Thpi_nubar_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)/TotalIntegratedFlux("width")*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); }; void MINERvA_CCCOHPI_XSec_1Dth_antinu::FillEventVariables(FitEvent *event) { if (event->NumFSParticle(-211) == 0) return; TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Ppi = event->GetHMFSParticle(-211)->fP; fXVar = (180. / M_PI) * FitUtils::th(Pnu, Ppi); return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1Dth_antinu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numub + 12C --> mu+ + pi- + 12C' return SignalDef::isCCCOH(event, -14, -211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1Dth_antinu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.h index 45b7f65..8626bb8 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_antinu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DTH_ANTINU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DTH_ANTINU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1Dth_antinu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1Dth_antinu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1Dth_antinu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.cxx b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.cxx index 95f2706..3219b80 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.cxx +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.cxx @@ -1,92 +1,82 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCCOHPI_XSec_1Dth_nu.h" //******************************************************************** MINERvA_CCCOHPI_XSec_1Dth_nu::MINERvA_CCCOHPI_XSec_1Dth_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCCOHPI_XSec_1Dth_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current numu \n" \ "Signal: Any event with 1 mu-, 1pi+, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("#theta_{#pi} (deg.)"); fSettings.SetYTitle("d#sigma/d#theta_{#pi} (cm^{2}/deg./C^{12})"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 20.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numu"); fSettings.SetTitle("MINERvA_CCCOHPI_XSec_1Dth_nu"); - fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_nu_XSec.csv"); - fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_nu_Covar_stat.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_nu_Covar_flux.csv;" + - GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/th_nu_Covar_sys.csv"); + fSettings.SetDataInput( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Thpi_nu_data.csv"); + fSettings.SetCovarInput(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCcoh/Thpi_nu_cov.csv"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents)/TotalIntegratedFlux("width")*13; // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); SetCovarFromMultipleTextFiles(fSettings.GetCovarInput()); - // Apply scalings based on the data release - ScaleData(1E-39); - // Final setup --------------------------------------------------- FinaliseMeasurement(); }; void MINERvA_CCCOHPI_XSec_1Dth_nu::FillEventVariables(FitEvent *event) { if (event->NumFSParticle(211) == 0) return; TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Ppi = event->GetHMFSParticle(211)->fP; fXVar = (180. / M_PI) * FitUtils::th(Pnu, Ppi); return; }; //******************************************************************** bool MINERvA_CCCOHPI_XSec_1Dth_nu::isSignal(FitEvent *event) { //******************************************************************** // Signal: numu + 12C --> mu- + pi+ + 12C' return SignalDef::isCCCOH(event, 14, 211, EnuMin, EnuMax); } - -double MINERvA_CCCOHPI_XSec_1Dth_nu::GetLikelihood(){ - double chi2 = StatUtils::GetChi2FromCov(this->fDataHist, this->fMCHist, this->covar, NULL, 1E39, 10); - return chi2; -} diff --git a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.h b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.h index 1db7fc8..f0e7e4e 100644 --- a/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.h +++ b/src/MINERvA/MINERvA_CCCOHPI_XSec_1Dth_nu.h @@ -1,37 +1,36 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_CCCOHPI_XSEC_1DTH_NU_H_SEEN #define MINERVA_CCCOHPI_XSEC_1DTH_NU_H_SEEN #include "Measurement1D.h" class MINERvA_CCCOHPI_XSec_1Dth_nu : public Measurement1D { public: MINERvA_CCCOHPI_XSec_1Dth_nu(nuiskey samplekey); virtual ~MINERvA_CCCOHPI_XSec_1Dth_nu() {}; void FillEventVariables(FitEvent *event); bool isSignal(FitEvent *event); - double GetLikelihood(); private: }; #endif diff --git a/src/MINERvA/MINERvA_CCNpip_XSec_1DEnu_nu.cxx b/src/MINERvA/MINERvA_CCNpip_XSec_1DEnu_nu.cxx index 6e6703d..78fcb7a 100644 --- a/src/MINERvA/MINERvA_CCNpip_XSec_1DEnu_nu.cxx +++ b/src/MINERvA/MINERvA_CCNpip_XSec_1DEnu_nu.cxx @@ -1,90 +1,90 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCNpip_XSec_1DEnu_nu.h" //******************************************************************** MINERvA_CCNpip_XSec_1DEnu_nu::MINERvA_CCNpip_XSec_1DEnu_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCNpip_XSec_1DEnu_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current nue + nuebar \n" \ "Signal: Any event with 1 electron, any nucleons, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("E_{#nu} (GeV)"); fSettings.SetYTitle("d#sigma(E_{#nu}) (cm^{2}/nucleon)"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 10.0); fSettings.DefineAllowedTargets("C,H"); // CCQELike plot information fSettings.SetTitle("MINERvA_CCNpip_XSec_1DEnu_nu"); fSettings.SetDataInput( FitPar::GetDataBase() + "/MINERvA/CCNpip/2016/nu-ccNpi+-xsec-enu.csv" ); fSettings.SetCovarInput( FitPar::GetDataBase() + "/MINERvA/CCNpip/2016/nu-ccNpi+-correlation-enu.csv"); fSettings.DefineAllowedSpecies("numu"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width")*double(1E-38)/double(fNEvents); // Plot Setup ------------------------------------------------------- SetDataFromTextFile( fSettings.GetDataInput() ); // MINERvA has the error quoted as a percentage of the cross-section // Need to make this into an absolute error before we go from correlation matrix -> covariance matrix since it depends on the error in the ith bin for (int i = 0; i < fDataHist->GetNbinsX() + 1; i++) { fDataHist->SetBinError(i + 1, fDataHist->GetBinContent(i + 1) * (fDataHist->GetBinError(i + 1) / 100.)); } SetCorrelationFromTextFile(fSettings.GetCovarInput() ); // Final setup --------------------------------------------------- FinaliseMeasurement(); }; //******************************************************************** void MINERvA_CCNpip_XSec_1DEnu_nu::FillEventVariables(FitEvent *event) { //******************************************************************** if (event->NumFSParticle(13) == 0) return; TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Pmu = event->GetHMFSParticle(13)->fP; double Enu = Pnu.E()/1000.; fXVar = Enu; }; //******************************************************************** // The false refers to that this cross-section uses the full phase space bool MINERvA_CCNpip_XSec_1DEnu_nu::isSignal(FitEvent *event) { //******************************************************************** - return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, false); + return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, false, true); } diff --git a/src/MINERvA/MINERvA_CCNpip_XSec_1DTpi_nu.cxx b/src/MINERvA/MINERvA_CCNpip_XSec_1DTpi_nu.cxx index 23ffdf7..51fa133 100644 --- a/src/MINERvA/MINERvA_CCNpip_XSec_1DTpi_nu.cxx +++ b/src/MINERvA/MINERvA_CCNpip_XSec_1DTpi_nu.cxx @@ -1,267 +1,267 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCNpip_XSec_1DTpi_nu.h" //******************************************************************** MINERvA_CCNpip_XSec_1DTpi_nu::MINERvA_CCNpip_XSec_1DTpi_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCNpip_XSec_1DTpi_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current nue + nuebar \n" \ "Signal: Any event with 1 electron, any nucleons, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("T_{#pi} (MeV)"); fSettings.SetYTitle("(1/T#Phi) dN_{#pi}/dT_{#pi} (cm^{2}/MeV/nucleon)"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 10.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numu"); fFullPhaseSpace = !fSettings.Found("name", "_20deg"); fFluxCorrection = fSettings.Found("name", "fluxcorr"); fUpdatedData = !fSettings.Found("name", "2015"); fSettings.SetTitle("MINERvA_CCNpip_XSec_1DTpi_nu"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents) / TotalIntegratedFlux("width"); // Plot Setup ------------------------------------------------------- // Full Phase Space if (fFullPhaseSpace) { // 2016 release if (fUpdatedData) { SetDataFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2016/nu-ccNpi+-xsec-pion-kinetic-energy.csv"); // MINERvA has the error quoted as a percentage of the cross-section // Need to make this into an absolute error before we go from correlation // matrix -> covariance matrix since it depends on the error in the ith // bin for (int i = 0; i < fDataHist->GetNbinsX() + 1; i++) { fDataHist->SetBinError(i + 1, fDataHist->GetBinContent(i + 1) * (fDataHist->GetBinError(i + 1) / 100.)); } // This is a correlation matrix, not covariance matrix, so needs to be // converted SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2016/nu-ccNpi+-correlation-pion-kinetic-energy.csv"); // 2015 release } else { // If we're doing shape only if (fIsShape) { SetDataFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_shape.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_shape_cov.txt"); // If we're doing full cross-section } else { SetDataFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi.txt"); SetCorrelationFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_cov.txt"); } } // Restricted Phase Space } else { // Only 2015 data released restricted muon phase space cross-section // unfortunately if (fUpdatedData) { ERR(FTL) << fName << " has no updated 2016 data for restricted phase space! Using 2015 data." << std::endl; throw; } // If we're using the shape only data if (fIsShape) { SetDataFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_20deg_shape.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_20deg_shape_cov.txt"); // Or total cross-section } else { SetDataFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_20deg.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_Tpi_20deg_cov.txt"); } } // Scale the MINERvA data to account for the flux difference // Adjust MINERvA data to flux correction; roughly a 11% normalisation increase in data // Please change when MINERvA releases new data! if (fFluxCorrection) { for (int i = 0; i < fDataHist->GetNbinsX() + 1; i++) { fDataHist->SetBinContent(i + 1, fDataHist->GetBinContent(i + 1) * 1.11); } } // Make some auxillary helper plots onePions = (TH1D*)(fDataHist->Clone()); onePions->SetNameTitle((fName + "_1pions").c_str(), (fName + "_1pions" + fPlotTitles).c_str()); SetAutoProcessTH1(onePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); twoPions = (TH1D*)(fDataHist->Clone()); twoPions->SetNameTitle((fName + "_2pions").c_str(), (fName + "_2pions;" + fPlotTitles).c_str()); SetAutoProcessTH1(twoPions, kCMD_Reset, kCMD_Scale, kCMD_Norm); threePions = (TH1D*)(fDataHist->Clone()); threePions->SetNameTitle((fName + "_3pions").c_str(), (fName + "_3pions" + fPlotTitles).c_str()); SetAutoProcessTH1(threePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); morePions = (TH1D*)(fDataHist->Clone()); morePions->SetNameTitle((fName + "_4pions").c_str(), (fName + "_4pions" + fPlotTitles).c_str()); SetAutoProcessTH1(morePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); // Final setup --------------------------------------------------- FinaliseMeasurement(); }; //******************************************************************** // Here we have to fill for every pion we find in the event void MINERvA_CCNpip_XSec_1DTpi_nu::FillEventVariables(FitEvent *event) { //******************************************************************** if (event->NumFSParticle(211) == 0 && event->NumFSParticle(-211) == 0) return; if (event->NumFSParticle(13) == 0) return; // Need to make this use event boxes // Clear out the vectors GetPionBox()->Reset(); TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Pmu = event->GetHMFSParticle(13)->fP; // Loop over the particle stack for (unsigned int j = 2; j < event->Npart(); ++j) { // Only include alive particles if (event->GetParticleState(j) != kFinalState) continue; int PID = (event->PartInfo(j))->fPID; // Pick up the charged pions in the event if (abs(PID) == 211) { double ppi = FitUtils::T(event->PartInfo(j)->fP) * 1000.; GetPionBox()->fTpiVect.push_back(ppi); } } fXVar = 0; return; }; //******************************************************************** // The last bool refers to if we're using restricted phase space or not bool MINERvA_CCNpip_XSec_1DTpi_nu::isSignal(FitEvent *event) { //******************************************************************** // Last false refers to that this is NOT the restricted MINERvA phase space, // in which only forward-going muons are accepted - return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, !fFullPhaseSpace); + return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, !fFullPhaseSpace, !fUpdatedData); } //******************************************************************** // Need to override FillHistograms() here because we fill the histogram N_pion // times void MINERvA_CCNpip_XSec_1DTpi_nu::FillHistograms() { //******************************************************************** if (Signal) { unsigned int nPions = GetPionBox()->fTpiVect.size(); // Need to loop over all the pions in the sample for (size_t k = 0; k < nPions; ++k) { double tpi = GetPionBox()->fTpiVect[k]; this->fMCHist->Fill(tpi, Weight); this->fMCFine->Fill(tpi, Weight); this->fMCStat->Fill(tpi, 1.0); if (nPions == 1) { onePions->Fill(tpi, Weight); } else if (nPions == 2) { twoPions->Fill(tpi, Weight); } else if (nPions == 3) { threePions->Fill(tpi, Weight); } else if (nPions > 3) { morePions->Fill(tpi, Weight); } if (fMCHist_Modes) fMCHist_Modes->Fill(Mode, tpi, Weight); } } } //******************************************************************** void MINERvA_CCNpip_XSec_1DTpi_nu::ScaleEvents() { //******************************************************************** Measurement1D::ScaleEvents(); onePions->Scale(this->fScaleFactor, "width"); twoPions->Scale(this->fScaleFactor, "width"); threePions->Scale(this->fScaleFactor, "width"); morePions->Scale(this->fScaleFactor, "width"); return; } //******************************************************************** void MINERvA_CCNpip_XSec_1DTpi_nu::Write(std::string drawOpts) { //******************************************************************** Measurement1D::Write(drawOpts); // Make an auto processed pion stack // Draw the npions stack onePions->SetTitle("1#pi"); onePions->SetLineColor(kBlack); // onePions->SetFillStyle(0); onePions->SetFillColor(onePions->GetLineColor()); twoPions->SetTitle("2#pi"); twoPions->SetLineColor(kRed); // twoPions->SetFillStyle(0); twoPions->SetFillColor(twoPions->GetLineColor()); threePions->SetTitle("3#pi"); threePions->SetLineColor(kGreen); // threePions->SetFillStyle(0); threePions->SetFillColor(threePions->GetLineColor()); morePions->SetTitle(">3#pi"); morePions->SetLineColor(kBlue); // morePions->SetFillStyle(0); morePions->SetFillColor(morePions->GetLineColor()); THStack pionStack = THStack((fName + "_pionStack").c_str(), (fName + "_pionStack").c_str()); pionStack.Add(onePions); pionStack.Add(twoPions); pionStack.Add(threePions); pionStack.Add(morePions); pionStack.Write(); return; } diff --git a/src/MINERvA/MINERvA_CCNpip_XSec_1Dth_nu.cxx b/src/MINERvA/MINERvA_CCNpip_XSec_1Dth_nu.cxx index f753eba..f12a5fe 100644 --- a/src/MINERvA/MINERvA_CCNpip_XSec_1Dth_nu.cxx +++ b/src/MINERvA/MINERvA_CCNpip_XSec_1Dth_nu.cxx @@ -1,253 +1,253 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "MINERvA_SignalDef.h" #include "MINERvA_CCNpip_XSec_1Dth_nu.h" //******************************************************************** MINERvA_CCNpip_XSec_1Dth_nu::MINERvA_CCNpip_XSec_1Dth_nu(nuiskey samplekey) { //******************************************************************** // Sample overview --------------------------------------------------- std::string descrip = "MINERvA_CCNpip_XSec_1Dth_nu sample. \n" \ "Target: CH \n" \ "Flux: MINERvA Forward Horn Current nue + nuebar \n" \ "Signal: Any event with 1 electron, any nucleons, and no other FS particles \n"; // Setup common settings fSettings = LoadSampleSettings(samplekey); fSettings.SetDescription(descrip); fSettings.SetXTitle("#theta_{#pi} (degrees)"); fSettings.SetYTitle("(1/T#Phi) dN_{#pi}/d#theta_{#pi} (cm^{2}/degrees/nucleon)"); fSettings.SetAllowedTypes("FIX,FREE,SHAPE/DIAG,FULL/NORM/MASK", "FIX/FULL"); fSettings.SetEnuRange(1.5, 10.0); fSettings.DefineAllowedTargets("C,H"); fSettings.DefineAllowedSpecies("numu"); fFullPhaseSpace = !fSettings.Found("name", "_20deg"); fFluxCorrection = fSettings.Found("name", "fluxcorr"); fUpdatedData = !fSettings.Found("name", "2015"); fSettings.SetTitle("MINERvA_CCNpip_XSec_1Dth_nu"); FinaliseSampleSettings(); // Scaling Setup --------------------------------------------------- // ScaleFactor automatically setup for DiffXSec/cm2/Nucleon fScaleFactor = GetEventHistogram()->Integral("width") * double(1E-38) / double(fNEvents) / TotalIntegratedFlux("width"); // Plot Setup ------------------------------------------------------- // Full Phase Space if (fFullPhaseSpace) { // 2016 release data if (fUpdatedData) { SetDataFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2016/nu-ccNpi+-xsec-pion-angle.csv"); // MINERvA has the error quoted as a percentage of the cross-section // Need to make this into an absolute error before we go from correlation matrix -> covariance matrix since it depends on the error in the ith bin for (int i = 0; i < fDataHist->GetNbinsX() + 1; i++) { fDataHist->SetBinError(i + 1, fDataHist->GetBinContent(i + 1) * (fDataHist->GetBinError(i + 1) / 100.)); } // This is a correlation matrix! but it's all fixed in SetCovarMatrixFromText SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2016/nu-ccNpi+-correlation-pion-angle.csv"); // 2015 release data } else { // 2015 release allows for shape comparisons if (fIsShape) { SetDataFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_shape.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_shape_cov.txt"); } else { SetDataFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_cov.txt"); } } // Restricted Phase Space Data } else { // 2016 release data unfortunately not released in 20degree forward-going, revert to 2015 data if (fUpdatedData) { ERR(FTL) << fName << " has no updated 2016 data for restricted phase space! Using 2015 data." << std::endl; throw; } // Only 2015 20deg data if (fIsShape) { SetDataFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_20deg_shape.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_20deg_shape_cov.txt"); } else { SetDataFromTextFile( GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_20deg.txt"); SetCorrelationFromTextFile(GeneralUtils::GetTopLevelDir() + "/data/MINERvA/CCNpip/2015/MINERvA_CCNpi_th_20deg_cov.txt"); } } // Scale the MINERvA data to account for the flux difference // Adjust MINERvA data to flux correction; roughly a 11% normalisation increase in data // Please change when MINERvA releases new data! if (fFluxCorrection) { for (int i = 0; i < fDataHist->GetNbinsX() + 1; i++) { fDataHist->SetBinContent(i + 1, fDataHist->GetBinContent(i + 1) * 1.11); } } // Make some auxillary helper plots onePions = (TH1D*)(fDataHist->Clone()); onePions->SetNameTitle((fName + "_1pions").c_str(), (fName + "_1pions" + fPlotTitles).c_str()); SetAutoProcessTH1(onePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); twoPions = (TH1D*)(fDataHist->Clone()); twoPions->SetNameTitle((fName + "_2pions").c_str(), (fName + "_2pions;" + fPlotTitles).c_str()); SetAutoProcessTH1(twoPions, kCMD_Reset, kCMD_Scale, kCMD_Norm); threePions = (TH1D*)(fDataHist->Clone()); threePions->SetNameTitle((fName + "_3pions").c_str(), (fName + "_3pions" + fPlotTitles).c_str()); SetAutoProcessTH1(threePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); morePions = (TH1D*)(fDataHist->Clone()); morePions->SetNameTitle((fName + "_4pions").c_str(), (fName + "_4pions" + fPlotTitles).c_str()); SetAutoProcessTH1(morePions, kCMD_Reset, kCMD_Scale, kCMD_Norm); // Final setup --------------------------------------------------- FinaliseMeasurement(); }; // ******************************************** // Fill the event variables // Here we want to fill the angle for every pion we can find in the event void MINERvA_CCNpip_XSec_1Dth_nu::FillEventVariables(FitEvent *event) { // ******************************************** if (event->NumFSParticle(211) == 0 && event->NumFSParticle(-211) == 0) return; if (event->NumFSParticle(13) == 0) return; GetBox()->Reset(); TLorentzVector Pnu = event->GetNeutrinoIn()->fP; TLorentzVector Pmu = event->GetHMFSParticle(13)->fP; TLorentzVector Ppip; // Loop over the particle stack for (unsigned int j = 2; j < event->Npart(); ++j) { // Only include alive particles if ((event->PartInfo(j))->fIsAlive <= 0) continue; if ((event->PartInfo(j))->fNEUTStatusCode != 0) continue; int PID = (event->PartInfo(j))->fPID; // Select highest momentum (energy) charged pion if (abs(PID) == 211) { Ppip = (event->PartInfo(j))->fP; double th = (180. / M_PI) * FitUtils::th(Pnu, Ppip); GetPionBox()->fthpiVect.push_back(th); } } fXVar = 0; return; }; //******************************************************************** // The signal definition for MINERvA CCNpi+ // Last bool refers to if we're selecting on the full phase space or not bool MINERvA_CCNpip_XSec_1Dth_nu::isSignal(FitEvent *event) { //******************************************************************** - return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, !fFullPhaseSpace); + return SignalDef::isCCNpip_MINERvA(event, EnuMin, EnuMax, !fFullPhaseSpace, !fUpdatedData); } //******************************************************************** // Need to override FillHistograms() here because we fill the histogram N_pion times void MINERvA_CCNpip_XSec_1Dth_nu::FillHistograms() { //******************************************************************** if (Signal) { unsigned int nPions = GetPionBox()->fthpiVect.size(); // Need to loop over all the pions in the event for (size_t k = 0; k < nPions; ++k) { double th = GetPionBox()->fthpiVect[k]; this->fMCHist->Fill(th, Weight); this->fMCFine->Fill(th, Weight); this->fMCStat->Fill(th, 1.0); if (nPions == 1) { onePions->Fill(th, Weight); } else if (nPions == 2) { twoPions->Fill(th, Weight); } else if (nPions == 3) { threePions->Fill(th, Weight); } else if (nPions > 3) { morePions->Fill(th, Weight); } if (fMCHist_Modes) fMCHist_Modes->Fill(Mode, th, Weight); // PlotUtils::FillNeutModeArray(fMCHist_PDG, Mode, th, Weight); } } return; } //******************************************************************** void MINERvA_CCNpip_XSec_1Dth_nu::Write(std::string drawOpts) { //******************************************************************** Measurement1D::Write(drawOpts); // Draw the npions stack onePions->SetTitle("1#pi"); onePions->SetLineColor(kBlack); //onePions->SetFillStyle(0); onePions->SetFillColor(onePions->GetLineColor()); twoPions->SetTitle("2#pi"); twoPions->SetLineColor(kRed); //twoPions->SetFillStyle(0); twoPions->SetFillColor(twoPions->GetLineColor()); threePions->SetTitle("3#pi"); threePions->SetLineColor(kGreen); //threePions->SetFillStyle(0); threePions->SetFillColor(threePions->GetLineColor()); morePions->SetTitle(">3#pi"); morePions->SetLineColor(kBlue); //morePions->SetFillStyle(0); morePions->SetFillColor(morePions->GetLineColor()); THStack pionStack = THStack((fName + "_pionStack").c_str(), (fName + "_pionStack").c_str()); pionStack.Add(onePions); pionStack.Add(twoPions); pionStack.Add(threePions); pionStack.Add(morePions); pionStack.Write(); return; } diff --git a/src/MINERvA/MINERvA_SignalDef.cxx b/src/MINERvA/MINERvA_SignalDef.cxx index fa7d34c..2ecbd4b 100644 --- a/src/MINERvA/MINERvA_SignalDef.cxx +++ b/src/MINERvA/MINERvA_SignalDef.cxx @@ -1,271 +1,274 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #include "SignalDef.h" #include "FitUtils.h" #include "MINERvA_SignalDef.h" namespace SignalDef { // ********************************* // MINERvA CC1pi+/- signal definition (2015 release) // Note: There is a 2016 release which is different to this (listed below), but // it is CCNpi+ and has a different W cut // Note2: The W cut is implemented in the class implementation in MINERvA/ // rather than here so we can draw events that don't pass the W cut (W cut is // 1.4 GeV) // Could possibly be changed for slight speed increase since less events // would be used // // MINERvA signal is slightly different to MiniBooNE // // Exactly one negative muon // Exactly one charged pion (both + and -); however, there is a Michel e- // requirement but UNCLEAR IF UNFOLDED OR NOT (so don't know if should be // applied) // Exactly 1 charged pion exits (so + and - charge), however, has Michel // electron requirement, so look for + only here? // No restriction on neutral pions or other mesons // MINERvA has unfolded and not unfolded muon phase space for 2015 // // Possible issues with the data: // 1) pi- is allowed in signal even when Michel cut included; most pi- is efficiency corrected in GENIE // 2) There is a T_pi < 350 MeV cut coming from requiring a stopping pion; this is efficiency corrected in GENIE // 3) There is a 1.5 < Enu < 10.0 cut in signal definition // 4) There is an angular muon cut which is sometimes efficiency corrected (why we have bool isRestricted below) // // Nice things: // Much data given: with and without muon angle cuts and with and without shape // only data + covariance // bool isCC1pip_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool isRestricted) { // ********************************* // Signal is both pi+ and pi- // WARNING: PI- CONTAMINATION IS FULLY GENIE BECAUSE THE MICHEL TAG // First, make sure it's CCINC if (!isCCINC(event, 14, EnuMin, EnuMax)) return false; // Allow pi+/pi- int piPDG[] = {211, -211}; int nLeptons = event->NumFSLeptons(); int nPion = event->NumFSParticle(piPDG); // Check that the desired pion exists and is the only meson if (nPion != 1) return false; // Check that there is only one final state lepton if (nLeptons != 1) return false; // MINERvA released another CC1pi+ xsec without muon unfolding! // here the muon angle is < 20 degrees (seen in MINOS) TLorentzVector pnu = event->GetHMISParticle(14)->fP; TLorentzVector pmu = event->GetHMFSParticle(13)->fP; if (isRestricted) { double th_nu_mu = FitUtils::th(pmu, pnu) * 180. / M_PI; if (th_nu_mu >= 20) return false; } // Extract Hadronic Mass double hadMass = FitUtils::Wrec(pnu, pmu); // Actual cut is True GENIE Ws! Arg.! Use gNtpcConv definition. #ifdef __GENIE_ENABLED__ if (event->fType == kGENIE){ EventRecord * gevent = static_cast(event->genie_event->event); const Interaction * interaction = gevent->Summary(); const Kinematics & kine = interaction->Kine(); double Ws = kine.W (true); // std::cout << "Ws versus WRec = " << Ws << " vs " << hadMass << " " << kine.W(false) << std::endl; hadMass = Ws * 1000.0; } #endif if (hadMass > 1400.0) return false; return true; }; // ********************************* // MINERvA CCNpi+/- signal definition from 2016 publication // Different to CC1pi+/- listed above; additional has W < 1.8 GeV // // For notes on strangeness of signal definition, see CC1pip_MINERvA // // One negative muon // At least one charged pion // 1.5 < Enu < 10 // No restrictions on pi0 or other mesons or baryons // W_reconstructed (ignoring initial state motion) cut at 1.8 GeV // // Also writes number of pions (nPions) if studies on this want to be done... bool isCCNpip_MINERvA(FitEvent *event, double EnuMin, - double EnuMax, bool isRestricted) { + double EnuMax, bool isRestricted, bool isWtrue) { // ********************************* // First, make sure it's CCINC if (!isCCINC(event, 14, EnuMin, EnuMax)) return false; int nLeptons = event->NumFSLeptons(); // Write the number of pions to the measurement class... // Maybe better to just do that inside the class? int nPions = event->NumFSParticle(PhysConst::pdg_charged_pions); // Check that there is a pion! if (nPions == 0) return false; // Check that there is only one final state lepton if (nLeptons != 1) return false; // Need the muon and the neutrino to check angles and W TLorentzVector pnu = event->GetNeutrinoIn()->fP; TLorentzVector pmu = event->GetHMFSParticle(13)->fP; // MINERvA released some data with restricted muon angle // Here the muon angle is < 20 degrees (seen in MINOS) if (isRestricted) { double th_nu_mu = FitUtils::th(pmu, pnu) * 180. / M_PI; if (th_nu_mu >= 20.) return false; } // Lastly check the W cut (always at 1.8 GeV) double Wrec = FitUtils::Wrec(pnu, pmu) + 0.; // Actual cut is True GENIE Ws! Arg.! Use gNtpcConv definition. + if (isWtrue){ #ifdef __GENIE_ENABLED__ - if (event->fType == kGENIE){ - GHepRecord* ghep = static_cast(event->genie_event->event); - const Interaction * interaction = ghep->Summary(); - const Kinematics & kine = interaction->Kine(); - double Ws = kine.W (true); - Wrec = Ws * 1000.0; // Say Wrec is Ws - } + if (event->fType == kGENIE){ + GHepRecord* ghep = static_cast(event->genie_event->event); + const Interaction * interaction = ghep->Summary(); + const Kinematics & kine = interaction->Kine(); + double Ws = kine.W (true); + Wrec = Ws * 1000.0; // Say Wrec is Ws + } #endif + } + if (Wrec > 1800. || Wrec < 0.0) return false; return true; }; //******************************************************************** bool isCCQEnumu_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool fullphasespace) { //******************************************************************** if (!isCCQELike(event, 14, EnuMin, EnuMax)) return false; TLorentzVector pnu = event->GetHMISParticle(14)->fP; TLorentzVector pmu = event->GetHMFSParticle(13)->fP; double ThetaMu = pnu.Vect().Angle(pmu.Vect()); double Enu_rec = FitUtils::EnuQErec(pmu, cos(ThetaMu), 34., true); // If Restricted phase space if (!fullphasespace && ThetaMu > 0.34906585) return false; // restrict energy range if (Enu_rec < EnuMin || Enu_rec > EnuMax) return false; return true; }; //******************************************************************** bool isCCQEnumubar_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool fullphasespace) { //******************************************************************** if (!isCCQELike(event, -14, EnuMin, EnuMax)) return false; TLorentzVector pnu = event->GetHMISParticle(-14)->fP; TLorentzVector pmu = event->GetHMFSParticle(-13)->fP; double ThetaMu = pnu.Vect().Angle(pmu.Vect()); double Enu_rec = FitUtils::EnuQErec(pmu, cos(ThetaMu), 30., true); // If Restricted phase space if (!fullphasespace && ThetaMu > 0.34906585) return false; // restrict energy range if (Enu_rec < EnuMin || Enu_rec > EnuMax) return false; return true; } //******************************************************************** bool isCCincLowRecoil_MINERvA(FitEvent *event, double EnuMin, double EnuMax) { //******************************************************************** if (!isCCINC(event, 14, EnuMin, EnuMax)) return false; // Need at least one muon if (event->NumFSParticle(13) < 1) return false; TLorentzVector pmu = event->GetHMFSParticle(13)->fP; TLorentzVector pnu = event->GetHMISParticle(14)->fP; // Cut on muon angle greated than 20deg if (cos(pnu.Vect().Angle(pmu.Vect())) < 0.93969262078) return false; // Cut on muon energy < 1.5 GeV if (pmu.E()/1000.0 < 1.5) return false; return true; } bool isCC0pi1p_MINERvA(FitEvent *event, double enumin, double enumax) { // Require numu CC0pi event with a proton above threshold bool signal = (isCC0pi(event, 14, enumin, enumax) && HasProtonKEAboveThreshold(event, 110.0)); return signal; } // 2015 analysis just asks for 1pi0 and no pi+/pi- bool isCC1pi0_MINERvA_2015(FitEvent *event, double EnuMin, double EnuMax) { bool CC1pi0_anu = SignalDef::isCC1pi(event, -14, 111, EnuMin, EnuMax); return CC1pi0_anu; } // 2016 analysis just asks for 1pi0 and no other charged tracks bool isCC1pi0_MINERvA_2016(FitEvent *event, double EnuMin, double EnuMax) { bool CC1pi0_anu = SignalDef::isCC1pi(event, -14, 111, EnuMin, EnuMax); /* // Additionally look for charged proton track bool HasProton = event->HasFSParticle(2212); if (CC1pi0_anu) { if (!HasProton) { return true; } else { return false; } } else { return false; } */ return CC1pi0_anu; } } diff --git a/src/MINERvA/MINERvA_SignalDef.h b/src/MINERvA/MINERvA_SignalDef.h index 34e9ac2..f3bd8c7 100644 --- a/src/MINERvA/MINERvA_SignalDef.h +++ b/src/MINERvA/MINERvA_SignalDef.h @@ -1,92 +1,92 @@ // Copyright 2016 L. Pickering, P Stowell, R. Terri, C. Wilkinson, C. Wret /******************************************************************************* * This file is part of NUISANCE. * * NUISANCE is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NUISANCE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NUISANCE. If not, see . *******************************************************************************/ #ifndef MINERVA_SIGNALDEF_H_SEEN #define MINERVA_SIGNALDEF_H_SEEN #include "FitEvent.h" namespace SignalDef { // ********************************* /// MINERvA CC1pi+/- signal definition (2015 release) /// Note: There is a 2016 release which is different to this (listed below), /// but /// it is CCNpi+ and has a different W cut /// Note2: The W cut is implemented in the class implementation in MINERvA/ /// rather than here so we can draw events that don't pass the W cut (W cut is /// 1.4 GeV) /// Could possibly be changed for slight speed increase since less events /// would be used /// /// MINERvA signal is slightly different to MiniBooNE /// /// Exactly one negative muon /// Exactly one charged pion (both + and -); however, there is a Michel e- /// requirement but UNCLEAR IF UNFOLDED OR NOT (so don't know if should be /// applied) /// Exactly 1 charged pion exits (so + and - charge), however, has Michel /// electron requirement, so look for + only here? /// No restriction on neutral pions or other mesons /// MINERvA has unfolded and not unfolded muon phase space for 2015 /// /// Possible problems: /// 1) Should there be a pi+ only cut implemented due to Michel requirement, or /// is pi- events filled from MC? /// 2) There is a T_pi < 350 MeV cut coming from requiring a stopping pion so /// the /// Michel e is seen, this is also unclear if it's unfolded so any pion is OK /// /// Nice things: /// Much data given: with and without muon angle cuts and with and without shape /// only data + covariance bool isCC1pip_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool isRestricted = false); // ********************************* /// MINERvA CCNpi+/- signal definition from 2016 publication /// Different to CC1pi+/- listed above; additional has W < 1.8 GeV /// /// Still asks for a Michel e and still unclear if this is unfolded or not /// Says stuff like "requirement that a Michel e isolates a subsample that is /// more nearly a pi+ prodution", yet the signal definition is both pi+ and pi-? /// /// One negative muon /// At least one charged pion /// 1.5 < Enu < 10 /// No restrictions on pi0 or other mesons or baryons /// /// Also writes number of pions (nPions) if studies on this want to be done... bool isCCNpip_MINERvA(FitEvent *event, double EnuMin, double EnuMax, - bool isRestricted = false); + bool isRestricted = false, bool isWtrue=false); bool isCCQEnumu_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool fullphasespace = true); bool isCCQEnumubar_MINERvA(FitEvent *event, double EnuMin, double EnuMax, bool fullphasespace = true); bool isCCincLowRecoil_MINERvA(FitEvent *event, double EnuMin, double EnuMax); bool isCC0pi1p_MINERvA(FitEvent *event, double enumin, double enumax); bool isCC1pi0_MINERvA_2015(FitEvent *event, double EnuMin, double EnuMax); bool isCC1pi0_MINERvA_2016(FitEvent *event, double EnuMin, double EnuMax); } #endif