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