diff --git a/data/automation/scenario/observable_scenario_example.xml b/data/automation/scenario/observable_scenario_example.xml index 75f27ec2ad0f3c773618769241c477fa5c69fef4..9c80e97e1380ec57f45f723eda2356c38b962bea 100644 --- a/data/automation/scenario/observable_scenario_example.xml +++ b/data/automation/scenario/observable_scenario_example.xml @@ -11,7 +11,7 @@ - + diff --git a/database/insert_experimental_data/CLAS_ALU_asymmetries.dat b/database/insert_experimental_data/CLAS_ALU_asymmetries.dat index d9b2b26ff56b7daf45ec33b06404493662a2e489..c59a12c037749e41a81fd59eba910f5ad354fe50 100644 --- a/database/insert_experimental_data/CLAS_ALU_asymmetries.dat +++ b/database/insert_experimental_data/CLAS_ALU_asymmetries.dat @@ -17,172 +17,172 @@ EXPERIMENT "2015" "e + p -> e + p + gamma" "fixed target" #=============================================================================================================================== #==== data ====================================================================================================================== -# bin xB t Q2 Ebeam phi obs. value stat- stat+ sys- sys+ err_tot +# bin xB t Q2 Ebeam phi obs. value stat- stat+ sys- sys+ err_tot # - 0 0.19400 -0.11000 1.68000 5.93200 25.00000 Alu 0.37000 0.23000 0.23000 0.01000 0.01000 0.23022 - 0 0.19000 -0.12000 1.68000 5.93200 60.00000 Alu 0.34000 0.11000 0.11000 0.03000 0.03000 0.11402 - 0 0.18600 -0.13000 1.58000 5.93200 92.00000 Alu 0.23000 0.06000 0.06000 0.01000 0.01000 0.06083 - 0 0.17800 -0.13000 1.54000 5.93200 128.00000 Alu 0.13000 0.05000 0.05000 0.01000 0.01000 0.05099 - 0 0.17400 -0.13000 1.50000 5.93200 161.00000 Alu 0.05000 0.05000 0.05000 0.01000 0.01000 0.05099 - 0 0.17300 -0.13000 1.51000 5.93200 198.00000 Alu -0.05000 0.05000 0.05000 0.00000 0.00000 0.05000 - 0 0.17700 -0.13000 1.52000 5.93200 235.00000 Alu -0.21000 0.06000 0.06000 0.01000 0.01000 0.06083 - 0 0.18500 -0.13000 1.60000 5.93200 266.00000 Alu -0.28000 0.06000 0.06000 0.01000 0.01000 0.06083 - 0 0.19000 -0.12000 1.68000 5.93200 305.00000 Alu -0.15000 0.10000 0.10000 0.02000 0.02000 0.10198 - 1 0.19000 -0.21000 1.61000 5.93200 97.00000 Alu 0.19000 0.19000 0.19000 0.06000 0.06000 0.19925 - 1 0.18200 -0.23000 1.57000 5.93200 128.00000 Alu 0.17000 0.10000 0.10000 0.03000 0.03000 0.10440 - 1 0.17900 -0.23000 1.51000 5.93200 161.00000 Alu 0.09000 0.08000 0.08000 0.02000 0.02000 0.08246 - 1 0.17800 -0.23000 1.54000 5.93200 199.00000 Alu -0.12000 0.07000 0.07000 0.02000 0.02000 0.07280 - 1 0.18400 -0.23000 1.62000 5.93200 233.00000 Alu -0.18000 0.09000 0.09000 0.03000 0.03000 0.09487 - 1 0.19100 -0.22000 1.64000 5.93200 263.00000 Alu -0.12000 0.17000 0.17000 0.05000 0.05000 0.17720 - 2 0.18800 -0.49000 1.63000 5.93200 96.00000 Alu 0.39000 0.24000 0.24000 0.09000 0.09000 0.25632 - 2 0.18100 -0.47000 1.54000 5.93200 127.00000 Alu 0.18000 0.11000 0.11000 0.05000 0.05000 0.12083 - 2 0.17300 -0.49000 1.36000 5.93200 162.00000 Alu 0.21000 0.07000 0.07000 0.02000 0.02000 0.07280 - 2 0.17400 -0.46000 1.42000 5.93200 196.00000 Alu -0.07000 0.08000 0.08000 0.02000 0.02000 0.08246 - 2 0.18100 -0.43000 1.60000 5.93200 234.00000 Alu -0.22000 0.12000 0.12000 0.02000 0.02000 0.12166 - 2 0.18500 -0.51000 1.56000 5.93200 261.00000 Alu -0.04000 0.21000 0.21000 0.12000 0.12000 0.24187 - 3 0.18400 -1.35000 1.62000 5.93200 20.00000 Alu 0.13000 0.16000 0.16000 0.07000 0.07000 0.17464 - 3 0.17800 -1.21000 1.56000 5.93200 56.00000 Alu 0.01000 0.14000 0.14000 0.05000 0.05000 0.14866 - 3 0.17800 -1.02000 1.46000 5.93200 92.00000 Alu 0.12000 0.15000 0.15000 0.14000 0.14000 0.20518 - 3 0.17600 -1.01000 1.48000 5.93200 128.00000 Alu 0.20000 0.19000 0.19000 0.05000 0.05000 0.19647 - 3 0.17000 -1.00000 1.36000 5.93200 164.00000 Alu -0.09000 0.08000 0.08000 0.01000 0.01000 0.08062 - 3 0.17100 -0.97000 1.35000 5.93200 192.00000 Alu 0.06000 0.14000 0.14000 0.11000 0.11000 0.17804 - 3 0.17100 -1.07000 1.40000 5.93200 239.00000 Alu -0.22000 0.17000 0.17000 0.07000 0.07000 0.18385 - 3 0.17800 -1.03000 1.41000 5.93200 266.00000 Alu 0.04000 0.10000 0.10000 0.05000 0.05000 0.11180 - 3 0.17900 -1.24000 1.58000 5.93200 306.00000 Alu 0.01000 0.14000 0.14000 0.09000 0.09000 0.16643 - 3 0.18300 -1.35000 1.62000 5.93200 340.00000 Alu -0.11000 0.18000 0.18000 0.12000 0.12000 0.21633 - 4 0.25500 -0.13000 2.03000 5.93200 19.00000 Alu 0.03000 0.03000 0.03000 0.01000 0.01000 0.03162 - 4 0.25000 -0.14000 1.99000 5.93200 52.00000 Alu 0.17000 0.03000 0.03000 0.01000 0.01000 0.03162 - 4 0.23900 -0.14000 1.93000 5.93200 89.00000 Alu 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 - 4 0.23500 -0.14000 1.91000 5.93200 124.00000 Alu 0.16000 0.05000 0.05000 0.01000 0.01000 0.05099 - 4 0.22800 -0.14000 1.84000 5.93200 160.00000 Alu 0.03000 0.06000 0.06000 0.01000 0.01000 0.06083 - 4 0.23100 -0.14000 1.89000 5.93200 199.00000 Alu 0.02000 0.06000 0.06000 0.01000 0.01000 0.06083 - 4 0.23500 -0.14000 1.93000 5.93200 238.00000 Alu -0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 - 4 0.23900 -0.14000 1.94000 5.93200 270.00000 Alu -0.24000 0.04000 0.04000 0.01000 0.01000 0.04123 - 4 0.24800 -0.13000 1.97000 5.93200 308.00000 Alu -0.16000 0.03000 0.03000 0.01000 0.01000 0.03162 - 4 0.25500 -0.13000 2.03000 5.93200 340.00000 Alu -0.07000 0.03000 0.03000 0.00000 0.00000 0.03000 - 5 0.27600 -0.22000 2.23000 5.93200 21.00000 Alu 0.05000 0.05000 0.05000 0.01000 0.01000 0.05099 - 5 0.26800 -0.23000 2.12000 5.93200 53.00000 Alu 0.22000 0.04000 0.04000 0.01000 0.01000 0.04123 - 5 0.25100 -0.23000 2.01000 5.93200 91.00000 Alu 0.27000 0.04000 0.04000 0.01000 0.01000 0.04123 - 5 0.24800 -0.23000 1.91000 5.93200 124.00000 Alu 0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 - 5 0.24600 -0.24000 1.79000 5.93200 161.00000 Alu 0.03000 0.06000 0.06000 0.01000 0.01000 0.06083 - 5 0.24500 -0.24000 1.80000 5.93200 199.00000 Alu 0.02000 0.06000 0.06000 0.01000 0.01000 0.06083 - 5 0.24200 -0.23000 1.97000 5.93200 235.00000 Alu -0.11000 0.06000 0.06000 0.01000 0.01000 0.06083 - 5 0.24800 -0.23000 2.01000 5.93200 270.00000 Alu -0.31000 0.04000 0.04000 0.01000 0.01000 0.04123 - 5 0.26800 -0.23000 2.14000 5.93200 307.00000 Alu -0.28000 0.04000 0.04000 0.02000 0.02000 0.04472 - 5 0.27700 -0.22000 2.21000 5.93200 340.00000 Alu -0.05000 0.04000 0.04000 0.01000 0.01000 0.04123 - 6 0.28600 -0.40000 2.34000 5.93200 26.00000 Alu 0.22000 0.16000 0.16000 0.01000 0.01000 0.16031 - 6 0.27600 -0.45000 2.20000 5.93200 56.00000 Alu 0.21000 0.06000 0.06000 0.02000 0.02000 0.06325 - 6 0.25400 -0.44000 2.04000 5.93200 90.00000 Alu 0.14000 0.06000 0.06000 0.01000 0.01000 0.06083 - 6 0.25500 -0.45000 1.82000 5.93200 127.00000 Alu 0.08000 0.06000 0.06000 0.04000 0.04000 0.07211 - 6 0.25200 -0.48000 1.73000 5.93200 163.00000 Alu 0.06000 0.04000 0.04000 0.01000 0.01000 0.04123 - 6 0.25400 -0.47000 1.74000 5.93200 197.00000 Alu 0.02000 0.05000 0.05000 0.01000 0.01000 0.05099 - 6 0.25100 -0.44000 1.88000 5.93200 233.00000 Alu -0.13000 0.07000 0.07000 0.02000 0.02000 0.07280 - 6 0.25300 -0.46000 1.99000 5.93200 271.00000 Alu -0.20000 0.05000 0.05000 0.03000 0.03000 0.05831 - 6 0.27400 -0.45000 2.20000 5.93200 303.00000 Alu -0.30000 0.06000 0.06000 0.03000 0.03000 0.06708 - 6 0.28700 -0.40000 2.36000 5.93200 334.00000 Alu -0.21000 0.12000 0.12000 0.03000 0.03000 0.12369 - 7 0.26100 -1.41000 2.03000 5.93200 17.00000 Alu -0.04000 0.05000 0.05000 0.02000 0.02000 0.05385 - 7 0.25800 -1.12000 1.98000 5.93200 54.00000 Alu 0.10000 0.06000 0.06000 0.02000 0.02000 0.06325 - 7 0.25600 -1.18000 1.78000 5.93200 87.00000 Alu 0.05000 0.07000 0.07000 0.03000 0.03000 0.07616 - 7 0.26100 -1.13000 1.82000 5.93200 128.00000 Alu 0.14000 0.09000 0.09000 0.03000 0.03000 0.09487 - 7 0.25200 -1.03000 1.79000 5.93200 164.00000 Alu 0.03000 0.05000 0.05000 0.01000 0.01000 0.05099 - 7 0.25400 -1.03000 1.78000 5.93200 195.00000 Alu -0.03000 0.07000 0.07000 0.02000 0.02000 0.07280 - 7 0.25700 -1.23000 1.84000 5.93200 238.00000 Alu -0.05000 0.08000 0.08000 0.02000 0.02000 0.08246 - 7 0.25700 -1.14000 1.75000 5.93200 270.00000 Alu -0.02000 0.05000 0.05000 0.02000 0.02000 0.05385 - 7 0.26000 -1.12000 2.01000 5.93200 307.00000 Alu -0.07000 0.07000 0.07000 0.01000 0.01000 0.07071 - 7 0.26100 -1.40000 2.03000 5.93200 343.00000 Alu 0.00000 0.04000 0.04000 0.01000 0.01000 0.04123 - 8 0.26500 -0.13000 2.45000 5.93200 20.00000 Alu -0.02000 0.04000 0.04000 0.01000 0.01000 0.04123 - 8 0.25300 -0.14000 2.36000 5.93200 53.00000 Alu 0.07000 0.05000 0.05000 0.02000 0.02000 0.05385 - 8 0.24900 -0.14000 2.32000 5.93200 88.00000 Alu 0.17000 0.05000 0.05000 0.01000 0.01000 0.05099 - 8 0.24600 -0.14000 2.30000 5.93200 125.00000 Alu 0.20000 0.08000 0.08000 0.02000 0.02000 0.08246 - 8 0.24200 -0.14000 2.26000 5.93200 162.00000 Alu 0.20000 0.10000 0.10000 0.03000 0.03000 0.10440 - 8 0.24200 -0.14000 2.27000 5.93200 199.00000 Alu -0.07000 0.09000 0.09000 0.04000 0.04000 0.09849 - 8 0.24300 -0.14000 2.28000 5.93200 237.00000 Alu -0.29000 0.07000 0.07000 0.02000 0.02000 0.07280 - 8 0.24800 -0.14000 2.32000 5.93200 271.00000 Alu -0.22000 0.06000 0.06000 0.02000 0.02000 0.06325 - 8 0.25300 -0.14000 2.36000 5.93200 307.00000 Alu -0.14000 0.04000 0.04000 0.01000 0.01000 0.04123 - 8 0.26500 -0.14000 2.45000 5.93200 340.00000 Alu -0.01000 0.05000 0.05000 0.02000 0.02000 0.05385 - 9 0.28100 -0.22000 2.57000 5.93200 24.00000 Alu 0.03000 0.08000 0.08000 0.02000 0.02000 0.08246 - 9 0.26900 -0.23000 2.50000 5.93200 53.00000 Alu 0.11000 0.05000 0.05000 0.02000 0.02000 0.05385 - 9 0.25800 -0.23000 2.40000 5.93200 90.00000 Alu 0.19000 0.06000 0.06000 0.02000 0.02000 0.06325 - 9 0.25200 -0.23000 2.35000 5.93200 126.00000 Alu 0.16000 0.09000 0.09000 0.02000 0.02000 0.09220 - 9 0.25400 -0.23000 2.36000 5.93200 161.00000 Alu 0.10000 0.10000 0.10000 0.03000 0.03000 0.10440 - 9 0.25400 -0.23000 2.37000 5.93200 199.00000 Alu 0.02000 0.09000 0.09000 0.02000 0.02000 0.09220 - 9 0.25400 -0.23000 2.36000 5.93200 236.00000 Alu -0.17000 0.08000 0.08000 0.02000 0.02000 0.08246 - 9 0.26000 -0.23000 2.42000 5.93200 270.00000 Alu -0.23000 0.06000 0.06000 0.03000 0.03000 0.06708 - 9 0.26600 -0.23000 2.48000 5.93200 308.00000 Alu -0.15000 0.05000 0.05000 0.02000 0.02000 0.05385 - 9 0.27900 -0.22000 2.56000 5.93200 336.00000 Alu -0.01000 0.07000 0.07000 0.01000 0.01000 0.07071 - 10 0.28400 -0.41000 2.60000 5.93200 31.00000 Alu -0.18000 0.22000 0.22000 0.09000 0.09000 0.23770 - 10 0.27500 -0.44000 2.55000 5.93200 52.00000 Alu 0.17000 0.06000 0.06000 0.01000 0.01000 0.06083 - 10 0.26400 -0.44000 2.45000 5.93200 91.00000 Alu 0.20000 0.07000 0.07000 0.02000 0.02000 0.07280 - 10 0.25400 -0.44000 2.37000 5.93200 122.00000 Alu 0.23000 0.10000 0.10000 0.03000 0.03000 0.10440 - 10 0.25000 -0.41000 2.33000 5.93200 159.00000 Alu -0.15000 0.13000 0.13000 0.04000 0.04000 0.13601 - 10 0.25300 -0.41000 2.36000 5.93200 199.00000 Alu -0.02000 0.12000 0.12000 0.04000 0.04000 0.12649 - 10 0.25400 -0.43000 2.36000 5.93200 235.00000 Alu -0.28000 0.10000 0.10000 0.03000 0.03000 0.10440 - 10 0.26100 -0.45000 2.43000 5.93200 270.00000 Alu -0.26000 0.07000 0.07000 0.02000 0.02000 0.07280 - 10 0.27400 -0.45000 2.54000 5.93200 307.00000 Alu -0.24000 0.07000 0.07000 0.03000 0.03000 0.07616 - 10 0.28400 -0.42000 2.61000 5.93200 330.00000 Alu -0.15000 0.19000 0.19000 0.07000 0.07000 0.20248 - 11 0.26100 -1.22000 2.43000 5.93200 20.00000 Alu -0.01000 0.08000 0.08000 0.02000 0.02000 0.08246 - 11 0.26500 -1.06000 2.45000 5.93200 52.00000 Alu 0.14000 0.09000 0.09000 0.03000 0.03000 0.09487 - 11 0.25500 -0.96000 2.37000 5.93200 88.00000 Alu 0.18000 0.20000 0.20000 0.12000 0.12000 0.23324 - 11 0.26100 -0.96000 2.43000 5.93200 273.00000 Alu -0.31000 0.17000 0.17000 0.05000 0.05000 0.17720 - 11 0.26200 -1.08000 2.44000 5.93200 308.00000 Alu -0.16000 0.10000 0.10000 0.04000 0.04000 0.10770 - 11 0.26500 -1.23000 2.46000 5.93200 340.00000 Alu -0.04000 0.07000 0.07000 0.02000 0.02000 0.07280 - 12 0.31900 -0.16000 2.55000 5.93200 19.00000 Alu 0.13000 0.05000 0.05000 0.02000 0.02000 0.05385 - 12 0.31900 -0.16000 2.50000 5.93200 50.00000 Alu 0.25000 0.07000 0.07000 0.03000 0.03000 0.07616 - 12 0.32000 -0.16000 2.53000 5.93200 88.00000 Alu 0.37000 0.14000 0.14000 0.08000 0.08000 0.16125 - 12 0.31700 -0.16000 2.55000 5.93200 240.00000 Alu -0.13000 0.22000 0.22000 0.01000 0.01000 0.22023 - 12 0.32100 -0.16000 2.59000 5.93200 273.00000 Alu -0.12000 0.15000 0.15000 0.05000 0.05000 0.15811 - 12 0.31900 -0.16000 2.53000 5.93200 309.00000 Alu -0.21000 0.07000 0.07000 0.02000 0.02000 0.07280 - 12 0.31800 -0.16000 2.55000 5.93200 342.00000 Alu -0.12000 0.06000 0.06000 0.02000 0.02000 0.06325 - 13 0.33800 -0.24000 2.72000 5.93200 19.00000 Alu 0.08000 0.03000 0.03000 0.00000 0.00000 0.03000 - 13 0.33800 -0.24000 2.68000 5.93200 51.00000 Alu 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 - 13 0.33700 -0.24000 2.67000 5.93200 89.00000 Alu 0.16000 0.05000 0.05000 0.02000 0.02000 0.05385 - 13 0.33700 -0.25000 2.43000 5.93200 122.00000 Alu 0.13000 0.07000 0.07000 0.01000 0.01000 0.07071 - 13 0.32600 -0.25000 2.47000 5.93200 161.00000 Alu 0.14000 0.12000 0.12000 0.01000 0.01000 0.12042 - 13 0.32200 -0.25000 2.55000 5.93200 201.00000 Alu -0.07000 0.09000 0.09000 0.03000 0.03000 0.09487 - 13 0.33800 -0.24000 2.55000 5.93200 238.00000 Alu -0.20000 0.07000 0.07000 0.02000 0.02000 0.07280 - 13 0.33700 -0.24000 2.73000 5.93200 271.00000 Alu -0.26000 0.06000 0.06000 0.03000 0.03000 0.06708 - 13 0.33600 -0.24000 2.69000 5.93200 309.00000 Alu -0.26000 0.03000 0.03000 0.02000 0.02000 0.03606 - 13 0.33800 -0.24000 2.68000 5.93200 341.00000 Alu -0.04000 0.03000 0.03000 0.00000 0.00000 0.03000 - 14 0.35600 -0.44000 2.81000 5.93200 20.00000 Alu 0.09000 0.03000 0.03000 0.01000 0.01000 0.03162 - 14 0.34600 -0.46000 2.74000 5.93200 51.00000 Alu 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 - 14 0.34600 -0.45000 2.68000 5.93200 90.00000 Alu 0.15000 0.05000 0.05000 0.02000 0.02000 0.05385 - 14 0.34900 -0.47000 2.24000 5.93200 126.00000 Alu 0.07000 0.05000 0.05000 0.01000 0.01000 0.05099 - 14 0.33900 -0.49000 2.25000 5.93200 162.00000 Alu 0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 - 14 0.33900 -0.49000 2.23000 5.93200 202.00000 Alu -0.13000 0.06000 0.06000 0.02000 0.02000 0.06325 - 14 0.34700 -0.47000 2.43000 5.93200 232.00000 Alu -0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 - 14 0.34400 -0.47000 2.72000 5.93200 271.00000 Alu -0.22000 0.05000 0.05000 0.02000 0.02000 0.05385 - 14 0.34700 -0.45000 2.77000 5.93200 309.00000 Alu -0.21000 0.03000 0.03000 0.01000 0.01000 0.03162 - 14 0.35500 -0.45000 2.77000 5.93200 340.00000 Alu -0.15000 0.02000 0.02000 0.01000 0.01000 0.02236 - 15 0.35200 -1.30000 2.59000 5.93200 20.00000 Alu 0.02000 0.03000 0.03000 0.00000 0.00000 0.03000 - 15 0.34800 -1.09000 2.59000 5.93200 52.00000 Alu 0.13000 0.04000 0.04000 0.01000 0.01000 0.04123 - 15 0.35000 -1.28000 2.28000 5.93200 87.00000 Alu 0.12000 0.06000 0.06000 0.02000 0.02000 0.06325 - 15 0.35300 -1.09000 2.27000 5.93200 129.00000 Alu 0.08000 0.06000 0.06000 0.03000 0.03000 0.06708 - 15 0.34500 -1.06000 2.33000 5.93200 161.00000 Alu -0.00000 0.06000 0.06000 0.02000 0.02000 0.06325 - 15 0.34700 -1.06000 2.29000 5.93200 201.00000 Alu -0.00000 0.06000 0.06000 0.02000 0.02000 0.06325 - 15 0.35200 -1.23000 2.33000 5.93200 236.00000 Alu -0.01000 0.06000 0.06000 0.02000 0.02000 0.06325 - 15 0.34700 -1.23000 2.25000 5.93200 269.00000 Alu -0.04000 0.05000 0.05000 0.01000 0.01000 0.05099 - 15 0.34900 -1.09000 2.61000 5.93200 308.00000 Alu -0.11000 0.05000 0.05000 0.01000 0.01000 0.05099 - 15 0.35200 -1.28000 2.57000 5.93200 340.00000 Alu -0.02000 0.03000 0.03000 0.00000 0.00000 0.03000 - 16 0.41400 -0.27000 3.21000 5.93200 19.00000 Alu -0.24000 0.18000 0.18000 0.02000 0.02000 0.18111 - 16 0.41400 -0.27000 3.16000 5.93200 51.00000 Alu 0.22000 0.21000 0.21000 0.09000 0.09000 0.22847 - 17 0.44300 -0.51000 3.36000 5.93200 17.00000 Alu 0.07000 0.04000 0.04000 0.01000 0.01000 0.04123 - 17 0.44400 -0.49000 3.41000 5.93200 52.00000 Alu 0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 - 17 0.44800 -0.49000 3.25000 5.93200 89.00000 Alu 0.24000 0.07000 0.07000 0.03000 0.03000 0.07616 - 17 0.43000 -0.53000 2.84000 5.93200 124.00000 Alu 0.12000 0.09000 0.09000 0.05000 0.05000 0.10296 - 17 0.42000 -0.57000 2.93000 5.93200 155.00000 Alu -0.08000 0.24000 0.24000 0.08000 0.08000 0.25298 - 17 0.42100 -0.58000 2.94000 5.93200 207.00000 Alu -0.44000 0.23000 0.23000 0.06000 0.06000 0.23770 - 17 0.43500 -0.50000 2.95000 5.93200 238.00000 Alu -0.04000 0.11000 0.11000 0.05000 0.05000 0.12083 - 17 0.44000 -0.48000 3.33000 5.93200 271.00000 Alu -0.08000 0.08000 0.08000 0.02000 0.02000 0.08246 - 17 0.44500 -0.50000 3.46000 5.93200 310.00000 Alu -0.28000 0.05000 0.05000 0.02000 0.02000 0.05385 - 17 0.44300 -0.52000 3.35000 5.93200 342.00000 Alu -0.08000 0.03000 0.03000 0.01000 0.01000 0.03162 - 18 0.46500 -1.12000 3.37000 5.93200 18.00000 Alu 0.06000 0.03000 0.03000 0.01000 0.01000 0.03162 - 18 0.46500 -1.13000 3.46000 5.93200 52.00000 Alu 0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 - 18 0.45900 -1.27000 3.18000 5.93200 89.00000 Alu -0.00000 0.07000 0.07000 0.02000 0.02000 0.07280 - 18 0.45600 -1.15000 3.13000 5.93200 126.00000 Alu 0.11000 0.06000 0.06000 0.01000 0.01000 0.06083 - 18 0.43400 -1.18000 3.30000 5.93200 159.00000 Alu 0.07000 0.11000 0.11000 0.09000 0.09000 0.14213 - 18 0.43000 -1.09000 3.11000 5.93200 203.00000 Alu -0.10000 0.13000 0.13000 0.03000 0.03000 0.13342 - 18 0.45500 -1.25000 3.16000 5.93200 236.00000 Alu -0.06000 0.07000 0.07000 0.01000 0.01000 0.07071 - 18 0.45400 -1.35000 3.12000 5.93200 269.00000 Alu -0.02000 0.06000 0.06000 0.02000 0.02000 0.06325 - 18 0.46700 -1.10000 3.49000 5.93200 310.00000 Alu -0.31000 0.06000 0.06000 0.04000 0.04000 0.07211 - 18 0.46400 -1.15000 3.36000 5.93200 342.00000 Alu -0.07000 0.03000 0.03000 0.01000 0.01000 0.03162 + 0 0.19400 -0.11000 1.68000 5.93200 25.00000 DVCSAluMinus 0.37000 0.23000 0.23000 0.01000 0.01000 0.23022 + 0 0.19000 -0.12000 1.68000 5.93200 60.00000 DVCSAluMinus 0.34000 0.11000 0.11000 0.03000 0.03000 0.11402 + 0 0.18600 -0.13000 1.58000 5.93200 92.00000 DVCSAluMinus 0.23000 0.06000 0.06000 0.01000 0.01000 0.06083 + 0 0.17800 -0.13000 1.54000 5.93200 128.00000 DVCSAluMinus 0.13000 0.05000 0.05000 0.01000 0.01000 0.05099 + 0 0.17400 -0.13000 1.50000 5.93200 161.00000 DVCSAluMinus 0.05000 0.05000 0.05000 0.01000 0.01000 0.05099 + 0 0.17300 -0.13000 1.51000 5.93200 198.00000 DVCSAluMinus -0.05000 0.05000 0.05000 0.00000 0.00000 0.05000 + 0 0.17700 -0.13000 1.52000 5.93200 235.00000 DVCSAluMinus -0.21000 0.06000 0.06000 0.01000 0.01000 0.06083 + 0 0.18500 -0.13000 1.60000 5.93200 266.00000 DVCSAluMinus -0.28000 0.06000 0.06000 0.01000 0.01000 0.06083 + 0 0.19000 -0.12000 1.68000 5.93200 305.00000 DVCSAluMinus -0.15000 0.10000 0.10000 0.02000 0.02000 0.10198 + 1 0.19000 -0.21000 1.61000 5.93200 97.00000 DVCSAluMinus 0.19000 0.19000 0.19000 0.06000 0.06000 0.19925 + 1 0.18200 -0.23000 1.57000 5.93200 128.00000 DVCSAluMinus 0.17000 0.10000 0.10000 0.03000 0.03000 0.10440 + 1 0.17900 -0.23000 1.51000 5.93200 161.00000 DVCSAluMinus 0.09000 0.08000 0.08000 0.02000 0.02000 0.08246 + 1 0.17800 -0.23000 1.54000 5.93200 199.00000 DVCSAluMinus -0.12000 0.07000 0.07000 0.02000 0.02000 0.07280 + 1 0.18400 -0.23000 1.62000 5.93200 233.00000 DVCSAluMinus -0.18000 0.09000 0.09000 0.03000 0.03000 0.09487 + 1 0.19100 -0.22000 1.64000 5.93200 263.00000 DVCSAluMinus -0.12000 0.17000 0.17000 0.05000 0.05000 0.17720 + 2 0.18800 -0.49000 1.63000 5.93200 96.00000 DVCSAluMinus 0.39000 0.24000 0.24000 0.09000 0.09000 0.25632 + 2 0.18100 -0.47000 1.54000 5.93200 127.00000 DVCSAluMinus 0.18000 0.11000 0.11000 0.05000 0.05000 0.12083 + 2 0.17300 -0.49000 1.36000 5.93200 162.00000 DVCSAluMinus 0.21000 0.07000 0.07000 0.02000 0.02000 0.07280 + 2 0.17400 -0.46000 1.42000 5.93200 196.00000 DVCSAluMinus -0.07000 0.08000 0.08000 0.02000 0.02000 0.08246 + 2 0.18100 -0.43000 1.60000 5.93200 234.00000 DVCSAluMinus -0.22000 0.12000 0.12000 0.02000 0.02000 0.12166 + 2 0.18500 -0.51000 1.56000 5.93200 261.00000 DVCSAluMinus -0.04000 0.21000 0.21000 0.12000 0.12000 0.24187 + 3 0.18400 -1.35000 1.62000 5.93200 20.00000 DVCSAluMinus 0.13000 0.16000 0.16000 0.07000 0.07000 0.17464 + 3 0.17800 -1.21000 1.56000 5.93200 56.00000 DVCSAluMinus 0.01000 0.14000 0.14000 0.05000 0.05000 0.14866 + 3 0.17800 -1.02000 1.46000 5.93200 92.00000 DVCSAluMinus 0.12000 0.15000 0.15000 0.14000 0.14000 0.20518 + 3 0.17600 -1.01000 1.48000 5.93200 128.00000 DVCSAluMinus 0.20000 0.19000 0.19000 0.05000 0.05000 0.19647 + 3 0.17000 -1.00000 1.36000 5.93200 164.00000 DVCSAluMinus -0.09000 0.08000 0.08000 0.01000 0.01000 0.08062 + 3 0.17100 -0.97000 1.35000 5.93200 192.00000 DVCSAluMinus 0.06000 0.14000 0.14000 0.11000 0.11000 0.17804 + 3 0.17100 -1.07000 1.40000 5.93200 239.00000 DVCSAluMinus -0.22000 0.17000 0.17000 0.07000 0.07000 0.18385 + 3 0.17800 -1.03000 1.41000 5.93200 266.00000 DVCSAluMinus 0.04000 0.10000 0.10000 0.05000 0.05000 0.11180 + 3 0.17900 -1.24000 1.58000 5.93200 306.00000 DVCSAluMinus 0.01000 0.14000 0.14000 0.09000 0.09000 0.16643 + 3 0.18300 -1.35000 1.62000 5.93200 340.00000 DVCSAluMinus -0.11000 0.18000 0.18000 0.12000 0.12000 0.21633 + 4 0.25500 -0.13000 2.03000 5.93200 19.00000 DVCSAluMinus 0.03000 0.03000 0.03000 0.01000 0.01000 0.03162 + 4 0.25000 -0.14000 1.99000 5.93200 52.00000 DVCSAluMinus 0.17000 0.03000 0.03000 0.01000 0.01000 0.03162 + 4 0.23900 -0.14000 1.93000 5.93200 89.00000 DVCSAluMinus 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 + 4 0.23500 -0.14000 1.91000 5.93200 124.00000 DVCSAluMinus 0.16000 0.05000 0.05000 0.01000 0.01000 0.05099 + 4 0.22800 -0.14000 1.84000 5.93200 160.00000 DVCSAluMinus 0.03000 0.06000 0.06000 0.01000 0.01000 0.06083 + 4 0.23100 -0.14000 1.89000 5.93200 199.00000 DVCSAluMinus 0.02000 0.06000 0.06000 0.01000 0.01000 0.06083 + 4 0.23500 -0.14000 1.93000 5.93200 238.00000 DVCSAluMinus -0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 + 4 0.23900 -0.14000 1.94000 5.93200 270.00000 DVCSAluMinus -0.24000 0.04000 0.04000 0.01000 0.01000 0.04123 + 4 0.24800 -0.13000 1.97000 5.93200 308.00000 DVCSAluMinus -0.16000 0.03000 0.03000 0.01000 0.01000 0.03162 + 4 0.25500 -0.13000 2.03000 5.93200 340.00000 DVCSAluMinus -0.07000 0.03000 0.03000 0.00000 0.00000 0.03000 + 5 0.27600 -0.22000 2.23000 5.93200 21.00000 DVCSAluMinus 0.05000 0.05000 0.05000 0.01000 0.01000 0.05099 + 5 0.26800 -0.23000 2.12000 5.93200 53.00000 DVCSAluMinus 0.22000 0.04000 0.04000 0.01000 0.01000 0.04123 + 5 0.25100 -0.23000 2.01000 5.93200 91.00000 DVCSAluMinus 0.27000 0.04000 0.04000 0.01000 0.01000 0.04123 + 5 0.24800 -0.23000 1.91000 5.93200 124.00000 DVCSAluMinus 0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 + 5 0.24600 -0.24000 1.79000 5.93200 161.00000 DVCSAluMinus 0.03000 0.06000 0.06000 0.01000 0.01000 0.06083 + 5 0.24500 -0.24000 1.80000 5.93200 199.00000 DVCSAluMinus 0.02000 0.06000 0.06000 0.01000 0.01000 0.06083 + 5 0.24200 -0.23000 1.97000 5.93200 235.00000 DVCSAluMinus -0.11000 0.06000 0.06000 0.01000 0.01000 0.06083 + 5 0.24800 -0.23000 2.01000 5.93200 270.00000 DVCSAluMinus -0.31000 0.04000 0.04000 0.01000 0.01000 0.04123 + 5 0.26800 -0.23000 2.14000 5.93200 307.00000 DVCSAluMinus -0.28000 0.04000 0.04000 0.02000 0.02000 0.04472 + 5 0.27700 -0.22000 2.21000 5.93200 340.00000 DVCSAluMinus -0.05000 0.04000 0.04000 0.01000 0.01000 0.04123 + 6 0.28600 -0.40000 2.34000 5.93200 26.00000 DVCSAluMinus 0.22000 0.16000 0.16000 0.01000 0.01000 0.16031 + 6 0.27600 -0.45000 2.20000 5.93200 56.00000 DVCSAluMinus 0.21000 0.06000 0.06000 0.02000 0.02000 0.06325 + 6 0.25400 -0.44000 2.04000 5.93200 90.00000 DVCSAluMinus 0.14000 0.06000 0.06000 0.01000 0.01000 0.06083 + 6 0.25500 -0.45000 1.82000 5.93200 127.00000 DVCSAluMinus 0.08000 0.06000 0.06000 0.04000 0.04000 0.07211 + 6 0.25200 -0.48000 1.73000 5.93200 163.00000 DVCSAluMinus 0.06000 0.04000 0.04000 0.01000 0.01000 0.04123 + 6 0.25400 -0.47000 1.74000 5.93200 197.00000 DVCSAluMinus 0.02000 0.05000 0.05000 0.01000 0.01000 0.05099 + 6 0.25100 -0.44000 1.88000 5.93200 233.00000 DVCSAluMinus -0.13000 0.07000 0.07000 0.02000 0.02000 0.07280 + 6 0.25300 -0.46000 1.99000 5.93200 271.00000 DVCSAluMinus -0.20000 0.05000 0.05000 0.03000 0.03000 0.05831 + 6 0.27400 -0.45000 2.20000 5.93200 303.00000 DVCSAluMinus -0.30000 0.06000 0.06000 0.03000 0.03000 0.06708 + 6 0.28700 -0.40000 2.36000 5.93200 334.00000 DVCSAluMinus -0.21000 0.12000 0.12000 0.03000 0.03000 0.12369 + 7 0.26100 -1.41000 2.03000 5.93200 17.00000 DVCSAluMinus -0.04000 0.05000 0.05000 0.02000 0.02000 0.05385 + 7 0.25800 -1.12000 1.98000 5.93200 54.00000 DVCSAluMinus 0.10000 0.06000 0.06000 0.02000 0.02000 0.06325 + 7 0.25600 -1.18000 1.78000 5.93200 87.00000 DVCSAluMinus 0.05000 0.07000 0.07000 0.03000 0.03000 0.07616 + 7 0.26100 -1.13000 1.82000 5.93200 128.00000 DVCSAluMinus 0.14000 0.09000 0.09000 0.03000 0.03000 0.09487 + 7 0.25200 -1.03000 1.79000 5.93200 164.00000 DVCSAluMinus 0.03000 0.05000 0.05000 0.01000 0.01000 0.05099 + 7 0.25400 -1.03000 1.78000 5.93200 195.00000 DVCSAluMinus -0.03000 0.07000 0.07000 0.02000 0.02000 0.07280 + 7 0.25700 -1.23000 1.84000 5.93200 238.00000 DVCSAluMinus -0.05000 0.08000 0.08000 0.02000 0.02000 0.08246 + 7 0.25700 -1.14000 1.75000 5.93200 270.00000 DVCSAluMinus -0.02000 0.05000 0.05000 0.02000 0.02000 0.05385 + 7 0.26000 -1.12000 2.01000 5.93200 307.00000 DVCSAluMinus -0.07000 0.07000 0.07000 0.01000 0.01000 0.07071 + 7 0.26100 -1.40000 2.03000 5.93200 343.00000 DVCSAluMinus 0.00000 0.04000 0.04000 0.01000 0.01000 0.04123 + 8 0.26500 -0.13000 2.45000 5.93200 20.00000 DVCSAluMinus -0.02000 0.04000 0.04000 0.01000 0.01000 0.04123 + 8 0.25300 -0.14000 2.36000 5.93200 53.00000 DVCSAluMinus 0.07000 0.05000 0.05000 0.02000 0.02000 0.05385 + 8 0.24900 -0.14000 2.32000 5.93200 88.00000 DVCSAluMinus 0.17000 0.05000 0.05000 0.01000 0.01000 0.05099 + 8 0.24600 -0.14000 2.30000 5.93200 125.00000 DVCSAluMinus 0.20000 0.08000 0.08000 0.02000 0.02000 0.08246 + 8 0.24200 -0.14000 2.26000 5.93200 162.00000 DVCSAluMinus 0.20000 0.10000 0.10000 0.03000 0.03000 0.10440 + 8 0.24200 -0.14000 2.27000 5.93200 199.00000 DVCSAluMinus -0.07000 0.09000 0.09000 0.04000 0.04000 0.09849 + 8 0.24300 -0.14000 2.28000 5.93200 237.00000 DVCSAluMinus -0.29000 0.07000 0.07000 0.02000 0.02000 0.07280 + 8 0.24800 -0.14000 2.32000 5.93200 271.00000 DVCSAluMinus -0.22000 0.06000 0.06000 0.02000 0.02000 0.06325 + 8 0.25300 -0.14000 2.36000 5.93200 307.00000 DVCSAluMinus -0.14000 0.04000 0.04000 0.01000 0.01000 0.04123 + 8 0.26500 -0.14000 2.45000 5.93200 340.00000 DVCSAluMinus -0.01000 0.05000 0.05000 0.02000 0.02000 0.05385 + 9 0.28100 -0.22000 2.57000 5.93200 24.00000 DVCSAluMinus 0.03000 0.08000 0.08000 0.02000 0.02000 0.08246 + 9 0.26900 -0.23000 2.50000 5.93200 53.00000 DVCSAluMinus 0.11000 0.05000 0.05000 0.02000 0.02000 0.05385 + 9 0.25800 -0.23000 2.40000 5.93200 90.00000 DVCSAluMinus 0.19000 0.06000 0.06000 0.02000 0.02000 0.06325 + 9 0.25200 -0.23000 2.35000 5.93200 126.00000 DVCSAluMinus 0.16000 0.09000 0.09000 0.02000 0.02000 0.09220 + 9 0.25400 -0.23000 2.36000 5.93200 161.00000 DVCSAluMinus 0.10000 0.10000 0.10000 0.03000 0.03000 0.10440 + 9 0.25400 -0.23000 2.37000 5.93200 199.00000 DVCSAluMinus 0.02000 0.09000 0.09000 0.02000 0.02000 0.09220 + 9 0.25400 -0.23000 2.36000 5.93200 236.00000 DVCSAluMinus -0.17000 0.08000 0.08000 0.02000 0.02000 0.08246 + 9 0.26000 -0.23000 2.42000 5.93200 270.00000 DVCSAluMinus -0.23000 0.06000 0.06000 0.03000 0.03000 0.06708 + 9 0.26600 -0.23000 2.48000 5.93200 308.00000 DVCSAluMinus -0.15000 0.05000 0.05000 0.02000 0.02000 0.05385 + 9 0.27900 -0.22000 2.56000 5.93200 336.00000 DVCSAluMinus -0.01000 0.07000 0.07000 0.01000 0.01000 0.07071 + 10 0.28400 -0.41000 2.60000 5.93200 31.00000 DVCSAluMinus -0.18000 0.22000 0.22000 0.09000 0.09000 0.23770 + 10 0.27500 -0.44000 2.55000 5.93200 52.00000 DVCSAluMinus 0.17000 0.06000 0.06000 0.01000 0.01000 0.06083 + 10 0.26400 -0.44000 2.45000 5.93200 91.00000 DVCSAluMinus 0.20000 0.07000 0.07000 0.02000 0.02000 0.07280 + 10 0.25400 -0.44000 2.37000 5.93200 122.00000 DVCSAluMinus 0.23000 0.10000 0.10000 0.03000 0.03000 0.10440 + 10 0.25000 -0.41000 2.33000 5.93200 159.00000 DVCSAluMinus -0.15000 0.13000 0.13000 0.04000 0.04000 0.13601 + 10 0.25300 -0.41000 2.36000 5.93200 199.00000 DVCSAluMinus -0.02000 0.12000 0.12000 0.04000 0.04000 0.12649 + 10 0.25400 -0.43000 2.36000 5.93200 235.00000 DVCSAluMinus -0.28000 0.10000 0.10000 0.03000 0.03000 0.10440 + 10 0.26100 -0.45000 2.43000 5.93200 270.00000 DVCSAluMinus -0.26000 0.07000 0.07000 0.02000 0.02000 0.07280 + 10 0.27400 -0.45000 2.54000 5.93200 307.00000 DVCSAluMinus -0.24000 0.07000 0.07000 0.03000 0.03000 0.07616 + 10 0.28400 -0.42000 2.61000 5.93200 330.00000 DVCSAluMinus -0.15000 0.19000 0.19000 0.07000 0.07000 0.20248 + 11 0.26100 -1.22000 2.43000 5.93200 20.00000 DVCSAluMinus -0.01000 0.08000 0.08000 0.02000 0.02000 0.08246 + 11 0.26500 -1.06000 2.45000 5.93200 52.00000 DVCSAluMinus 0.14000 0.09000 0.09000 0.03000 0.03000 0.09487 + 11 0.25500 -0.96000 2.37000 5.93200 88.00000 DVCSAluMinus 0.18000 0.20000 0.20000 0.12000 0.12000 0.23324 + 11 0.26100 -0.96000 2.43000 5.93200 273.00000 DVCSAluMinus -0.31000 0.17000 0.17000 0.05000 0.05000 0.17720 + 11 0.26200 -1.08000 2.44000 5.93200 308.00000 DVCSAluMinus -0.16000 0.10000 0.10000 0.04000 0.04000 0.10770 + 11 0.26500 -1.23000 2.46000 5.93200 340.00000 DVCSAluMinus -0.04000 0.07000 0.07000 0.02000 0.02000 0.07280 + 12 0.31900 -0.16000 2.55000 5.93200 19.00000 DVCSAluMinus 0.13000 0.05000 0.05000 0.02000 0.02000 0.05385 + 12 0.31900 -0.16000 2.50000 5.93200 50.00000 DVCSAluMinus 0.25000 0.07000 0.07000 0.03000 0.03000 0.07616 + 12 0.32000 -0.16000 2.53000 5.93200 88.00000 DVCSAluMinus 0.37000 0.14000 0.14000 0.08000 0.08000 0.16125 + 12 0.31700 -0.16000 2.55000 5.93200 240.00000 DVCSAluMinus -0.13000 0.22000 0.22000 0.01000 0.01000 0.22023 + 12 0.32100 -0.16000 2.59000 5.93200 273.00000 DVCSAluMinus -0.12000 0.15000 0.15000 0.05000 0.05000 0.15811 + 12 0.31900 -0.16000 2.53000 5.93200 309.00000 DVCSAluMinus -0.21000 0.07000 0.07000 0.02000 0.02000 0.07280 + 12 0.31800 -0.16000 2.55000 5.93200 342.00000 DVCSAluMinus -0.12000 0.06000 0.06000 0.02000 0.02000 0.06325 + 13 0.33800 -0.24000 2.72000 5.93200 19.00000 DVCSAluMinus 0.08000 0.03000 0.03000 0.00000 0.00000 0.03000 + 13 0.33800 -0.24000 2.68000 5.93200 51.00000 DVCSAluMinus 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 + 13 0.33700 -0.24000 2.67000 5.93200 89.00000 DVCSAluMinus 0.16000 0.05000 0.05000 0.02000 0.02000 0.05385 + 13 0.33700 -0.25000 2.43000 5.93200 122.00000 DVCSAluMinus 0.13000 0.07000 0.07000 0.01000 0.01000 0.07071 + 13 0.32600 -0.25000 2.47000 5.93200 161.00000 DVCSAluMinus 0.14000 0.12000 0.12000 0.01000 0.01000 0.12042 + 13 0.32200 -0.25000 2.55000 5.93200 201.00000 DVCSAluMinus -0.07000 0.09000 0.09000 0.03000 0.03000 0.09487 + 13 0.33800 -0.24000 2.55000 5.93200 238.00000 DVCSAluMinus -0.20000 0.07000 0.07000 0.02000 0.02000 0.07280 + 13 0.33700 -0.24000 2.73000 5.93200 271.00000 DVCSAluMinus -0.26000 0.06000 0.06000 0.03000 0.03000 0.06708 + 13 0.33600 -0.24000 2.69000 5.93200 309.00000 DVCSAluMinus -0.26000 0.03000 0.03000 0.02000 0.02000 0.03606 + 13 0.33800 -0.24000 2.68000 5.93200 341.00000 DVCSAluMinus -0.04000 0.03000 0.03000 0.00000 0.00000 0.03000 + 14 0.35600 -0.44000 2.81000 5.93200 20.00000 DVCSAluMinus 0.09000 0.03000 0.03000 0.01000 0.01000 0.03162 + 14 0.34600 -0.46000 2.74000 5.93200 51.00000 DVCSAluMinus 0.20000 0.03000 0.03000 0.01000 0.01000 0.03162 + 14 0.34600 -0.45000 2.68000 5.93200 90.00000 DVCSAluMinus 0.15000 0.05000 0.05000 0.02000 0.02000 0.05385 + 14 0.34900 -0.47000 2.24000 5.93200 126.00000 DVCSAluMinus 0.07000 0.05000 0.05000 0.01000 0.01000 0.05099 + 14 0.33900 -0.49000 2.25000 5.93200 162.00000 DVCSAluMinus 0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 + 14 0.33900 -0.49000 2.23000 5.93200 202.00000 DVCSAluMinus -0.13000 0.06000 0.06000 0.02000 0.02000 0.06325 + 14 0.34700 -0.47000 2.43000 5.93200 232.00000 DVCSAluMinus -0.06000 0.06000 0.06000 0.01000 0.01000 0.06083 + 14 0.34400 -0.47000 2.72000 5.93200 271.00000 DVCSAluMinus -0.22000 0.05000 0.05000 0.02000 0.02000 0.05385 + 14 0.34700 -0.45000 2.77000 5.93200 309.00000 DVCSAluMinus -0.21000 0.03000 0.03000 0.01000 0.01000 0.03162 + 14 0.35500 -0.45000 2.77000 5.93200 340.00000 DVCSAluMinus -0.15000 0.02000 0.02000 0.01000 0.01000 0.02236 + 15 0.35200 -1.30000 2.59000 5.93200 20.00000 DVCSAluMinus 0.02000 0.03000 0.03000 0.00000 0.00000 0.03000 + 15 0.34800 -1.09000 2.59000 5.93200 52.00000 DVCSAluMinus 0.13000 0.04000 0.04000 0.01000 0.01000 0.04123 + 15 0.35000 -1.28000 2.28000 5.93200 87.00000 DVCSAluMinus 0.12000 0.06000 0.06000 0.02000 0.02000 0.06325 + 15 0.35300 -1.09000 2.27000 5.93200 129.00000 DVCSAluMinus 0.08000 0.06000 0.06000 0.03000 0.03000 0.06708 + 15 0.34500 -1.06000 2.33000 5.93200 161.00000 DVCSAluMinus -0.00000 0.06000 0.06000 0.02000 0.02000 0.06325 + 15 0.34700 -1.06000 2.29000 5.93200 201.00000 DVCSAluMinus -0.00000 0.06000 0.06000 0.02000 0.02000 0.06325 + 15 0.35200 -1.23000 2.33000 5.93200 236.00000 DVCSAluMinus -0.01000 0.06000 0.06000 0.02000 0.02000 0.06325 + 15 0.34700 -1.23000 2.25000 5.93200 269.00000 DVCSAluMinus -0.04000 0.05000 0.05000 0.01000 0.01000 0.05099 + 15 0.34900 -1.09000 2.61000 5.93200 308.00000 DVCSAluMinus -0.11000 0.05000 0.05000 0.01000 0.01000 0.05099 + 15 0.35200 -1.28000 2.57000 5.93200 340.00000 DVCSAluMinus -0.02000 0.03000 0.03000 0.00000 0.00000 0.03000 + 16 0.41400 -0.27000 3.21000 5.93200 19.00000 DVCSAluMinus -0.24000 0.18000 0.18000 0.02000 0.02000 0.18111 + 16 0.41400 -0.27000 3.16000 5.93200 51.00000 DVCSAluMinus 0.22000 0.21000 0.21000 0.09000 0.09000 0.22847 + 17 0.44300 -0.51000 3.36000 5.93200 17.00000 DVCSAluMinus 0.07000 0.04000 0.04000 0.01000 0.01000 0.04123 + 17 0.44400 -0.49000 3.41000 5.93200 52.00000 DVCSAluMinus 0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 + 17 0.44800 -0.49000 3.25000 5.93200 89.00000 DVCSAluMinus 0.24000 0.07000 0.07000 0.03000 0.03000 0.07616 + 17 0.43000 -0.53000 2.84000 5.93200 124.00000 DVCSAluMinus 0.12000 0.09000 0.09000 0.05000 0.05000 0.10296 + 17 0.42000 -0.57000 2.93000 5.93200 155.00000 DVCSAluMinus -0.08000 0.24000 0.24000 0.08000 0.08000 0.25298 + 17 0.42100 -0.58000 2.94000 5.93200 207.00000 DVCSAluMinus -0.44000 0.23000 0.23000 0.06000 0.06000 0.23770 + 17 0.43500 -0.50000 2.95000 5.93200 238.00000 DVCSAluMinus -0.04000 0.11000 0.11000 0.05000 0.05000 0.12083 + 17 0.44000 -0.48000 3.33000 5.93200 271.00000 DVCSAluMinus -0.08000 0.08000 0.08000 0.02000 0.02000 0.08246 + 17 0.44500 -0.50000 3.46000 5.93200 310.00000 DVCSAluMinus -0.28000 0.05000 0.05000 0.02000 0.02000 0.05385 + 17 0.44300 -0.52000 3.35000 5.93200 342.00000 DVCSAluMinus -0.08000 0.03000 0.03000 0.01000 0.01000 0.03162 + 18 0.46500 -1.12000 3.37000 5.93200 18.00000 DVCSAluMinus 0.06000 0.03000 0.03000 0.01000 0.01000 0.03162 + 18 0.46500 -1.13000 3.46000 5.93200 52.00000 DVCSAluMinus 0.21000 0.05000 0.05000 0.02000 0.02000 0.05385 + 18 0.45900 -1.27000 3.18000 5.93200 89.00000 DVCSAluMinus -0.00000 0.07000 0.07000 0.02000 0.02000 0.07280 + 18 0.45600 -1.15000 3.13000 5.93200 126.00000 DVCSAluMinus 0.11000 0.06000 0.06000 0.01000 0.01000 0.06083 + 18 0.43400 -1.18000 3.30000 5.93200 159.00000 DVCSAluMinus 0.07000 0.11000 0.11000 0.09000 0.09000 0.14213 + 18 0.43000 -1.09000 3.11000 5.93200 203.00000 DVCSAluMinus -0.10000 0.13000 0.13000 0.03000 0.03000 0.13342 + 18 0.45500 -1.25000 3.16000 5.93200 236.00000 DVCSAluMinus -0.06000 0.07000 0.07000 0.01000 0.01000 0.07071 + 18 0.45400 -1.35000 3.12000 5.93200 269.00000 DVCSAluMinus -0.02000 0.06000 0.06000 0.02000 0.02000 0.06325 + 18 0.46700 -1.10000 3.49000 5.93200 310.00000 DVCSAluMinus -0.31000 0.06000 0.06000 0.04000 0.04000 0.07211 + 18 0.46400 -1.15000 3.36000 5.93200 342.00000 DVCSAluMinus -0.07000 0.03000 0.03000 0.01000 0.01000 0.03162 #================================================================================================================================ diff --git a/include/partons/ModuleObject.h b/include/partons/ModuleObject.h index a706e23d8fd0bddc650869271d5c9bdbcbd564aa..ff6d691a317fd372ccf0b760aa591252f58e7421 100644 --- a/include/partons/ModuleObject.h +++ b/include/partons/ModuleObject.h @@ -1,5 +1,5 @@ -#ifndef BASE_MODULE_H -#define BASE_MODULE_H +#ifndef MODULE_OBJECT_H +#define MODULE_OBJECT_H /** * @file ModuleObject.h @@ -103,4 +103,4 @@ private: unsigned int m_referenceModuleId; }; -#endif /* BASE_MODULE_H */ +#endif /* MODULE_OBJECT_H */ diff --git a/include/partons/ModuleObjectFactory.h b/include/partons/ModuleObjectFactory.h index 8b93d4c99a7fef35991875694257fcc649ffd29e..d396a4b61f69e88d6442f70ed712b6b986eeb6c3 100644 --- a/include/partons/ModuleObjectFactory.h +++ b/include/partons/ModuleObjectFactory.h @@ -13,7 +13,7 @@ #include "ModuleObjectReference.h" -class ActiveFlavorsModule; +class ActiveFlavorsThresholdsModule; class BaseObjectFactory; class DoubleDistributionModule; class DVCSConvolCoeffFunctionModule; @@ -29,7 +29,7 @@ class Observable; class ProcessModule; class RadonInverseModule; class RunningAlphaStrongModule; -class ScaleModule; +class ScalesModule; class XiConverterModule; /** @@ -209,30 +209,30 @@ public: ProcessModule* newProcessModule(const std::string &className); /** - * Specialization of ModuleObjectFactory::newModuleObject into a ActiveFlavorsModule. + * Specialization of ModuleObjectFactory::newModuleObject into a ActiveFlavorsThresholdsModule. * @param classId Unique identifier of last child class. - * @return ActiveFlavorsModule pointer. + * @return ActiveFlavorsThresholdsModule pointer. */ - ActiveFlavorsModule* newActiveFlavorsModule(unsigned int classId); + ActiveFlavorsThresholdsModule* newActiveFlavorsThresholdsModule(unsigned int classId); /** * Specialization of ModuleObjectFactory::newModuleObject into a ActiveFlavorsModule. * @param className Name of last child class. * @return ActiveFlavorsModule pointer. */ - ActiveFlavorsModule* newActiveFlavorsModule(const std::string &className); + ActiveFlavorsThresholdsModule* newActiveFlavorsThresholdsModule(const std::string &className); /** - * Specialization of ModuleObjectFactory::newModuleObject into a ScaleModule. + * Specialization of ModuleObjectFactory::newModuleObject into a ScalesModule. * @param classId Unique identifier of last child class. - * @return ScaleModule pointer. + * @return ScalesModule pointer. */ - ScaleModule* newScaleModule(unsigned int classId); + ScalesModule* newScalesModule(unsigned int classId); /** * Specialization of ModuleObjectFactory::newModuleObject into a ScaleModule. * @param className Name of last child class. * @return ScaleModule pointer. */ - ScaleModule* newScaleModule(const std::string &className); + ScalesModule* newScalesModule(const std::string &className); /** * Specialization of ModuleObjectFactory::newModuleObject into a XiConverterModule. diff --git a/include/partons/beans/Scale.h b/include/partons/beans/Scales.h similarity index 86% rename from include/partons/beans/Scale.h rename to include/partons/beans/Scales.h index 84dfbdb02980cb8bfecb9abbc09a6094f94b821f..78f14e58f6b7951750ad8b66c53bd05a9a60338d 100644 --- a/include/partons/beans/Scale.h +++ b/include/partons/beans/Scales.h @@ -1,15 +1,11 @@ -#ifndef SCALE_H -#define SCALE_H +#ifndef SCALES_H +#define SCALES_H /** - * @file Scale.h + * @file Scales.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date 07 October 2015 * @version 1.0 - * - * @class Scale - * - * @brief */ #include @@ -17,7 +13,7 @@ #include "../BaseObject.h" /** - * @class Scale + * @class Scales * * @brief Container to store square values of factorization and renormalization scales. * @@ -31,18 +27,18 @@ //E.g. double Q2 = 2.; - Scale scale1 = pQ2Multiplier->compute(Q2); + Scales scales1 = pQ2Multiplier->compute(Q2); - Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Factorization scale squared is: " << scale1.getMuF2() << " GeV2"); - Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Renormalization scale squared is: " << scale1.getMuR2() << " GeV2"); + Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Factorization scale squared is: " << scales1.getMuF2() << " GeV2"); + Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Renormalization scale squared is: " << scales1.getMuR2() << " GeV2"); //let us change lambda parameter and recalculate scales pQ2Multiplier->configure(ElemUtils::Parameters(Q2Multiplier::PARAMETER_NAME_LAMBDA, 2.)); - Scale scale2 = pQ2Multiplier->compute(Q2); + Scales scales2 = pQ2Multiplier->compute(Q2); - Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Factorization scale squared is: " << scale2.getMuF2() << " GeV2"); - Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Renormalization scale squared is: " << scale2.getMuR2() << " GeV2"); + Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Factorization scale squared is: " << scales2.getMuF2() << " GeV2"); + Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "Renormalization scale squared is: " << scales2.getMuR2() << " GeV2"); \endcode which gives via Logger: \code @@ -53,25 +49,25 @@ 20-05-2017 11:15:14 [INFO] (example::main) Renormalization scale squared is: 4 GeV2 \endcode */ -class Scale: public BaseObject { +class Scales: public BaseObject { public: /** * Default constructor. */ - Scale(); + Scales(); /** * Assignment constructor. * @param MuF2 Squared value of factorization scale to be set. * @param MuR2 Squared value of renormalization scale to be set. */ - Scale(double MuF2, double MuR2); + Scales(double MuF2, double MuR2); /** * Destructor. */ - virtual ~Scale(); + virtual ~Scales(); //******************************************************** //*** SETTERS AND GETTERS ******************************** @@ -112,4 +108,4 @@ private: double m_MuR2; }; -#endif /* SCALE_H */ +#endif /* SCALES_H */ diff --git a/include/partons/beans/active_flavors/NfInterval.h b/include/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.h similarity index 85% rename from include/partons/beans/active_flavors/NfInterval.h rename to include/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.h index 2c8096d6edd77386f05866cb3e4458fd7b055b97..5f44726f99e1b8a53c17834901cfe338f3cd4e60 100644 --- a/include/partons/beans/active_flavors/NfInterval.h +++ b/include/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.h @@ -1,8 +1,8 @@ -#ifndef NF_INTERVAL_H -#define NF_INTERVAL_H +#ifndef ACTIVE_FLAVORS_THRESHOLDS_H +#define ACTIVE_FLAVORS_THRESHOLDS_H /** - * @file NfInterval.h + * @file ActiveFlavorsThresholds.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date 07 August 2015 * @version 1.0 @@ -11,20 +11,20 @@ #include /** - * @class NfInterval + * @class ActiveFlavorsThresholds * * @brief Interval of factorization scale with fixed number of flavors. * * This class is used to indicate an interval of factorization scale where a fixed number of quark flavors is active. */ -class NfInterval { +class ActiveFlavorsThresholds { public: /** * Default constructor. */ - NfInterval(); + ActiveFlavorsThresholds(); /** * Assignment constructor. @@ -33,13 +33,13 @@ public: * @param upperBound Upper bound of the interval. * @param index Index of interval. */ - NfInterval(unsigned short nf, double lowerBound, double upperBound, + ActiveFlavorsThresholds(unsigned short nf, double lowerBound, double upperBound, unsigned int index); /** * Destructor. */ - virtual ~NfInterval(); + virtual ~ActiveFlavorsThresholds(); /** * Relation operator that checks if the value of left operand is less than the value of right operand (in this case returned is this->m_nf < other.m_nf). @@ -47,7 +47,7 @@ public: * @param other Right hand value. * @return True if the value of left operand is less than the value of right operand, otherwise false. */ - bool operator <(const NfInterval &other) const; + bool operator <(const ActiveFlavorsThresholds &other) const; /** * Return a pre-formatted characters string for output visualization of class member's values @@ -123,4 +123,4 @@ private: unsigned int m_index; }; -#endif /* NF_INTERVAL_H */ +#endif /* ACTIVE_FLAVORS_THRESHOLDS_H */ diff --git a/include/partons/beans/observable/ObservableKinematic.h b/include/partons/beans/observable/ObservableKinematic.h index 4ebf68d81a14679726123792d4e92d95208f2b47..b63bf2a08f54b948bfbd6c692c4d41668bbd3eee 100644 --- a/include/partons/beans/observable/ObservableKinematic.h +++ b/include/partons/beans/observable/ObservableKinematic.h @@ -50,7 +50,7 @@ class Parameters; pDVCSModule->setConvolCoeffFunctionModule(pDVCSCFFModule); //load observable module with BaseModuleFactory - Observable* pObservable = Partons::getInstance()->getModuleObjectFactory()->newObservable(All::classId); + Observable* pObservable = Partons::getInstance()->getModuleObjectFactory()->newObservable(DVCSAllMinus::classId); //configure observable module pObservable->setProcessModule(pDVCSModule); diff --git a/include/partons/modules/ActiveFlavorsModule.h b/include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.h similarity index 70% rename from include/partons/modules/ActiveFlavorsModule.h rename to include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.h index 9f7f5274c59f1c39e8c2cf7f99daf58fa7b9ace2..12e99b40178e5ad79ae60cc5d79bd3aeecb64a45 100644 --- a/include/partons/modules/ActiveFlavorsModule.h +++ b/include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.h @@ -1,8 +1,8 @@ -#ifndef ACTIVE_FLAVORS_MODULE_H -#define ACTIVE_FLAVORS_MODULE_H +#ifndef ACTIVE_FLAVORS_THRESHOLDS_MODULE_H +#define ACTIVE_FLAVORS_THRESHOLDS_MODULE_H /** - * @file ActiveFlavorsModule.h + * @file ActiveFlavorsThresholdsModule.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date August 07, 2015 * @version 1.0 @@ -12,41 +12,41 @@ #include #include -#include "../beans/active_flavors/NfInterval.h" -#include "../beans/automation/BaseObjectData.h" -#include "../ModuleObject.h" +#include "../../beans/active_flavors_thresholds/ActiveFlavorsThresholds.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../ModuleObject.h" -class NfInterval; +class ActiveFlavorsThresholds; /** - * @class ActiveFlavorsModule + * @class ActiveFlavorsThresholdsModule * * @brief Abstract class for modules defining number of quark flavors intervals. * * This class acts as an abstract (mother) class for modules that define the number of quark flavors intervals. * These intervals are used e.g. by the evolution modules to evaluate the number of active quark flavors for a given factorization scale. */ -class ActiveFlavorsModule: public ModuleObject { +class ActiveFlavorsThresholdsModule: public ModuleObject { public: /** * Type of module name used by the automatization. */ - static const std::string ACTIVE_FLAVORS_MODULE_CLASS_NAME; + static const std::string ACTIVE_FLAVORS_THRESHOLDS_MODULE_CLASS_NAME; /** * Constructor. * @param className Name of class. */ - ActiveFlavorsModule(const std::string &className); + ActiveFlavorsThresholdsModule(const std::string &className); /** * Destructor. */ - virtual ~ActiveFlavorsModule(); + virtual ~ActiveFlavorsThresholdsModule(); - virtual ActiveFlavorsModule* clone() const = 0; + virtual ActiveFlavorsThresholdsModule* clone() const = 0; virtual void resolveObjectDependencies(); /** @@ -64,14 +64,14 @@ public: * @param MuMax Factorization scale maximum value. * @return If lowerBound > upperBound a single interval with the number of active flavors corresponding to lowerBound is returned. Otherwise, a vector containing intervals for the requested range of factorization scale. */ - std::vector getNfIntervals(double MuMin, double MuMax); + std::vector getNfIntervals(double MuMin, double MuMax); /** * Get interval for a specific value of the factorization scale. * @param Mu Factorization scale value. * @return Requested interval. If Mu is smaller than the lower bound of the first defined interval returns this interval. If Mu is larger than the upper bound of the last defined interval returns this interval. */ - NfInterval getNfInterval(double Mu); + ActiveFlavorsThresholds getNfInterval(double Mu); virtual std::string toString() const; virtual void prepareSubModules( @@ -83,7 +83,7 @@ protected: * Copy constructor. * @param other Object to be copied. */ - ActiveFlavorsModule(const ActiveFlavorsModule &other); + ActiveFlavorsThresholdsModule(const ActiveFlavorsThresholdsModule &other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -93,7 +93,7 @@ private: /** * Vector containing defined integrals. */ - std::vector m_nfFunctionOfMu; + std::vector m_nfFunctionOfMu; /** * Perform a set of test in order to check the consistency of defined integrals. @@ -101,4 +101,4 @@ private: void checkCurveIntegrity(); }; -#endif /* ACTIVE_FLAVORS_MODULE_H */ +#endif /* ACTIVE_FLAVORS_THRESHOLDS_MODULE_H */ diff --git a/include/partons/modules/active_flavors/NfFunctionExample.h b/include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h similarity index 66% rename from include/partons/modules/active_flavors/NfFunctionExample.h rename to include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h index 8fc7ccf439d42609724637cfc3c783428b6b9470..ac32ba5f8f866e0890b7082c3286c714bfcff213 100644 --- a/include/partons/modules/active_flavors/NfFunctionExample.h +++ b/include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h @@ -1,8 +1,8 @@ -#ifndef NF_FUNCTIONEXAMPLE_H -#define NF_FUNCTIONEXAMPLE_H +#ifndef ACTIVE_FLAVORS_THRESHOLDS_QUARK_MASSES_H +#define ACTIVE_FLAVORS_THRESHOLDS_QUARK_MASSES_H /** - * @file NfFunctionExample.h + * @file ActiveFlavorsThresholdsQuarkMasses.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date 07 August 2015 * @version 1.0 @@ -10,10 +10,10 @@ #include -#include "../ActiveFlavorsModule.h" +#include "ActiveFlavorsThresholdsModule.h" /** - * @class NfFunctionExample + * @class ActiveFlavorsThresholdsQuarkMasses * * @brief Number of active quark flavors intervals corresponding to quark masses. * @@ -28,7 +28,7 @@ 6 | QUARK_BOTTOM_MASS\f$^2\f$ | QUARK_TOP_MASS\f$^2\f$ * The quark masses are defined in `FundamentalPhysicalConstants.h` file. */ -class NfFunctionExample: public ActiveFlavorsModule { +class ActiveFlavorsThresholdsQuarkMasses: public ActiveFlavorsThresholdsModule { public: @@ -41,14 +41,14 @@ public: * Constructor. * @param className Name of this class. */ - NfFunctionExample(const std::string &className); + ActiveFlavorsThresholdsQuarkMasses(const std::string &className); /** * Destructor. */ - virtual ~NfFunctionExample(); + virtual ~ActiveFlavorsThresholdsQuarkMasses(); - virtual NfFunctionExample* clone() const; + virtual ActiveFlavorsThresholdsQuarkMasses* clone() const; protected: @@ -56,10 +56,10 @@ protected: * Copy constructor. * @param other Object to be copied. */ - NfFunctionExample(const NfFunctionExample &other); + ActiveFlavorsThresholdsQuarkMasses(const ActiveFlavorsThresholdsQuarkMasses &other); virtual void initModule(); virtual void isModuleWellConfigured(); }; -#endif /* NF_FUNCTIONEXAMPLE_H */ +#endif /* ACTIVE_FLAVORS_THRESHOLDS_QUARK_MASSES_H */ diff --git a/include/partons/modules/ConvolCoeffFunctionModule.h b/include/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.h similarity index 92% rename from include/partons/modules/ConvolCoeffFunctionModule.h rename to include/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.h index 6ac3c7e1623617c416b7f33c5e219d66535d37a5..54891997b206f8ee9785b83de81dc11166fd05b6 100644 --- a/include/partons/modules/ConvolCoeffFunctionModule.h +++ b/include/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.h @@ -13,13 +13,13 @@ #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionKinematic.h" -#include "../beans/gpd/GPDType.h" -#include "../beans/List.h" -#include "../beans/observable/ObservableChannel.h" -#include "../ModuleObject.h" -#include "MathIntegratorModule.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionKinematic.h" +#include "../../beans/gpd/GPDType.h" +#include "../../beans/List.h" +#include "../../beans/observable/ObservableChannel.h" +#include "../../ModuleObject.h" +#include "../MathIntegratorModule.h" class GPDModule; diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.h similarity index 88% rename from include/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.h rename to include/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.h index 3a183930908acd1714c9c4abd8f31ef674726043..5c84692fd4c3e8d0acfc8cb4f0d4dfca6db0282a 100644 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.h +++ b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.h @@ -1,29 +1,29 @@ -#ifndef DVCS_CONSTANT_CFF_MODULE_H -#define DVCS_CONSTANT_CFF_MODULE_H +#ifndef DVCS_CFF_CONSTANT_H +#define DVCS_CFF_CONSTANT_H /** - * @file DVCSConstantCFFModel.h + * @file DVCSCFFConstant.h * @author Nabil CHOUIKA (SPhN / CEA Saclay) * @author Pawel Sznajder (IPNO) * @date 09 November 2014 * @version 1.0 */ +#include +#include #include #include #include -#include -#include #include "../../../beans/gpd/GPDType.h" #include "DVCSConvolCoeffFunctionModule.h" /** - * @class DVCSConstantCFFModel + * @class DVCSCFFConstant * * Module to set CFF values via automation or via configure() function. */ -class DVCSConstantCFFModel: public DVCSConvolCoeffFunctionModule { +class DVCSCFFConstant: public DVCSConvolCoeffFunctionModule { public: @@ -45,14 +45,14 @@ public: * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. * @param className Name of last child class. */ - DVCSConstantCFFModel(const std::string &className); + DVCSCFFConstant(const std::string &className); - virtual DVCSConstantCFFModel* clone() const; + virtual DVCSCFFConstant* clone() const; /** * Default destructor. */ - virtual ~DVCSConstantCFFModel(); + virtual ~DVCSCFFConstant(); virtual void configure(const ElemUtils::Parameters ¶meters); virtual std::complex computeCFF(); @@ -87,7 +87,7 @@ protected: * Copy constructor. @param other Object to be copied. */ - DVCSConstantCFFModel(const DVCSConstantCFFModel &other); + DVCSCFFConstant(const DVCSCFFConstant &other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -116,4 +116,4 @@ private: std::map > m_CFFs; }; -#endif /* DVCS_CONSTANT_CFF_MODULE_H */ +#endif /* DVCS_CFF_CONSTANT_H */ diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.h similarity index 83% rename from include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.h rename to include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.h index a9bbffd05260dd05f72a1d847f0bd63e2d55d829..a526726578859cb562189040325aec08c431930f 100644 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.h +++ b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.h @@ -1,8 +1,8 @@ -#ifndef DVCSCFFDISPERSIONRELATIONMODEL_H_ -#define DVCSCFFDISPERSIONRELATIONMODEL_H_ +#ifndef DVCS_CFF_DISPERSION_RELATION_H +#define DVCS_CFF_DISPERSION_RELATION_H /** - * @file DVCSCFFDispersionRelationModel.h + * @file DVCSCFFDispersionRelation.h * @author Pawel Sznajder (IPNO) * @date Oct 17, 2016 * @version 1.0 @@ -10,9 +10,11 @@ #include #include +#include #include #include +#include "../../../beans/automation/BaseObjectData.h" #include "DVCSConvolCoeffFunctionModule.h" class GPDSubtractionConstantModule; @@ -24,11 +26,11 @@ class FunctionType1D; } /** - * @class DVCSCFFDispersionRelationModel + * @class DVCSCFFDispersionRelation * * Dispersion relation DVCS/CFF model. TODO: Add description. */ -class DVCSCFFDispersionRelationModel: public DVCSConvolCoeffFunctionModule { +class DVCSCFFDispersionRelation: public DVCSConvolCoeffFunctionModule { public: @@ -40,14 +42,14 @@ public: * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. * @param className Name of last child class. */ - DVCSCFFDispersionRelationModel(const std::string &className); + DVCSCFFDispersionRelation(const std::string &className); /** * Destructor. */ - virtual ~DVCSCFFDispersionRelationModel(); + virtual ~DVCSCFFDispersionRelation(); - virtual DVCSCFFDispersionRelationModel* clone() const; + virtual DVCSCFFDispersionRelation* clone() const; virtual void resolveObjectDependencies(); virtual void configure(const ElemUtils::Parameters ¶meters); virtual void prepareSubModules( @@ -70,7 +72,7 @@ protected: /** Copy constructor. * @param other Object to be copied. */ - DVCSCFFDispersionRelationModel(const DVCSCFFDispersionRelationModel &other); + DVCSCFFDispersionRelation(const DVCSCFFDispersionRelation &other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -113,4 +115,4 @@ private: GPDSubtractionConstantModule* m_pSubtractionConstantModule; ///< Subtraction constant module. }; -#endif /* DVCSCFFDISPERSIONRELATIONMODEL_H_ */ +#endif /* DVCS_CFF_DISPERSION_RELATION_H */ diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.h similarity index 80% rename from include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.h rename to include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.h index b69aa0bb2991da2c75f6b2a4a1b743e1501ffc84..b8f9e78fabd2405ec6c0c375fbb3aa90319bf02f 100644 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.h +++ b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.h @@ -1,8 +1,8 @@ -#ifndef DVCS_CFF_HEAVY_QUARK_MODEL_H -#define DVCS_CFF_HEAVY_QUARK_MODEL_H +#ifndef DVCS_CFF_HEAVY_QUARK_H +#define DVCS_CFF_HEAVY_QUARK_H /** - * @file DVCSCFFHeavyQuarkModel.h + * @file DVCSCFFHeavyQuark.h * @author jakub * @date 11 February 2015 * @version 1.0 @@ -12,16 +12,16 @@ #include #include -#include "DVCSCFFModel.h" +#include "DVCSCFFStandard.h" /** - * @class DVCSCFFHeavyQuarkModel + * @class DVCSCFFHeavyQuark * * TODO: Add description. * * Available CFF types: H, E, Ht, Et. */ -class DVCSCFFHeavyQuarkModel: public DVCSCFFModel { +class DVCSCFFHeavyQuark: public DVCSCFFStandard { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -32,14 +32,14 @@ public: * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. * @param className Name of last child class. */ - DVCSCFFHeavyQuarkModel(const std::string &className); + DVCSCFFHeavyQuark(const std::string &className); - virtual DVCSCFFHeavyQuarkModel* clone() const; + virtual DVCSCFFHeavyQuark* clone() const; /** * Default destructor. */ - virtual ~DVCSCFFHeavyQuarkModel(); + virtual ~DVCSCFFHeavyQuark(); virtual void resolveObjectDependencies(); @@ -48,7 +48,7 @@ protected: * Copy constructor * @param other */ - DVCSCFFHeavyQuarkModel(const DVCSCFFHeavyQuarkModel &other); + DVCSCFFHeavyQuark(const DVCSCFFHeavyQuark &other); // virtual void initModule(); // virtual void isModuleWellConfigured(); @@ -83,4 +83,4 @@ private: void initFunctorsForIntegrations(); ///< Initialize functors. }; -#endif /* DVCS_CFF_HEAVY_QUARK_MODEL_H */ +#endif /* DVCS_CFF_HEAVY_QUARK_H */ diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.h similarity index 92% rename from include/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.h rename to include/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.h index e1e13a93495555e76b527479fecfbfce1fd74d9f..28fccc99a5f7bcb17582809442fe34a08547d181 100644 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.h +++ b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.h @@ -1,8 +1,8 @@ -#ifndef DVCS_CFF_MODULE_H -#define DVCS_CFF_MODULE_H +#ifndef DVCS_CFF_STANDARD_H +#define DVCS_CFF_STANDARD_H /** - * @file DVCSCFFModel.h + * @file DVCSCFFStandard.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @author Hervé MOUTARDE (SPhN / CEA Saclay) * @date September 08, 2014 @@ -22,13 +22,13 @@ class FunctionType1D; class PartonDistribution; /** - * @class DVCSCFFModel + * @class DVCSCFFStandard * * TODO: Add description. * * Available CFF types: H, E, Ht, Et. */ -class DVCSCFFModel: public DVCSConvolCoeffFunctionModule { +class DVCSCFFStandard: public DVCSConvolCoeffFunctionModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -38,14 +38,14 @@ public: * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. * @param className Name of last child class. */ - DVCSCFFModel(const std::string &className); + DVCSCFFStandard(const std::string &className); - virtual DVCSCFFModel* clone() const; + virtual DVCSCFFStandard* clone() const; /** * Default destructor. */ - virtual ~DVCSCFFModel(); + virtual ~DVCSCFFStandard(); virtual void resolveObjectDependencies(); @@ -56,7 +56,7 @@ protected: * Copy constructor. * @param other */ - DVCSCFFModel(const DVCSCFFModel &other); + DVCSCFFStandard(const DVCSCFFStandard &other); double m_logQ2OverMu2; @@ -134,4 +134,4 @@ private: void initFunctorsForIntegrations(); ///< Initialize functors. }; -#endif /* DVCS_CFF_MODULE_H */ +#endif /* DVCS_CFF_STANDARD_H */ diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.h deleted file mode 100644 index 5a96b8f6b823e380a14390b90abe00517fda4d5b..0000000000000000000000000000000000000000 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.h +++ /dev/null @@ -1,114 +0,0 @@ -#ifndef DVCSCFFVGGMODEL_H_ -#define DVCSCFFVGGMODEL_H_ - -/** - * @file DVCSCFFVGGModel.h - * @author Pawel Sznajder (IPNO) - * @author Michel Guidal (IPNO) - * @date Dec 20, 2015 - * @version 1.0 - */ - -#include -#include -#include - -#include "DVCSConvolCoeffFunctionModule.h" - -class PartonDistribution; - -namespace NumA { -class FunctionType1D; -} - -/** - * @class DVCSCFFVGGModel - * - * VGG DVCS/CFF model. - * - * Model implemented for the cross-check between original VGG code and PARTONS VGG1999Model process module. - * It is not recommended to use this model for the values xi < 0.01 as a loss of numerical precision may appear. - * - * Available CFF types: H, E, Ht, Et. - */ -class DVCSCFFVGGModel: public DVCSConvolCoeffFunctionModule { - -public: - - static const std::string PARAMETER_NAME_EPS; ///< Name of parameter to set #eps_cffint via configure() - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - /** - * Constructor. - * - * See BaseObject::BaseObject and ModuleObject::ModuleObject for more details. - * @param className Name of last child class. - */ - DVCSCFFVGGModel(const std::string &className); ///< constructor - - virtual DVCSCFFVGGModel* clone() const; - /** - * Default destructor. - */ - virtual ~DVCSCFFVGGModel(); - virtual void resolveObjectDependencies(); - virtual void configure(const ElemUtils::Parameters ¶meters); - -protected: - - /** Copy constructor. - @param other Object to be copied. - */ - DVCSCFFVGGModel(const DVCSCFFVGGModel &other); ///< copy constructor - - virtual void initModule(); - virtual void isModuleWellConfigured(); - -private: - - double eps_cffint; ///< Step to avoid the evaluation at x = xi - double xixit; ///< Value of GPD at (xi, xi, t) - - virtual std::complex computeUnpolarized(); - virtual std::complex computePolarized(); - - /** Calculate contribution coming from the direct diagram - */ - std::complex calculate_direct(); - - /** Calculate contribution coming from the crossed diagram - */ - std::complex calculate_crossed(); - - /** Compute sum of singlet combinations of GPDs weighted by quark charges - * @param partonDistribution Singlet combinations to be calculated - */ - double calculate_gpd_combination( - const PartonDistribution &partonDistribution); - - /** Compute GPDs at (xi, xi, t) - */ - void calculate_xixit_value(); - - /** Wrapper for the x integral and the direct diagram - * @param x GPD variable - * @param par Additional parameters - */ - double intd_vector_part(double x, std::vector par); - - /** Wrapper for the x integral and the crossed diagram - * @param x GPD variable - * @param par Additional parameters - */ - double intc_vector_part(double x, std::vector par); - - NumA::FunctionType1D* m_pIntd_vector_part; ///< Functor related to intd_vector_part() - NumA::FunctionType1D* m_pIntc_vector_part; ///< Functor related to intc_vector_part() - - /** Initialize functors - */ - void initFunctorsForIntegrations(); -}; - -#endif /* DVCSCFFVGGMODEL_H_ */ diff --git a/include/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.h b/include/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.h index 23e36186a6068978247ec9dc1517e3e5cc0833ee..ee38bbd4f9df5a826df37fb913ca7d53d3b41bb7 100644 --- a/include/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.h +++ b/include/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.h @@ -17,9 +17,9 @@ #include "../../../beans/gpd/GPDType.h" #include "../../../beans/List.h" #include "../../../beans/PerturbativeQCDOrderType.h" -#include "../../ConvolCoeffFunctionModule.h" +#include "../ConvolCoeffFunctionModule.h" -class ActiveFlavorsModule; +class ActiveFlavorsThresholdsModule; class DVCSConvolCoeffFunctionResult; class RunningAlphaStrongModule; @@ -90,7 +90,7 @@ public: */ void setQCDOrderType(PerturbativeQCDOrderType::Type qcdOrderType); - void setNfConvolCoeffFunction(ActiveFlavorsModule* pNfConvolCoeffFunction); + void setNfConvolCoeffFunction(ActiveFlavorsThresholdsModule* pNfConvolCoeffFunction); /** * * @param pRunningAlphaStrongModule Pointer to the running coupling module to be used. @@ -122,7 +122,7 @@ protected: RunningAlphaStrongModule* m_pRunningAlphaStrongModule; ///< Pointer to the running coupling module to be used. - ActiveFlavorsModule* m_pNfConvolCoeffFunction; + ActiveFlavorsThresholdsModule* m_pNfConvolCoeffFunction; PerturbativeQCDOrderType::Type m_qcdOrderType; ///< Order of the perturbative QCD computation. GPDType::Type m_currentGPDComputeType; ///< GPDType of the current CFF computation. diff --git a/include/partons/modules/double_distribution/DoubleDistributionExample.h b/include/partons/modules/double_distribution/DoubleDistributionExample.h index 16b586fd0dd2a223bc4ff8af45bcba677ca41196..862e3dd29c8e6157a294923d03a00363e35ed6b4 100644 --- a/include/partons/modules/double_distribution/DoubleDistributionExample.h +++ b/include/partons/modules/double_distribution/DoubleDistributionExample.h @@ -12,11 +12,14 @@ * @brief */ +#include +#include #include #include -#include "../DoubleDistributionModule.h" +#include "../../beans/automation/BaseObjectData.h" #include "../MathIntegratorModule.h" +#include "DoubleDistributionModule.h" namespace NumA { class FunctionType1D; diff --git a/include/partons/modules/double_distribution/DoubleDistributionFromOverlap.h b/include/partons/modules/double_distribution/DoubleDistributionFromOverlap.h index d1327ce1534d3430c9f26cac7c750613fa0a1bea..5d29ca674dc33d58116bafcd26dcb1846e1779ba 100644 --- a/include/partons/modules/double_distribution/DoubleDistributionFromOverlap.h +++ b/include/partons/modules/double_distribution/DoubleDistributionFromOverlap.h @@ -10,7 +10,7 @@ #include -#include "../DoubleDistributionModule.h" +#include "DoubleDistributionModule.h" /** * @class DoubleDistributionFromOverlap diff --git a/include/partons/modules/DoubleDistributionModule.h b/include/partons/modules/double_distribution/DoubleDistributionModule.h similarity index 91% rename from include/partons/modules/DoubleDistributionModule.h rename to include/partons/modules/double_distribution/DoubleDistributionModule.h index af7160844d409f9d00a52e6ed4a4b60f0dfecbfb..15b970fd4f88de1036639e3e187f800edf2a2923 100644 --- a/include/partons/modules/DoubleDistributionModule.h +++ b/include/partons/modules/double_distribution/DoubleDistributionModule.h @@ -9,14 +9,15 @@ * @version 1.0 */ +#include #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../beans/double_distribution/DoubleDistributionType.h" -#include "../beans/List.h" -#include "../beans/parton_distribution/PartonDistribution.h" -#include "../ModuleObject.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../beans/double_distribution/DoubleDistributionType.h" +#include "../../beans/List.h" +#include "../../beans/parton_distribution/PartonDistribution.h" +#include "../../ModuleObject.h" class DoubleDistributionResult; class IncompleteGPDModule; diff --git a/include/partons/modules/evolution/GPDEvolutionModule.h b/include/partons/modules/evolution/GPDEvolutionModule.h index d3418f441c56ad6baa619440d683fff1b721c5d3..440ba7a95b16bc22dfa4fc17e39b17654ce0964d 100644 --- a/include/partons/modules/evolution/GPDEvolutionModule.h +++ b/include/partons/modules/evolution/GPDEvolutionModule.h @@ -14,14 +14,14 @@ #include #include -#include "../../beans/active_flavors/NfInterval.h" +#include "../../beans/active_flavors_thresholds/ActiveFlavorsThresholds.h" #include "../../beans/automation/BaseObjectData.h" #include "../../beans/gpd/GPDType.h" #include "../../beans/PerturbativeQCDOrderType.h" #include "../../beans/QuarkFlavor.h" #include "../../ModuleObject.h" -class ActiveFlavorsModule; +class ActiveFlavorsThresholdsModule; class GPDModule; class PartonDistribution; class QuarkDistribution; @@ -88,8 +88,8 @@ protected: PerturbativeQCDOrderType::Type m_qcdOrderType; GPDType::Type m_currentGPDComputeType; - ActiveFlavorsModule* m_pNfFunction; - ActiveFlavorsModule* m_pNfEvolFunction; + ActiveFlavorsThresholdsModule* m_pNfFunction; + ActiveFlavorsThresholdsModule* m_pNfEvolFunction; RunningAlphaStrongModule *m_pRunningAlphaStrong; //TODO unused @@ -129,11 +129,11 @@ protected: unsigned short currentNf, double y, double MuF2); virtual double integratedNonSingletMuFDerivative( - const NfInterval &nfInterval) = 0; + const ActiveFlavorsThresholds &nfInterval) = 0; virtual double integratedSingletMuFDerivative( - const NfInterval &nfInterval) = 0; + const ActiveFlavorsThresholds &nfInterval) = 0; virtual double integratedGluonMuFDerivative( - const NfInterval &nfInterval) = 0; + const ActiveFlavorsThresholds &nfInterval) = 0; private: static NumA::MatrixD conversionMatrix1; @@ -167,7 +167,7 @@ private: unsigned short nfInterval); // PartonDistribution evolution(const PartonDistribution &partonDistribution); - void evolution(const NfInterval &nfInterval); + void evolution(const ActiveFlavorsThresholds &nfInterval); NumA::VectorD convertBasis(const NumA::VectorD &vectorToConvert, unsigned short matrixNum); @@ -176,12 +176,12 @@ private: NumA::VectorD invertBasis(const NumA::VectorD &vectorToInvert, unsigned short matrixNum); - void computeNonSinglet(const NfInterval &nfInterval); - void computeSingletGluon(const NfInterval &nfInterval); + void computeNonSinglet(const ActiveFlavorsThresholds &nfInterval); + void computeSingletGluon(const ActiveFlavorsThresholds &nfInterval); // *************** - std::vector m_invertedIntervals; + std::vector m_invertedIntervals; void evolutionR(double x, unsigned int indexCurrentInterval); }; diff --git a/include/partons/modules/evolution/gpd/ExampleEvolQCDModel.h b/include/partons/modules/evolution/gpd/ExampleEvolQCDModel.h index 5f6dad4f6d5877e8a0258c5d6ce6446dd749e767..8da1cd7b6846291fd549dc23c48179405d031d13 100644 --- a/include/partons/modules/evolution/gpd/ExampleEvolQCDModel.h +++ b/include/partons/modules/evolution/gpd/ExampleEvolQCDModel.h @@ -38,9 +38,9 @@ protected: virtual void isModuleWellConfigured(); virtual void initModule(); - virtual double integratedNonSingletMuFDerivative(const NfInterval &nfInterval); - virtual double integratedSingletMuFDerivative(const NfInterval &nfInterval); - virtual double integratedGluonMuFDerivative(const NfInterval &nfInterval); + virtual double integratedNonSingletMuFDerivative(const ActiveFlavorsThresholds &nfInterval); + virtual double integratedSingletMuFDerivative(const ActiveFlavorsThresholds &nfInterval); + virtual double integratedGluonMuFDerivative(const ActiveFlavorsThresholds &nfInterval); private: }; diff --git a/include/partons/modules/gpd/GK11Gluonless.h b/include/partons/modules/gpd/GK11Gluonless.h deleted file mode 100644 index 8218044de971f6afdf58966ec8d277a0eeee5d1f..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/GK11Gluonless.h +++ /dev/null @@ -1,231 +0,0 @@ -#ifndef GK11_GLUONLESS_H -#define GK11_GLUONLESS_H - -/** - * @file GK11Gluonless.h - * @author Bryan BERTHOU (CEA Saclay) - * @author Herve MOUTARDE (CEA Saclay) - * @date 2014 - * @version 2.0 - * - * @class GK11Gluonless - * - * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. - * - * !!!! Use tgamma() instead of gamma() (see: http://stackoverflow.com/questions/18116376/what-is-the-definition-for-gammadouble-x-and-why-is-it-different-on-two-gcc-ve) - * - * - * August 2015 : Tested and approved by Pawel Sznajder - */ - -#include -#include - -#include "../GPDModule.h" - -//TODO finir les messages de debug dans toutes les fonctions -//TODO supprimer au maximum les pointers qui ne sont pas obligatoires - -class GK11Gluonless: public GPDModule { -public: - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - /** - * Default constructor - */ - // GK11Gluonless(); - GK11Gluonless(const std::string &className); - - /** - * Default destructor - */ - virtual ~GK11Gluonless(); - - virtual GK11Gluonless* clone() const; - - virtual void configure(const ElemUtils::Parameters ¶meters); - - virtual std::string toString() const; - - // ##### GETTERS & SETTERS ##### - - double getB0() const; - double getC1() const; - double getC2() const; - double getC3() const; - double getC4() const; - double getC5() const; - double getC6() const; - double getC7() const; - double getC8() const; - const std::vector& getEdval1mtab() const; - const std::vector& getEdval1tab() const; - const std::vector& getEi1tab() const; - const std::vector& getEs1tab() const; - const std::vector& getEtdval1mtab() const; - const std::vector& getEtdval1tab() const; - const std::vector& getEtuval1mtab() const; - const std::vector& getEtuval1tab() const; - const std::vector& getEuval1mtab() const; - const std::vector& getEuval1tab() const; - double getEdValMx() const; - double getEtdValMx() const; - double getEtuValMx() const; - double getEuValMx() const; - double getHdValMx() const; - double getHtdValMx() const; - double getHtuValMx() const; - double getHuValMx() const; - double getL() const; - const std::vector& getHdval1mtab() const; - const std::vector& getHdval1tab() const; - const std::vector& getHi1tab() const; - const std::vector& getHs1tab() const; - const std::vector& getHtdval1mtab() const; - const std::vector& getHtdval1tab() const; - const std::vector& getHti1tab() const; - const std::vector& getHtuval1mtab() const; - const std::vector& getHtuval1tab() const; - const std::vector& getHuval1mtab() const; - const std::vector& getHuval1tab() const; - double getKappaS() const; - double getEdval() const; - double getEgluon() const; - double getEsea() const; - double getEtdval() const; - double getEtgluon() const; - double getEtsea() const; - double getEtuval() const; - double getEuval() const; - double getHdval() const; - double getHgluon() const; - double getHsea() const; - double getHtdval() const; - double getHtgluon() const; - double getHtsea() const; - double getHtuval() const; - double getHuval() const; - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - GK11Gluonless(const GK11Gluonless& other); - - virtual void isModuleWellConfigured(); - virtual void initModule(); - - //GPDResultData compute(GPDComputeType gpdComputeType); - - virtual PartonDistribution computeH(); ///< Compute GPD H at considered kinematics - virtual PartonDistribution computeE(); ///< Compute GPD E at considered kinematics - virtual PartonDistribution computeHt(); ///< Compute GPD Ht at considered kinematics - virtual PartonDistribution computeEt(); ///< Compute GPD Et at considered kinematics - -// double computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s); - - void calculateHCoefs(); - void calculateECoefs(); - void calculateHtCoefs(); - void calculateEtCoefs(); - - double c1, c2, c3, c4, c5, c6, c7, c8; // Coefficients of the expansion of CTEQ PDF in terms of half-integer powers of beta (eq. (26)) - double b0; // Exponential t-dependence (eq. (22)) - double fL; - - std::vector Hi1tab; ///< Hi1(i=0,0.5,1,1.5) for gluons - -private: - - double kappa_s; // Flavour symmetry breaking factor, eq. (36) - - double fHuValMx; ///< HuVal( - fx ) - double fHdValMx; ///< HdVal( - fx ) - double fEuValMx; ///< HuVal( - fx ) - double fEdValMx; ///< HdVal( - fx ) - double fHtuValMx; ///< HuVal( - fx ) - double fHtdValMx; ///< HdVal( - fx ) - double fEtuValMx; ///< HuVal( - fx ) - double fEtdValMx; ///< HdVal( - fx ) - - double kHgluon; ///< Exponent of correlated x-t dependence - double kHsea; ///< Exponent of correlated x-t dependence - double kHuval; ///< Exponent of correlated x-t dependence - double kHdval; ///< Exponent of correlated x-t dependence - - double kEgluon; ///< Exponent of correlated x-t dependence - double kEsea; ///< Exponent of correlated x-t dependence - double kEuval; ///< Exponent of correlated x-t dependence - double kEdval; ///< Exponent of correlated x-t dependence - - double kHtgluon; ///< Exponent of correlated x-t dependence - double kHtsea; ///< Exponent of correlated x-t dependence - double kHtuval; ///< Exponent of correlated x-t dependence - double kHtdval; ///< Exponent of correlated x-t dependence - - double kEtgluon; ///< Exponent of correlated x-t dependence - double kEtsea; ///< Exponent of correlated x-t dependence - double kEtuval; ///< Exponent of correlated x-t dependence - double kEtdval; ///< Exponent of correlated x-t dependence - - std::vector Huval1tab; ///< Hval1(i=0,0.5,1) for valence u - std::vector Hdval1tab; ///< Hval1(i=0,0.5,1) for valence d - std::vector Huval1mtab; ///< Hval1(i=0,0.5,1) for valence u for -xb - std::vector Hdval1mtab; ///< Hval1(i=0,0.5,1) for valence d for -xb - std::vector Hs1tab; ///< Hs1(i=0,0.5,1,1.5) for sea, same for u, d, s - - std::vector Euval1tab; ///< Eval1(i=0,1) for valence u - std::vector Edval1tab; ///< Eval1(i=0,..,7) for valence d - std::vector Euval1mtab; ///< Eval1(i=0,1) for valence u for -xb - std::vector Edval1mtab; ///< Eval1(i=0,..,7) for valence d for -xb - std::vector Es1tab; ///< Es1(i=0,1,2) for sea, same for u, d, s - std::vector Ei1tab; ///< Ei1(i=0,1) for gluons - - std::vector Htuval1tab; ///< Htval1(i=0,1,2) for valence u - std::vector Htdval1tab; ///< Htval1(i=0,1,2) for valence d - std::vector Htuval1mtab; ///< Htval1(i=0,1,2) for valence u for -xb - std::vector Htdval1mtab; ///< Htval1(i=0,1,2) for valence d for -xb - std::vector Hti1tab; ///< Hti1(i=0,0.5,1) for gluons - - std::vector Etuval1tab; ///< Etval1(i=0,1,2,3) for valence u - std::vector Etdval1tab; ///< Etval1(i=0,1,2,3) for valence d - std::vector Etuval1mtab; ///< Etval1(i=0,1,2,3) for valence u for -xb - std::vector Etdval1mtab; ///< Etval1(i=0,1,2,3) for valence d for -xb - - void calculateHKas(); - void calculateEKas(); - void calculateHtKas(); - void calculateEtKas(); - - double Et_pole(double x); ///< Pion pole contribution to Et - - double Hi1(double x, double i, double k); - double Hs1(double x, double i, double k); - double Hval1(double x, double i, double k); - double Ei1(double x, double i, double k); - double Es1(double x, double i, double k); - double Eval1(double x, double i, double k); - double Hti1(double x, double i, double k); - double Htval1(double x, double i, double k); - double Etval1(double x, double i, double k); - - double Hi1_alt(double x, double i, double k); - double Hs1_alt(double x, double i, double k); - double Hval1_alt(double x, double i, double k); - double Ei1_alt(double x, double i, double k); - double Es1_alt(double x, double i, double k); - double Eval1_alt(double x, double i, double k); - double Hti1_alt(double x, double i, double k); - double Htval1_alt(double x, double i, double k); - double Etval1_alt(double x, double i, double k); - -}; - -#endif /* GK11_GLUONLESS_H */ diff --git a/include/partons/modules/gpd/GK11ModelNoGluons.h b/include/partons/modules/gpd/GK11ModelNoGluons.h deleted file mode 100644 index 9fb10b6537c8a97d5ac2dd1b94151a03094acec0..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/GK11ModelNoGluons.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * GK11ModelNoGluons.h - * - * Created on: Oct 5, 2015 - * Author: Pawel Sznajder (NCBJ) - */ - -#ifndef GK11MODELNOGLUONS_H_ -#define GK11MODELNOGLUONS_H_ - -#include - -#include "../GPDModule.h" - -class GPDService; - -class GK11ModelNoGluons: public GPDModule { - -public: - - static const unsigned int classId; - - GK11ModelNoGluons(const std::string &className); - - virtual ~GK11ModelNoGluons(); - - virtual GK11ModelNoGluons* clone() const; - - virtual void configure(const ElemUtils::Parameters ¶meters); - - virtual std::string toString() const; - -protected: - - GK11ModelNoGluons(const GK11ModelNoGluons& other); - - virtual void isModuleWellConfigured(); - virtual void initModule(); - - virtual PartonDistribution computeH(); - virtual PartonDistribution computeE(); - virtual PartonDistribution computeHt(); - virtual PartonDistribution computeEt(); - -private: - - GPDService* pGPDService; - GPDModule* GKmodel; -}; - -#endif /* GK11MODELNOGLUONS_H_ */ diff --git a/include/partons/modules/gpd/GK11ModelOnlyGluons.h b/include/partons/modules/gpd/GK11ModelOnlyGluons.h deleted file mode 100644 index 5ea73ad59b735b87a55a05ab6c9d063847445526..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/GK11ModelOnlyGluons.h +++ /dev/null @@ -1,231 +0,0 @@ -#ifndef GK11_OG_MODEL_H -#define GK11_OG_MODEL_H - -/** - * @file GKModelOnlyGluons.h - * @author Bryan BERTHOU (CEA Saclay) - * @author Herve MOUTARDE (CEA Saclay) - * @date 2014 - * @version 2.0 - * - * @class GK11ModelOnlyGluons - * - * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. - * - * !!!! Use tgamma() instead of gamma() (see: http://stackoverflow.com/questions/18116376/what-is-the-definition-for-gammadouble-x-and-why-is-it-different-on-two-gcc-ve) - * - * - * August 2015 : Tested and approved by Pawel Sznajder - */ - -#include -#include - -#include "../GPDModule.h" - -//TODO finir les messages de debug dans toutes les fonctions -//TODO supprimer au maximum les pointers qui ne sont pas obligatoires - -class GK11ModelOnlyGluons: public GPDModule { -public: - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - /** - * Default constructor - */ - // GK11Model(); - GK11ModelOnlyGluons(const std::string &className); - - /** - * Default destructor - */ - virtual ~GK11ModelOnlyGluons(); - - virtual GK11ModelOnlyGluons* clone() const; - - virtual void configure(const ElemUtils::Parameters ¶meters); - - virtual std::string toString() const; - - // ##### GETTERS & SETTERS ##### - - double getB0() const; - double getC1() const; - double getC2() const; - double getC3() const; - double getC4() const; - double getC5() const; - double getC6() const; - double getC7() const; - double getC8() const; - const std::vector& getEdval1mtab() const; - const std::vector& getEdval1tab() const; - const std::vector& getEi1tab() const; - const std::vector& getEs1tab() const; - const std::vector& getEtdval1mtab() const; - const std::vector& getEtdval1tab() const; - const std::vector& getEtuval1mtab() const; - const std::vector& getEtuval1tab() const; - const std::vector& getEuval1mtab() const; - const std::vector& getEuval1tab() const; - double getEdValMx() const; - double getEtdValMx() const; - double getEtuValMx() const; - double getEuValMx() const; - double getHdValMx() const; - double getHtdValMx() const; - double getHtuValMx() const; - double getHuValMx() const; - double getL() const; - const std::vector& getHdval1mtab() const; - const std::vector& getHdval1tab() const; - const std::vector& getHi1tab() const; - const std::vector& getHs1tab() const; - const std::vector& getHtdval1mtab() const; - const std::vector& getHtdval1tab() const; - const std::vector& getHti1tab() const; - const std::vector& getHtuval1mtab() const; - const std::vector& getHtuval1tab() const; - const std::vector& getHuval1mtab() const; - const std::vector& getHuval1tab() const; - double getKappaS() const; - double getEdval() const; - double getEgluon() const; - double getEsea() const; - double getEtdval() const; - double getEtgluon() const; - double getEtsea() const; - double getEtuval() const; - double getEuval() const; - double getHdval() const; - double getHgluon() const; - double getHsea() const; - double getHtdval() const; - double getHtgluon() const; - double getHtsea() const; - double getHtuval() const; - double getHuval() const; - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - GK11ModelOnlyGluons(const GK11ModelOnlyGluons& other); - - virtual void isModuleWellConfigured(); - virtual void initModule(); - - //GPDResultData compute(GPDComputeType gpdComputeType); - - virtual PartonDistribution computeH(); ///< Compute GPD H at considered kinematics - virtual PartonDistribution computeE(); ///< Compute GPD E at considered kinematics - virtual PartonDistribution computeHt(); ///< Compute GPD Ht at considered kinematics - virtual PartonDistribution computeEt(); ///< Compute GPD Et at considered kinematics - -// double computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s); - - void calculateHCoefs(); - void calculateECoefs(); - void calculateHtCoefs(); - void calculateEtCoefs(); - - double c1, c2, c3, c4, c5, c6, c7, c8; // Coefficients of the expansion of CTEQ PDF in terms of half-integer powers of beta (eq. (26)) - double b0; // Exponential t-dependence (eq. (22)) - double fL; - - std::vector Hi1tab; ///< Hi1(i=0,0.5,1,1.5) for gluons - -private: - - double kappa_s; // Flavour symmetry breaking factor, eq. (36) - - double fHuValMx; ///< HuVal( - fx ) - double fHdValMx; ///< HdVal( - fx ) - double fEuValMx; ///< HuVal( - fx ) - double fEdValMx; ///< HdVal( - fx ) - double fHtuValMx; ///< HuVal( - fx ) - double fHtdValMx; ///< HdVal( - fx ) - double fEtuValMx; ///< HuVal( - fx ) - double fEtdValMx; ///< HdVal( - fx ) - - double kHgluon; ///< Exponent of correlated x-t dependence - double kHsea; ///< Exponent of correlated x-t dependence - double kHuval; ///< Exponent of correlated x-t dependence - double kHdval; ///< Exponent of correlated x-t dependence - - double kEgluon; ///< Exponent of correlated x-t dependence - double kEsea; ///< Exponent of correlated x-t dependence - double kEuval; ///< Exponent of correlated x-t dependence - double kEdval; ///< Exponent of correlated x-t dependence - - double kHtgluon; ///< Exponent of correlated x-t dependence - double kHtsea; ///< Exponent of correlated x-t dependence - double kHtuval; ///< Exponent of correlated x-t dependence - double kHtdval; ///< Exponent of correlated x-t dependence - - double kEtgluon; ///< Exponent of correlated x-t dependence - double kEtsea; ///< Exponent of correlated x-t dependence - double kEtuval; ///< Exponent of correlated x-t dependence - double kEtdval; ///< Exponent of correlated x-t dependence - - std::vector Huval1tab; ///< Hval1(i=0,0.5,1) for valence u - std::vector Hdval1tab; ///< Hval1(i=0,0.5,1) for valence d - std::vector Huval1mtab; ///< Hval1(i=0,0.5,1) for valence u for -xb - std::vector Hdval1mtab; ///< Hval1(i=0,0.5,1) for valence d for -xb - std::vector Hs1tab; ///< Hs1(i=0,0.5,1,1.5) for sea, same for u, d, s - - std::vector Euval1tab; ///< Eval1(i=0,1) for valence u - std::vector Edval1tab; ///< Eval1(i=0,..,7) for valence d - std::vector Euval1mtab; ///< Eval1(i=0,1) for valence u for -xb - std::vector Edval1mtab; ///< Eval1(i=0,..,7) for valence d for -xb - std::vector Es1tab; ///< Es1(i=0,1,2) for sea, same for u, d, s - std::vector Ei1tab; ///< Ei1(i=0,1) for gluons - - std::vector Htuval1tab; ///< Htval1(i=0,1,2) for valence u - std::vector Htdval1tab; ///< Htval1(i=0,1,2) for valence d - std::vector Htuval1mtab; ///< Htval1(i=0,1,2) for valence u for -xb - std::vector Htdval1mtab; ///< Htval1(i=0,1,2) for valence d for -xb - std::vector Hti1tab; ///< Hti1(i=0,0.5,1) for gluons - - std::vector Etuval1tab; ///< Etval1(i=0,1,2,3) for valence u - std::vector Etdval1tab; ///< Etval1(i=0,1,2,3) for valence d - std::vector Etuval1mtab; ///< Etval1(i=0,1,2,3) for valence u for -xb - std::vector Etdval1mtab; ///< Etval1(i=0,1,2,3) for valence d for -xb - - void calculateHKas(); - void calculateEKas(); - void calculateHtKas(); - void calculateEtKas(); - - double Et_pole(double x); ///< Pion pole contribution to Et - - double Hi1(double x, double i, double k); - double Hs1(double x, double i, double k); - double Hval1(double x, double i, double k); - double Ei1(double x, double i, double k); - double Es1(double x, double i, double k); - double Eval1(double x, double i, double k); - double Hti1(double x, double i, double k); - double Htval1(double x, double i, double k); - double Etval1(double x, double i, double k); - - double Hi1_alt(double x, double i, double k); - double Hs1_alt(double x, double i, double k); - double Hval1_alt(double x, double i, double k); - double Ei1_alt(double x, double i, double k); - double Es1_alt(double x, double i, double k); - double Eval1_alt(double x, double i, double k); - double Hti1_alt(double x, double i, double k); - double Htval1_alt(double x, double i, double k); - double Etval1_alt(double x, double i, double k); - -}; - -#endif /* GK11_OG_MODEL_H */ diff --git a/include/partons/modules/gpd/GK11NoQuarksModel.h b/include/partons/modules/gpd/GK11NoQuarksModel.h deleted file mode 100644 index f9b5847b5742c1f829d2350dfbb48c50044ffa71..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/GK11NoQuarksModel.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef GK11_NO_QUARKS_MODEL_H -#define GK11_NO_QUARKS_MODEL_H - -/** - * @file GK11NoQuarksModel.h - * @author Jakub - * @date 13 February 2015 - * @version 1.0 - * - * @class GK11NoQuarksModel - * - * @brief - */ - -#include - -#include "GK11Model.h" - -class GK11NoQuarksModel: public GK11Model { -public: - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - GK11NoQuarksModel(const std::string &className); - - virtual ~GK11NoQuarksModel(); - - virtual GK11NoQuarksModel* clone() const; - -protected: - GK11NoQuarksModel(const GK11NoQuarksModel& other); - -// virtual void isModuleWellConfigured(); -// virtual void initModule(); - - //GPDResultData compute(GPDComputeType gpdComputeType); - - virtual PartonDistribution computeH(); ///< Compute GPD H at considered kinematics - virtual PartonDistribution computeE(); ///< Compute GPD E at considered kinematics - virtual PartonDistribution computeHt(); ///< Compute GPD Ht at considered kinematics - virtual PartonDistribution computeEt(); ///< Compute GPD Et at considered kinematics - -// double computeSinglet(const GPDQuarkFlavorData &quark_u, -// const GPDQuarkFlavorData &quark_d, -// const GPDQuarkFlavorData &quark_s); -}; - -#endif /* GK11_NO_QUARKS_MODEL_H */ diff --git a/include/partons/modules/gpd/GK16ModelTest.h b/include/partons/modules/gpd/GK16ModelTest.h deleted file mode 100644 index 4c56636732d89d5a0b543f7a13c0b4d47056b837..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/GK16ModelTest.h +++ /dev/null @@ -1,232 +0,0 @@ -#ifndef GK16_MODELTEST_H -#define GK16_MODELTEST_H - -/** - * @file GK16ModelTest.h - * @author Bryan BERTHOU (CEA Saclay) - * @author Herve MOUTARDE (CEA Saclay) - * @date 2014 - * @version 2.0 - * - * @class GK16ModelTest - * - * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. - * - * !!!! Use tgamma() instead of gamma() (see: http://stackoverflow.com/questions/18116376/what-is-the-definition-for-gammadouble-x-and-why-is-it-different-on-two-gcc-ve) - * - * - * August 2015 : Tested and approved by Pawel Sznajder - * November 2016 : Update from GK11 to GK16 to correct pion pole issue in Et by Luca COlaneri and Pawel Sznajder - */ - -#include -#include - -#include "../GPDModule.h" - -//TODO finir les messages de debug dans toutes les fonctions -//TODO supprimer au maximum les pointers qui ne sont pas obligatoires - -class GK16ModelTest: public GPDModule { -public: - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - /** - * Default constructor - */ - // GK16ModelTest(); - GK16ModelTest(const std::string &className); - - /** - * Default destructor - */ - virtual ~GK16ModelTest(); - - virtual GK16ModelTest* clone() const; - - virtual void configure(const ElemUtils::Parameters ¶meters); - - virtual std::string toString() const; - - // ##### GETTERS & SETTERS ##### - - double getB0() const; - double getC1() const; - double getC2() const; - double getC3() const; - double getC4() const; - double getC5() const; - double getC6() const; - double getC7() const; - double getC8() const; - const std::vector& getEdval1mtab() const; - const std::vector& getEdval1tab() const; - const std::vector& getEi1tab() const; - const std::vector& getEs1tab() const; - const std::vector& getEtdval1mtab() const; - const std::vector& getEtdval1tab() const; - const std::vector& getEtuval1mtab() const; - const std::vector& getEtuval1tab() const; - const std::vector& getEuval1mtab() const; - const std::vector& getEuval1tab() const; - double getEdValMx() const; - double getEtdValMx() const; - double getEtuValMx() const; - double getEuValMx() const; - double getHdValMx() const; - double getHtdValMx() const; - double getHtuValMx() const; - double getHuValMx() const; - double getL() const; - const std::vector& getHdval1mtab() const; - const std::vector& getHdval1tab() const; - const std::vector& getHi1tab() const; - const std::vector& getHs1tab() const; - const std::vector& getHtdval1mtab() const; - const std::vector& getHtdval1tab() const; - const std::vector& getHti1tab() const; - const std::vector& getHtuval1mtab() const; - const std::vector& getHtuval1tab() const; - const std::vector& getHuval1mtab() const; - const std::vector& getHuval1tab() const; - double getKappaS() const; - double getEdval() const; - double getEgluon() const; - double getEsea() const; - double getEtdval() const; - double getEtgluon() const; - double getEtsea() const; - double getEtuval() const; - double getEuval() const; - double getHdval() const; - double getHgluon() const; - double getHsea() const; - double getHtdval() const; - double getHtgluon() const; - double getHtsea() const; - double getHtuval() const; - double getHuval() const; - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - GK16ModelTest(const GK16ModelTest& other); - - virtual void isModuleWellConfigured(); - virtual void initModule(); - - //GPDResultData compute(GPDComputeType gpdComputeType); - - virtual PartonDistribution computeH(); ///< Compute GPD H at considered kinematics - virtual PartonDistribution computeE(); ///< Compute GPD E at considered kinematics - virtual PartonDistribution computeHt(); ///< Compute GPD Ht at considered kinematics - virtual PartonDistribution computeEt(); ///< Compute GPD Et at considered kinematics - -// double computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s); - - void calculateHCoefs(); - void calculateECoefs(); - void calculateHtCoefs(); - void calculateEtCoefs(); - - double c1, c2, c3, c4, c5, c6, c7, c8; // Coefficients of the expansion of CTEQ PDF in terms of half-integer powers of beta (eq. (26)) - double b0; // Exponential t-dependence (eq. (22)) - double fL; - - std::vector Hi1tab; ///< Hi1(i=0,0.5,1,1.5) for gluons - -private: - - double kappa_s; // Flavour symmetry breaking factor, eq. (36) - - double fHuValMx; ///< HuVal( - fx ) - double fHdValMx; ///< HdVal( - fx ) - double fEuValMx; ///< HuVal( - fx ) - double fEdValMx; ///< HdVal( - fx ) - double fHtuValMx; ///< HuVal( - fx ) - double fHtdValMx; ///< HdVal( - fx ) - double fEtuValMx; ///< HuVal( - fx ) - double fEtdValMx; ///< HdVal( - fx ) - - double kHgluon; ///< Exponent of correlated x-t dependence - double kHsea; ///< Exponent of correlated x-t dependence - double kHuval; ///< Exponent of correlated x-t dependence - double kHdval; ///< Exponent of correlated x-t dependence - - double kEgluon; ///< Exponent of correlated x-t dependence - double kEsea; ///< Exponent of correlated x-t dependence - double kEuval; ///< Exponent of correlated x-t dependence - double kEdval; ///< Exponent of correlated x-t dependence - - double kHtgluon; ///< Exponent of correlated x-t dependence - double kHtsea; ///< Exponent of correlated x-t dependence - double kHtuval; ///< Exponent of correlated x-t dependence - double kHtdval; ///< Exponent of correlated x-t dependence - - double kEtgluon; ///< Exponent of correlated x-t dependence - double kEtsea; ///< Exponent of correlated x-t dependence - double kEtuval; ///< Exponent of correlated x-t dependence - double kEtdval; ///< Exponent of correlated x-t dependence - - std::vector Huval1tab; ///< Hval1(i=0,0.5,1) for valence u - std::vector Hdval1tab; ///< Hval1(i=0,0.5,1) for valence d - std::vector Huval1mtab; ///< Hval1(i=0,0.5,1) for valence u for -xb - std::vector Hdval1mtab; ///< Hval1(i=0,0.5,1) for valence d for -xb - std::vector Hs1tab; ///< Hs1(i=0,0.5,1,1.5) for sea, same for u, d, s - - std::vector Euval1tab; ///< Eval1(i=0,1) for valence u - std::vector Edval1tab; ///< Eval1(i=0,..,7) for valence d - std::vector Euval1mtab; ///< Eval1(i=0,1) for valence u for -xb - std::vector Edval1mtab; ///< Eval1(i=0,..,7) for valence d for -xb - std::vector Es1tab; ///< Es1(i=0,1,2) for sea, same for u, d, s - std::vector Ei1tab; ///< Ei1(i=0,1) for gluons - - std::vector Htuval1tab; ///< Htval1(i=0,1,2) for valence u - std::vector Htdval1tab; ///< Htval1(i=0,1,2) for valence d - std::vector Htuval1mtab; ///< Htval1(i=0,1,2) for valence u for -xb - std::vector Htdval1mtab; ///< Htval1(i=0,1,2) for valence d for -xb - std::vector Hti1tab; ///< Hti1(i=0,0.5,1) for gluons - - std::vector Etuval1tab; ///< Etval1(i=0,1,2,3) for valence u - std::vector Etdval1tab; ///< Etval1(i=0,1,2,3) for valence d - std::vector Etuval1mtab; ///< Etval1(i=0,1,2,3) for valence u for -xb - std::vector Etdval1mtab; ///< Etval1(i=0,1,2,3) for valence d for -xb - - void calculateHKas(); - void calculateEKas(); - void calculateHtKas(); - void calculateEtKas(); - - double Et_pole(double x); ///< Pion pole contribution to Et - - double Hi1(double x, double i, double k); - double Hs1(double x, double i, double k); - double Hval1(double x, double i, double k); - double Ei1(double x, double i, double k); - double Es1(double x, double i, double k); - double Eval1(double x, double i, double k); - double Hti1(double x, double i, double k); - double Htval1(double x, double i, double k); - double Etval1(double x, double i, double k); - - double Hi1_alt(double x, double i, double k); - double Hs1_alt(double x, double i, double k); - double Hval1_alt(double x, double i, double k); - double Ei1_alt(double x, double i, double k); - double Es1_alt(double x, double i, double k); - double Eval1_alt(double x, double i, double k); - double Hti1_alt(double x, double i, double k); - double Htval1_alt(double x, double i, double k); - double Etval1_alt(double x, double i, double k); - -}; - -#endif /* GK16_MODELTEST_H */ diff --git a/include/partons/modules/gpd/GK11Model.h b/include/partons/modules/gpd/GPDGK11.h similarity index 96% rename from include/partons/modules/gpd/GK11Model.h rename to include/partons/modules/gpd/GPDGK11.h index b222f95a6990fbcccd79f726afc4aefcf9ee2d48..58e75228978aa9634536f2497975fa89b63f6ca1 100644 --- a/include/partons/modules/gpd/GK11Model.h +++ b/include/partons/modules/gpd/GPDGK11.h @@ -1,25 +1,26 @@ -#ifndef GK11_MODEL_H -#define GK11_MODEL_H +#ifndef GPD_GK11_H +#define GPD_GK11_H /** - * @file GK11Model.h + * @file GPDGK11.h * @author Bryan BERTHOU (CEA Saclay) * @author Herve MOUTARDE (CEA Saclay) * @date 2014 * @version 1.0 */ +#include #include #include -#include "../GPDModule.h" +#include "GPDModule.h" //TODO finir les messages de debug dans toutes les fonctions //TODO supprimer au maximum les pointers qui ne sont pas obligatoires // !!!! Use tgamma() instead of gamma() (see: http://stackoverflow.com/questions/18116376/what-is-the-definition-for-gammadouble-x-and-why-is-it-different-on-two-gcc-ve) /** - * @class GK11Model + * @class GPDGK11 * * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. * @@ -38,7 +39,7 @@ * * August 2015 : Tested and approved by Pawel Sznajder. */ -class GK11Model: public GPDModule { +class GPDGK11: public GPDModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -49,14 +50,14 @@ public: * * @param className name of child class. */ - GK11Model(const std::string &className); + GPDGK11(const std::string &className); /** * Default destructor. */ - virtual ~GK11Model(); + virtual ~GPDGK11(); - virtual GK11Model* clone() const; + virtual GPDGK11* clone() const; virtual void configure(const ElemUtils::Parameters ¶meters); @@ -129,7 +130,7 @@ protected: * * @param other */ - GK11Model(const GK11Model& other); + GPDGK11(const GPDGK11& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -242,4 +243,4 @@ private: }; -#endif /* GK11_MODEL_H */ +#endif /* GPD_GK11_H */ diff --git a/include/partons/modules/gpd/GK16Model.h b/include/partons/modules/gpd/GPDGK16.h similarity index 96% rename from include/partons/modules/gpd/GK16Model.h rename to include/partons/modules/gpd/GPDGK16.h index 1156ded2fa88753dd0cc8bb9f29f2bf154aaabc8..3226d4a004d9326fbce26813e462e33d2a11e08c 100644 --- a/include/partons/modules/gpd/GK16Model.h +++ b/include/partons/modules/gpd/GPDGK16.h @@ -1,25 +1,26 @@ -#ifndef GK16_MODEL_H -#define GK16_MODEL_H +#ifndef GPD_GK16_H +#define GPD_GK16_H /** - * @file GK16Model.h + * @file GPDGK16.h * @author Bryan BERTHOU (CEA Saclay) * @author Herve MOUTARDE (CEA Saclay) * @date 2014 * @version 1.0 */ +#include #include #include -#include "../GPDModule.h" +#include "GPDModule.h" //TODO finir les messages de debug dans toutes les fonctions //TODO supprimer au maximum les pointers qui ne sont pas obligatoires // !!!! Use tgamma() instead of gamma() (see: http://stackoverflow.com/questions/18116376/what-is-the-definition-for-gammadouble-x-and-why-is-it-different-on-two-gcc-ve) /** - * @class GK16Model + * @class GPDGK16 * * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. * @@ -41,7 +42,7 @@ * November 2016 : Update from GK11 to GK16 to correct pion pole issue in Et by Luca Colaneri and Pawel Sznajder. * */ -class GK16Model: public GPDModule { +class GPDGK16: public GPDModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -52,14 +53,14 @@ public: * * @param className name of child class. */ - GK16Model(const std::string &className); + GPDGK16(const std::string &className); /** * Default destructor. */ - virtual ~GK16Model(); + virtual ~GPDGK16(); - virtual GK16Model* clone() const; + virtual GPDGK16* clone() const; virtual void configure(const ElemUtils::Parameters ¶meters); @@ -132,7 +133,7 @@ protected: * * @param other */ - GK16Model(const GK16Model& other); + GPDGK16(const GPDGK16& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -245,4 +246,4 @@ private: }; -#endif /* GK16_MODEL_H */ +#endif /* GPD_GK16_H */ diff --git a/include/partons/modules/gpd/GK16NumericalModel.h b/include/partons/modules/gpd/GPDGK16Numerical.h similarity index 95% rename from include/partons/modules/gpd/GK16NumericalModel.h rename to include/partons/modules/gpd/GPDGK16Numerical.h index 20713fb05fadec2a5c341ca099fff236db7a7d4f..f2d4c298ab4e70e605e553c0fb1f175e85e6118b 100644 --- a/include/partons/modules/gpd/GK16NumericalModel.h +++ b/include/partons/modules/gpd/GPDGK16Numerical.h @@ -1,8 +1,8 @@ -#ifndef GK16NUMERICALMODEL_H_ -#define GK16NUMERICALMODEL_H_ +#ifndef GPD_GK16_NUMERICAL_H +#define GPD_GK16_NUMERICAL_H /** - * @file GK16NumericalModel.h + * @file GPDGK16Numerical.h * @author Bryan BERTHOU (CEA Saclay) * @author Herve MOUTARDE (CEA Saclay) * @author Luca COLANERI (IPNOrsay) @@ -10,16 +10,18 @@ * @version 1.0 */ +#include #include #include -#include "../GPDModule.h" #include "../MathIntegratorModule.h" +#include "GPDModule.h" + //TODO finir les messages de debug dans toutes les fonctions //TODO supprimer au maximum les pointers qui ne sont pas obligatoires /** - * @class GK16NumericalModel + * @class GPDGK16Numerical * * @brief A module that implements GPD as defined by Kroll-Goloskokov model in 2011. * @@ -39,7 +41,7 @@ * May 2017 : Update to correct pion pole issue in Et as in GK16Model. * */ -class GK16NumericalModel: public GPDModule, public MathIntegratorModule { +class GPDGK16Numerical: public GPDModule, public MathIntegratorModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -50,14 +52,14 @@ public: * * @param className name of child class. */ - GK16NumericalModel(const std::string &className); + GPDGK16Numerical(const std::string &className); /** * Default destructor. */ - virtual ~GK16NumericalModel(); + virtual ~GPDGK16Numerical(); - virtual GK16NumericalModel* clone() const; + virtual GPDGK16Numerical* clone() const; virtual void configure(const ElemUtils::Parameters ¶meters); @@ -73,7 +75,7 @@ protected: * * @param other */ - GK16NumericalModel(const GK16NumericalModel& other); + GPDGK16Numerical(const GPDGK16Numerical& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -237,4 +239,4 @@ private: }; -#endif /* GK16NUMERICALMODEL_H_ */ +#endif /* GPD_GK16_NUMERICAL_H */ diff --git a/include/partons/modules/gpd/MMS13Model.h b/include/partons/modules/gpd/GPDMMS13.h similarity index 92% rename from include/partons/modules/gpd/MMS13Model.h rename to include/partons/modules/gpd/GPDMMS13.h index f51695bfc66bcd587f72997a7a0719fb8e6eddea..2e200f64b44b813869ed445db5e0560e5d5f47bf 100644 --- a/include/partons/modules/gpd/MMS13Model.h +++ b/include/partons/modules/gpd/GPDMMS13.h @@ -1,30 +1,31 @@ -#ifndef MMS13_MODEL_H -#define MMS13_MODEL_H +#ifndef GPD_MMS13_H +#define GPD_MMS13_H /** - * @file MMS13Model.h + * @file GPDMMS13.h * @author Pawel Sznajder (IPNO) * @date March 29, 2015 * @version 1.0 */ +#include #include #include #include "../../beans/QuarkFlavor.h" -#include "../GPDModule.h" #include "../MathIntegratorModule.h" +#include "GPDModule.h" class MSTWPDF; /** - * @class MMS13Model + * @class GPDMMS13 * * Mezrag-Moutarde-Sabatié GPD model. For the reference, see arxiv:1304.7645 @cite Mezrag:2013mya. * * Available GPD types: H, E. */ -class MMS13Model: public GPDModule, public MathIntegratorModule { +class GPDMMS13: public GPDModule, public MathIntegratorModule { public: @@ -40,13 +41,13 @@ public: * * @param className name of child class. */ - MMS13Model(const std::string &className); + GPDMMS13(const std::string &className); /** * Default destructor. */ - virtual ~MMS13Model(); - virtual MMS13Model* clone() const; + virtual ~GPDMMS13(); + virtual GPDMMS13* clone() const; virtual void resolveObjectDependencies(); virtual void configure(const ElemUtils::Parameters ¶meters); virtual std::string toString() const; @@ -61,7 +62,7 @@ protected: /** Copy constructor. @param other Object to be copied. */ - MMS13Model(const MMS13Model& other); + GPDMMS13(const GPDMMS13& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -152,4 +153,4 @@ private: void initFunctorsForIntegrations(); }; -#endif /* MMS13_MODEL_H */ +#endif /* GPD_MMS13_H */ diff --git a/include/partons/modules/gpd/MPSSW13Model.h b/include/partons/modules/gpd/GPDMPSSW13.h similarity index 96% rename from include/partons/modules/gpd/MPSSW13Model.h rename to include/partons/modules/gpd/GPDMPSSW13.h index 166c6631aba712fc2405336cc71d6415a78e99af..c5bb2b1a2434e33c923af17c333cf4deb8cb229d 100644 --- a/include/partons/modules/gpd/MPSSW13Model.h +++ b/include/partons/modules/gpd/GPDMPSSW13.h @@ -1,18 +1,19 @@ -#ifndef MPSSW13_MODEL_H -#define MPSSW13_MODEL_H +#ifndef GPD_MPSSW13_H +#define GPD_MPSSW13_H /** - * @file MPSSW13Model.h + * @file GPDMPSSW13.h * @author Herve Moutarde (CEA/Irfu, Saclay) * @date November 11, 2014 * @version 1.0 */ +#include #include #include -#include "../GPDModule.h" #include "../MathIntegratorModule.h" +#include "GPDModule.h" class MSTWPDF; namespace NumA { @@ -20,7 +21,7 @@ class FunctionType1D; } /* namespace NumA */ /** - * @class MPSSW13Model + * @class GPDMPSSW13 * * Module based on the original code (TBDP class) received from H.\ Moutarde as a private communication. * @@ -28,7 +29,7 @@ class FunctionType1D; * * Available GPD types: H. */ -class MPSSW13Model: public GPDModule, public MathIntegratorModule { +class GPDMPSSW13: public GPDModule, public MathIntegratorModule { public: @@ -40,13 +41,13 @@ public: * * @param className name of child class. */ - MPSSW13Model(const std::string &className); + GPDMPSSW13(const std::string &className); /** * Default constructor. */ - virtual ~MPSSW13Model(); - virtual MPSSW13Model* clone() const; + virtual ~GPDMPSSW13(); + virtual GPDMPSSW13* clone() const; virtual void resolveObjectDependencies(); virtual void configure(const ElemUtils::Parameters ¶meters); //TODO no toString @@ -73,7 +74,7 @@ protected: /** Copy constructor @param other Object to be copied */ - MPSSW13Model(const MPSSW13Model& other); + GPDMPSSW13(const GPDMPSSW13& other); //TODO private isModuleWellConfigured? //TODO private initModule? @@ -297,4 +298,4 @@ private: void initFunctorsForIntegrations(); }; -#endif /* MPSSW13_H_ */ +#endif /* GPD_MPSSW13_H */ diff --git a/include/partons/modules/GPDModule.h b/include/partons/modules/gpd/GPDModule.h similarity index 96% rename from include/partons/modules/GPDModule.h rename to include/partons/modules/gpd/GPDModule.h index c471d4a1ade7b73570bba28e098d51155565d75a..35b0dab5c176bed2d2c45b1b4d985b0e1e350b15 100644 --- a/include/partons/modules/GPDModule.h +++ b/include/partons/modules/gpd/GPDModule.h @@ -12,12 +12,12 @@ #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../beans/gpd/GPDKinematic.h" -#include "../beans/gpd/GPDType.h" -#include "../beans/List.h" -#include "../beans/parton_distribution/PartonDistribution.h" -#include "../ModuleObject.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../beans/gpd/GPDKinematic.h" +#include "../../beans/gpd/GPDType.h" +#include "../../beans/List.h" +#include "../../beans/parton_distribution/PartonDistribution.h" +#include "../../ModuleObject.h" class GPDEvolutionModule; diff --git a/include/partons/modules/gpd/VGGModel.h b/include/partons/modules/gpd/GPDVGG99.h similarity index 96% rename from include/partons/modules/gpd/VGGModel.h rename to include/partons/modules/gpd/GPDVGG99.h index 59ff7d5a85ecef7879a1910c593a1b6e391b7393..938692bfb58f19739ed816c2ef839889f4a2f416 100644 --- a/include/partons/modules/gpd/VGGModel.h +++ b/include/partons/modules/gpd/GPDVGG99.h @@ -1,8 +1,8 @@ -#ifndef VGG_MODEL_H -#define VGG_MODEL_H +#ifndef GPD_VGG99_H +#define GPD_VGG99_H /** - * @file VGGModel.h + * @file GPDVGG99.h * @author Michel Guidal (IPNO) * @author Pawel Sznajder (IPNO) * @date December 10, 2015 @@ -14,8 +14,8 @@ #include #include "../../beans/gpd/GPDType.h" -#include "../GPDModule.h" #include "../MathIntegratorModule.h" +#include "GPDModule.h" class MSTWPDF; namespace NumA { @@ -23,7 +23,7 @@ class FunctionType1D; } /* namespace NumA */ /** - * @class VGGModel + * @class GPDVGG99 * * For the reference see: * - Prog. Part. Nucl. Phys. 47, 401 (2001) @@ -35,7 +35,7 @@ class FunctionType1D; * * Available GPD types: H, E, Ht, Et. */ -class VGGModel: public GPDModule, public MathIntegratorModule { +class GPDVGG99: public GPDModule, public MathIntegratorModule { public: @@ -47,13 +47,13 @@ public: * * @param className name of child class. */ - VGGModel(const std::string &className); + GPDVGG99(const std::string &className); /** * Default destructor. */ - virtual ~VGGModel(); - virtual VGGModel* clone() const; + virtual ~GPDVGG99(); + virtual GPDVGG99* clone() const; virtual void resolveObjectDependencies(); virtual void configure(const ElemUtils::Parameters ¶meters); virtual std::string toString() const; @@ -63,7 +63,7 @@ protected: /** Copy constructor @param other Object to be copied */ - VGGModel(const VGGModel& other); + GPDVGG99(const GPDVGG99& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -251,4 +251,4 @@ private: void initFunctorsForIntegrations(); }; -#endif /* VGG_MODEL_H */ +#endif /* GPD_VGG99_H */ diff --git a/include/partons/modules/gpd/VinnikovModel.h b/include/partons/modules/gpd/GPDVinnikov06.h similarity index 94% rename from include/partons/modules/gpd/VinnikovModel.h rename to include/partons/modules/gpd/GPDVinnikov06.h index 3487ea10d66b2481c67b92303427d7d49ab87e4b..57cccc945e060d7dc4966212908562084a05c19a 100644 --- a/include/partons/modules/gpd/VinnikovModel.h +++ b/include/partons/modules/gpd/GPDVinnikov06.h @@ -1,19 +1,20 @@ /* - * VinnikovModel.h + * GPDVinnikov06.h * * Created on: Oct 1, 2015 * Author: Pawel Sznajder (NCBJ) */ -#ifndef VINNIKOVMODEL_H_ -#define VINNIKOVMODEL_H_ +#ifndef GPD_VINNIKOV06_H +#define GPD_VINNIKOV06_H +#include #include -#include "../GPDModule.h" +#include "GPDModule.h" /** - * @class VinnikovModel + * @class GPDVinnikov06 * * Module based on the original code from http://hepdata.cedar.ac.uk/pdfs * @@ -21,7 +22,7 @@ * * Available GPD types: H, Ht. */ -class VinnikovModel: public GPDModule { +class GPDVinnikov06: public GPDModule { public: @@ -33,13 +34,13 @@ public: * * @param className name of child class. */ - VinnikovModel(const std::string &className); + GPDVinnikov06(const std::string &className); /** * Default destructor. */ - virtual ~VinnikovModel(); - virtual VinnikovModel* clone() const; + virtual ~GPDVinnikov06(); + virtual GPDVinnikov06* clone() const; virtual void resolveObjectDependencies(); virtual void configure(const ElemUtils::Parameters ¶meters); virtual std::string toString() const; @@ -49,7 +50,7 @@ protected: /** Copy constructor. @param other Object to be copied. */ - VinnikovModel(const VinnikovModel& other); + GPDVinnikov06(const GPDVinnikov06& other); virtual void isModuleWellConfigured(); virtual void initModule(); @@ -228,7 +229,7 @@ private: \sa n_par, param */ double dd_int_simp(double const bmin, double const bmax, - double (VinnikovModel::*dd)(int, double, double, double, double, + double (GPDVinnikov06::*dd)(int, double, double, double, double, int, double*), int const i_part, double const x, double const xi, double const t, int const n_par, double* param); @@ -249,4 +250,4 @@ private: double power(double const x, double const y); }; -#endif /* VINNIKOVMODEL_H_ */ +#endif /* GPD_VINNIKOV06_H */ diff --git a/include/partons/modules/gpd/MPSSW13ModelNoGluons.h b/include/partons/modules/gpd/MPSSW13ModelNoGluons.h deleted file mode 100644 index 0eba333a9c4d9c9d58325bc6be2e1fb6d0c4d457..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/MPSSW13ModelNoGluons.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * MPSSW13ModelNoGluons.h - * - * Created on: Oct 5, 2015 - * Author: Pawel Sznajder (NCBJ) - */ - -#ifndef MPSSW13MODELNOGLUONS_H_ -#define MPSSW13MODELNOGLUONS_H_ - -#include - -#include "../GPDModule.h" - -class GPDService; - -class MPSSW13ModelNoGluons: public GPDModule { - -public: - - static const unsigned int classId; - - MPSSW13ModelNoGluons(const std::string &className); - - virtual ~MPSSW13ModelNoGluons(); - - virtual MPSSW13ModelNoGluons* clone() const; - - virtual void configure(const ElemUtils::Parameters ¶meters); - - virtual std::string toString() const; - -protected: - - MPSSW13ModelNoGluons(const MPSSW13ModelNoGluons& other); - - virtual void isModuleWellConfigured(); - virtual void initModule(); - - virtual PartonDistribution computeH(); - -private: - - GPDService* pGPDService; - GPDModule* MPSSW13model; -}; - -#endif /* MPSSW13MODELNOGLUONS_H_ */ diff --git a/include/partons/modules/gpd/MPSSW13WithDTermModel.h b/include/partons/modules/gpd/MPSSW13WithDTermModel.h deleted file mode 100644 index f26a595577ab147a7a9365931284b0a429ad311a..0000000000000000000000000000000000000000 --- a/include/partons/modules/gpd/MPSSW13WithDTermModel.h +++ /dev/null @@ -1,293 +0,0 @@ -#ifndef MPSSW13WITHDTERM_MODEL_H -#define MPSSW13WITHDTERM_MODEL_H - -/** - * @file VGGModel.h - * @author Herve Moutarde (CEA/Irfu, Saclay) - * @date November 11, 2014 - * @version 1.0 - */ - -#include -#include - -#include "../GPDModule.h" -#include "../MathIntegratorModule.h" - -class MSTWPDF; -namespace NumA { -class FunctionType1D; -} /* namespace NumA */ - -/** - * @class MPSSW13WithDTermModel - * - * For the reference see hep-ph/1301.3819 - * - * Module based on the original code (TBDP class) received from H. Mutarde as a private communication - */ -class MPSSW13WithDTermModel: public GPDModule, public MathIntegratorModule { - -public: - - static const unsigned int classId; ///< ID assigned by BaseObjectRegistry - - /** Constructor - @param className Name of this class - */ - MPSSW13WithDTermModel(const std::string &className); - - virtual ~MPSSW13WithDTermModel(); - virtual MPSSW13WithDTermModel* clone() const; - virtual void resolveObjectDependencies(); - virtual void configure(const ElemUtils::Parameters ¶meters); - //TODO no toString - void setParameters(std::vector Parameters); - - unsigned int getNbOfQuarkFlavor() const; ///< Get #m_NbOfQuarkFlavor - unsigned int getNbOfColor() const; ///< Get #m_NbOfColor - double getMx() const; ///< Get #m_Mx - double getCA() const; ///< Get #m_CA - double getCF() const; ///< Get #m_CF - double getTF() const; ///< Get #m_TF - double getF1d() const; ///< Get #m_F1u - double getF1u() const; ///< Get #m_F1d - double getFD() const; ///< Get #m_FD - double getProfileShapeVal() const; ///< Get #m_ProfileShapeVal - double getProfileShapeSea() const; ///< Get #m_ProfileShapeSea - double getProfileShapeGlue() const; ///< Get #m_ProfileShapeGlue - double getQuarkDTerm() const; ///< Get #m_QuarkDTerm - double getGluonDTerm() const; ///< Get #m_GluonDTerm - void setGluonDTerm(double gluonDTerm); //TODO why? - -protected: - - /** Copy constructor - @param other Object to be copied - */ - MPSSW13WithDTermModel(const MPSSW13WithDTermModel& other); - - //TODO private isModuleWellConfigured? - //TODO private initModule? - //TODO private computeH? - -private: - - virtual void isModuleWellConfigured(); - virtual void initModule(); - virtual PartonDistribution computeH(); - - unsigned int m_NbOfQuarkFlavor; ///< TO BE REMOVED? (is it defined here?) - unsigned int m_NbOfColor; ///< Number of colors - - double m_Mx; ///< Negative value of x - - double m_CA; ///< Number of active quark flavors - double m_CF; ///< Color factor - double m_TF; ///< SU(3) color factor - - double m_F1u; ///< Contribution of quarks u to Pauli n and p form factors - double m_F1d; ///< Contribution of quarks d to Pauli n and p form factors - double m_FD; ///< Dipole form factor - - double m_ProfileShapeVal; ///< %Double distribution profile parameter for valence quarks - double m_ProfileShapeSea; ///< %Double distribution profile parameter for sea quarks - double m_ProfileShapeGlue; ///< %Double distribution profile parameter for gluons - - double m_QuarkDTerm; ///< Value of D term for quarks - double m_GluonDTerm; ///< Value of D term for gluons - - MSTWPDF* m_Forward; ///< Pointer to MSTW PDFs - - /** Compute D terms - @param x Value of x - */ - void ComputeDTerms(double x); - - /** Compute form factors - */ - void ComputeFormFactors(); - - /** %Double distribution profile function - @param N Profile parameter - @param alpha, beta %Double distribution variables - */ - double Profile(double N, double alpha, double beta); - - /** %Double distribution ansatz for quarks uVal and x - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralHuVal(double x, std::vector Par); - - /** %Double distribution ansatz for quarks uVal and -x - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralHuValMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks uSea and x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHuSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks uSea and -x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHuSeaMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks uSea and x and |x| < xi (part 1) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall1HuSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks uSea and x and |x| < xi (part 2) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall2HuSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dVal and x - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralHdVal(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dVal and -x - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralHdValMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dSea and x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHdSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dSea and -x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHdSeaMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dSea and x and |x| < xi (part 1) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall1HdSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks dSea and x and |x| < xi (part 2) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall2HdSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks s and x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHsSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks s and -x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHsSeaMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks s and x and |x| < xi (part 1) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall1HsSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks s and x and |x| < xi (part 2) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall2HsSea(double x, std::vector Par); - - /** %Double distribution ansatz for quarks g and x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHg(double x, std::vector Par); - - /** %Double distribution ansatz for quarks g and -x and |x| > xi - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxLargeHgMx(double x, std::vector Par); - - /** %Double distribution ansatz for quarks g and x and |x| < xi (part 1) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall1Hg(double x, std::vector Par); - - /** %Double distribution ansatz for quarks g and x and |x| < xi (part 2) - @param x %Double distribution variable - @param Par Additional parameters (not used) - */ - double IntegralxSmall2Hg(double x, std::vector Par); - - /** Evaluation of anomalous dimension matrix for qq - @param nflavour Number of active flavors - @param n Gegenbauer order - */ - double GammaQQ(const unsigned int nflavour, const unsigned int n); - - /** Evaluation of anomalous dimension matrix for qg - @param nflavour Number of active flavors - @param n Gegenbauer order - */ - double GammaQG(const unsigned int nflavour, const unsigned int n); - - /** Evaluation of anomalous dimension matrix for gq - @param nflavour Number of active flavors - @param n Gegenbauer order - */ - double GammaGQ(const unsigned int nflavour, const unsigned int n); - - /** Evaluation of anomalous dimension matrix for gg - @param nflavour Number of active flavors - @param n Gegenbauer order - */ - double GammaGG(const unsigned int nflavour, const unsigned int n); - - /** Throw exception if beta < 0 or beta > 1 - @param funcName Name of function where the error appeared - @param betaValue Value of beta - */ - void throwBetaException(const std::string &funcName, double betaValue); - - NumA::FunctionType1D* m_pIntegralHuVal; ///< Functor related to IntegralHuVal() - NumA::FunctionType1D* m_pIntegralHdVal; ///< Functor related to IntegralHdVal() - NumA::FunctionType1D* m_pIntegralHuValMx; ///< Functor related to IntegralHuValMx() - NumA::FunctionType1D* m_pIntegralHdValMx; ///< Functor related to IntegralHdValMx() - NumA::FunctionType1D* m_pIntegralxLargeHuSea; ///< Functor related to IntegralxLargeHuSea() - NumA::FunctionType1D* m_pIntegralxLargeHdSea; ///< Functor related to IntegralxLargeHdSea() - NumA::FunctionType1D* m_pIntegralxSmall1HuSea; ///< Functor related to IntegralxSmall1HuSea() - NumA::FunctionType1D* m_pIntegralxSmall2HuSea; ///< Functor related to IntegralxSmall2HuSea() - NumA::FunctionType1D* m_pIntegralxSmall1HdSea; ///< Functor related to IntegralxSmall1HdSea() - NumA::FunctionType1D* m_pIntegralxSmall2HdSea; ///< Functor related to IntegralxSmall2HdSea() - NumA::FunctionType1D* m_pIntegralxLargeHuSeaMx; ///< Functor related to IntegralxLargeHuSeaMx() - NumA::FunctionType1D* m_pIntegralxLargeHdSeaMx; ///< Functor related to IntegralxLargeHdSeaMx() - NumA::FunctionType1D* m_pIntegralxLargeHsSea; ///< Functor related to IntegralxLargeHsSea() - NumA::FunctionType1D* m_pIntegralxSmall1HsSea; ///< Functor related to IntegralxSmall1HsSea() - NumA::FunctionType1D* m_pIntegralxSmall2HsSea; ///< Functor related to IntegralxSmall2HsSea() - NumA::FunctionType1D* m_pIntegralxLargeHsSeaMx; ///< Functor related to IntegralxLargeHsSeaMx() - NumA::FunctionType1D* m_pIntegralxLargeHg; ///< Functor related to IntegralxLargeHg() - NumA::FunctionType1D* m_pIntegralxSmall1Hg; ///< Functor related to IntegralxSmall1Hg() - NumA::FunctionType1D* m_pIntegralxSmall2Hg; ///< Functor related to IntegralxSmall2Hg() - NumA::FunctionType1D* m_pIntegralxLargeHgMx; ///< Functor related to IntegralxLargeHgMx() - - /** Initialize functors - */ - void initFunctorsForIntegrations(); -}; - -#endif /* MPSSW13WITHDTERM_MODEL_H */ diff --git a/include/partons/modules/gpd_border_function/KM10BorderFunctionModel.h b/include/partons/modules/gpd_border_function/GPDBorderFunctionKM10.h similarity index 78% rename from include/partons/modules/gpd_border_function/KM10BorderFunctionModel.h rename to include/partons/modules/gpd_border_function/GPDBorderFunctionKM10.h index 231f7cb250560320b9d0fecf3bc6a4c911df2fc1..457ec5b96a6771a0804546305bab389e4582344a 100644 --- a/include/partons/modules/gpd_border_function/KM10BorderFunctionModel.h +++ b/include/partons/modules/gpd_border_function/GPDBorderFunctionKM10.h @@ -1,19 +1,20 @@ /* - * KM10BorderFunctionModel.h + * GPDBorderFunctionKM10.h * * Created on: Oct 17, 2016 * Author: Pawel Sznajder (IPNO) */ -#ifndef KM10BORDERFUNCTIONMODEL_H_ -#define KM10BORDERFUNCTIONMODEL_H_ +#ifndef GPD_BORDER_FUNCTION_KM10_H +#define GPD_BORDER_FUNCTION_KM10_H +#include #include -#include "../GPDBorderFunctionModule.h" +#include "GPDBorderFunctionModule.h" /** - * @class KM10BorderFunctionModel + * @class GPDBorderFunctionKM10 * * @brief Implementation of KM GPD H border function. * @@ -21,7 +22,7 @@ * * For an example of usage of this module see the abstract class documentation. */ -class KM10BorderFunctionModel: public GPDBorderFunctionModule { +class GPDBorderFunctionKM10: public GPDBorderFunctionModule { public: @@ -34,14 +35,14 @@ public: * Constructor. * @param className Name of this class. */ - KM10BorderFunctionModel(const std::string &className); + GPDBorderFunctionKM10(const std::string &className); /** * Destructor. */ - virtual ~KM10BorderFunctionModel(); + virtual ~GPDBorderFunctionKM10(); - virtual KM10BorderFunctionModel* clone() const; + virtual GPDBorderFunctionKM10* clone() const; virtual void resolveObjectDependencies(); void virtual configure(const ElemUtils::Parameters ¶meters); virtual std::string toString() const; @@ -54,7 +55,7 @@ protected: * Copy constructor. * @param other Object to be copied. */ - KM10BorderFunctionModel(const KM10BorderFunctionModel& other); + GPDBorderFunctionKM10(const GPDBorderFunctionKM10& other); private: @@ -83,4 +84,4 @@ private: double m_par_H_p_sea; ///< Parameter p_sea }; -#endif /* KM10BORDERFUNCTIONMODEL_H_ */ +#endif /* GPD_BORDER_FUNCTION_KM10_H */ diff --git a/include/partons/modules/GPDBorderFunctionModule.h b/include/partons/modules/gpd_border_function/GPDBorderFunctionModule.h similarity index 93% rename from include/partons/modules/GPDBorderFunctionModule.h rename to include/partons/modules/gpd_border_function/GPDBorderFunctionModule.h index ae8877a315b7a370329c3b0c9045705c32b9d3dd..77bf66fc68e732ca783bfc87e5d8d0eead8f5045 100644 --- a/include/partons/modules/GPDBorderFunctionModule.h +++ b/include/partons/modules/gpd_border_function/GPDBorderFunctionModule.h @@ -5,14 +5,15 @@ * Author: Pawel Sznjader (IPNO) */ -#ifndef GPDBORDERFUNCTIONMODULE_H_ -#define GPDBORDERFUNCTIONMODULE_H_ +#ifndef GPD_BORDER_FUNCTION_MODULE_H_ +#define GPD_BORDER_FUNCTION_MODULE_H_ +#include #include -#include "../beans/gpd/GPDBorderFunctionKinematic.h" -#include "../beans/gpd/GPDType.h" -#include "GPDModule.h" +#include "../../beans/gpd/GPDBorderFunctionKinematic.h" +#include "../../beans/gpd/GPDType.h" +#include "../gpd/GPDModule.h" /** * @class GPDBorderFunctionModule @@ -124,4 +125,4 @@ protected: virtual void isModuleWellConfigured(); }; -#endif /* GPDBORDERFUNCTIONMODULE_H_ */ +#endif /* GPD_BORDER_FUNCTION_MODULE_H_ */ diff --git a/include/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.h b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.h similarity index 61% rename from include/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.h rename to include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.h index 16fd8e8b4c1285bb3487ee3fad2da0bcd5b638b7..b8e2f187c2a33273866741179f69e5cafeb4d49a 100644 --- a/include/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.h +++ b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.h @@ -1,19 +1,19 @@ /* - * KM10SubtractionConstantModel.h + * GPDSubtractionConstantKM10.h * * Created on: Oct 18, 2016 * Author: Pawel Sznajder (IPNO) */ -#ifndef KM10SUBTRACTIONCONSTANTMODEL_H_ -#define KM10SUBTRACTIONCONSTANTMODEL_H_ +#ifndef GPD_SUBTRACTION_CONSTANT_KM10_H +#define GPD_SUBTRACTION_CONSTANT_KM10_H #include -#include "../GPDSubtractionConstantModule.h" +#include "GPDSubtractionConstantModule.h" /** - * @class KM10SubtractionConstantModel + * @class GPDSubtractionConstantKM10 * * @brief Implementation of KM subtraction constant. * @@ -21,7 +21,7 @@ * * For an example of usage of this module see the abstract class documentation. */ -class KM10SubtractionConstantModel: public GPDSubtractionConstantModule { +class GPDSubtractionConstantKM10: public GPDSubtractionConstantModule { public: @@ -34,21 +34,21 @@ public: * Constructor. * @param className Name of this class. */ - KM10SubtractionConstantModel(const std::string &className); + GPDSubtractionConstantKM10(const std::string &className); /** * Destructor. */ - virtual ~KM10SubtractionConstantModel(); + virtual ~GPDSubtractionConstantKM10(); - virtual KM10SubtractionConstantModel* clone() const; + virtual GPDSubtractionConstantKM10* clone() const; protected: /** Copy constructor. * @param other Object to be copied. */ - KM10SubtractionConstantModel(const KM10SubtractionConstantModel& other); + GPDSubtractionConstantKM10(const GPDSubtractionConstantKM10& other); virtual double computeH(); virtual double computeE(); @@ -59,4 +59,4 @@ private: double m_par_H_M_sub; ///< H_M_sub parameter }; -#endif /* KM10SUBTRACTIONCONSTANTMODEL_H_ */ +#endif /* GPD_SUBTRACTION_CONSTANT_KM10_H */ diff --git a/include/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.h b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.h similarity index 69% rename from include/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.h rename to include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.h index 517142383074c676d32bb5c6a7aa6431efb6e773..ec72c28fa92585d4cfed98491c557108511a433b 100644 --- a/include/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.h +++ b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.h @@ -1,12 +1,12 @@ /* - * MMS13SubtractionConstantModel.h + * GPDSubtractionConstantMMS13.h * * Created on: Oct 18, 2016 * Author: Pawel Sznajder (IPNO) */ -#ifndef MMS13SUBTRACTIONCONSTANTMODEL_H_ -#define MMS13SUBTRACTIONCONSTANTMODEL_H_ +#ifndef GPD_SUBTRACTION_CONSTANT_MMS13_MODEL_H_ +#define GPD_SUBTRACTION_CONSTANT_MMS13_MODEL_H_ #include #include @@ -14,15 +14,15 @@ #include #include "../../beans/automation/BaseObjectData.h" -#include "../GPDSubtractionConstantModule.h" #include "../MathIntegratorModule.h" +#include "GPDSubtractionConstantModule.h" -class MMS13Model; +class GPDMMS13; /** * Subtraction constant model based on MM13Model D-term */ -class MMS13SubtractionConstantModel: public GPDSubtractionConstantModule, +class GPDSubtractionConstantMMS13: public GPDSubtractionConstantModule, public MathIntegratorModule { public: @@ -33,14 +33,14 @@ public: * Default constructor. * @param className Class name. */ - MMS13SubtractionConstantModel(const std::string &className); + GPDSubtractionConstantMMS13(const std::string &className); /** * Destructor. */ - virtual ~MMS13SubtractionConstantModel(); + virtual ~GPDSubtractionConstantMMS13(); - virtual MMS13SubtractionConstantModel* clone() const; + virtual GPDSubtractionConstantMMS13* clone() const; virtual void configure(const ElemUtils::Parameters ¶meters); virtual std::string toString() const; virtual void resolveObjectDependencies(); @@ -55,7 +55,7 @@ protected: /** Copy constructor. @param other Object to be copied. */ - MMS13SubtractionConstantModel(const MMS13SubtractionConstantModel& other); + GPDSubtractionConstantMMS13(const GPDSubtractionConstantMMS13& other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -80,9 +80,9 @@ private: NumA::FunctionType1D* m_p_int_dTermIntegral; /** - * Pointer to MMS13Model model. + * Pointer to GPDMMS13 model. */ - MMS13Model* m_pMMS13Model; + GPDMMS13* m_pMMS13Model; }; -#endif /* MMS13SUBTRACTIONCONSTANTMODEL_H_ */ +#endif /* GPD_SUBTRACTION_CONSTANT_MMS13_MODEL_H_ */ diff --git a/include/partons/modules/GPDSubtractionConstantModule.h b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h similarity index 93% rename from include/partons/modules/GPDSubtractionConstantModule.h rename to include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h index dabd1998f78e4107976823be714abe60a861d39c..46f1fb7ca90ed60d4ed025fb5c49080662d552fc 100644 --- a/include/partons/modules/GPDSubtractionConstantModule.h +++ b/include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h @@ -5,18 +5,18 @@ * Author: debian */ -#ifndef GPDSUBTRACTIONCONSTANTMODULE_H_ -#define GPDSUBTRACTIONCONSTANTMODULE_H_ +#ifndef GPD_SUBTRACTION_CONSTANT_MODULE_H_ +#define GPD_SUBTRACTION_CONSTANT_MODULE_H_ #include #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../beans/gpd/GPDBorderFunctionKinematic.h" -#include "../beans/gpd/GPDType.h" -#include "../beans/List.h" -#include "../ModuleObject.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../beans/gpd/GPDBorderFunctionKinematic.h" +#include "../../beans/gpd/GPDType.h" +#include "../../beans/List.h" +#include "../../ModuleObject.h" /** * @class GPDSubtractionConstantModule @@ -177,4 +177,4 @@ protected: std::map::iterator m_it; }; -#endif /* GPDSUBTRACTIONCONSTANTMODULE_H_ */ +#endif /* GPD_SUBTRACTION_CONSTANT_MODULE_H_ */ diff --git a/include/partons/modules/observable/Ac.h b/include/partons/modules/observable/Ac.h deleted file mode 100644 index c6dbfd546a25a2787cba34b7b98b027b54c9d51d..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/Ac.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef AC_H -#define AC_H - -/** - * @file Ac.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 25, 2014 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class Ac - * @brief Beam charge asymmetry: \f$ A_{C}(\phi)=\frac{1}{4d\sigma_{UU}(\phi)} \left[(d\sigma^{\rightarrow +} + d\sigma^{\leftarrow +} ) - ( d\sigma^{\rightarrow -} + d\sigma^{\leftarrow -} ) \right]\f$ - * - * definition reference: arXiv:1210.6975v4 [hep-ph] eq. 45 - */ -class Ac: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - Ac(const std::string &className); - virtual ~Ac(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual Ac* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - Ac(const Ac &other); - -private: -}; - -#endif /* AC_H */ diff --git a/include/partons/modules/observable/AcCos0phi.h b/include/partons/modules/observable/AcCos0phi.h deleted file mode 100644 index 8cc61d200b0d6aea003f6a5f237443f38ca0f3fd..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AcCos0phi.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef AC_COS_0_PHI_H -#define AC_COS_0_PHI_H - -/** - * @file AcCos0phi.h - * @author Luca COLANERI (IPNO) - * @date April 24, 2017 - * @version 1.0 - * @brief 0th fourier moment of charge asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{C}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{C}(\phi)\cos(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Ac.h" - -/** - * @class AcCos0phi - * - *@brief 0th fourier moment of charge asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{C}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{C}(\phi)\cos(n\phi) \f$ - * - * described in 1210.6975v3 [hep-ph] eq. (54) - * - * - */ -class AcCos0phi: public Ac, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AcCos0phi(const std::string &className); - virtual ~AcCos0phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AcCos0phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AcCos0phi(const AcCos0phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AC_COS_0_PHI_H */ diff --git a/include/partons/modules/observable/AcCos1phi.h b/include/partons/modules/observable/AcCos1phi.h deleted file mode 100644 index 4b025986be38471c4a1d25d25195699fff1e3f7a..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AcCos1phi.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef AC_COS_1_PHI_H -#define AC_COS_1_PHI_H - -/** - * @class AcCos1phi - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - * @brief 1st fourier moment of charge asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{C}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{C}(\phi)\cos(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Ac.h" - -/** - * @class AcCos1phi - * - * - * 1st Fourier cos coefficient of Charge Asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (54) - */ -class AcCos1phi: public Ac, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AcCos1phi(const std::string &className); - virtual ~AcCos1phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AcCos1phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AcCos1phi(const AcCos1phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AC_COS_1_PHI_H */ diff --git a/include/partons/modules/observable/AcCos2phi.h b/include/partons/modules/observable/AcCos2phi.h deleted file mode 100644 index f489fed34b0ca2e51016c73d0476137de71bdd63..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AcCos2phi.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef AC_COS_2_PHI_H -#define AC_COS_2_PHI_H - -/** - * @class AcCos2phi - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date September 28, 2015 - * @version 1.0 - * @brief 2nd fourier moment of charge asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{C}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{C}(\phi)\cos(n\phi) \f$ - * - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Ac.h" - -namespace NumA { -class FunctionType1D; -} /* namespace NumA */ - -/** - * @class AcCos2phi - * - * - * 2nd Fourier cos coefficient of Charge Asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (54) - */ -class AcCos2phi: public Ac, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AcCos2phi(const std::string &className); - virtual ~AcCos2phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AcCos2phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AcCos2phi(const AcCos2phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AC_COS_2_PHI_H */ diff --git a/include/partons/modules/observable/AcCos3phi.h b/include/partons/modules/observable/AcCos3phi.h deleted file mode 100644 index 2ee80e524cae34612966d48a11825d48da491107..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AcCos3phi.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef AC_COS_3_PHI_H -#define AC_COS_3_PHI_H - -/** - * @class AcCos3phi - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - * @brief 3rd fourier moment of charge asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{C}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{C}(\phi)\cos(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Ac.h" - -/** - * @class AcCos3phi - * - * - * 3rd Fourier cos coefficient of Charge Asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (54) - */ -class AcCos3phi: public Ac, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AcCos3phi(const std::string &className); - virtual ~AcCos3phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AcCos3phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AcCos3phi(const AcCos3phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AC_COS_3_PHI_H */ diff --git a/include/partons/modules/observable/All.h b/include/partons/modules/observable/All.h deleted file mode 100644 index a30144915211e108a8908674073ac16987c0eb7e..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/All.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef ALL_H -#define ALL_H - -/** - * - * @file All.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - * @brief longitudinal target-beam spin asymmetry: \f$ A_{LL}(\phi)= \frac{[d\sigma^{\rightarrow \Rightarrow} + d\sigma^{\leftarrow \leftarrow} ] - [d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \leftarrow} ] }{[d\sigma^{\rightarrow \Rightarrow} + d\sigma^{\leftarrow \leftarrow} ] + [d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \leftarrow} ] }\f$ - */ - -#include - -#include "Observable.h" - -/** - * @class All - * @brief longitudinal target-beam spin asymmetry: \f$ A_{LL}(\phi)= \frac{[d\sigma^{\rightarrow \Rightarrow} + d\sigma^{\leftarrow \leftarrow} ] - [d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \leftarrow} ] }{[d\sigma^{\rightarrow \Rightarrow} + d\sigma^{\leftarrow \leftarrow} ] + [d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \leftarrow} ] }\f$ - * - * double longitudinal target spin asymmetry, implemented only for electron beams - * - * described in 1210.6975v3 [hep-ph] eq. (51) - */ -class All: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - All(const std::string &className); - virtual ~All(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual All* clone() const; - - virtual double computePhiObservable(double phi); ///< calculate cross sections with various helicities and beam charge and combine them to obtain the asymmetry - -protected: - /** - * Copy constructor - */ - All(const All &other); - -private: -}; - -#endif /* ALL_H */ diff --git a/include/partons/modules/observable/AllCos0phi.h b/include/partons/modules/observable/AllCos0phi.h deleted file mode 100644 index 7d6033ae6c27cf103b69684c1492ee2089b09d22..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AllCos0phi.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef ALL_COS_0_PHI_H -#define ALL_COS_0_PHI_H - -/** - * @file AllCos0phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2015 - * @version 1.0 - * @brief 0th fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "All.h" - -/** - * @class AllCos0phi - * @brief 0th fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - * 0th Fourier cos coefficient of double longitudinal target spin asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (51) + (54) - */ -class AllCos0phi: public All, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AllCos0phi(const std::string &className); - virtual ~AllCos0phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AllCos0phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AllCos0phi(const AllCos0phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALL_COS_0_PHI_H */ diff --git a/include/partons/modules/observable/AllCos1phi.h b/include/partons/modules/observable/AllCos1phi.h deleted file mode 100644 index ee0622df96657d3ffd71f44657fa995183f50d54..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AllCos1phi.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef ALL_COS_1_PHI_H -#define ALL_COS_1_PHI_H - -/** - * @file AllCos1phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2015 - * @version 1.0 - * @brief 1st fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "All.h" - -/** - * @class AllCos1phi - * @brief 1st fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - * 1st Fourier cos coefficient of double longitudinal target spin asymmetry Asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (51) + (54) - */ -class AllCos1phi: public All, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AllCos1phi(const std::string &className); - virtual ~AllCos1phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AllCos1phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AllCos1phi(const AllCos1phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALL_COS_1_PHI_H */ diff --git a/include/partons/modules/observable/AllCos2phi.h b/include/partons/modules/observable/AllCos2phi.h deleted file mode 100644 index bd6b02bd9abc1c7155390f6cab1c16c481820261..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AllCos2phi.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef ALL_COS_2_PHI_H -#define ALL_COS_2_PHI_H - -/** - * @file AllCos2phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2015 - * @version 1.0 - * @brief 2nd fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "All.h" - -/** - * @class AllCos2phi - * @brief 2nd fourier moment of target-beam spin asymmetry (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{LL}^{\cos(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{LL}(\phi)\cos(n\phi) \f$ - * - * 2nd Fourier cos coefficient of double longitudinal target spin asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (51) + (54) - */ -class AllCos2phi: public All, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AllCos2phi(const std::string &className); - virtual ~AllCos2phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AllCos2phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AllCos2phi(const AllCos2phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALL_COS_2_PHI_H */ diff --git a/include/partons/modules/observable/Alu.h b/include/partons/modules/observable/Alu.h deleted file mode 100644 index 1e962ffb73a87f6fadce8e5d5247a4bd0d0559bc..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/Alu.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef ALU_H -#define ALU_H - -/** - * @file Alu.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 28, 2014 - * @version 1.0 - * @brief \f$ A_{LU}(\phi)= \frac{d\sigma^{\rightarrow}- d\sigma^{\leftarrow}}{d\sigma^{\rightarrow} + d\sigma^{\leftarrow}} \f$ - */ - -#include - -#include "Observable.h" - -/** - * @class Alu - * @brief Beam spin asymmetry: \f$ A_{LU}(\phi)= \frac{d\sigma^{\rightarrow}- d\sigma^{\leftarrow}}{d\sigma^{\rightarrow} + d\sigma^{\leftarrow}} \f$ - * - * described in 1210.6975v3 [hep-ph] eq. (48) - */ -class Alu: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - Alu(const std::string &className); - virtual ~Alu(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual Alu* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - Alu(const Alu &other); - -private: -}; - -#endif /* ALU_H */ diff --git a/include/partons/modules/observable/AluDVCS.h b/include/partons/modules/observable/AluDVCS.h deleted file mode 100644 index 8e45d397a93317304f4713f3e25ebbd3be17a774..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AluDVCS.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef AluDVCS_H -#define AluDVCS_H - -/** - * @file AluDVCS.h - * @author Luca COLANERI (IPNO) - * @date July 19, 2016 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class AluDVCS - * DVCS contribution to beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (47) - */ -class AluDVCS: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AluDVCS(const std::string &className); - virtual ~AluDVCS(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AluDVCS* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - AluDVCS(const AluDVCS &other); - -private: -}; - -#endif /* AluDVCS_H */ diff --git a/include/partons/modules/observable/AluDVCSSin1phi.h b/include/partons/modules/observable/AluDVCSSin1phi.h deleted file mode 100644 index 7d319c39771c6d65dac556a4a52ec21a84e50afb..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AluDVCSSin1phi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef ALU_DVCS_SIN_1_PHI_H -#define ALU_DVCS_SIN_1_PHI_H - -/** - * @file AluDVCSSin1phi.h - * @author Luca COLANERI (IPNO) - * @date July 19, 2016 - * @version 1.0 - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "AluDVCS.h" - -/** - * @class AluDVCSSin1phi - * 1st Fourier sin coefficient of DVCS contribution of beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (47) + (54) - */ -class AluDVCSSin1phi: public AluDVCS, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AluDVCSSin1phi(const std::string &className); - virtual ~AluDVCSSin1phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AluDVCSSin1phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AluDVCSSin1phi(const AluDVCSSin1phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALU_DVCS_SIN_1_PHI_H */ diff --git a/include/partons/modules/observable/AluSinPhi.h b/include/partons/modules/observable/AluSinPhi.h deleted file mode 100644 index 42f903b0df7ef5042d78415e044d6560b8808c80..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AluSinPhi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef ALU_SIN_PHI_H -#define ALU_SIN_PHI_H - -/** - * @file AluSinPhi.h - * @author Bryan BERTHOU (CEA Saclay) - * @date September 28, 2015 - * @version 1.0 - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Alu.h" - -/** - * @class AluiSin1phi - * 1st Fourier sin coefficient of beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (48) + (54) - */ -class AluSinPhi: public Alu, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AluSinPhi(const std::string &className); - virtual ~AluSinPhi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AluSinPhi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AluSinPhi(const AluSinPhi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALU_SIN_PHI_H */ diff --git a/include/partons/modules/observable/Alui.h b/include/partons/modules/observable/Alui.h deleted file mode 100644 index 5bec6c3d2ffa4700e1b926420b3629fb948a824b..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/Alui.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef AluI_H -#define AluI_H - -/** - * @file Alui.h - * @author Luca COLANERI (IPNO) - * @date July 19, 2016 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class Alui - * Interference contribution to beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (46) - */ -class Alui: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - Alui(const std::string &className); - virtual ~Alui(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual Alui* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - Alui(const Alui &other); - -private: -}; - -#endif /* AluI_H */ diff --git a/include/partons/modules/observable/AluiSin1phi.h b/include/partons/modules/observable/AluiSin1phi.h deleted file mode 100644 index 2d5786a43a215f59f3a6705b9abfa36d78a0f730..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AluiSin1phi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef ALU_I_SIN_1_PHI_H -#define ALU_I_SIN_1_PHI_H - -/** - * @file AluiSin1phi.h - * @author Luca COLANERI (IPNO) - * @date July 19, 2016 - * @version 1.0 - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Alui.h" - -/** - * @class AluiSin1phi - * 1st Fourier sin coefficient of Interference contribution of beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (46) + (54) - */ -class AluiSin1phi: public Alui, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AluiSin1phi(const std::string &className); - virtual ~AluiSin1phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AluiSin1phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AluiSin1phi(const AluiSin1phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALU_I_SIN_1_PHI_H */ diff --git a/include/partons/modules/observable/AluiSin2phi.h b/include/partons/modules/observable/AluiSin2phi.h deleted file mode 100644 index 29e58d6576a8c30899a495292e102724da7d5da9..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AluiSin2phi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef ALU_I_SIN_2_PHI_H -#define ALU_I_SIN_2_PHI_H - -/** - * @file AluiSin2phi.h - * @author Luca COLANERI (IPNO) - * @date July 19, 2016 - * @version 1.0 - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Alui.h" - -/** - * @class AluiSin1phi - * 2nd Fourier sin coefficient of Interference contribution of beam spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (46) + (54) - */ -class AluiSin2phi: public Alui, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AluiSin2phi(const std::string &className); - virtual ~AluiSin2phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AluiSin2phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AluiSin2phi(const AluiSin2phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* ALU_I_SIN_2_PHI_H */ diff --git a/include/partons/modules/observable/Aul.h b/include/partons/modules/observable/Aul.h deleted file mode 100644 index 2f163a7a45ee20c18e1f324bc05c73236feace98..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/Aul.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef AUL_H -#define AUL_H - -/** - * @file Aul.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 28, 2014 - * @version 1.0 - * @brief target longitudinal spin asymmetry: \f$ A_{UL}(\phi)= \frac{[d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \Rightarrow} ] - [d\sigma^{\leftarrow \Leftarrow} + d\sigma^{\rightarrow \Leftarrow} ] }{[d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \Rightarrow} ] - [d\sigma^{\leftarrow \Leftarrow} + d\sigma^{\rightarrow \Leftarrow} ] }\f$ - */ - -#include - -#include "Observable.h" - -/** - * @class Aul - * @brief target longitudinal spin asymmetry: \f$ A_{UL}(\phi)= \frac{[d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \Rightarrow} ] - [d\sigma^{\leftarrow \Leftarrow} + d\sigma^{\rightarrow \Leftarrow} ] }{[d\sigma^{\leftarrow \Rightarrow} + d\sigma^{\rightarrow \Rightarrow} ] - [d\sigma^{\leftarrow \Leftarrow} + d\sigma^{\rightarrow \Leftarrow} ] }\f$ - * - * described in 1210.6975v3 [hep-ph] eq. (50) - */ -class Aul: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - Aul(const std::string &className); - virtual ~Aul(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual Aul* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - Aul(const Aul &other); - -private: -}; - -#endif /* AUL_H */ diff --git a/include/partons/modules/observable/AulSin2phi.h b/include/partons/modules/observable/AulSin2phi.h deleted file mode 100644 index b8afc1cdc940f6d7f47e5a8a1721fd9d88d82477..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AulSin2phi.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef AUL_SIN_2_PHI_H -#define AUL_SIN_2_PHI_H - -/** - * @file AulSin2phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - * @brief 2nd Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Aul.h" - -/** - * @class AulSin2phi - * @brief 2nd Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - * - * described in 1210.6975v3 [hep-ph] eq. (50) + (54) - */ -class AulSin2phi: public Aul, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AulSin2phi(const std::string &className); - virtual ~AulSin2phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AulSin2phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AulSin2phi(const AulSin2phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AUL_SIN_2_PHI_H */ diff --git a/include/partons/modules/observable/AulSin3phi.h b/include/partons/modules/observable/AulSin3phi.h deleted file mode 100644 index d1a28e38f17b0b95286d9c2f75d06e86811c71cc..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AulSin3phi.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef AUL_SIN_3_PHI_H -#define AUL_SIN_3_PHI_H - -/** - * @file AulSin3phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - * @brief 3rd Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Aul.h" - -/** - * @class AulSin3phi - * @brief @brief 3rd Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - * - * described in 1210.6975v3 [hep-ph] eq. (50) + (54) - */ -class AulSin3phi: public Aul, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AulSin3phi(const std::string &className); - virtual ~AulSin3phi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AulSin3phi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AulSin3phi(const AulSin3phi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AUL_SIN_3_PHI_H */ diff --git a/include/partons/modules/observable/AulSinPhi.h b/include/partons/modules/observable/AulSinPhi.h deleted file mode 100644 index 10582d5b0c63a77f844f6eeead847670ba31ef21..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AulSinPhi.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef AUL_SIN_PHI_H -#define AUL_SIN_PHI_H - -/** - * @file AulSinPhi.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date September 28, 2015 - * @version 1.0 - * @brief 1st Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "Aul.h" - -/** - * @class AulSinPhi - * @brief 1st Fourier sin coefficient of target longitudinal spin asymmetry: (\f$ N=\frac{1}{2\pi}\f$ in case n=0 ,\f$ N=\frac{1}{\pi}\f$ otherwise ): \f$ A_{UL}^{\sin(n\phi)}=N \int _{0}^{2*\pi} d\phi A_{UL}(\phi)\sin(n\phi) \f$ - * described in 1210.6975v3 [hep-ph] eq. (50) + (54) - */ -class AulSinPhi: public Aul, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AulSinPhi(const std::string &className); - virtual ~AulSinPhi(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AulSinPhi* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AulSinPhi(const AulSinPhi &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AUL_SIN_PHI_H */ diff --git a/include/partons/modules/observable/AutINT.h b/include/partons/modules/observable/AutINT.h deleted file mode 100644 index ddf133508ca35c1113bc5afb1c066747c25303f0..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AutINT.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef AUT_INT_H -#define AUT_INT_H - -/** - * @file AcCos1phi.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2016 - * @version 1.0 - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "AutSinPhiPhiS.h" - -/** - * @class AutINT - * - * - * 0th fourier cos coefficient of Charge Asymmetry - * - * described in 1210.6975v3 [hep-ph] eq. (54) - */ -class AutINT: public AutSinPhiPhiS, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AutINT(const std::string &className); - virtual ~AutINT(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AutINT* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - AutINT(const AutINT &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - -#endif /* AUT_INT_H */ diff --git a/include/partons/modules/observable/AutSinPhiPhiS.h b/include/partons/modules/observable/AutSinPhiPhiS.h deleted file mode 100644 index 2e69512528ceecaceea9d4da8c2f549d6efa1b65..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AutSinPhiPhiS.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef AutSinPhiPhiS_H -#define AutSinPhiPhiS_H - -/** - * @file AutSinPhiPhiS.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 28, 2014 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class AutSinPhiPhiS - * target longitudianl spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (50) - */ -class AutSinPhiPhiS: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AutSinPhiPhiS(const std::string &className); - virtual ~AutSinPhiPhiS(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AutSinPhiPhiS* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - AutSinPhiPhiS(const AutSinPhiPhiS &other); - -private: -}; - -#endif /* AutSinPhiPhiS_H */ diff --git a/include/partons/modules/observable/AutSinPhiPhiSOld.h b/include/partons/modules/observable/AutSinPhiPhiSOld.h deleted file mode 100644 index 9eed520ca716210afba090d4f7e0e6c579ca1b51..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/AutSinPhiPhiSOld.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef AutSinPhiPhiSOld_H -#define AutSinPhiPhiSOld_H - -/** - * @file AutSinPhiPhiSOld.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 28, 2014 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class AutSinPhiPhiSOld - * target longitudianl spin asymmetry - * @brief - * described in 1210.6975v3 [hep-ph] eq. (50) - */ -class AutSinPhiPhiSOld: public Observable { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - AutSinPhiPhiSOld(const std::string &className); - virtual ~AutSinPhiPhiSOld(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual AutSinPhiPhiSOld* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - /** - * Copy constructor - */ - AutSinPhiPhiSOld(const AutSinPhiPhiSOld &other); - -private: -}; - -#endif /* AutSinPhiPhiSOld_H */ diff --git a/include/partons/modules/observable/CrossSectionBeamMinusUU.h b/include/partons/modules/observable/CrossSectionBeamMinusUU.h deleted file mode 100644 index 51a5e0913aa09cf4bf4343587b46584557b00c0c..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/CrossSectionBeamMinusUU.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef CROSSSECTIONBEAMMINUSUU_H -#define CROSSSECTIONBEAMMINUSUU_H - -#include - -#include "Observable.h" - -class CrossSectionBeamMinusUU: public Observable { - -public: - - static const unsigned int classId; - - CrossSectionBeamMinusUU(const std::string &className); - virtual ~CrossSectionBeamMinusUU(); - - virtual CrossSectionBeamMinusUU* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - - CrossSectionBeamMinusUU(const CrossSectionBeamMinusUU &other); - -private: -}; - -#endif /* CROSSSECTIONBEAMMINUSUU_H */ diff --git a/include/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.h b/include/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.h deleted file mode 100644 index 01b53801274a7fd3dc84bfd21961cf410e5334e5..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef CROSSSECTIONDIFFERENCEBEAMMINUSLU_H -#define CROSSSECTIONDIFFERENCEBEAMMINUSLU_H - -#include - -#include "Observable.h" - -class CrossSectionDifferenceBeamMinusLU: public Observable { - -public: - - static const unsigned int classId; - - CrossSectionDifferenceBeamMinusLU(const std::string &className); - virtual ~CrossSectionDifferenceBeamMinusLU(); - - virtual CrossSectionDifferenceBeamMinusLU* clone() const; - - virtual double computePhiObservable(double phi); - -protected: - - CrossSectionDifferenceBeamMinusLU(const CrossSectionDifferenceBeamMinusLU &other); - -private: -}; - -#endif /* CROSSSECTIONDIFFERENCEBEAMMINUSLU_H */ diff --git a/include/partons/modules/observable/CrossSectionObservable.h b/include/partons/modules/observable/CrossSectionObservable.h deleted file mode 100644 index a5e5436629801948507eeed38eb6912937056589..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/CrossSectionObservable.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef CROSSSECTIONOBSERVABLE_H_ -#define CROSSSECTIONOBSERVABLE_H_ - -/** - * @file CrossSectionObservable.h - * @author Nabil CHOUIKA (SPhN / CEA Saclay) - * @date October 15, 2015 - * @version 1.0 - */ - -#include - -#include "Observable.h" - -/** - * @class CrossSectionObservable - * - * @brief - */ -class CrossSectionObservable: public Observable { -public: - static const std::string PARAMETER_NAME_BEAM_HELICITY; - static const std::string PARAMETER_NAME_BEAM_CHARGE; - static const std::string PARAMETER_NAME_TARGET_POLARIZATION; - - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - CrossSectionObservable(const std::string &className); - virtual ~CrossSectionObservable(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual CrossSectionObservable* clone() const; - - virtual double computePhiObservable(double phi); - - /** - * Provides a generic method to configure all types of modules by passing a Parameters object. - * (See ModuleObject class for more info). - * - * @param parameters - */ - virtual void configure(const ElemUtils::Parameters ¶meters); - -protected: - /** - * Copy constructor - */ - CrossSectionObservable(const CrossSectionObservable &other); - -private: -}; - -#endif /* CROSSSECTIONOBSERVABLE_H_ */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAc.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAc.h new file mode 100644 index 0000000000000000000000000000000000000000..8524b28ce483c9704d37b952d42c8bb20f86d2b5 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAc.h @@ -0,0 +1,67 @@ +#ifndef DVCSAC_H +#define DVCSAC_H + +/** + * @file DVCSAc.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date November 25, 2014 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAc + * @brief Beam charge asymmetry. + * + * Definition:
+ * + * \f$ + * A_{C}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi)) - (d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi)) + (d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAc: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAc(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAc(); + + virtual DVCSAc* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAc(const DVCSAc &other); +}; + +#endif /* DVCSAC_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..43e631682309aab476ce1de973cc05eb4939c736 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSACCOS0PHI_H +#define DVCSACCOS0PHI_H + +/** + * @file DVCSAcCos0Phi.h + * @author Luca COLANERI (IPNO) + * @date April 24, 2017 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAc.h" + +/** + * @class DVCSAcCos0Phi + * + * @brief 0th Fourier moment of beam charge asymmetry. + * + * Definition:
+ * + * \f$ + * A_{C}^{\cos(0\phi)}(x_{B}, t, Q^2) = + * \frac{1}{2\pi} + * \int_{0}^{2\pi} d\phi A_{C}(x_{B}, t, Q^2, \phi) \cos(0\phi) + * \f$ + * + * where \f$A_{C}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAc. + */ +class DVCSAcCos0Phi: public DVCSAc, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAcCos0Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAcCos0Phi(); + + virtual DVCSAcCos0Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAcCos0Phi(const DVCSAcCos0Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSACCOS0PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..754daad8f611dfd990e23f835f0790485f16111e --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSACCOS1PHI_H +#define DVCSACCOS1PHI_H + +/** + * @file DVCSAcCos1Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAc.h" + +/** + * @class DVCSAcCos1Phi + * + * @brief 1th Fourier moment of beam charge asymmetry. + * + * Definition:
+ * + * \f$ + * A_{C}^{\cos(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{C}(x_{B}, t, Q^2, \phi) \cos(1\phi) + * \f$ + * + * where \f$A_{C}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAc. + */ +class DVCSAcCos1Phi: public DVCSAc, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAcCos1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAcCos1Phi(); + + virtual DVCSAcCos1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAcCos1Phi(const DVCSAcCos1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSACCOS1PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..6b52696cab7f73b3d1ac7664fdcfd3c55e0e00c9 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.h @@ -0,0 +1,86 @@ +#ifndef DVCSACCOS2PHI_H +#define DVCSACCOS2PHI_H + +/** + * @file DVCSAcCos2Phi.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date September 28, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAc.h" + +namespace NumA { +class FunctionType1D; +} /* namespace NumA */ + +/** + * @class DVCSAcCos2Phi + * + * @brief 2th Fourier moment of beam charge asymmetry. + * + * Definition:
+ * + * \f$ + * A_{C}^{\cos(2\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{C}(x_{B}, t, Q^2, \phi) \cos(2\phi) + * \f$ + * + * where \f$A_{C}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAc. + */ +class DVCSAcCos2Phi: public DVCSAc, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAcCos2Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAcCos2Phi(); + + virtual DVCSAcCos2Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAcCos2Phi(const DVCSAcCos2Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSACCOS2PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..0b970b2b47a9d52ba9e0d2e1ec17d88ec267b2ad --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.h @@ -0,0 +1,83 @@ +#ifndef DVCSACCOS3PHI_H +#define DVCSACCOS3PHI_H + +/** + * @file DVCSAcCos3Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAc.h" + +/** + * @class DVCSAcCos3Phi + * + * @brief 3th Fourier moment of beam charge asymmetry. + * + * Definition:
+ * + * \f$ + * A_{C}^{\cos(3\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{C}(x_{B}, t, Q^2, \phi) \cos(3\phi) + * \f$ + * + * where \f$A_{C}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAc. + */ +class DVCSAcCos3Phi: public DVCSAc, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAcCos3Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAcCos3Phi(); + + + virtual DVCSAcCos3Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAcCos3Phi(const DVCSAcCos3Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSACCOS3PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.h new file mode 100644 index 0000000000000000000000000000000000000000..0e3afc68d7dba3d5f69d0bcc121dff5e5db814b1 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.h @@ -0,0 +1,67 @@ +#ifndef DVCSALLMINUS_H +#define DVCSALLMINUS_H + +/** + * @file DVCSAllMinus.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAllMinus + * @brief Longitudinally polarized beam and target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LL}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma_{\leftarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\rightarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) - (d^4\sigma_{\rightarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\leftarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma_{\leftarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\rightarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + (d^4\sigma_{\rightarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\leftarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma_{t_{h}}^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for target helicity denoted by \f$t_{h}\f$, beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAllMinus: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAllMinus(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAllMinus(); + + virtual DVCSAllMinus* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAllMinus(const DVCSAllMinus &other); +}; + +#endif /* DVCSALLMINUS_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..c4e18c76caca733736cce740c8106191013ca74d --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALLMINUSCOS0PHI_H +#define DVCSALLMINUSCOS0PHI_H + +/** + * @file DVCSAllMinusCos0Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAllMinus.h" + +/** + * @class DVCSAllMinusCos0Phi + * + * @brief 0th Fourier moment of longitudinally polarized beam and target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LL}^{\cos(0\phi)}(x_{B}, t, Q^2) = + * \frac{1}{2\pi} + * \int_{0}^{2\pi} d\phi A_{LL}(x_{B}, t, Q^2, \phi) \cos(0\phi) + * \f$ + * + * where \f$A_{LL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAllMinus. + */ +class DVCSAllMinusCos0Phi: public DVCSAllMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAllMinusCos0Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAllMinusCos0Phi(); + + virtual DVCSAllMinusCos0Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAllMinusCos0Phi(const DVCSAllMinusCos0Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALLMINUSCOS0PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..6a18962cb459af712db87b0cf55958854e05ca86 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALLMINUSCOS1PHI_H +#define DVCSALLMINUSCOS1PHI_H + +/** + * @file DVCSAllMinusCos1Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAllMinus.h" + +/** + * @class DVCSAllMinusCos1Phi + * + * @brief 1th Fourier moment of longitudinally polarized beam and target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LL}^{\cos(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LL}(x_{B}, t, Q^2, \phi) \cos(1\phi) + * \f$ + * + * where \f$A_{LL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAllMinus. + */ +class DVCSAllMinusCos1Phi: public DVCSAllMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAllMinusCos1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAllMinusCos1Phi(); + + virtual DVCSAllMinusCos1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAllMinusCos1Phi(const DVCSAllMinusCos1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALLMINUSCOS1PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..8019d972d92114c4f7800adce08a5291350d7224 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALLMINUSCOS2PHI_H +#define DVCSALLMINUSCOS2PHI_H + +/** + * @file DVCSAllMinusCos2Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAllMinus.h" + +/** + * @class DVCSAllMinusCos2Phi + * + * @brief 2th Fourier moment of longitudinally polarized beam and target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LL}^{\cos(2\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LL}(x_{B}, t, Q^2, \phi) \cos(2\phi) + * \f$ + * + * where \f$A_{LL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAllMinus. + */ +class DVCSAllMinusCos2Phi: public DVCSAllMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAllMinusCos2Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAllMinusCos2Phi(); + + virtual DVCSAllMinusCos2Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAllMinusCos2Phi(const DVCSAllMinusCos2Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALLMINUSCOS2PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.h new file mode 100644 index 0000000000000000000000000000000000000000..3a34eaaefceb0ea83146746c6924b8a7ac135cfa --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.h @@ -0,0 +1,67 @@ +#ifndef DVCSALUDVCS_H +#define DVCSALUDVCS_H + +/** + * @file DVCSAluDVCS.h + * @author Luca COLANERI (IPNO) + * @date July 19, 2016 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAluDVCS + * @brief Longitudinally polarized beam asymmetry for sum over beam charges (DVCS part). + * + * Definition:
+ * + * \f$ + * A_{LU, DVCS}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi)) - (d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi)) + (d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAluDVCS: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluDVCS(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluDVCS(); + + virtual DVCSAluDVCS* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluDVCS(const DVCSAluDVCS &other); +}; + +#endif /* DVCSALUDVCS_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..1171c08087d8022679ad7f559e807fa8f451d606 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALUDVCSSIN1PHI_H +#define DVCSALUDVCSSIN1PHI_H + +/** + * @file DVCSAluDVCSSin1Phi.h + * @author Luca COLANERI (IPNO) + * @date July 19, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAluDVCS.h" + +/** + * @class DVCSAluDVCSSin1Phi + * + * @brief 1th Fourier moment of longitudinally polarized beam asymmetry for sum over beam charges (DVCS part). + * + * Definition:
+ * + * \f$ + * A_{LU, DVCS}^{\sin(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LU, DVCS}(x_{B}, t, Q^2, \phi) \sin(1\phi) + * \f$ + * + * where \f$A_{LU, DVCS}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAluDVCS. + */ +class DVCSAluDVCSSin1Phi: public DVCSAluDVCS, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluDVCSSin1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluDVCSSin1Phi(); + + virtual DVCSAluDVCSSin1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluDVCSSin1Phi(const DVCSAluDVCSSin1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALUDVCSSIN1PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.h new file mode 100644 index 0000000000000000000000000000000000000000..8ca5796063763b7b98943037415dd680fd1557cd --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.h @@ -0,0 +1,67 @@ +#ifndef DVCSALUINT_H +#define DVCSALUINT_H + +/** + * @file DVCSAluInt.h + * @author Luca COLANERI (IPNO) + * @date July 19, 2016 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAluInt + * @brief Longitudinally polarized beam asymmetry for difference over beam charges (interference part). + * + * Definition:
+ * + * \f$ + * A_{LU, Int}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi)) - (d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi)) + (d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAluInt: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluInt(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluInt(); + + virtual DVCSAluInt* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluInt(const DVCSAluInt &other); +}; + +#endif /* DVCSALUINT_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..f86623b0a532dfba32f9728a98af70914cf107a2 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALUINTSIN1Phi_H +#define DVCSALUINTSIN1Phi_H + +/** + * @file DVCSAluIntSin1Phi.h + * @author Luca COLANERI (IPNO) + * @date July 19, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAluInt.h" + +/** + * @class DVCSAluIntSin1Phi + * + * @brief 1th Fourier moment of longitudinally polarized beam asymmetry for difference over beam charges (interference part). + * + * Definition:
+ * + * \f$ + * A_{LU, Int}^{\sin(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LU, Int}(x_{B}, t, Q^2, \phi) \sin(1\phi) + * \f$ + * + * where \f$A_{LU, Int}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAluInt. + */ +class DVCSAluIntSin1Phi: public DVCSAluInt, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluIntSin1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluIntSin1Phi(); + + virtual DVCSAluIntSin1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluIntSin1Phi(const DVCSAluIntSin1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALUINTSIN1Phi_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..650a7a73bac596ff3c13d7fd6fb0b51efa33370a --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALUINTSIN2Phi_H +#define DVCSALUINTSIN2Phi_H + +/** + * @file DVCSAluIntSin2Phi.h + * @author Luca COLANERI (IPNO) + * @date July 19, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAluInt.h" + +/** + * @class DVCSAluIntSin2Phi + * + * @brief 2th Fourier moment of longitudinally polarized beam asymmetry for difference over beam charges (interference part). + * + * Definition:
+ * + * \f$ + * A_{LU, Int}^{\sin(2\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LU, Int}(x_{B}, t, Q^2, \phi) \sin(2\phi) + * \f$ + * + * where \f$A_{LU, Int}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAluInt. + */ +class DVCSAluIntSin2Phi: public DVCSAluInt, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluIntSin2Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluIntSin2Phi(); + + virtual DVCSAluIntSin2Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluIntSin2Phi(const DVCSAluIntSin2Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALUINTSIN2Phi_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.h new file mode 100644 index 0000000000000000000000000000000000000000..d99749fd01d11f56d2bb15078eda3a16aea58efe --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.h @@ -0,0 +1,67 @@ +#ifndef DVCSALUMINUS_H +#define DVCSALUMINUS_H + +/** + * @file DVCSAluMinus.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date November 28, 2014 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAluMinus + * @brief Longitudinally polarized beam asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LU}(x_{B}, t, Q^2, \phi) = + * \frac{ + * d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi) + * }{ + * d^4\sigma^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow -}(x_{B}, t, Q^2, \phi) + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAluMinus: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluMinus(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluMinus(); + + virtual DVCSAluMinus* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluMinus(const DVCSAluMinus &other); +}; + +#endif /* DVCSALUMINUS_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..b77f29bba789fa3512e79263da4544adf4b4c2af --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSALUMINUSSIN1PHI_H +#define DVCSALUMINUSSIN1PHI_H + +/** + * @file DVCSAluMinusSin1Phi.h + * @author Bryan BERTHOU (CEA Saclay) + * @date September 28, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAluMinus.h" + +/** + * @class DVCSAluMinusSin1Phi + * + * @brief 1th Fourier moment of longitudinally polarized beam asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{LU}^{\sin(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{LU}(x_{B}, t, Q^2, \phi) \sin(1\phi) + * \f$ + * + * where \f$A_{LU}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAluMinus. + */ +class DVCSAluMinusSin1Phi: public DVCSAluMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAluMinusSin1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAluMinusSin1Phi(); + + virtual DVCSAluMinusSin1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAluMinusSin1Phi(const DVCSAluMinusSin1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSALUMINUSSIN1PHI_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.h new file mode 100644 index 0000000000000000000000000000000000000000..f71dcea26ac68e97d5e04c8a33058f1a0688c36e --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.h @@ -0,0 +1,67 @@ +#ifndef DVCSAULMINUS +#define DVCSAULMINUS + +/** + * @file DVCSAulMinus.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date November 28, 2014 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAulMinus + * @brief Longitudinally polarized target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UL}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma_{\leftarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\leftarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) - (d^4\sigma_{\rightarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\rightarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma_{\leftarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\leftarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + (d^4\sigma_{\rightarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\rightarrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma_{t_{h}}^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for target helicity denoted by \f$t_{h}\f$, beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAulMinus: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAulMinus(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAulMinus(); + + virtual DVCSAulMinus* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAulMinus(const DVCSAulMinus &other); +}; + +#endif /* DVCSAULMINUS */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..52b7f8c8cb39fd2008e1a1f63d8eee2b315b128b --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSAULMINUSSIN1PHI +#define DVCSAULMINUSSIN1PHI + +/** + * @file DVCSAulMinusSin1Phi.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date September 28, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAulMinus.h" + +/** + * @class DVCSAulMinusSin1Phi + * + * @brief 1th Fourier moment of longitudinally polarized target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UL}^{\sin(1\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{UL}(x_{B}, t, Q^2, \phi) \sin(1\phi) + * \f$ + * + * where \f$A_{UL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAulMinus. + */ +class DVCSAulMinusSin1Phi: public DVCSAulMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAulMinusSin1Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAulMinusSin1Phi(); + + virtual DVCSAulMinusSin1Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAulMinusSin1Phi(const DVCSAulMinusSin1Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSAULMINUSSIN1PHI */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..8ac849796dc45f1c0622b0a0537e75559185801b --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSAULMINUSSIN2PHI +#define DVCSAULMINUSSIN2PHI + +/** + * @file DVCSAulMinusSin2Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAulMinus.h" + +/** + * @class DVCSAulMinusSin2Phi + * + * @brief 2th Fourier moment of longitudinally polarized target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UL}^{\sin(2\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{UL}(x_{B}, t, Q^2, \phi) \sin(2\phi) + * \f$ + * + * where \f$A_{UL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAulMinus. + */ +class DVCSAulMinusSin2Phi: public DVCSAulMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAulMinusSin2Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAulMinusSin2Phi(); + + virtual DVCSAulMinusSin2Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAulMinusSin2Phi(const DVCSAulMinusSin2Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSAULMINUSSIN2PHI */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..44094c195a7d07b8b379f65f363ca8b43af45da6 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.h @@ -0,0 +1,82 @@ +#ifndef DVCSAULMINUSSIN3PHI +#define DVCSAULMINUSSIN3PHI + +/** + * @file DVCSAulMinusSin3Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAulMinus.h" + +/** + * @class DVCSAulMinusSin3Phi + * + * @brief 3th Fourier moment of longitudinally polarized target asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UL}^{\sin(3\phi)}(x_{B}, t, Q^2) = + * \frac{1}{\pi} + * \int_{0}^{2\pi} d\phi A_{UL}(x_{B}, t, Q^2, \phi) \sin(3\phi) + * \f$ + * + * where \f$A_{UL}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAulMinus. + */ +class DVCSAulMinusSin3Phi: public DVCSAulMinus, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAulMinusSin3Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAulMinusSin3Phi(); + + virtual DVCSAulMinusSin3Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAulMinusSin3Phi(const DVCSAulMinusSin3Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSAULMINUSSIN3PHI */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.h new file mode 100644 index 0000000000000000000000000000000000000000..5efc5448c727b085f71eac9586c2f831b7274b4f --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.h @@ -0,0 +1,67 @@ +#ifndef DVCSAUTSINPHIMPHIS_H +#define DVCSAUTSINPHIMPHIS_H + +/** + * @file DVCSAutSinPhiMPhis.h + * @author Bryan BERTHOU (SPhN / CEA Saclay) + * @date November 28, 2014 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSAutSinPhiMPhis + * @brief Transverse target beam asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UT}^{\sin(\phi-\phi_{S})}(x_{B}, t, Q^2, \phi) = + * \frac{ + * (d^4\sigma_{\downarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\downarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi)) - (d^4\sigma_{\uparrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\uparrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * }{ + * (d^4\sigma_{\downarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\downarrow}^{\rightarrow -}(x_{B}, t, Q^2, \phi)) + (d^4\sigma_{\uparrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi) + d^4\sigma_{\uparrow}^{\leftarrow -}(x_{B}, t, Q^2, \phi)) + * } + * \f$ + * + * where: + * \f$\sigma_{t_{h}}^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for target helicity denoted by \f$t_{h}\f$, beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + */ +class DVCSAutSinPhiMPhis: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAutSinPhiMPhis(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAutSinPhiMPhis(); + + virtual DVCSAutSinPhiMPhis* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAutSinPhiMPhis(const DVCSAutSinPhiMPhis &other); +}; + +#endif /* DVCSAUTSINPHIMPHIS_H */ diff --git a/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.h b/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.h new file mode 100644 index 0000000000000000000000000000000000000000..6d8ec08c7f86957f40366b5ba5df4ea3f4be0727 --- /dev/null +++ b/include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.h @@ -0,0 +1,83 @@ +#ifndef DVCSAUTSINPHIMPHISCOS0PHI_H +#define DVCSAUTSINPHIMPHISCOS0PHI_H + +/** + * @file DVCSAutSinPhiMPhisCos0Phi.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2016 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSAutSinPhiMPhis.h" + +/** + * @class DVCSAutSinPhiMPhisCos0Phi + * + * @brief 0th Fourier moment of transverse target beam asymmetry for negative beam charge. + * + * Definition:
+ * + * \f$ + * A_{UT}^{\sin(\phi-\phi_{S})\cos(0\phi)}(x_{B}, t, Q^2) = + * \frac{1}{2\pi} + * \int_{0}^{2\pi} d\phi A_{UT}^{\sin(\phi-\phi_{S})}(x_{B}, t, Q^2, \phi) \cos(0\phi) + * \f$ + * + * where \f$A_{UT}^{\sin(\phi-\phi_{S})}(x_{B}, t, Q^2, \phi)\f$ is defined in DVCSAutSinPhiMPhis. + */ +class DVCSAutSinPhiMPhisCos0Phi: public DVCSAutSinPhiMPhis, + public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSAutSinPhiMPhisCos0Phi(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSAutSinPhiMPhisCos0Phi(); + + virtual DVCSAutSinPhiMPhisCos0Phi* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSAutSinPhiMPhisCos0Phi(const DVCSAutSinPhiMPhisCos0Phi &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + +#endif /* DVCSAUTSINPHIMPHISCOS0PHI_H */ diff --git a/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.h b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.h new file mode 100644 index 0000000000000000000000000000000000000000..a6b1ed5cf7d3eb12e25cedd6955bd57bed458b0a --- /dev/null +++ b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.h @@ -0,0 +1,73 @@ +#ifndef DVCSCROSSSECTION_H_ +#define DVCSCROSSSECTION_H_ + +/** + * @file DVCSCrossSection.h + * @author Nabil CHOUIKA (SPhN / CEA Saclay) + * @date October 15, 2015 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSCrossSection + * + * @brief Evaluate cross-section with parameters set via automatization mechanism. + * + * This module can be used to evaluate a given cross-section with beam charge, beam helicity and target polarization set via the automatization mechanism. + * + * Definition:
+ * + * \f$ + * d^5\sigma_{t_{h}}^{b_{h} b_{c}}(x_{B}, t, Q^2, \phi, \phi_{S}) + * \f$ + * + * where: + * \f$\sigma_{t_{h}}^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for target helicity denoted by \f$t_{h}\f$, beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + * + * Units:
+ * + *\f$1/\mathrm{GeV}^6\f$ + */ +class DVCSCrossSection: public Observable { + +public: + + static const std::string PARAMETER_NAME_BEAM_HELICITY; ///< Name of parameter to set beam helicity via the automatization mechanism. + static const std::string PARAMETER_NAME_BEAM_CHARGE; ///< Name of parameter to set beam charge via the automatization mechanism. + static const std::string PARAMETER_NAME_TARGET_POLARIZATION; ///< Name of parameter to set target polarization via the automatization mechanism. + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSCrossSection(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSCrossSection(); + + virtual DVCSCrossSection* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSCrossSection(const DVCSCrossSection &other); +}; + +#endif /* DVCSCROSSSECTION_H_ */ diff --git a/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.h b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.h new file mode 100644 index 0000000000000000000000000000000000000000..28746b3aa30248091f795c4900c804db136d6f0b --- /dev/null +++ b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.h @@ -0,0 +1,72 @@ +#ifndef DVCSCROSSSECTIONDIFFERENCELUMINUS_H +#define DVCSCROSSSECTIONDIFFERENCELUMINUS_H + +/** + * @file DVCSCrossSectionDifferenceLUMinus.h + * @author Pawel Sznajder (IPNO) + * @date November 25, 2016 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSCrossSectionDifferenceLUMinus + * @brief Unpolarized cross-section difference for longitudinally polarized beam and negative beam charge. + * + * Definition:
+ * + * \f$ + * \Delta d^4\sigma_{LU}(x_{B}, t, Q^2, \phi) = + * \frac{ + * d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) - d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) + * }{ + * 2 + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + * + * Units:
+ * + *\f$\mathrm{nbarn}/\mathrm{GeV}^4\f$ + */ +class DVCSCrossSectionDifferenceLUMinus: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSCrossSectionDifferenceLUMinus(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSCrossSectionDifferenceLUMinus(); + + virtual DVCSCrossSectionDifferenceLUMinus* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSCrossSectionDifferenceLUMinus( + const DVCSCrossSectionDifferenceLUMinus &other); +}; + +#endif /* DVCSCROSSSECTIONDIFFERENCELUMINUS_H */ diff --git a/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.h b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.h new file mode 100644 index 0000000000000000000000000000000000000000..6916dd587cd34f674e274832a86242d93b5792aa --- /dev/null +++ b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.h @@ -0,0 +1,89 @@ +#ifndef DVCSCROSSSECTIONPHIINTEGRATED_H +#define DVCSCROSSSECTIONPHIINTEGRATED_H + +/** + * @file DVCSCrossSectionPhiIntegrated.h + * @author Luca COLANERI (IPNO) + * @date July 18, 2015 + * @version 1.0 + */ + +#include +#include +#include + +#include "../../../MathIntegratorModule.h" +#include "DVCSCrossSection.h" + +/** + * @class DVCSCrossSectionPhiIntegrated + * + * @brief Evaluate cross-section integrated over \f$\phi\f$ with parameters set via automatization mechanism. + * + * This module can be used to evaluate a given cross-section integrated over \f$/phi\f$ with beam charge, beam helicity and target polarization set via the automatization mechanism. + * + * Definition:
+ * + * \f$ + * d^4\sigma_{t_{h}}^{b_{h} b_{c}}(x_{B}, t, Q^2, \phi_{S}) = + * \int_{0}^{2\pi} d\phi d^5\sigma_{t_{h}}^{b_{h} b_{c}}(x_{B}, t, Q^2, \phi, \phi_{S}) + * \f$ + * + * where: + * \f$\sigma_{t_{h}}^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for target helicity denoted by \f$t_{h}\f$, beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + * + * Units:
+ * + *\f$1/\mathrm{GeV}^6\f$ + */ +class DVCSCrossSectionPhiIntegrated: public DVCSCrossSection, public MathIntegratorModule { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSCrossSectionPhiIntegrated(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSCrossSectionPhiIntegrated(); + + virtual DVCSCrossSectionPhiIntegrated* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computeFourierObservable(); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSCrossSectionPhiIntegrated(const DVCSCrossSectionPhiIntegrated &other); + + /** + * Functor to perform the integration. + */ + NumA::FunctionType1D* m_pFunctionToIntegrateObservable; + + /** + * Function to be integrated. + */ + virtual double functionToIntegrateObservable(double x, + std::vector params); + + /** + * Initialize functors. + */ + void initFunctorsForIntegrations(); +}; + + +#endif /* DVCSCROSSSECTIONPHIINTEGRATED_H */ diff --git a/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.h b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.h new file mode 100644 index 0000000000000000000000000000000000000000..4fb1d05b221d5a40c911634c05f14077d15180e8 --- /dev/null +++ b/include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.h @@ -0,0 +1,71 @@ +#ifndef DVCSCROSSSECTIONUUMINUS_H +#define DVCSCROSSSECTIONUUMINUS_H + +/** + * @file DVCSCrossSectionUUMinus.h + * @author Pawel Sznajder (IPNO) + * @date November 25, 2016 + * @version 1.0 + */ + +#include +#include + +#include "../../Observable.h" + +/** + * @class DVCSCrossSectionUUMinus + * @brief Unpolarized cross-section for negative beam charge. + * + * Definition:
+ * + * \f$ + * d^4\sigma_{UU}(x_{B}, t, Q^2, \phi) = + * \frac{ + * d^4\sigma^{\rightarrow +}(x_{B}, t, Q^2, \phi) + d^4\sigma^{\leftarrow +}(x_{B}, t, Q^2, \phi) + * }{ + * 2 + * } + * \f$ + * + * where: + * \f$\sigma^{b_{h} b_{c}}\f$ is single photon production cross-section (DVCS, BH and Int) for beam helicity denoted by \f$b_{h}\f$ and beam charge denoted by \f$b_{c}\f$. + * + * Units:
+ * + *\f$\mathrm{nbarn}/\mathrm{GeV}^4\f$ + */ +class DVCSCrossSectionUUMinus: public Observable { + +public: + + /** + * Unique ID to automatically register the class in the registry. + */ + static const unsigned int classId; + + /** + * Constructor. + * @param className Name of class. + */ + DVCSCrossSectionUUMinus(const std::string &className); + + /** + * Destructor. + */ + virtual ~DVCSCrossSectionUUMinus(); + + virtual DVCSCrossSectionUUMinus* clone() const; + virtual void configure(const ElemUtils::Parameters ¶meters); + virtual double computePhiObservable(double phi); + +protected: + + /** + * Copy constructor. + * @param other Object to be copied. + */ + DVCSCrossSectionUUMinus(const DVCSCrossSectionUUMinus &other); +}; + +#endif /* DVCSCROSSSECTIONUUMINUS_H */ diff --git a/include/partons/modules/observable/Observable.h b/include/partons/modules/observable/Observable.h index 3ca3fa5bf1d792a98d320bf31fb3cc11ba84ddd1..3ed7ccff58027876be9a51d7f73239549e25129a 100644 --- a/include/partons/modules/observable/Observable.h +++ b/include/partons/modules/observable/Observable.h @@ -20,7 +20,7 @@ #include "../../beans/observable/ObservableChannel.h" #include "../../beans/observable/ObservableKinematic.h" #include "../../beans/observable/ObservableType.h" -#include "../process/DVCSModule.h" +#include "../process/DVCS/DVCSModule.h" class ObservableResult; diff --git a/include/partons/modules/observable/PhiIntegratedCrossSection.h b/include/partons/modules/observable/PhiIntegratedCrossSection.h deleted file mode 100644 index b40410eb0837e2cb4a7c0a40c1b4dc57c9d8caa3..0000000000000000000000000000000000000000 --- a/include/partons/modules/observable/PhiIntegratedCrossSection.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef PHI_INTEGRATED_CROSS_SECTION_H -#define PHI_INTEGRATED_CROSS_SECTION_H - -/** - * @file PhiIntegratedCrossSection.h - * @author Luca COLANERI (IPNO) - * @date July 18, 2015 - * @version 1.0 - * @brief integrates differential cross section over \f$ \phi \f$ at given kinematic: \f$ d\sigma(x_{B},t,Q^2) = \int_{0}^{2\pi}d\sigma(x_{B},t,Q^2,\phi) \f$ - */ - -#include -#include - -#include "../MathIntegratorModule.h" -#include "CrossSectionObservable.h" - -/** - * @class PhiIntegratedCrossSection - * @brief integrates differential cross section over \f$ \phi \f$ at given kinematic: \f$ d\sigma(x_{B},t,Q^2) = \int_{0}^{2\pi}d\sigma(x_{B},t,Q^2,\phi) \f$ - */ -class PhiIntegratedCrossSection: public CrossSectionObservable, public MathIntegratorModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - PhiIntegratedCrossSection(const std::string &className); - virtual ~PhiIntegratedCrossSection(); - - /** - * Virtual clone function to allow factory to copy all derived members - * @return - */ - virtual PhiIntegratedCrossSection* clone() const; - - virtual double computeFourierObservable(); - -protected: - /** - * Copy constructor - */ - PhiIntegratedCrossSection(const PhiIntegratedCrossSection &other); - - NumA::FunctionType1D* m_pFunctionToIntegrateObservable; - - virtual double functionToIntegrateObservable(double x, - std::vector params); - - void initFunctorsForIntegrations(); -}; - - -#endif /* PHI_INTEGRATED_CROSS_SECTION_H */ diff --git a/include/partons/modules/overlap/IncompleteGPDModule.h b/include/partons/modules/overlap/IncompleteGPDModule.h index a5aed860d7b00c7e18d4a0d189c32fcb5439afcf..2317552616404d73f3e966846a039fe9bd2f573b 100644 --- a/include/partons/modules/overlap/IncompleteGPDModule.h +++ b/include/partons/modules/overlap/IncompleteGPDModule.h @@ -8,17 +8,13 @@ #ifndef INCOMPLETEGPDMODULE_H_ #define INCOMPLETEGPDMODULE_H_ +#include #include #include -#include #include "../../beans/automation/BaseObjectData.h" -#include "../../beans/gpd/GPDKinematic.h" #include "../../beans/gpd/GPDType.h" -#include "../../beans/List.h" -#include "../../beans/parton_distribution/PartonDistribution.h" -//#include "../../ModuleObject.h" -#include "../GPDModule.h" +#include "../gpd/GPDModule.h" namespace NumA { class FunctionTypeMD; diff --git a/include/partons/modules/overlap/OverlapMMR15.h b/include/partons/modules/overlap/OverlapMMR15.h index f86b1efef211addf84e91e392547c5b8493100c4..1fc4ea6745bee9c810a7c87663cac3b3ea8ed1ab 100644 --- a/include/partons/modules/overlap/OverlapMMR15.h +++ b/include/partons/modules/overlap/OverlapMMR15.h @@ -8,10 +8,10 @@ #ifndef OVERLAPMMR2015_H_ #define OVERLAPMMR2015_H_ -#include -#include #include #include +#include +#include #include "IncompleteGPDModule.h" diff --git a/include/partons/modules/process/DVCS/BMJ2012BHModel.h b/include/partons/modules/process/DVCS/BMJ2012BHModel.h deleted file mode 100644 index 79d8bf90d0a17594ac03d4b88cde84c546cc2613..0000000000000000000000000000000000000000 --- a/include/partons/modules/process/DVCS/BMJ2012BHModel.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef BMJ_2012_BH_MODEL_H -#define BMJ_2012_BH_MODEL_H - -#include -#include -#include - -#include "../../../beans/gpd/GPDType.h" -#include "../DVCSModule.h" - -/** - * @file BMJ2012BHModel.h - * @author Nabil CHOUIKA (SPhN / CEA Saclay) - * @date 07 October 2015 - * @version 1.0 - * - * @class BMJ2012BHModel - */ - -class BMJ2012BHModel: public DVCSModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - BMJ2012BHModel(const std::string &className); - virtual ~BMJ2012BHModel(); - - virtual BMJ2012BHModel* clone() const; - - // Cross sections - virtual double CrossSectionBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Bethe Heitler cross section - - virtual double CrossSectionVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Virtual Compton Scattering cross section - - virtual double CrossSectionInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Interference cross section - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - BMJ2012BHModel(const BMJ2012BHModel& other); - - virtual void initModule(); - virtual void initModule(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); - virtual void isModuleWellConfigured(); - -private: - - // The vectors here are actually static arrays, DO NOT PUSH BACK OR POP BACK. - // Use them as arrays! Size fixed in the constructor. - - double m_phi1BMK; ///< Angle small phi of BMK (between electron and outgoing proton) - double m_phi2BMK; ///< Angle small phi of BMK (between target polarization and outgoing proton) - double m_PhiBMK; ///< Angle capital Phi of BMK (between electron and target polarization) - double m_theta; ///< Polarization angle of target - double m_Lambda; ///< Longitudinal polarization of target - double m_lambda; ///< Lepton helicity - - double m_xB2; ///< square of xB - std::vector m_Q; ///< square root of virtuality Q2 - ///< m_Q[0] = Q, m_Q[1] = Q^2, etc... - std::vector m_xBtQ2; - std::vector m_M; ///< Proton mass - ///< m_M[0] = M, m_M[1] = M^2, etc... - std::vector m_yBMJ; ///< Lepton energy fraction - ///< m_y[0] = y, m_y[1] = y^2, etc... - std::vector m_epsilonBMJ; ///< - ///< m_epsilon[0] = epsilon, m_epsilon[1] = epsilon^2, etc... - std::vector m_epsroot; ///< sqrt(1+epsilon^2) - std::vector m_K, m_Kt; ///< Kinematical factors K and K tilde - ///< m_K[0] = K, m_K[1] = K^2, etc... - std::vector m_Delta2; ///< Mandelstam variable t - ///< m_Delta2[0] = t, m_Delta2[1] = Delta^4 = t^2, etc... - - double m_P1, m_P2; ///< Lepton propagators - - void defineAngles(const NumA::Vector3D &targetPolarization); ///< Define the BMK angles - - double m_F1, m_F2; ///< Dirac and Pauli form factors - void computeFormFactors(); ///< Compute F1 and F2 form factors - - /* Bethe Heitler coeffs (BMK2002) */ - /** Fourier coeffs of the BH squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cBH; - - double m_s1BHTP; ///< BH Fourier coeff s1 TP - - void computeFourierCoeffsBH(); ///< Computes c_BH and s_BH - - /* VCS coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cVCS; - /** Fourier coeffs (sinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2 - */ - std::vector > m_sVCS; - - void computeFourierCoeffsVCS(); ///< Computes c_VCS and s_VCS - - /* Interference coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2, [3]=c3 - */ - std::vector > m_cI; - /** Fourier coeffs (sinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2, [3]=s3 - */ - std::vector > m_sI; - /** Angular coeffs C_ab(n), dC_ab(n), S_ab(n), dS_ab(n) - * 1st index: [0]=C++, [1]=C-+, [2]=C0+ - * 2nd index: [0]=not, [1]=V, [2]=A - * 3rd index: n - */ - std::vector > > m_C, m_S, m_dC, m_dS; - - void computeAngularCoeffsInterf(); ///< Computes C_ab(n), S_ab(n), etc. - void computeFourierCoeffsInterf(); ///< Computes c_I and s_I - - /** Coefficients used for computing F+b and F0+ - * 1st index: [0] = F++, [1] = F+-, [2] = F0+ - * 2nd index: [0]: F coeff, [1]: FT coeff, [2]: FLT coeff - */ - std::vector > m_cF; - - /** Array that stores the CFFs F+b and F0+ - * 1st index: [0] = H, [1] = E, [2] = Ht, [3] = Et - * 2nd index: [0] = F++, [1] = F+-, [2] = F0+ - */ - std::vector > > m_CFF; - - /** Method that gives F+b and F0+ already calculated - */ - std::complex CFF(GPDType::Type F, int a, int b); - - void computeCFFs(); ///< Computes CFFS F+b and F0+ - - /** Method that gives the VCS coefficient bilinear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - */ - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3, int a4, int b4); - - /** Method that gives the Interference coefficient linear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param VA can be "V" or "A" or "" - */ - std::complex C_I(unsigned int S, int a, int b, - const std::string& VA); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient C_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal C}_{ab,S}(n|Fab) * C_{ab}(n) - */ - std::complex C_I(unsigned int S, unsigned int n, int a, int b); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient S_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal S}_{ab,S}(n|Fab) * S_{ab}(n) - */ - std::complex S_I(unsigned int S, unsigned int n, int a, int b); - - double SqrAmplBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of Bethe Heitler process - double SqrAmplVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of VCS process - double SqrAmplInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the interference term of the squared amplitude -}; - -#endif /* BMJ_2012_BH_MODEL_H */ diff --git a/include/partons/modules/process/DVCS/BMJ2012DVCSModel.h b/include/partons/modules/process/DVCS/BMJ2012DVCSModel.h deleted file mode 100644 index c06bbe32195506b8493746f9ea9b8c6ca74ed8d1..0000000000000000000000000000000000000000 --- a/include/partons/modules/process/DVCS/BMJ2012DVCSModel.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef BMJ_2012_DVCS_MODEL_H -#define BMJ_2012_DVCS_MODEL_H - -#include -#include -#include - -#include "../../../beans/gpd/GPDType.h" -#include "../DVCSModule.h" - -/** - * @file BMJ2012DVCSModel.h - * @author Nabil CHOUIKA (SPhN / CEA Saclay) - * @date 07 October 2015 - * @version 1.0 - * - * @class BMJ2012DVCSModel - */ - -class BMJ2012DVCSModel: public DVCSModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - BMJ2012DVCSModel(const std::string &className); - virtual ~BMJ2012DVCSModel(); - - virtual BMJ2012DVCSModel* clone() const; - - // Cross sections - virtual double CrossSectionBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Bethe Heitler cross section - - virtual double CrossSectionVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Virtual Compton Scattering cross section - - virtual double CrossSectionInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Interference cross section - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - BMJ2012DVCSModel(const BMJ2012DVCSModel& other); - - virtual void initModule(); - virtual void initModule(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); - virtual void isModuleWellConfigured(); - -private: - - // The vectors here are actually static arrays, DO NOT PUSH BACK OR POP BACK. - // Use them as arrays! Size fixed in the constructor. - - double m_phi1BMK; ///< Angle small phi of BMK (between electron and outgoing proton) - double m_phi2BMK; ///< Angle small phi of BMK (between target polarization and outgoing proton) - double m_PhiBMK; ///< Angle capital Phi of BMK (between electron and target polarization) - double m_theta; ///< Polarization angle of target - double m_Lambda; ///< Longitudinal polarization of target - double m_lambda; ///< Lepton helicity - - double m_xB2; ///< square of xB - std::vector m_Q; ///< square root of virtuality Q2 - ///< m_Q[0] = Q, m_Q[1] = Q^2, etc... - std::vector m_xBtQ2; - std::vector m_M; ///< Proton mass - ///< m_M[0] = M, m_M[1] = M^2, etc... - std::vector m_yBMJ; ///< Lepton energy fraction - ///< m_y[0] = y, m_y[1] = y^2, etc... - std::vector m_epsilonBMJ; ///< - ///< m_epsilon[0] = epsilon, m_epsilon[1] = epsilon^2, etc... - std::vector m_epsroot; ///< sqrt(1+epsilon^2) - std::vector m_K, m_Kt; ///< Kinematical factors K and K tilde - ///< m_K[0] = K, m_K[1] = K^2, etc... - std::vector m_Delta2; ///< Mandelstam variable t - ///< m_Delta2[0] = t, m_Delta2[1] = Delta^4 = t^2, etc... - - double m_P1, m_P2; ///< Lepton propagators - - void defineAngles(const NumA::Vector3D &targetPolarization); ///< Define the BMK angles - - double m_F1, m_F2; ///< Dirac and Pauli form factors - void computeFormFactors(); ///< Compute F1 and F2 form factors - - /* Bethe Heitler coeffs (BMK2002) */ - /** Fourier coeffs of the BH squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cBH; - - double m_s1BHTP; ///< BH Fourier coeff s1 TP - - void computeFourierCoeffsBH(); ///< Computes c_BH and s_BH - - /* VCS coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cVCS; - /** Fourier coeffs (sinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2 - */ - std::vector > m_sVCS; - - void computeFourierCoeffsVCS(); ///< Computes c_VCS and s_VCS - - /* Interference coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2, [3]=c3 - */ - std::vector > m_cI; - /** Fourier coeffs (sinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2, [3]=s3 - */ - std::vector > m_sI; - /** Angular coeffs C_ab(n), dC_ab(n), S_ab(n), dS_ab(n) - * 1st index: [0]=C++, [1]=C-+, [2]=C0+ - * 2nd index: [0]=not, [1]=V, [2]=A - * 3rd index: n - */ - std::vector > > m_C, m_S, m_dC, m_dS; - - void computeAngularCoeffsInterf(); ///< Computes C_ab(n), S_ab(n), etc. - void computeFourierCoeffsInterf(); ///< Computes c_I and s_I - - /** Coefficients used for computing F+b and F0+ - * 1st index: [0] = F++, [1] = F+-, [2] = F0+ - * 2nd index: [0]: F coeff, [1]: FT coeff, [2]: FLT coeff - */ - std::vector > m_cF; - - /** Array that stores the CFFs F+b and F0+ - * 1st index: [0] = H, [1] = E, [2] = Ht, [3] = Et - * 2nd index: [0] = F++, [1] = F+-, [2] = F0+ - */ - std::vector > > m_CFF; - - /** Method that gives F+b and F0+ already calculated - */ - std::complex CFF(GPDType::Type F, int a, int b); - - void computeCFFs(); ///< Computes CFFS F+b and F0+ - - /** Method that gives the VCS coefficient bilinear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - */ - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3, int a4, int b4); - - /** Method that gives the Interference coefficient linear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param VA can be "V" or "A" or "" - */ - std::complex C_I(unsigned int S, int a, int b, - const std::string& VA); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient C_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal C}_{ab,S}(n|Fab) * C_{ab}(n) - */ - std::complex C_I(unsigned int S, unsigned int n, int a, int b); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient S_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal S}_{ab,S}(n|Fab) * S_{ab}(n) - */ - std::complex S_I(unsigned int S, unsigned int n, int a, int b); - - double SqrAmplBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of Bethe Heitler process - double SqrAmplVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of VCS process - double SqrAmplInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the interference term of the squared amplitude -}; - -#endif /* BMJ_2012_DVCS_MODEL_H */ diff --git a/include/partons/modules/process/DVCS/BMJ2012INTModel.h b/include/partons/modules/process/DVCS/BMJ2012INTModel.h deleted file mode 100644 index f9ab1918e9344c21a57872b566d1fd880e945ca0..0000000000000000000000000000000000000000 --- a/include/partons/modules/process/DVCS/BMJ2012INTModel.h +++ /dev/null @@ -1,199 +0,0 @@ -#ifndef BMJ_2012_INT_MODEL_H -#define BMJ_2012_INT_MODEL_H - -#include -#include -#include - -#include "../../../beans/gpd/GPDType.h" -#include "../DVCSModule.h" - -/** - * @file BMJ2012INTModel.h - * @author Nabil CHOUIKA (SPhN / CEA Saclay) - * @date 07 October 2015 - * @version 1.0 - * - * @class BMJ2012INTModel - */ - -class BMJ2012INTModel: public DVCSModule { -public: - static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. - - BMJ2012INTModel(const std::string &className); - virtual ~BMJ2012INTModel(); - - virtual BMJ2012INTModel* clone() const; - - // Cross sections - virtual double CrossSectionBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Bethe Heitler cross section - - virtual double CrossSectionVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Virtual Compton Scattering cross section - - virtual double CrossSectionInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Interference cross section - -protected: - /** - * Copy constructor - * - * Use by the factory - * - * @param other - */ - BMJ2012INTModel(const BMJ2012INTModel& other); - - virtual void initModule(); - virtual void initModule(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); - virtual void isModuleWellConfigured(); - -private: - - // The vectors here are actually static arrays, DO NOT PUSH BACK OR POP BACK. - // Use them as arrays! Size fixed in the constructor. - - double m_phi1BMK; ///< Angle small phi of BMK (between electron and outgoing proton) - double m_phi2BMK; ///< Angle small phi of BMK (between target polarization and outgoing proton) - double m_PhiBMK; ///< Angle capital Phi of BMK (between electron and target polarization) - double m_theta; ///< Polarization angle of target - double m_Lambda; ///< Longitudinal polarization of target - double m_lambda; ///< Lepton helicity - - double m_xB2; ///< square of xB - std::vector m_Q; ///< square root of virtuality Q2 - ///< m_Q[0] = Q, m_Q[1] = Q^2, etc... - std::vector m_xBtQ2; - std::vector m_M; ///< Proton mass - ///< m_M[0] = M, m_M[1] = M^2, etc... - std::vector m_yBMJ; ///< Lepton energy fraction - ///< m_y[0] = y, m_y[1] = y^2, etc... - std::vector m_epsilonBMJ; ///< - ///< m_epsilon[0] = epsilon, m_epsilon[1] = epsilon^2, etc... - std::vector m_epsroot; ///< sqrt(1+epsilon^2) - std::vector m_K, m_Kt; ///< Kinematical factors K and K tilde - ///< m_K[0] = K, m_K[1] = K^2, etc... - std::vector m_Delta2; ///< Mandelstam variable t - ///< m_Delta2[0] = t, m_Delta2[1] = Delta^4 = t^2, etc... - - double m_P1, m_P2; ///< Lepton propagators - - void defineAngles(const NumA::Vector3D &targetPolarization); ///< Define the BMK angles - - double m_F1, m_F2; ///< Dirac and Pauli form factors - void computeFormFactors(); ///< Compute F1 and F2 form factors - - /* Bethe Heitler coeffs (BMK2002) */ - /** Fourier coeffs of the BH squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cBH; - - double m_s1BHTP; ///< BH Fourier coeff s1 TP - - void computeFourierCoeffsBH(); ///< Computes c_BH and s_BH - - /* VCS coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2 - */ - std::vector > m_cVCS; - /** Fourier coeffs (sinus) of the VCS squared amplitude - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2 - */ - std::vector > m_sVCS; - - void computeFourierCoeffsVCS(); ///< Computes c_VCS and s_VCS - - /* Interference coeffs (BMJ2012) */ - /** Fourier coeffs (cosinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=c0, [1]=c1, [2]=c2, [3]=c3 - */ - std::vector > m_cI; - /** Fourier coeffs (sinus) of the Interference term - * 1st index: [0]=unp, [1]=LP, [2]=TP - * 2nd index: [0]=0., [1]=s1, [2]=s2, [3]=s3 - */ - std::vector > m_sI; - /** Angular coeffs C_ab(n), dC_ab(n), S_ab(n), dS_ab(n) - * 1st index: [0]=C++, [1]=C-+, [2]=C0+ - * 2nd index: [0]=not, [1]=V, [2]=A - * 3rd index: n - */ - std::vector > > m_C, m_S, m_dC, m_dS; - - void computeAngularCoeffsInterf(); ///< Computes C_ab(n), S_ab(n), etc. - void computeFourierCoeffsInterf(); ///< Computes c_I and s_I - - /** Coefficients used for computing F+b and F0+ - * 1st index: [0] = F++, [1] = F+-, [2] = F0+ - * 2nd index: [0]: F coeff, [1]: FT coeff, [2]: FLT coeff - */ - std::vector > m_cF; - - /** Array that stores the CFFs F+b and F0+ - * 1st index: [0] = H, [1] = E, [2] = Ht, [3] = Et - * 2nd index: [0] = F++, [1] = F+-, [2] = F0+ - */ - std::vector > > m_CFF; - - /** Method that gives F+b and F0+ already calculated - */ - std::complex CFF(GPDType::Type F, int a, int b); - - void computeCFFs(); ///< Computes CFFS F+b and F0+ - - /** Method that gives the VCS coefficient bilinear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - */ - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3); - std::complex C_VCS(unsigned int S, int a1, int b1, int a2, int b2, - int a3, int b3, int a4, int b4); - - /** Method that gives the Interference coefficient linear in the CFFs - * - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param VA can be "V" or "A" or "" - */ - std::complex C_I(unsigned int S, int a, int b, - const std::string& VA); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient C_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal C}_{ab,S}(n|Fab) * C_{ab}(n) - */ - std::complex C_I(unsigned int S, unsigned int n, int a, int b); - /** Method that gives the "effective" linear combinations of CFFS - * Corresponds to Eqs. (68-69) but multiplied by the coefficient S_{ab}(n) - * to avoid divisions by zero. - * @param S 0=unp, 1=LP, 2=TP+, 3=TP- - * @param n - * @param a - * @param b - * @return {\cal S}_{ab,S}(n|Fab) * S_{ab}(n) - */ - std::complex S_I(unsigned int S, unsigned int n, int a, int b); - - double SqrAmplBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of Bethe Heitler process - double SqrAmplVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the squared amplitude of VCS process - double SqrAmplInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization); ///< Returns the interference term of the squared amplitude -}; - -#endif /* BMJ_2012_INT_MODEL_H */ diff --git a/include/partons/modules/process/DVCSModule.h b/include/partons/modules/process/DVCS/DVCSModule.h similarity index 95% rename from include/partons/modules/process/DVCSModule.h rename to include/partons/modules/process/DVCS/DVCSModule.h index 8f6889be5f3d8904b368d5aef33803d446880c3a..4555e9590e01b1a3a93a8676446fbfe4a4aafd0b 100644 --- a/include/partons/modules/process/DVCSModule.h +++ b/include/partons/modules/process/DVCS/DVCSModule.h @@ -8,12 +8,13 @@ * @version 1.0 */ +#include #include #include -#include "../../beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionResult.h" -#include "../../beans/gpd/GPDType.h" -#include "../../beans/List.h" +#include "../../../beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionResult.h" +#include "../../../beans/gpd/GPDType.h" +#include "../../../beans/List.h" #include "../ProcessModule.h" /** diff --git a/include/partons/modules/process/DVCS/BMJ2012Model.h b/include/partons/modules/process/DVCS/DVCSProcessBMJ12.h similarity index 95% rename from include/partons/modules/process/DVCS/BMJ2012Model.h rename to include/partons/modules/process/DVCS/DVCSProcessBMJ12.h index 0e0a525cd66072fea55882b9ca69ab0791e6abcd..08a00143b43f314f92e2a63da2facef90a826b2e 100644 --- a/include/partons/modules/process/DVCS/BMJ2012Model.h +++ b/include/partons/modules/process/DVCS/DVCSProcessBMJ12.h @@ -1,8 +1,8 @@ -#ifndef BMJ_2012_MODEL_H -#define BMJ_2012_MODEL_H +#ifndef DVCS_PROCESS_BMJ12_H +#define DVCS_PROCESS_BMJ12_H /** - * @file BMJ2012Model.h + * @file DVCSProcessBMJ12.h * @author Nabil CHOUIKA (SPhN / CEA Saclay) * @date 07 October 2015 * @version 1.0 @@ -13,10 +13,10 @@ #include #include "../../../beans/gpd/GPDType.h" -#include "../DVCSModule.h" +#include "DVCSModule.h" /** - * @class BMJ2012Model + * @class DVCSProcessBMJ12 * * Module for the DVCS process using the Belitsky-Müller set of formulas. * @@ -24,7 +24,7 @@ * - arxiv:hep-ph/0112108 @cite Belitsky2001ns for the BH amplitude ; * - arxiv:1212.6674 @cite Belitsky2012ch for the DVCS amplitude and interference. */ -class BMJ2012Model: public DVCSModule { +class DVCSProcessBMJ12: public DVCSModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -34,13 +34,13 @@ public: * * @param className name of child class. */ - BMJ2012Model(const std::string &className); + DVCSProcessBMJ12(const std::string &className); /** * Default destructor. */ - virtual ~BMJ2012Model(); + virtual ~DVCSProcessBMJ12(); - virtual BMJ2012Model* clone() const; + virtual DVCSProcessBMJ12* clone() const; protected: /** @@ -50,7 +50,7 @@ protected: * * @param other */ - BMJ2012Model(const BMJ2012Model& other); + DVCSProcessBMJ12(const DVCSProcessBMJ12& other); virtual void initModule(); virtual void initModule(double beamHelicity, double beamCharge, @@ -218,4 +218,4 @@ private: NumA::Vector3D targetPolarization); ///< Returns the interference term of the squared amplitude. }; -#endif /* BMJ_2012_MODEL_H */ +#endif /* DVCS_PROCESS_BMJ12_H */ diff --git a/include/partons/modules/process/DVCS/GV2008Model.h b/include/partons/modules/process/DVCS/DVCSProcessGV08.h similarity index 94% rename from include/partons/modules/process/DVCS/GV2008Model.h rename to include/partons/modules/process/DVCS/DVCSProcessGV08.h index 5f924f2c3b41f03ecea7bee03676fea64f8753f2..a0215d6f49af38a412d6212888f3a5d0acdea0cb 100644 --- a/include/partons/modules/process/DVCS/GV2008Model.h +++ b/include/partons/modules/process/DVCS/DVCSProcessGV08.h @@ -1,8 +1,8 @@ -#ifndef GV_2008_MODEL -#define GV_2008_MODEL +#ifndef DVCS_PROCESS_GV08_H +#define DVCS_PROCESS_GV08_H /** - * @file GV2008Model.h + * @file DVCSProcessGV08.h * @author Hervé MOUTARDE (SPhN / CEA Saclay) * @version 1.0 * @@ -13,14 +13,14 @@ #include #include -#include "../DVCSModule.h" +#include "DVCSModule.h" /** - * @class GV2008Model + * @class DVCSProcessGV08 * * Module for the DVCS process using the unpublished Guichon-Vanderhagen set of formulas. */ -class GV2008Model: public DVCSModule { +class DVCSProcessGV08: public DVCSModule { public: static const unsigned int classId; ///< Unique ID to automatically register the class in the registry. @@ -30,13 +30,13 @@ public: * * @param className name of child class. */ - GV2008Model(const std::string &className); + DVCSProcessGV08(const std::string &className); /** * Default destructor. */ - virtual ~GV2008Model(); + virtual ~DVCSProcessGV08(); - virtual GV2008Model* clone() const; + virtual DVCSProcessGV08* clone() const; protected: /** @@ -46,7 +46,7 @@ protected: * * @param other */ - GV2008Model(const GV2008Model& other); + DVCSProcessGV08(const DVCSProcessGV08& other); virtual void initModule(); virtual void initModule(double beamHelicity, double beamCharge, @@ -172,5 +172,5 @@ private: }; -#endif /* GV_2008_MODEL */ +#endif /* DVCS_PROCESS_GV08_H */ diff --git a/include/partons/modules/process/DVCS/VGG1999Model.h b/include/partons/modules/process/DVCS/DVCSProcessVGG99.h similarity index 96% rename from include/partons/modules/process/DVCS/VGG1999Model.h rename to include/partons/modules/process/DVCS/DVCSProcessVGG99.h index 7a36f9d34208c120ddce7efde19e4b54e0977ef1..c2b968c8c32ce545e17e02a3d302aa3a07ff5c68 100644 --- a/include/partons/modules/process/DVCS/VGG1999Model.h +++ b/include/partons/modules/process/DVCS/DVCSProcessVGG99.h @@ -1,8 +1,8 @@ -#ifndef VGG_1999_MODEL_H -#define VGG_1999_MODEL_H +#ifndef DVCS_PROCESS_VGG99_H +#define DVCS_PROCESS_VGG99_H /** - * @file VGG1999Model.h + * @file DVCSProcessVGG99.h * @author Michel Guidal (IPNO) * @author Pawel Sznajder (IPNO) * @version 1.0 @@ -15,10 +15,10 @@ #include #include -#include "../DVCSModule.h" +#include "DVCSModule.h" /** - * @class VGG1999Model + * @class DVCSProcessVGG99 * * VGG process model for DVCS. * @@ -30,7 +30,7 @@ * * Module based on the original code received from M. Guidal as a private communication. */ -class VGG1999Model: public DVCSModule { +class DVCSProcessVGG99: public DVCSModule { public: @@ -42,13 +42,13 @@ public: * * @param className name of child class. */ - VGG1999Model(const std::string &className); + DVCSProcessVGG99(const std::string &className); /** * Default destructor. */ - virtual ~VGG1999Model(); - virtual VGG1999Model* clone() const; + virtual ~DVCSProcessVGG99(); + virtual DVCSProcessVGG99* clone() const; virtual double CrossSectionBH(double beamHelicity, double beamCharge, NumA::Vector3D targetPolarization); virtual double CrossSectionVCS(double beamHelicity, double beamCharge, @@ -61,7 +61,7 @@ protected: /** Copy constructor. @param other Object to be copied. */ - VGG1999Model(const VGG1999Model& other); + DVCSProcessVGG99(const DVCSProcessVGG99& other); virtual void initModule(); virtual void initModule(double beamHelicity, double beamCharge, @@ -303,4 +303,4 @@ private: double el_hel, double sp_in); }; -#endif /* VGG_1999_MODEL_H */ +#endif /* DVCS_PROCESS_VGG99_H */ diff --git a/include/partons/modules/process/DVMPModule.h b/include/partons/modules/process/DVMPModule.h deleted file mode 100644 index ff6b8cc8e41af39365d6a5ca6150cc683d690673..0000000000000000000000000000000000000000 --- a/include/partons/modules/process/DVMPModule.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef DVMP_MODULE_H -#define DVMP_MODULE_H - -/** - * @file DVMPModule.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date November 17, 2014 - * @version 1.0 - */ - -#include "../ProcessModule.h" - -/** - * @class DVMPModule - * - * @brief - */ -class DVMPModule: public ProcessModule { -public: - -protected: - -private: -}; - -#endif /* DVMP_MODULE_H */ diff --git a/include/partons/modules/ProcessModule.h b/include/partons/modules/process/ProcessModule.h similarity index 92% rename from include/partons/modules/ProcessModule.h rename to include/partons/modules/process/ProcessModule.h index b68a973b0a615d23a159659f4aa43bb1da032325..6b3680a84c39ff3fb67336296506c96b3a4229e1 100644 --- a/include/partons/modules/ProcessModule.h +++ b/include/partons/modules/process/ProcessModule.h @@ -12,14 +12,14 @@ #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../beans/gpd/GPDType.h" -#include "../beans/List.h" -#include "../beans/observable/ObservableChannel.h" -#include "../ModuleObject.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../beans/gpd/GPDType.h" +#include "../../beans/List.h" +#include "../../beans/observable/ObservableChannel.h" +#include "../../ModuleObject.h" class ConvolCoeffFunctionModule; -class ScaleModule; +class ScalesModule; class XiConverterModule; namespace NumA { @@ -86,7 +86,7 @@ public: * * @param pScaleModule Pointer to the module describing the relation between the factorization scale and @f$ Q^2 @f$. */ - void setScaleModule(ScaleModule* pScaleModule); + void setScaleModule(ScalesModule* pScaleModule); /** * * @param pXiConverterModule Pointer to the module that describes the relation between @f$ \xi @f$ and @f$ x_B @f$. @@ -141,7 +141,7 @@ protected: double m_phiS; ///< Angle of the target transverse polarization. double m_phie; //TODO What's this?! It's the equivalent of phiS but for GV. Redundant! TODO: Remove it! - ScaleModule* m_pScaleModule; ///< Pointer to the module describing the relation between the factorization scale and @f$ Q^2 @f$. + ScalesModule* m_pScaleModule; ///< Pointer to the module describing the relation between the factorization scale and @f$ Q^2 @f$. XiConverterModule* m_pXiConverterModule; ///< Pointer to the module that describes the relation between @f$ \xi @f$ and @f$ x_B @f$. ConvolCoeffFunctionModule* m_pConvolCoeffFunctionModule; ///< Pointer to the underlying ConvolCoeffFunctionModule. diff --git a/include/partons/modules/process/TCSModule.h b/include/partons/modules/process/TCSModule.h deleted file mode 100644 index 1f0c4791805d8bde07dd3473ee80104f7a935bd5..0000000000000000000000000000000000000000 --- a/include/partons/modules/process/TCSModule.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef TCS_MODULE_H -#define TCS_MODULE_H - -/** - * @file TCSModule.h - * @author Bryan BERTHOU (SPhN / CEA Saclay) - * @date 17 November 2014 - * @version 1.0 - * - * @class TCSModule - * - * @brief - */ - -#include "../ProcessModule.h" - -class TCSModule: public ProcessModule { -public: - -protected: - -private: -}; - -#endif /* TCS_MODULE_H */ diff --git a/include/partons/modules/RunningAlphaStrongModule.h b/include/partons/modules/running_alpha_strong/RunningAlphaStrongModule.h similarity index 94% rename from include/partons/modules/RunningAlphaStrongModule.h rename to include/partons/modules/running_alpha_strong/RunningAlphaStrongModule.h index 0fdd669c910010ab0794d397c7e52828936c48dd..9dd178a90893a7d0c910d7195262443f809143be 100644 --- a/include/partons/modules/RunningAlphaStrongModule.h +++ b/include/partons/modules/running_alpha_strong/RunningAlphaStrongModule.h @@ -1,5 +1,5 @@ -#ifndef MODULE_OBJECT_H -#define MODULE_OBJECT_H +#ifndef RUNNING_ALPHA_STRONG_MODULE_H +#define RUNNING_ALPHA_STRONG_MODULE_H /** * @file ModuleObject.h @@ -11,8 +11,8 @@ #include #include -#include "../beans/automation/BaseObjectData.h" -#include "../ModuleObject.h" +#include "../../beans/automation/BaseObjectData.h" +#include "../../ModuleObject.h" /** * @class RunningAlphaStrongModule @@ -128,4 +128,4 @@ protected: double m_alphaS; }; -#endif /* MODULE_OBJECT_H */ +#endif /* RUNNING_ALPHA_STRONG_MODULE_H */ diff --git a/include/partons/modules/alphaS/RunningAlphaStrong.h b/include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h similarity index 84% rename from include/partons/modules/alphaS/RunningAlphaStrong.h rename to include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h index f6199241ba9093cbe418ef52a30df190c1bdfc4c..055e43b3d33174571e489cc610e29856e035e31e 100644 --- a/include/partons/modules/alphaS/RunningAlphaStrong.h +++ b/include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h @@ -1,20 +1,20 @@ /** - * @file RunningAlphaStrong.h + * @file RunningAlphaStrongStandard.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date July 13th, 2011. * @version 1.0 */ -#ifndef RUNNING_ALPHA_STRONG_H -#define RUNNING_ALPHA_STRONG_H +#ifndef RUNNING_ALPHA_STRONG_STANDARD_H +#define RUNNING_ALPHA_STRONG_STANDARD_H #include #include -#include "../RunningAlphaStrongModule.h" +#include "RunningAlphaStrongModule.h" /*! - * \class RunningAlphaStrong + * \class RunningAlphaStrongStandard * * \brief Evaluation of the strong running coupling constant in the \f$\overline{MS}\f$ scheme. * @@ -28,7 +28,7 @@ * Note 2: The convention for the QCD beta function is the following:
* \f$\frac{d \alpha_{s}(n_{f})}{d \ln(\mu^2)} = \beta ( \alpha_{s} ) = - \sum_{n=1}^\infty \beta_{n-1} \times ( \alpha_{s} / \pi )^{(n+1)}\f$ */ -class RunningAlphaStrong: public RunningAlphaStrongModule { +class RunningAlphaStrongStandard: public RunningAlphaStrongModule { public: @@ -41,14 +41,14 @@ public: * Constructor. * @param className Name of class. */ - RunningAlphaStrong(const std::string &className); + RunningAlphaStrongStandard(const std::string &className); - virtual RunningAlphaStrong* clone() const; + virtual RunningAlphaStrongStandard* clone() const; /** * Destructor. */ - virtual ~RunningAlphaStrong(); + virtual ~RunningAlphaStrongStandard(); virtual double compute(); @@ -63,7 +63,7 @@ protected: * Copy constructor. * @param other Object to be copied. */ - RunningAlphaStrong(const RunningAlphaStrong &other); + RunningAlphaStrongStandard(const RunningAlphaStrongStandard &other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -116,5 +116,5 @@ private: double fAlphaS; ///< Current value of strong coupling. }; -#endif /* RUNNING_ALPHA_STRONG_H */ +#endif /* RUNNING_ALPHA_STRONG_STANDARD_H */ diff --git a/include/partons/modules/alphaS/RunningAlphaStrongVinnikov.h b/include/partons/modules/running_alpha_strong/RunningAlphaStrongVinnikov.h similarity index 94% rename from include/partons/modules/alphaS/RunningAlphaStrongVinnikov.h rename to include/partons/modules/running_alpha_strong/RunningAlphaStrongVinnikov.h index a185b6c4ca178a167061206b838a89a1f6340108..0fadf8c8c402a7ba8f11bff02f69e0b9573fab8d 100644 --- a/include/partons/modules/alphaS/RunningAlphaStrongVinnikov.h +++ b/include/partons/modules/running_alpha_strong/RunningAlphaStrongVinnikov.h @@ -10,7 +10,7 @@ #include -#include "../RunningAlphaStrongModule.h" +#include "RunningAlphaStrongModule.h" /*! * \class RunningAlphaStrongVinnikov diff --git a/include/partons/modules/scale/ScaleModule.h b/include/partons/modules/scales/ScalesModule.h similarity index 71% rename from include/partons/modules/scale/ScaleModule.h rename to include/partons/modules/scales/ScalesModule.h index e0a8ef06ba43f4368442116680bbcbd3d56b7750..787b570ef29cef81fc69f5d169e004f15afc450a 100644 --- a/include/partons/modules/scale/ScaleModule.h +++ b/include/partons/modules/scales/ScalesModule.h @@ -1,8 +1,8 @@ -#ifndef SCALE_MODULE_H -#define SCALE_MODULE_H +#ifndef SCALES_MODULE_H +#define SCALES_MODULE_H /** - * @file ScaleModule.h + * @file ScalesModule.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date October 28, 2015 * @version 1.0 @@ -15,23 +15,23 @@ #include "../../beans/automation/BaseObjectData.h" #include "../../ModuleObject.h" -class Scale; +class Scales; /** - * @class ScaleModule + * @class ScalesModule * * @brief Abstract class for modules evaluating factorization and renormalization scales. * * This class acts as an abstract (mother) class for modules used in the evaluation of factorization and renormalization scales. * The usage of its derivatives is illustrated by the following example: \code{.cpp} - //load one of ScaleModule modules with the BaseModuleFactory - ScaleModule* pScaleModule = Partons::getInstance()->getModuleObjectFactory()->newScaleModule(Q2Multiplier::classId); + //load one of ScalesModule modules with the BaseModuleFactory + ScalesModule* pScalesModule = Partons::getInstance()->getModuleObjectFactory()->newScalesModule(Q2Multiplier::classId); //evaluate for given Q2 and print double Q2 = 10.; - Scale scales = pScaleModule->compute(Q2); + Scale scales = pScalesModule->compute(Q2); Partons::getInstance()->getLoggerManager()->info("example", __func__, ElemUtils::Formatter() << "scales at Q2 = "<< Q2 << " (GeV2) are " << scales.toString()); \endcode @@ -40,34 +40,34 @@ class Scale; 06-06-2017 03:41:59 [INFO] (example::main) scales at Q2 = 10 (GeV2) are m_MuF2 = 10 (GeV2) m_MuR2 = 10 (GeV2) \endcode */ -class ScaleModule: public ModuleObject { +class ScalesModule: public ModuleObject { public: /** * Type of module name used by the automatization. */ - static const std::string SCALE_MODULE_CLASS_NAME; + static const std::string SCALES_MODULE_CLASS_NAME; /** * Constructor. * @param className Name of class. */ - ScaleModule(const std::string &className); + ScalesModule(const std::string &className); /** * Destructor. */ - virtual ~ScaleModule(); + virtual ~ScalesModule(); - virtual ScaleModule* clone() const = 0; + virtual ScalesModule* clone() const = 0; /** * Evaluate scales for a given value of \f$Q^2\f$. * @param Q2 Virtual-photon virtuality in \f$GeV^2\f$ * @return Scale object containing evaluated values. */ - virtual Scale compute(double Q2) = 0; + virtual Scales compute(double Q2) = 0; virtual void configure(const ElemUtils::Parameters ¶meters); @@ -80,10 +80,10 @@ protected: * Copy constructor. * @param other Object to be copied. */ - ScaleModule(const ScaleModule &other); + ScalesModule(const ScalesModule &other); virtual void initModule(); virtual void isModuleWellConfigured(); }; -#endif /* SCALE_MODULE_H */ +#endif /* SCALES_MODULE_H */ diff --git a/include/partons/modules/scale/Q2Multiplier.h b/include/partons/modules/scales/ScalesQ2Multiplier.h similarity index 63% rename from include/partons/modules/scale/Q2Multiplier.h rename to include/partons/modules/scales/ScalesQ2Multiplier.h index 1246fd7c3a5701dca0e1054187ef4b2733c62588..daeb03c0fcf408c2ab3a5e8825c02239d24fffd0 100644 --- a/include/partons/modules/scale/Q2Multiplier.h +++ b/include/partons/modules/scales/ScalesQ2Multiplier.h @@ -1,8 +1,8 @@ -#ifndef Q2_MULTIPLIER_H -#define Q2_MULTIPLIER_H +#ifndef SCALES_Q2_MULTIPLIER_H +#define SCALES_Q2_MULTIPLIER_H /** - * @file Q2Multiplier.h + * @file ScalesQ2Multiplier.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date 28 October 2015 * @version 1.0 @@ -11,29 +11,29 @@ #include #include -#include "ScaleModule.h" +#include "ScalesModule.h" namespace ElemUtils { class Parameters; } /* namespace ElemUtils */ /** - * @class Q2Multiplier + * @class ScalesQ2Multiplier * * @brief Evaluation of factorization and renormalization scales as a linear function of \f$Q^2\f$. * * This model evaluates factorization and renormalization scales as a linear function of \f$Q^2\f$, i.e.
* \f$\mu_{F}^{2} = \mu_{R}^{2} = \lambda Q^2\f$
- * The value of \f$\lambda\f$ can be changed by Q2Multiplier::configure() function using Q2Multiplier::PARAMETER_NAME_LAMBDA parameter key. + * The value of \f$\lambda\f$ can be changed by ScalesQ2Multiplier::configure() function using ScalesQ2Multiplier::PARAMETER_NAME_LAMBDA parameter key. * * For an example of usage of this module see the abstract class documentation. */ -class Q2Multiplier: public ScaleModule { +class ScalesQ2Multiplier: public ScalesModule { public: /** - * Name to set value of Q2Multiplier::m_lambda via the automatization. + * Name to set value of ScalesQ2Multiplier::m_lambda via the automatization. */ static const std::string PARAMETER_NAME_LAMBDA; @@ -46,18 +46,18 @@ public: * Constructor. * @param className Name of class. */ - Q2Multiplier(const std::string &className); + ScalesQ2Multiplier(const std::string &className); /** * Destructor. */ - virtual ~Q2Multiplier(); + virtual ~ScalesQ2Multiplier(); - virtual Q2Multiplier* clone() const; + virtual ScalesQ2Multiplier* clone() const; virtual void configure(const ElemUtils::Parameters ¶meters); - virtual Scale compute(double Q2); + virtual Scales compute(double Q2); protected: @@ -65,7 +65,7 @@ protected: * Copy constructor. * @param other Object to be copied. */ - Q2Multiplier(const Q2Multiplier &other); + ScalesQ2Multiplier(const ScalesQ2Multiplier &other); virtual void initModule(); virtual void isModuleWellConfigured(); @@ -78,4 +78,4 @@ private: double m_lambda; }; -#endif /* Q2_MULTIPLIER_H */ +#endif /* SCALES_Q2_MULTIPLIER_H */ diff --git a/include/partons/modules/xb_to_xi/XiConverterModule.h b/include/partons/modules/xi_converter/XiConverterModule.h similarity index 100% rename from include/partons/modules/xb_to_xi/XiConverterModule.h rename to include/partons/modules/xi_converter/XiConverterModule.h diff --git a/include/partons/modules/xb_to_xi/XBToXi.h b/include/partons/modules/xi_converter/XiConverterXBToXi.h similarity index 70% rename from include/partons/modules/xb_to_xi/XBToXi.h rename to include/partons/modules/xi_converter/XiConverterXBToXi.h index 824afd47b749ded679ff2456cab90c26ac56fefb..2f9cc9c80eda52e8c1fd469d503e8650a50ba4f2 100644 --- a/include/partons/modules/xb_to_xi/XBToXi.h +++ b/include/partons/modules/xi_converter/XiConverterXBToXi.h @@ -1,8 +1,8 @@ -#ifndef XB_TO_XI_H -#define XB_TO_XI_H +#ifndef XI_CONVERTER_XB_TO_XI_H +#define XI_CONVERTER_XB_TO_XI_H /** - * @file XBToXi.h + * @file XiConverterXBToXi.h * @author Bryan BERTHOU (SPhN / CEA Saclay) * @date 05 October 2015 * @version 1.0 @@ -13,7 +13,7 @@ #include "XiConverterModule.h" /** - * @class XBToXi + * @class XiConverterXBToXi * * @brief Evaluation of GPD \f$\xi\f$ variable as function of \f$x_{B}\f$ only. * @@ -22,7 +22,7 @@ * * For an example of usage of this module see the abstract class documentation. */ -class XBToXi: public XiConverterModule { +class XiConverterXBToXi: public XiConverterModule { public: @@ -35,14 +35,14 @@ public: * Constructor. * @param className Name of class. */ - XBToXi(const std::string &className); + XiConverterXBToXi(const std::string &className); /** * Destructor. */ - virtual ~XBToXi(); + virtual ~XiConverterXBToXi(); - virtual XBToXi* clone() const; + virtual XiConverterXBToXi* clone() const; virtual double compute(double xB, double t, double Q2); @@ -52,10 +52,10 @@ protected: * Copy constructor. * @param other Object to be copied. */ - XBToXi(const XBToXi &other); + XiConverterXBToXi(const XiConverterXBToXi &other); virtual void initModule(); virtual void isModuleWellConfigured(); }; -#endif /* XB_TO_XI_H */ +#endif /* XI_CONVERTER_XB_TO_XI_H */ diff --git a/include/partons/services/GPDService.h b/include/partons/services/GPDService.h index 493333f432b95aba05d01e11c83dd524396f572b..a10eb908a7a75713fd5f554c1bae24c0011969fd 100644 --- a/include/partons/services/GPDService.h +++ b/include/partons/services/GPDService.h @@ -15,7 +15,7 @@ #include "../beans/gpd/GPDResult.h" #include "../beans/gpd/GPDType.h" #include "../beans/List.h" -#include "../modules/GPDModule.h" +#include "../modules/gpd/GPDModule.h" #include "../ServiceObjectTyped.h" class GPDEvolutionModule; diff --git a/src/partons/ModuleObjectFactory.cpp b/src/partons/ModuleObjectFactory.cpp index 9b8a3569df19aeeea12154e49dd16b06a5c582a6..14e72496567c2ffaa89029a5a99b9368367ac642 100644 --- a/src/partons/ModuleObjectFactory.cpp +++ b/src/partons/ModuleObjectFactory.cpp @@ -4,20 +4,20 @@ #include #include "../../include/partons/BaseObjectFactory.h" -#include "../../include/partons/modules/ActiveFlavorsModule.h" +#include "../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.h" #include "../../include/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.h" +#include "../../include/partons/modules/double_distribution/DoubleDistributionModule.h" #include "../../include/partons/modules/dse/GapEquationSolverModule.h" -#include "../../include/partons/modules/DoubleDistributionModule.h" #include "../../include/partons/modules/evolution/GPDEvolutionModule.h" -#include "../../include/partons/modules/GPDBorderFunctionModule.h" -#include "../../include/partons/modules/GPDSubtractionConstantModule.h" +#include "../../include/partons/modules/gpd_border_function/GPDBorderFunctionModule.h" +#include "../../include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h" #include "../../include/partons/modules/observable/Observable.h" #include "../../include/partons/modules/overlap/IncompleteGPDModule.h" -#include "../../include/partons/modules/process/DVCSModule.h" +#include "../../include/partons/modules/process/DVCS/DVCSModule.h" #include "../../include/partons/modules/radon_inverse/RadonInverseModule.h" -#include "../../include/partons/modules/RunningAlphaStrongModule.h" -#include "../../include/partons/modules/scale/ScaleModule.h" -#include "../../include/partons/modules/xb_to_xi/XiConverterModule.h" +#include "../../include/partons/modules/running_alpha_strong/RunningAlphaStrongModule.h" +#include "../../include/partons/modules/scales/ScalesModule.h" +#include "../../include/partons/modules/xi_converter/XiConverterModule.h" ModuleObjectFactory::ModuleObjectFactory(BaseObjectFactory* pBaseObjectFactory) : BaseObject("ModuleObjectFactory"), m_pBaseObjectFactory( @@ -225,22 +225,22 @@ RunningAlphaStrongModule* ModuleObjectFactory::newRunningAlphaStrongModule( return static_cast(newModuleObject(className)); } -ActiveFlavorsModule* ModuleObjectFactory::newActiveFlavorsModule( +ActiveFlavorsThresholdsModule* ModuleObjectFactory::newActiveFlavorsThresholdsModule( unsigned int classId) { - return static_cast(newModuleObject(classId)); + return static_cast(newModuleObject(classId)); } -ActiveFlavorsModule* ModuleObjectFactory::newActiveFlavorsModule( +ActiveFlavorsThresholdsModule* ModuleObjectFactory::newActiveFlavorsThresholdsModule( const std::string &className) { - return static_cast(newModuleObject(className)); + return static_cast(newModuleObject(className)); } -ScaleModule* ModuleObjectFactory::newScaleModule(unsigned int classId) { - return static_cast(newModuleObject(classId)); +ScalesModule* ModuleObjectFactory::newScalesModule(unsigned int classId) { + return static_cast(newModuleObject(classId)); } -ScaleModule* ModuleObjectFactory::newScaleModule(const std::string &className) { - return static_cast(newModuleObject(className)); +ScalesModule* ModuleObjectFactory::newScalesModule(const std::string &className) { + return static_cast(newModuleObject(className)); } XiConverterModule* ModuleObjectFactory::newXiConverterModule( diff --git a/src/partons/beans/Scale.cpp b/src/partons/beans/Scales.cpp similarity index 60% rename from src/partons/beans/Scale.cpp rename to src/partons/beans/Scales.cpp index b001f4c90d181538ef9f25afcba5980d59e0feb7..c8d639a5a3d8e8d5bc195d54d49e1aaff8a98d5f 100644 --- a/src/partons/beans/Scale.cpp +++ b/src/partons/beans/Scales.cpp @@ -1,38 +1,37 @@ -#include "../../../include/partons/beans/Scale.h" - #include #include "../../../include/partons/beans/Kinematic.h" +#include "../../../include/partons/beans/Scales.h" -Scale::Scale() : +Scales::Scales() : BaseObject("Scale"), m_MuF2(0.), m_MuR2(0.) { } -Scale::~Scale() { +Scales::~Scales() { // TODO Auto-generated destructor stub } -Scale::Scale(double MuF2, double MuR2) : +Scales::Scales(double MuF2, double MuR2) : BaseObject("Scale"), m_MuF2(MuF2), m_MuR2(MuR2) { } -double Scale::getMuF2() const { +double Scales::getMuF2() const { return m_MuF2; } -void Scale::setMuF2(double muF2) { +void Scales::setMuF2(double muF2) { m_MuF2 = muF2; } -double Scale::getMuR2() const { +double Scales::getMuR2() const { return m_MuR2; } -void Scale::setMuR2(double muR2) { +void Scales::setMuR2(double muR2) { m_MuR2 = muR2; } -std::string Scale::toString() const { +std::string Scales::toString() const { return ElemUtils::Formatter() << "m_MuF2 = " << m_MuF2 << " (GeV2) m_MuR2 = " << m_MuR2 << " (GeV2)"; } diff --git a/src/partons/beans/active_flavors/NfInterval.cpp b/src/partons/beans/active_flavors/NfInterval.cpp deleted file mode 100644 index ffaa488f717926d76aef8ac8045c3f9ce03842eb..0000000000000000000000000000000000000000 --- a/src/partons/beans/active_flavors/NfInterval.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/beans/active_flavors/NfInterval.h" - -#include - -NfInterval::NfInterval() : - m_nf(0), m_lowerBound(0.), m_upperBound(0.), m_index(0) { -} - -NfInterval::NfInterval(unsigned short nf, double lowerBound, double upperBound, - unsigned int index) : - m_nf(nf), m_lowerBound(lowerBound), m_upperBound(upperBound), m_index( - index) { -} - -NfInterval::~NfInterval() { -} - -unsigned short NfInterval::getNf() const { - return m_nf; -} - -void NfInterval::setNf(unsigned short nf) { - m_nf = nf; -} - -bool NfInterval::operator <(const NfInterval& other) const { - return (m_nf < other.m_nf); -} - -unsigned int NfInterval::getIndex() const { - return m_index; -} - -void NfInterval::setIndex(unsigned int index) { - m_index = index; -} - -std::string NfInterval::toString() const{ - ElemUtils::Formatter formatter; - - formatter << "index" << m_index << '\n'; - formatter << "nf = " << m_nf << '\n'; - formatter << "lowerBound = " << m_lowerBound << '\n'; - formatter << "upperBound = " << m_upperBound << '\n'; - - return formatter.str(); -} - -double NfInterval::getLowerBound() const { - return m_lowerBound; -} - -void NfInterval::setLowerBound(double lowerBound) { - m_lowerBound = lowerBound; -} - -double NfInterval::getUpperBound() const { - return m_upperBound; -} - -void NfInterval::setUpperBound(double upperBound) { - m_upperBound = upperBound; -} diff --git a/src/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.cpp b/src/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9e45118532ef37fe1de9a33f870ff2e1e92e48f --- /dev/null +++ b/src/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.cpp @@ -0,0 +1,64 @@ +#include "../../../../include/partons/beans/active_flavors_thresholds/ActiveFlavorsThresholds.h" + +#include + + +ActiveFlavorsThresholds::ActiveFlavorsThresholds() : + m_nf(0), m_lowerBound(0.), m_upperBound(0.), m_index(0) { +} + +ActiveFlavorsThresholds::ActiveFlavorsThresholds(unsigned short nf, double lowerBound, double upperBound, + unsigned int index) : + m_nf(nf), m_lowerBound(lowerBound), m_upperBound(upperBound), m_index( + index) { +} + +ActiveFlavorsThresholds::~ActiveFlavorsThresholds() { +} + +unsigned short ActiveFlavorsThresholds::getNf() const { + return m_nf; +} + +void ActiveFlavorsThresholds::setNf(unsigned short nf) { + m_nf = nf; +} + +bool ActiveFlavorsThresholds::operator <(const ActiveFlavorsThresholds& other) const { + return (m_nf < other.m_nf); +} + +unsigned int ActiveFlavorsThresholds::getIndex() const { + return m_index; +} + +void ActiveFlavorsThresholds::setIndex(unsigned int index) { + m_index = index; +} + +std::string ActiveFlavorsThresholds::toString() const{ + ElemUtils::Formatter formatter; + + formatter << "index" << m_index << '\n'; + formatter << "nf = " << m_nf << '\n'; + formatter << "lowerBound = " << m_lowerBound << '\n'; + formatter << "upperBound = " << m_upperBound << '\n'; + + return formatter.str(); +} + +double ActiveFlavorsThresholds::getLowerBound() const { + return m_lowerBound; +} + +void ActiveFlavorsThresholds::setLowerBound(double lowerBound) { + m_lowerBound = lowerBound; +} + +double ActiveFlavorsThresholds::getUpperBound() const { + return m_upperBound; +} + +void ActiveFlavorsThresholds::setUpperBound(double upperBound) { + m_upperBound = upperBound; +} diff --git a/src/partons/modules/active_flavors/NfFunctionExample.cpp b/src/partons/modules/active_flavors/NfFunctionExample.cpp deleted file mode 100644 index 505a948c95b15c30c92dae11eb4931cf54d83c37..0000000000000000000000000000000000000000 --- a/src/partons/modules/active_flavors/NfFunctionExample.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "../../../../include/partons/modules/active_flavors/NfFunctionExample.h" - -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int NfFunctionExample::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new NfFunctionExample("NfFunctionExample")); - -NfFunctionExample::NfFunctionExample(const std::string &className) : - ActiveFlavorsModule(className) { - addNfInterval(1, 0., Constant::QUARK_UP_MASS * Constant::QUARK_UP_MASS); - addNfInterval(2, Constant::QUARK_UP_MASS * Constant::QUARK_UP_MASS, - Constant::QUARK_DOWN_MASS * Constant::QUARK_DOWN_MASS); - addNfInterval(3, Constant::QUARK_DOWN_MASS * Constant::QUARK_DOWN_MASS, - Constant::QUARK_STRANGE_MASS * Constant::QUARK_STRANGE_MASS); - addNfInterval(4, Constant::QUARK_STRANGE_MASS * Constant::QUARK_STRANGE_MASS, - Constant::QUARK_CHARM_MASS * Constant::QUARK_CHARM_MASS); - addNfInterval(5, Constant::QUARK_CHARM_MASS * Constant::QUARK_CHARM_MASS, - Constant::QUARK_BOTTOM_MASS * Constant::QUARK_BOTTOM_MASS); - addNfInterval(6, Constant::QUARK_BOTTOM_MASS * Constant::QUARK_BOTTOM_MASS, - Constant::QUARK_TOP_MASS * Constant::QUARK_TOP_MASS); -} - -NfFunctionExample::~NfFunctionExample() { -} - -NfFunctionExample::NfFunctionExample(const NfFunctionExample& other) : - ActiveFlavorsModule(other) { -} - -NfFunctionExample* NfFunctionExample::clone() const { - return new NfFunctionExample(*this); -} - -void NfFunctionExample::initModule() { - ActiveFlavorsModule::initModule(); -} - -void NfFunctionExample::isModuleWellConfigured() { - ActiveFlavorsModule::isModuleWellConfigured(); -} diff --git a/src/partons/modules/ActiveFlavorsModule.cpp b/src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.cpp similarity index 70% rename from src/partons/modules/ActiveFlavorsModule.cpp rename to src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.cpp index 61e2b5477279c15c4da3743697c8717e63a1456b..f003ae0e1473421b36e30ceaebcf991b25d17ef5 100644 --- a/src/partons/modules/ActiveFlavorsModule.cpp +++ b/src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.cpp @@ -1,41 +1,41 @@ -#include "../../../include/partons/modules/ActiveFlavorsModule.h" +#include "../../../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsModule.h" #include #include #include -const std::string ActiveFlavorsModule::ACTIVE_FLAVORS_MODULE_CLASS_NAME = - "ActiveFlavorsModule"; +const std::string ActiveFlavorsThresholdsModule::ACTIVE_FLAVORS_THRESHOLDS_MODULE_CLASS_NAME = + "ActiveFlavorsThresholdsModule"; -ActiveFlavorsModule::ActiveFlavorsModule(const std::string &className) : +ActiveFlavorsThresholdsModule::ActiveFlavorsThresholdsModule(const std::string &className) : ModuleObject(className) { } -ActiveFlavorsModule::~ActiveFlavorsModule() { +ActiveFlavorsThresholdsModule::~ActiveFlavorsThresholdsModule() { } -ActiveFlavorsModule::ActiveFlavorsModule(const ActiveFlavorsModule& other) : +ActiveFlavorsThresholdsModule::ActiveFlavorsThresholdsModule(const ActiveFlavorsThresholdsModule& other) : ModuleObject(other) { m_nfFunctionOfMu = other.m_nfFunctionOfMu; } -void ActiveFlavorsModule::resolveObjectDependencies() { +void ActiveFlavorsThresholdsModule::resolveObjectDependencies() { // sort vector of intervals by nf value std::sort(m_nfFunctionOfMu.begin(), m_nfFunctionOfMu.end()); checkCurveIntegrity(); } -void ActiveFlavorsModule::addNfInterval(unsigned short nfValue, +void ActiveFlavorsThresholdsModule::addNfInterval(unsigned short nfValue, double lowerBound, double upperBound) { m_nfFunctionOfMu.push_back( - NfInterval(nfValue, lowerBound, upperBound, + ActiveFlavorsThresholds(nfValue, lowerBound, upperBound, m_nfFunctionOfMu.size())); } -NfInterval ActiveFlavorsModule::getNfInterval(double Mu) { - NfInterval result; +ActiveFlavorsThresholds ActiveFlavorsThresholdsModule::getNfInterval(double Mu) { + ActiveFlavorsThresholds result; // case Mu <= 0 if (Mu <= m_nfFunctionOfMu[0].getLowerBound()) { @@ -64,17 +64,17 @@ NfInterval ActiveFlavorsModule::getNfInterval(double Mu) { return result; } -std::vector ActiveFlavorsModule::getNfIntervals(double MuMin, +std::vector ActiveFlavorsThresholdsModule::getNfIntervals(double MuMin, double MuMax) { - std::vector results; + std::vector results; // case MuMin > MuMax if (MuMin > MuMax) { warn(__func__, "MuMin > MuMax : threshold suppressed by overriding lower bound and upper bound ; nf will be constant"); - NfInterval nfInterval = getNfInterval(MuMin); + ActiveFlavorsThresholds nfInterval = getNfInterval(MuMin); // delete thresholds by overriding lowerBound & upperBound // and swap lowerBound & upperBound value to perform backward evolution later in the code with math integration nfInterval.setLowerBound(MuMax); @@ -83,8 +83,8 @@ std::vector ActiveFlavorsModule::getNfIntervals(double MuMin, } // case MuMin < MuMax else { - NfInterval nfMinInterval = getNfInterval(MuMin); - NfInterval nfMaxInterval = getNfInterval(MuMax); + ActiveFlavorsThresholds nfMinInterval = getNfInterval(MuMin); + ActiveFlavorsThresholds nfMaxInterval = getNfInterval(MuMax); // retrieve intermediate intervals between nfMinInterval and nfMaxInterval for (unsigned int i = nfMinInterval.getIndex(); @@ -96,13 +96,13 @@ std::vector ActiveFlavorsModule::getNfIntervals(double MuMin, return results; } -void ActiveFlavorsModule::initModule() { +void ActiveFlavorsThresholdsModule::initModule() { } -void ActiveFlavorsModule::isModuleWellConfigured() { +void ActiveFlavorsThresholdsModule::isModuleWellConfigured() { } -void ActiveFlavorsModule::checkCurveIntegrity() { +void ActiveFlavorsThresholdsModule::checkCurveIntegrity() { // first vector must have at least one entry if (m_nfFunctionOfMu.empty()) { throw ElemUtils::CustomException(getClassName(), __func__, @@ -133,7 +133,7 @@ void ActiveFlavorsModule::checkCurveIntegrity() { } -std::string ActiveFlavorsModule::toString() const{ +std::string ActiveFlavorsThresholdsModule::toString() const{ ElemUtils::Formatter formater; for (unsigned int i = 0; i != m_nfFunctionOfMu.size(); i++) @@ -141,7 +141,7 @@ std::string ActiveFlavorsModule::toString() const{ return formater.str(); } -void ActiveFlavorsModule::prepareSubModules( +void ActiveFlavorsThresholdsModule::prepareSubModules( const std::map& subModulesData) { ModuleObject::prepareSubModules(subModulesData); diff --git a/src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.cpp b/src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.cpp new file mode 100644 index 0000000000000000000000000000000000000000..46dcb3c317b3ac672e8b9b28307baa2e3ee8bb24 --- /dev/null +++ b/src/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.cpp @@ -0,0 +1,42 @@ +#include "../../../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h" + +#include "../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int ActiveFlavorsThresholdsQuarkMasses::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new ActiveFlavorsThresholdsQuarkMasses("ActiveFlavorsThresholdsQuarkMasses")); + +ActiveFlavorsThresholdsQuarkMasses::ActiveFlavorsThresholdsQuarkMasses(const std::string &className) : + ActiveFlavorsThresholdsModule(className) { + addNfInterval(1, 0., Constant::QUARK_UP_MASS * Constant::QUARK_UP_MASS); + addNfInterval(2, Constant::QUARK_UP_MASS * Constant::QUARK_UP_MASS, + Constant::QUARK_DOWN_MASS * Constant::QUARK_DOWN_MASS); + addNfInterval(3, Constant::QUARK_DOWN_MASS * Constant::QUARK_DOWN_MASS, + Constant::QUARK_STRANGE_MASS * Constant::QUARK_STRANGE_MASS); + addNfInterval(4, Constant::QUARK_STRANGE_MASS * Constant::QUARK_STRANGE_MASS, + Constant::QUARK_CHARM_MASS * Constant::QUARK_CHARM_MASS); + addNfInterval(5, Constant::QUARK_CHARM_MASS * Constant::QUARK_CHARM_MASS, + Constant::QUARK_BOTTOM_MASS * Constant::QUARK_BOTTOM_MASS); + addNfInterval(6, Constant::QUARK_BOTTOM_MASS * Constant::QUARK_BOTTOM_MASS, + Constant::QUARK_TOP_MASS * Constant::QUARK_TOP_MASS); +} + +ActiveFlavorsThresholdsQuarkMasses::~ActiveFlavorsThresholdsQuarkMasses() { +} + +ActiveFlavorsThresholdsQuarkMasses::ActiveFlavorsThresholdsQuarkMasses(const ActiveFlavorsThresholdsQuarkMasses& other) : + ActiveFlavorsThresholdsModule(other) { +} + +ActiveFlavorsThresholdsQuarkMasses* ActiveFlavorsThresholdsQuarkMasses::clone() const { + return new ActiveFlavorsThresholdsQuarkMasses(*this); +} + +void ActiveFlavorsThresholdsQuarkMasses::initModule() { + ActiveFlavorsThresholdsModule::initModule(); +} + +void ActiveFlavorsThresholdsQuarkMasses::isModuleWellConfigured() { + ActiveFlavorsThresholdsModule::isModuleWellConfigured(); +} diff --git a/src/partons/modules/ConvolCoeffFunctionModule.cpp b/src/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.cpp similarity index 90% rename from src/partons/modules/ConvolCoeffFunctionModule.cpp rename to src/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.cpp index 01125abe3a5e6facd3a33dcbb73354470f84ce59..acb03eb8086673a0f48f50cf38f595e6904bd932 100644 --- a/src/partons/modules/ConvolCoeffFunctionModule.cpp +++ b/src/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.cpp @@ -1,18 +1,17 @@ -#include "../../../include/partons/modules/ConvolCoeffFunctionModule.h" +#include "../../../../include/partons/modules/convol_coeff_function/ConvolCoeffFunctionModule.h" #include #include -#include #include #include -#include "../../../include/partons/beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionResult.h" -#include "../../../include/partons/modules/GPDModule.h" -#include "../../../include/partons/ModuleObjectFactory.h" -#include "../../../include/partons/Partons.h" -#include "../../../include/partons/services/ConvolCoeffFunctionService.h" -#include "../../../include/partons/ServiceObjectRegistry.h" -#include "../../../include/partons/ServiceObjectTyped.h" +#include "../../../../include/partons/beans/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionResult.h" +#include "../../../../include/partons/modules/gpd/GPDModule.h" +#include "../../../../include/partons/ModuleObjectFactory.h" +#include "../../../../include/partons/Partons.h" +#include "../../../../include/partons/services/ConvolCoeffFunctionService.h" +#include "../../../../include/partons/ServiceObjectRegistry.h" +#include "../../../../include/partons/ServiceObjectTyped.h" const std::string ConvolCoeffFunctionModule::CONVOL_COEFF_FUNCTION_MODULE_CLASS_NAME = "ConvolCoeffFunctionModule"; diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.cpp similarity index 67% rename from src/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.cpp rename to src/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.cpp index e911d6e66598b4d469aa4c7f3374758deefcdc1f..a43e3fe38afc2c6acc16706db0d50b295989dcda 100644 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.cpp +++ b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.cpp @@ -1,9 +1,7 @@ -#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSConstantCFFModel.h" +#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFConstant.h" #include -//#include #include -#include #include #include #include @@ -11,24 +9,23 @@ #include "../../../../../include/partons/BaseObjectRegistry.h" -// initialize [class]::classId with a unique name. -const unsigned int DVCSConstantCFFModel::classId = +const unsigned int DVCSCFFConstant::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new DVCSConstantCFFModel("DVCSConstantCFFModel")); + new DVCSCFFConstant("DVCSCFFConstant")); // set key names -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_VALUES = "cff_values"; - -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Re = "cff_value_H_Re"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Im = "cff_value_H_Im"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Re = "cff_value_E_Re"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Im = "cff_value_E_Im"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Re = "cff_value_Ht_Re"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Im = "cff_value_Ht_Im"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Re = "cff_value_Et_Re"; -const std::string DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Im = "cff_value_Et_Im"; - -DVCSConstantCFFModel::DVCSConstantCFFModel(const std::string &className) : +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_VALUES = "cff_values"; + +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_H_Re = "cff_value_H_Re"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_H_Im = "cff_value_H_Im"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_E_Re = "cff_value_E_Re"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_E_Im = "cff_value_E_Im"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Re = "cff_value_Ht_Re"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Im = "cff_value_Ht_Im"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Re = "cff_value_Et_Re"; +const std::string DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Im = "cff_value_Et_Im"; + +DVCSCFFConstant::DVCSCFFConstant(const std::string &className) : DVCSConvolCoeffFunctionModule(className) { setIsGPDModuleDependent(false); @@ -51,32 +48,32 @@ DVCSConstantCFFModel::DVCSConstantCFFModel(const std::string &className) : } } -DVCSConstantCFFModel::DVCSConstantCFFModel(const DVCSConstantCFFModel &other) : +DVCSCFFConstant::DVCSCFFConstant(const DVCSCFFConstant &other) : DVCSConvolCoeffFunctionModule(other) { m_CFFs = other.m_CFFs; } -DVCSConstantCFFModel* DVCSConstantCFFModel::clone() const { - return new DVCSConstantCFFModel(*this); +DVCSCFFConstant* DVCSCFFConstant::clone() const { + return new DVCSCFFConstant(*this); } //TODO comment gérer le cycle de vie des modules membres -DVCSConstantCFFModel::~DVCSConstantCFFModel() { +DVCSCFFConstant::~DVCSCFFConstant() { } -void DVCSConstantCFFModel::initModule() { +void DVCSCFFConstant::initModule() { // initialize parent module before DVCSConvolCoeffFunctionModule::initModule(); } -void DVCSConstantCFFModel::isModuleWellConfigured() { +void DVCSCFFConstant::isModuleWellConfigured() { // check parent module before DVCSConvolCoeffFunctionModule::isModuleWellConfigured(); } -std::complex DVCSConstantCFFModel::computeCFF() { +std::complex DVCSCFFConstant::computeCFF() { std::map >::iterator it = m_CFFs.find( m_currentGPDComputeType); @@ -95,7 +92,7 @@ std::complex DVCSConstantCFFModel::computeCFF() { } } -void DVCSConstantCFFModel::configure(const ElemUtils::Parameters ¶meters) { +void DVCSCFFConstant::configure(const ElemUtils::Parameters ¶meters) { //clear for (std::map >::iterator it = @@ -107,7 +104,7 @@ void DVCSConstantCFFModel::configure(const ElemUtils::Parameters ¶meters) { bool isSetViaAll = false; // several CFFs - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_VALUES)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_VALUES)) { //is set via all isSetViaAll = true; @@ -135,7 +132,7 @@ void DVCSConstantCFFModel::configure(const ElemUtils::Parameters ¶meters) { warn(__func__, ElemUtils::Formatter() << "Too many elements for key " - << DVCSConstantCFFModel::PARAMETER_NAME_CFF_VALUES + << DVCSCFFConstant::PARAMETER_NAME_CFF_VALUES << ", additional elements will be ignored"); break; } @@ -170,49 +167,49 @@ void DVCSConstantCFFModel::configure(const ElemUtils::Parameters ¶meters) { } else { warn(__func__, ElemUtils::Formatter() << "String for " - << DVCSConstantCFFModel::PARAMETER_NAME_CFF_VALUES << " is empty"); + << DVCSCFFConstant::PARAMETER_NAME_CFF_VALUES << " is empty"); } } // single CFFs - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Re)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_H_Re)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Re); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_H_Re); configureValue(GPDType::H, 1, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Im)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_H_Im)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_H_Im); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_H_Im); configureValue(GPDType::H, 0, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Re)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_E_Re)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Re); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_E_Re); configureValue(GPDType::E, 1, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Im)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_E_Im)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_E_Im); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_E_Im); configureValue(GPDType::E, 0, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Re)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Re)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Re); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Re); configureValue(GPDType::Ht, 1, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Im)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Im)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Ht_Im); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_Ht_Im); configureValue(GPDType::Ht, 0, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Re)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Re)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Re); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Re); configureValue(GPDType::Et, 1, parameters.getLastAvailable()); } - if (parameters.isAvailable(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Im)) { + if (parameters.isAvailable(DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Im)) { if (isSetViaAll) - printErrorInConfigure(DVCSConstantCFFModel::PARAMETER_NAME_CFF_Et_Im); + printErrorInConfigure(DVCSCFFConstant::PARAMETER_NAME_CFF_Et_Im); configureValue(GPDType::Et, 0, parameters.getLastAvailable()); } @@ -220,14 +217,14 @@ void DVCSConstantCFFModel::configure(const ElemUtils::Parameters ¶meters) { DVCSConvolCoeffFunctionModule::configure(parameters); } -void DVCSConstantCFFModel::printErrorInConfigure(const std::string& key) const { +void DVCSCFFConstant::printErrorInConfigure(const std::string& key) const { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "Ambiguous way of setting CFF values via " - << DVCSConstantCFFModel::PARAMETER_NAME_CFF_VALUES << " and " << key + << DVCSCFFConstant::PARAMETER_NAME_CFF_VALUES << " and " << key << " keys"); } -void DVCSConstantCFFModel::configureValue(GPDType::Type gpdType, +void DVCSCFFConstant::configureValue(GPDType::Type gpdType, bool isRealPart, const ElemUtils::GenericType& value) { //iterator @@ -260,16 +257,16 @@ void DVCSConstantCFFModel::configureValue(GPDType::Type gpdType, << " configured with value = " << valueDouble); } -const std::map >& DVCSConstantCFFModel::getCFFs() const { +const std::map >& DVCSCFFConstant::getCFFs() const { return m_CFFs; } -void DVCSConstantCFFModel::setCFFs( +void DVCSCFFConstant::setCFFs( const std::map >& cffs) { m_CFFs = cffs; } -const std::complex& DVCSConstantCFFModel::getCFF( +const std::complex& DVCSCFFConstant::getCFF( GPDType::Type gpdType) const { //iterator @@ -289,7 +286,7 @@ const std::complex& DVCSConstantCFFModel::getCFF( return it->second; } -void DVCSConstantCFFModel::setCFF(GPDType::Type gpdType, +void DVCSCFFConstant::setCFF(GPDType::Type gpdType, const std::complex& cff) { //iterator diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.cpp similarity index 78% rename from src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.cpp rename to src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.cpp index a5b3c09f56acf380ce3907c9305272c669612c27..a11723c72624453be2327116172d03f1f82a5acc 100644 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.cpp +++ b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.cpp @@ -1,4 +1,4 @@ -#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelationModel.h" +#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFDispersionRelation.h" #include #include @@ -6,30 +6,27 @@ #include #include #include -#include #include -#include "../../../../../include/partons/beans/automation/BaseObjectData.h" #include "../../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../../include/partons/beans/PerturbativeQCDOrderType.h" #include "../../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../../include/partons/BaseObjectRegistry.h" #include "../../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../../include/partons/modules/active_flavors/NfFunctionExample.h" -#include "../../../../../include/partons/modules/alphaS/RunningAlphaStrong.h" -#include "../../../../../include/partons/modules/GPDModule.h" -#include "../../../../../include/partons/modules/GPDSubtractionConstantModule.h" +#include "../../../../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h" +#include "../../../../../include/partons/modules/gpd/GPDModule.h" +#include "../../../../../include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h" +#include "../../../../../include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h" #include "../../../../../include/partons/ModuleObjectFactory.h" #include "../../../../../include/partons/Partons.h" -const unsigned int DVCSCFFDispersionRelationModel::classId = +const unsigned int DVCSCFFDispersionRelation::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new DVCSCFFDispersionRelationModel( - "DVCSCFFDispersionRelationModel")); + new DVCSCFFDispersionRelation( + "DVCSCFFDispersionRelation")); -DVCSCFFDispersionRelationModel::DVCSCFFDispersionRelationModel( +DVCSCFFDispersionRelation::DVCSCFFDispersionRelation( const std::string& className) : DVCSConvolCoeffFunctionModule(className) { @@ -54,11 +51,11 @@ DVCSCFFDispersionRelationModel::DVCSCFFDispersionRelationModel( initFunctorsForIntegrations(); } -DVCSCFFDispersionRelationModel* DVCSCFFDispersionRelationModel::clone() const { - return new DVCSCFFDispersionRelationModel(*this); +DVCSCFFDispersionRelation* DVCSCFFDispersionRelation::clone() const { + return new DVCSCFFDispersionRelation(*this); } -DVCSCFFDispersionRelationModel::~DVCSCFFDispersionRelationModel() { +DVCSCFFDispersionRelation::~DVCSCFFDispersionRelation() { setSubtractionConstantModule(0); @@ -73,37 +70,38 @@ DVCSCFFDispersionRelationModel::~DVCSCFFDispersionRelationModel() { } } -void DVCSCFFDispersionRelationModel::initFunctorsForIntegrations() { +void DVCSCFFDispersionRelation::initFunctorsForIntegrations() { m_p_int_dispersionRelationIntegralPartDiagonalA = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFDispersionRelationModel::dispersionRelationIntegralPartDiagonalA); + &DVCSCFFDispersionRelation::dispersionRelationIntegralPartDiagonalA); m_p_int_dispersionRelationIntegralPartDiagonalB = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFDispersionRelationModel::dispersionRelationIntegralPartDiagonalB); + &DVCSCFFDispersionRelation::dispersionRelationIntegralPartDiagonalB); } //TODO init in mother class ? ; propagate init to mother class ? -void DVCSCFFDispersionRelationModel::resolveObjectDependencies() { +void DVCSCFFDispersionRelation::resolveObjectDependencies() { setIntegrator(NumA::IntegratorType1D::DEXP); + //TODO not used! m_pRunningAlphaStrongModule = Partons::getInstance()->getModuleObjectFactory()->newRunningAlphaStrongModule( - RunningAlphaStrong::classId); + RunningAlphaStrongStandard::classId); m_pNfConvolCoeffFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( - NfFunctionExample::classId); + Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsThresholdsModule( + ActiveFlavorsThresholdsQuarkMasses::classId); } -void DVCSCFFDispersionRelationModel::configure( +void DVCSCFFDispersionRelation::configure( const ElemUtils::Parameters ¶meters) { DVCSConvolCoeffFunctionModule::configure(parameters); } -void DVCSCFFDispersionRelationModel::prepareSubModules( +void DVCSCFFDispersionRelation::prepareSubModules( const std::map& subModulesData) { //mother @@ -146,8 +144,8 @@ void DVCSCFFDispersionRelationModel::prepareSubModules( } } -DVCSCFFDispersionRelationModel::DVCSCFFDispersionRelationModel( - const DVCSCFFDispersionRelationModel& other) : +DVCSCFFDispersionRelation::DVCSCFFDispersionRelation( + const DVCSCFFDispersionRelation& other) : DVCSConvolCoeffFunctionModule(other) { //copy @@ -162,11 +160,11 @@ DVCSCFFDispersionRelationModel::DVCSCFFDispersionRelationModel( initFunctorsForIntegrations(); } -void DVCSCFFDispersionRelationModel::initModule() { +void DVCSCFFDispersionRelation::initModule() { DVCSConvolCoeffFunctionModule::initModule(); } -void DVCSCFFDispersionRelationModel::isModuleWellConfigured() { +void DVCSCFFDispersionRelation::isModuleWellConfigured() { if (!m_pSubtractionConstantModule) { throw ElemUtils::CustomException(getClassName(), __func__, @@ -176,7 +174,7 @@ void DVCSCFFDispersionRelationModel::isModuleWellConfigured() { DVCSConvolCoeffFunctionModule::isModuleWellConfigured(); } -std::complex DVCSCFFDispersionRelationModel::computeUnpolarized() { +std::complex DVCSCFFDispersionRelation::computeUnpolarized() { //check pQCD order if (m_qcdOrderType != PerturbativeQCDOrderType::LO) { @@ -216,7 +214,7 @@ std::complex DVCSCFFDispersionRelationModel::computeUnpolarized() { return std::complex(Re - Sub, Im); } -std::complex DVCSCFFDispersionRelationModel::computePolarized() { +std::complex DVCSCFFDispersionRelation::computePolarized() { //check pQCD order if (m_qcdOrderType != PerturbativeQCDOrderType::LO) { @@ -247,7 +245,7 @@ std::complex DVCSCFFDispersionRelationModel::computePolarized() { return std::complex(Re, Im); } -double DVCSCFFDispersionRelationModel::computeSquareChargeAveragedGPD( +double DVCSCFFDispersionRelation::computeSquareChargeAveragedGPD( double xi) { //get GPD result @@ -263,22 +261,22 @@ double DVCSCFFDispersionRelationModel::computeSquareChargeAveragedGPD( * Constant::S2_ELEC_CHARGE; } -double DVCSCFFDispersionRelationModel::dispersionRelationIntegralPartDiagonalA( +double DVCSCFFDispersionRelation::dispersionRelationIntegralPartDiagonalA( double xi, std::vector par) { return (computeSquareChargeAveragedGPD(xi) - computeSquareChargeAveragedGPD(m_xi)) / (m_xi - xi); } -double DVCSCFFDispersionRelationModel::dispersionRelationIntegralPartDiagonalB( +double DVCSCFFDispersionRelation::dispersionRelationIntegralPartDiagonalB( double xi, std::vector par) { return computeSquareChargeAveragedGPD(xi) / (m_xi + xi); } -GPDSubtractionConstantModule* DVCSCFFDispersionRelationModel::getSubtractionConstantModule() const { +GPDSubtractionConstantModule* DVCSCFFDispersionRelation::getSubtractionConstantModule() const { return m_pSubtractionConstantModule; } -void DVCSCFFDispersionRelationModel::setSubtractionConstantModule( +void DVCSCFFDispersionRelation::setSubtractionConstantModule( GPDSubtractionConstantModule* subtractionConstantModule) { m_pModuleObjectFactory->updateModulePointerReference( diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.cpp similarity index 83% rename from src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.cpp rename to src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.cpp index 0f83a4eaa662fadb4083d445f3376bb902db61ed..0096458a9b6b524455ba80aec97329e5a51a8fda 100644 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.cpp +++ b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.cpp @@ -1,26 +1,25 @@ -#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuarkModel.h" +#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFHeavyQuark.h" #include #include +#include #include #include #include -#include #include "../../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../../include/partons/beans/PerturbativeQCDOrderType.h" #include "../../../../../include/partons/BaseObjectRegistry.h" #include "../../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../../include/partons/modules/GPDModule.h" +#include "../../../../../include/partons/modules/gpd/GPDModule.h" // Initialise [class]::classId with a unique name. -const unsigned int DVCSCFFHeavyQuarkModel::classId = +const unsigned int DVCSCFFHeavyQuark::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new DVCSCFFHeavyQuarkModel("DVCSCFFHeavyQuarkModel")); + new DVCSCFFHeavyQuark("DVCSCFFHeavyQuark")); -DVCSCFFHeavyQuarkModel::DVCSCFFHeavyQuarkModel(const std::string& className) : - DVCSCFFModel(className), m_betas(std::complex(0.0, 0.0)), m_rs( +DVCSCFFHeavyQuark::DVCSCFFHeavyQuark(const std::string& className) : + DVCSCFFStandard(className), m_betas(std::complex(0.0, 0.0)), m_rs( std::complex(0.0, 0.0)), m_betaq( std::complex(0.0, 0.0)), m_rq( std::complex(0.0, 0.0)), m_TF( @@ -29,11 +28,11 @@ DVCSCFFHeavyQuarkModel::DVCSCFFHeavyQuarkModel(const std::string& className) : initFunctorsForIntegrations(); } -DVCSCFFHeavyQuarkModel* DVCSCFFHeavyQuarkModel::clone() const { - return new DVCSCFFHeavyQuarkModel(*this); +DVCSCFFHeavyQuark* DVCSCFFHeavyQuark::clone() const { + return new DVCSCFFHeavyQuark(*this); } -DVCSCFFHeavyQuarkModel::~DVCSCFFHeavyQuarkModel() { +DVCSCFFHeavyQuark::~DVCSCFFHeavyQuark() { if (m_pConvolReKernelGluonMassiveV) { delete m_pConvolReKernelGluonMassiveV; m_pConvolReKernelGluonMassiveV = 0; @@ -55,26 +54,26 @@ DVCSCFFHeavyQuarkModel::~DVCSCFFHeavyQuarkModel() { } } -void DVCSCFFHeavyQuarkModel::resolveObjectDependencies() { +void DVCSCFFHeavyQuark::resolveObjectDependencies() { DVCSConvolCoeffFunctionModule::resolveObjectDependencies(); setIntegrator(NumA::IntegratorType1D::DEXP); } -void DVCSCFFHeavyQuarkModel::initFunctorsForIntegrations() { +void DVCSCFFHeavyQuark::initFunctorsForIntegrations() { m_pConvolReKernelGluonMassiveV = NumA::Integrator1D::newIntegrationFunctor( - this, &DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveV); + this, &DVCSCFFHeavyQuark::ConvolReKernelGluonMassiveV); m_pConvolImKernelGluonMassiveV = NumA::Integrator1D::newIntegrationFunctor( - this, &DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveV); + this, &DVCSCFFHeavyQuark::ConvolImKernelGluonMassiveV); m_pConvolReKernelGluonMassiveA = NumA::Integrator1D::newIntegrationFunctor( - this, &DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveA); + this, &DVCSCFFHeavyQuark::ConvolReKernelGluonMassiveA); m_pConvolImKernelGluonMassiveA = NumA::Integrator1D::newIntegrationFunctor( - this, &DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveA); + this, &DVCSCFFHeavyQuark::ConvolImKernelGluonMassiveA); } -DVCSCFFHeavyQuarkModel::DVCSCFFHeavyQuarkModel( - const DVCSCFFHeavyQuarkModel& other) : - DVCSCFFModel(other) { +DVCSCFFHeavyQuark::DVCSCFFHeavyQuark( + const DVCSCFFHeavyQuark& other) : + DVCSCFFStandard(other) { m_betas = other.m_betas; m_betaq = other.m_betaq; m_rs = other.m_rs; @@ -84,19 +83,19 @@ DVCSCFFHeavyQuarkModel::DVCSCFFHeavyQuarkModel( initFunctorsForIntegrations(); } -std::complex DVCSCFFHeavyQuarkModel::computeUnpolarized() { +std::complex DVCSCFFHeavyQuark::computeUnpolarized() { - return computeIntegralsMassiveV() + DVCSCFFModel::computeUnpolarized(); + return computeIntegralsMassiveV() + DVCSCFFStandard::computeUnpolarized(); // return computeIntegralsMassiveV(); } -std::complex DVCSCFFHeavyQuarkModel::computePolarized() { +std::complex DVCSCFFHeavyQuark::computePolarized() { - return computeIntegralsMassiveA() + DVCSCFFModel::computePolarized(); + return computeIntegralsMassiveA() + DVCSCFFStandard::computePolarized(); // return computeIntegralsMassiveA(); } -std::complex DVCSCFFHeavyQuarkModel::computeIntegralsMassiveV() { +std::complex DVCSCFFHeavyQuark::computeIntegralsMassiveV() { double IntegralImaginaryPartMassive = 0.; double IntegralRealPartMassive = 0.; @@ -132,7 +131,7 @@ std::complex DVCSCFFHeavyQuarkModel::computeIntegralsMassiveV() { } -std::complex DVCSCFFHeavyQuarkModel::computeIntegralsMassiveA() { +std::complex DVCSCFFHeavyQuark::computeIntegralsMassiveA() { double IntegralImaginaryPartMassive = 0.; double IntegralRealPartMassive = 0.; @@ -166,7 +165,7 @@ std::complex DVCSCFFHeavyQuarkModel::computeIntegralsMassiveA() { IntegralImaginaryPartMassive); } -std::complex DVCSCFFHeavyQuarkModel::beta(double s, double mq) { +std::complex DVCSCFFHeavyQuark::beta(double s, double mq) { std::complex tmp_beta; if (s < 0) { tmp_beta.real(std::sqrt(1. - 4. * mq * mq / s)); @@ -183,12 +182,12 @@ std::complex DVCSCFFHeavyQuarkModel::beta(double s, double mq) { return tmp_beta; } -std::complex DVCSCFFHeavyQuarkModel::r(double s, double mq) { +std::complex DVCSCFFHeavyQuark::r(double s, double mq) { std::complex tmp_beta = beta(s, mq); return (tmp_beta - 1.) / (tmp_beta + 1.); } -double DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveV(double x, +double DVCSCFFHeavyQuark::ConvolReKernelGluonMassiveV(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -201,7 +200,7 @@ double DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveV(double x, return Convol; } -double DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveV(double x, +double DVCSCFFHeavyQuark::ConvolImKernelGluonMassiveV(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -214,7 +213,7 @@ double DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveV(double x, return Convol; } -double DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveA(double x, +double DVCSCFFHeavyQuark::ConvolReKernelGluonMassiveA(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -227,7 +226,7 @@ double DVCSCFFHeavyQuarkModel::ConvolReKernelGluonMassiveA(double x, return Convol; } -double DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveA(double x, +double DVCSCFFHeavyQuark::ConvolImKernelGluonMassiveA(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -240,7 +239,7 @@ double DVCSCFFHeavyQuarkModel::ConvolImKernelGluonMassiveA(double x, return Convol; } -std::complex DVCSCFFHeavyQuarkModel::MassiveKernelGluonNLOA(double x) { +std::complex DVCSCFFHeavyQuark::MassiveKernelGluonNLOA(double x) { // m_pLoggerManager->debug(getClassName(), __func__, "entered"); // TODO Add a massless part double z = m_xi / x; @@ -302,7 +301,7 @@ std::complex DVCSCFFHeavyQuarkModel::MassiveKernelGluonNLOA(double x) { return GluonNLOA; } -std::complex DVCSCFFHeavyQuarkModel::MassiveKernelGluonNLOV(double x) { +std::complex DVCSCFFHeavyQuark::MassiveKernelGluonNLOV(double x) { double z = -m_xi / x; double mq = Constant::QUARK_CHARM_MASS; double s = -m_Q2 * (z - 1.) / 2. / z; diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.cpp similarity index 92% rename from src/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.cpp rename to src/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.cpp index c4e4fcc4ee903d401c26014abbea13d83a577565..7e3c16aeaca566c5478af5943c2ad892a2ce2476 100644 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.cpp +++ b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.cpp @@ -1,32 +1,29 @@ -#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFModel.h" +#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFStandard.h" #include #include +#include #include #include #include #include -#include #include -#include #include "../../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../../include/partons/beans/PerturbativeQCDOrderType.h" #include "../../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../../include/partons/BaseObjectRegistry.h" #include "../../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../../include/partons/modules/GPDModule.h" -#include "../../../../../include/partons/modules/RunningAlphaStrongModule.h" +#include "../../../../../include/partons/modules/gpd/GPDModule.h" +#include "../../../../../include/partons/modules/running_alpha_strong/RunningAlphaStrongModule.h" -// Initialise [class]::classId with a unique name. -const unsigned int DVCSCFFModel::classId = +const unsigned int DVCSCFFStandard::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new DVCSCFFModel("DVCSCFFModel")); + new DVCSCFFStandard("DVCSCFFStandard")); -DVCSCFFModel::DVCSCFFModel(const std::string &className) : +DVCSCFFStandard::DVCSCFFStandard(const std::string &className) : DVCSConvolCoeffFunctionModule(className), m_Zeta(0.), m_logQ2OverMu2( 0.), m_Q(0.), m_alphaSOver2Pi(0.), m_quarkDiagonal(0.), m_gluonDiagonal( 0.), m_realPartSubtractQuark(0.), m_imaginaryPartSubtractQuark( @@ -49,40 +46,40 @@ DVCSCFFModel::DVCSCFFModel(const std::string &className) : } //TODO Call mother init function -void DVCSCFFModel::resolveObjectDependencies() { +void DVCSCFFStandard::resolveObjectDependencies() { DVCSConvolCoeffFunctionModule::resolveObjectDependencies(); setIntegrator(NumA::IntegratorType1D::DEXP); } -void DVCSCFFModel::initFunctorsForIntegrations() { +void DVCSCFFStandard::initFunctorsForIntegrations() { m_pConvolReKernelQuark1V = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelQuark1V); + &DVCSCFFStandard::ConvolReKernelQuark1V); m_pConvolReKernelQuark2V = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelQuark2V); + &DVCSCFFStandard::ConvolReKernelQuark2V); m_pConvolImKernelQuarkV = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolImKernelQuarkV); + &DVCSCFFStandard::ConvolImKernelQuarkV); m_pConvolReKernelGluon1V = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelGluon1V); + &DVCSCFFStandard::ConvolReKernelGluon1V); m_pConvolReKernelGluon2V = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelGluon2V); + &DVCSCFFStandard::ConvolReKernelGluon2V); m_pConvolImKernelGluonV = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolImKernelGluonV); + &DVCSCFFStandard::ConvolImKernelGluonV); m_pConvolReKernelQuark1A = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelQuark1A); + &DVCSCFFStandard::ConvolReKernelQuark1A); m_pConvolReKernelQuark2A = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelQuark2A); + &DVCSCFFStandard::ConvolReKernelQuark2A); m_pConvolImKernelQuarkA = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolImKernelQuarkA); + &DVCSCFFStandard::ConvolImKernelQuarkA); m_pConvolReKernelGluon1A = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelGluon1A); + &DVCSCFFStandard::ConvolReKernelGluon1A); m_pConvolReKernelGluon2A = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolReKernelGluon2A); + &DVCSCFFStandard::ConvolReKernelGluon2A); m_pConvolImKernelGluonA = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFModel::ConvolImKernelGluonA); + &DVCSCFFStandard::ConvolImKernelGluonA); } -DVCSCFFModel::DVCSCFFModel(const DVCSCFFModel &other) : +DVCSCFFStandard::DVCSCFFStandard(const DVCSCFFStandard &other) : DVCSConvolCoeffFunctionModule(other) { m_Zeta = other.m_Zeta; m_logQ2OverMu2 = other.m_logQ2OverMu2; @@ -101,12 +98,12 @@ DVCSCFFModel::DVCSCFFModel(const DVCSCFFModel &other) : initFunctorsForIntegrations(); } -DVCSCFFModel* DVCSCFFModel::clone() const { - return new DVCSCFFModel(*this); +DVCSCFFStandard* DVCSCFFStandard::clone() const { + return new DVCSCFFStandard(*this); } //TODO comment gérer le cycle de vie des modules membres -DVCSCFFModel::~DVCSCFFModel() { +DVCSCFFStandard::~DVCSCFFStandard() { // // if (m_pMathIntegratorModule) { // delete m_pMathIntegratorModule; @@ -179,7 +176,7 @@ DVCSCFFModel::~DVCSCFFModel() { } } -void DVCSCFFModel::initModule() { +void DVCSCFFStandard::initModule() { // init parent module before DVCSConvolCoeffFunctionModule::initModule(); @@ -198,7 +195,7 @@ void DVCSCFFModel::initModule() { << m_alphaSOver2Pi); } -void DVCSCFFModel::isModuleWellConfigured() { +void DVCSCFFStandard::isModuleWellConfigured() { // check parent module before DVCSConvolCoeffFunctionModule::isModuleWellConfigured(); @@ -238,21 +235,21 @@ void DVCSCFFModel::isModuleWellConfigured() { // return CFFModule::preCompute(xB, t, Q2, MuF, MuR, gpdComputeType); //} -std::complex DVCSCFFModel::computeUnpolarized() { +std::complex DVCSCFFStandard::computeUnpolarized() { computeDiagonalGPD(); computeSubtractionFunctionsV(); return computeIntegralsV(); } -std::complex DVCSCFFModel::computePolarized() { +std::complex DVCSCFFStandard::computePolarized() { computeDiagonalGPD(); computeSubtractionFunctionsA(); return computeIntegralsA(); } -void DVCSCFFModel::computeDiagonalGPD() { +void DVCSCFFStandard::computeDiagonalGPD() { PartonDistribution partonDistribution = m_pGPDModule->compute(m_xi, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -266,7 +263,7 @@ void DVCSCFFModel::computeDiagonalGPD() { } -double DVCSCFFModel::computeSquareChargeAveragedGPD( +double DVCSCFFStandard::computeSquareChargeAveragedGPD( const PartonDistribution &partonDistribution) { //TODO comment faire evoluer le calcul si de nouvelles saveurs de quark entrent en jeux double result = 0.; @@ -292,7 +289,7 @@ double DVCSCFFModel::computeSquareChargeAveragedGPD( return result; } -void DVCSCFFModel::computeSubtractionFunctionsV() { +void DVCSCFFStandard::computeSubtractionFunctionsV() { double LogZeta = log(m_Zeta); double LogInvZeta = log((1. - m_Zeta) / m_Zeta); double LogInvZeta2 = LogInvZeta * LogInvZeta; @@ -374,7 +371,7 @@ void DVCSCFFModel::computeSubtractionFunctionsV() { } } -void DVCSCFFModel::computeSubtractionFunctionsA() { +void DVCSCFFStandard::computeSubtractionFunctionsA() { double LogZeta = log(m_Zeta); double LogInvZeta = log((1. - m_Zeta) / m_Zeta); double LogInvZeta2 = LogInvZeta * LogInvZeta; @@ -453,7 +450,7 @@ void DVCSCFFModel::computeSubtractionFunctionsA() { } } -std::complex DVCSCFFModel::computeIntegralsV() { +std::complex DVCSCFFStandard::computeIntegralsV() { double IntegralRealPartKernelQuark1 = 0.; // Integral between 0 and fZeta in real part of amplitude double IntegralRealPartKernelQuark2 = 0.; // Integral between fZeta and 1 in real part of amplitude double IntegralImaginaryPartKernelQuark = 0.; // Integral between 0 and fZeta in imaginary part of amplitude @@ -552,7 +549,7 @@ std::complex DVCSCFFModel::computeIntegralsV() { return std::complex(fRealPartCFF, fImaginaryPartCFF); } -std::complex DVCSCFFModel::computeIntegralsA() { +std::complex DVCSCFFStandard::computeIntegralsA() { double IntegralRealPartKernelQuark1 = 0.; // Integral between 0 and fZeta in real part of amplitude double IntegralRealPartKernelQuark2 = 0.; // Integral between fZeta and 1 in real part of amplitude double IntegralImaginaryPartKernelQuark = 0.; // Integral between 0 and fZeta in imaginary part of amplitude @@ -659,7 +656,7 @@ std::complex DVCSCFFModel::computeIntegralsA() { return std::complex(realPartCFF, imaginaryPartCFF); } -std::complex DVCSCFFModel::KernelQuarkNLOV(double x) { +std::complex DVCSCFFStandard::KernelQuarkNLOV(double x) { double z = x / m_xi; std::complex LogOneMinusz(0., 0.); @@ -681,7 +678,7 @@ std::complex DVCSCFFModel::KernelQuarkNLOV(double x) { * T^{q, V/A} in appendix A, eq. (A1). * */ -std::complex DVCSCFFModel::KernelQuarkV(double x) { +std::complex DVCSCFFStandard::KernelQuarkV(double x) { //std::complex z = std::complex(x / m_xi, 0.); //std::complex quark(); @@ -699,7 +696,7 @@ std::complex DVCSCFFModel::KernelQuarkV(double x) { return quark; } -std::complex DVCSCFFModel::KernelQuarkA(double x) { +std::complex DVCSCFFStandard::KernelQuarkA(double x) { //std::complex z = std::complex(x / m_xi, 0.); //std::complex quark(); @@ -723,7 +720,7 @@ std::complex DVCSCFFModel::KernelQuarkA(double x) { * T^{g, V/A} in appendix A, eq. (A1). * */ -std::complex DVCSCFFModel::KernelGluonV(double x) { +std::complex DVCSCFFStandard::KernelGluonV(double x) { std::complex gluon(0., 0.); @@ -734,7 +731,7 @@ std::complex DVCSCFFModel::KernelGluonV(double x) { return gluon; } -std::complex DVCSCFFModel::KernelGluonA(double x) { +std::complex DVCSCFFStandard::KernelGluonA(double x) { std::complex gluon(0., 0.); @@ -755,7 +752,7 @@ std::complex DVCSCFFModel::KernelGluonA(double x) { * Expressions are modified in order to integrate between 0 and fXi, hence explicitely avoiding GPD behaviour at x = 0. * */ -double DVCSCFFModel::ConvolReKernelQuark1V(double x, +double DVCSCFFStandard::ConvolReKernelQuark1V(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -782,7 +779,7 @@ double DVCSCFFModel::ConvolReKernelQuark1V(double x, * Equivalently x integration domain ranges between fXi and 1. * */ -double DVCSCFFModel::ConvolReKernelQuark2V(double x, +double DVCSCFFStandard::ConvolReKernelQuark2V(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, @@ -811,7 +808,7 @@ double DVCSCFFModel::ConvolReKernelQuark2V(double x, * Equivalently x integration domain ranges between fXi and 1. * */ -double DVCSCFFModel::ConvolImKernelQuarkV(double x, +double DVCSCFFStandard::ConvolImKernelQuarkV(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -839,7 +836,7 @@ double DVCSCFFModel::ConvolImKernelQuarkV(double x, * Expressions are modified in order to integrate between 0 and fXi, hence explicitely avoiding GPD behaviour at x = 0. * */ -double DVCSCFFModel::ConvolReKernelGluon1V(double x, +double DVCSCFFStandard::ConvolReKernelGluon1V(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -866,7 +863,7 @@ double DVCSCFFModel::ConvolReKernelGluon1V(double x, * Equivalently x integration domain ranges between fXi and 1. * */ -double DVCSCFFModel::ConvolReKernelGluon2V(double x, +double DVCSCFFStandard::ConvolReKernelGluon2V(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -894,7 +891,7 @@ double DVCSCFFModel::ConvolReKernelGluon2V(double x, * Equivalently x integration domain ranges between fXi and 1. * */ -double DVCSCFFModel::ConvolImKernelGluonV(double x, +double DVCSCFFStandard::ConvolImKernelGluonV(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -912,7 +909,7 @@ double DVCSCFFModel::ConvolImKernelGluonV(double x, return Convol; } -std::complex DVCSCFFModel::KernelGluonNLOV(double x) { +std::complex DVCSCFFStandard::KernelGluonNLOV(double x) { debug(__func__, "entered"); double z = x / m_xi; @@ -936,7 +933,7 @@ std::complex DVCSCFFModel::KernelGluonNLOV(double x) { return GluonNLOV; } -std::complex DVCSCFFModel::KernelGluonNLOA(double x) { +std::complex DVCSCFFStandard::KernelGluonNLOA(double x) { debug(__func__, "entered"); // // debug( __func__, @@ -961,7 +958,7 @@ std::complex DVCSCFFModel::KernelGluonNLOA(double x) { return GluonNLOA; } -std::complex DVCSCFFModel::KernelQuarkNLOA(double x) { +std::complex DVCSCFFStandard::KernelQuarkNLOA(double x) { double z = x / m_xi; std::complex LogOneMinusz(0., 0.); @@ -982,7 +979,7 @@ std::complex DVCSCFFModel::KernelQuarkNLOA(double x) { return QuarkNLOA; } -double DVCSCFFModel::ConvolReKernelQuark1A(double x, +double DVCSCFFStandard::ConvolReKernelQuark1A(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -1001,7 +998,7 @@ double DVCSCFFModel::ConvolReKernelQuark1A(double x, return Convol; } -double DVCSCFFModel::ConvolReKernelQuark2A(double x, +double DVCSCFFStandard::ConvolReKernelQuark2A(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -1022,7 +1019,7 @@ double DVCSCFFModel::ConvolReKernelQuark2A(double x, return Convol; } -double DVCSCFFModel::ConvolImKernelQuarkA(double x, +double DVCSCFFStandard::ConvolImKernelQuarkA(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -1040,7 +1037,7 @@ double DVCSCFFModel::ConvolImKernelQuarkA(double x, return Convol; } -double DVCSCFFModel::ConvolReKernelGluon1A(double x, +double DVCSCFFStandard::ConvolReKernelGluon1A(double x, std::vector params) { debug(__func__, "Entered"); @@ -1062,7 +1059,7 @@ double DVCSCFFModel::ConvolReKernelGluon1A(double x, return Convol; } -double DVCSCFFModel::ConvolReKernelGluon2A(double x, +double DVCSCFFStandard::ConvolReKernelGluon2A(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); @@ -1083,7 +1080,7 @@ double DVCSCFFModel::ConvolReKernelGluon2A(double x, return Convol; } -double DVCSCFFModel::ConvolImKernelGluonA(double x, +double DVCSCFFStandard::ConvolImKernelGluonA(double x, std::vector params) { PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.cpp deleted file mode 100644 index adf4f9f1997607b5d73f0db9593f47e16d98c143..0000000000000000000000000000000000000000 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.cpp +++ /dev/null @@ -1,238 +0,0 @@ -#include "../../../../../include/partons/modules/convol_coeff_function/DVCS/DVCSCFFVGGModel.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../../include/partons/beans/PerturbativeQCDOrderType.h" -#include "../../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../../include/partons/modules/active_flavors/NfFunctionExample.h" -#include "../../../../../include/partons/modules/alphaS/RunningAlphaStrong.h" -#include "../../../../../include/partons/modules/GPDModule.h" -#include "../../../../../include/partons/ModuleObjectFactory.h" -#include "../../../../../include/partons/Partons.h" - -const unsigned int DVCSCFFVGGModel::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new DVCSCFFVGGModel("DVCSCFFVGGModel")); - -const std::string DVCSCFFVGGModel::PARAMETER_NAME_EPS = "DVCSCFFVGGModel_Eps"; - -DVCSCFFVGGModel::DVCSCFFVGGModel(const std::string& className) : - DVCSConvolCoeffFunctionModule(className) { - - eps_cffint = 1.E-3; - xixit = -1.; - - //relate GPDs to functions - m_listOfCFFComputeFunctionAvailable.insert( - std::make_pair(GPDType::H, - &DVCSConvolCoeffFunctionModule::computeUnpolarized)); - m_listOfCFFComputeFunctionAvailable.insert( - std::make_pair(GPDType::E, - &DVCSConvolCoeffFunctionModule::computeUnpolarized)); - m_listOfCFFComputeFunctionAvailable.insert( - std::make_pair(GPDType::Ht, - &DVCSConvolCoeffFunctionModule::computePolarized)); - m_listOfCFFComputeFunctionAvailable.insert( - std::make_pair(GPDType::Et, - &DVCSConvolCoeffFunctionModule::computePolarized)); - - initFunctorsForIntegrations(); -} - -DVCSCFFVGGModel* DVCSCFFVGGModel::clone() const { - return new DVCSCFFVGGModel(*this); -} - -DVCSCFFVGGModel::~DVCSCFFVGGModel() { - - if (m_pIntd_vector_part) { - delete m_pIntd_vector_part; - m_pIntd_vector_part = 0; - } - - if (m_pIntc_vector_part) { - delete m_pIntc_vector_part; - m_pIntc_vector_part = 0; - } -} - -void DVCSCFFVGGModel::initFunctorsForIntegrations() { - m_pIntd_vector_part = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFVGGModel::intd_vector_part); - m_pIntc_vector_part = NumA::Integrator1D::newIntegrationFunctor(this, - &DVCSCFFVGGModel::intc_vector_part); -} - -//TODO init in mother class ? ; propagate init to mother class ? -void DVCSCFFVGGModel::resolveObjectDependencies() { - - setIntegrator(NumA::IntegratorType1D::GaussLegendre); - ElemUtils::Parameters parameters( - NumA::GaussLegendreIntegrator1D::PARAM_NAME_N, 40); - configureIntegrator(parameters); - - m_pRunningAlphaStrongModule = - Partons::getInstance()->getModuleObjectFactory()->newRunningAlphaStrongModule( - RunningAlphaStrong::classId); - - m_pNfConvolCoeffFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( - NfFunctionExample::classId); -} - -void DVCSCFFVGGModel::configure(const ElemUtils::Parameters ¶meters) { - - if (parameters.isAvailable(DVCSCFFVGGModel::PARAMETER_NAME_EPS)) { - eps_cffint = parameters.getLastAvailable().toDouble(); - } -} - -DVCSCFFVGGModel::DVCSCFFVGGModel(const DVCSCFFVGGModel& other) : - DVCSConvolCoeffFunctionModule(other) { - - eps_cffint = other.eps_cffint; - xixit = other.xixit; - - initFunctorsForIntegrations(); -} - -void DVCSCFFVGGModel::initModule() { - DVCSConvolCoeffFunctionModule::initModule(); -} - -void DVCSCFFVGGModel::isModuleWellConfigured() { - DVCSConvolCoeffFunctionModule::isModuleWellConfigured(); -} - -std::complex DVCSCFFVGGModel::computeUnpolarized() { - - //check pQCD order - if (m_qcdOrderType != PerturbativeQCDOrderType::LO) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() - << "Calculation not supported for pQCD order = " - << PerturbativeQCDOrderType(m_qcdOrderType).toString()); - } - - //calculate GPD at (xi, xi, t) - calculate_xixit_value(); - - //return - return calculate_direct() + calculate_crossed(); -} - -std::complex DVCSCFFVGGModel::computePolarized() { - - //check pQCD order - if (m_qcdOrderType != PerturbativeQCDOrderType::LO) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() - << "Calculation not supported for pQCD order = " - << PerturbativeQCDOrderType(m_qcdOrderType).toString()); - } - - //calculate GPD at (xi, xi, t) - calculate_xixit_value(); - - //return - return calculate_direct() - calculate_crossed(); -} - -double DVCSCFFVGGModel::calculate_gpd_combination( - const PartonDistribution &partonDistribution) { - - return partonDistribution.getQuarkDistribution(QuarkFlavor::UP).getQuarkDistributionPlus() - * Constant::U2_ELEC_CHARGE - + partonDistribution.getQuarkDistribution(QuarkFlavor::DOWN).getQuarkDistributionPlus() - * Constant::D2_ELEC_CHARGE - + partonDistribution.getQuarkDistribution(QuarkFlavor::STRANGE).getQuarkDistributionPlus() - * Constant::S2_ELEC_CHARGE; -} - -void DVCSCFFVGGModel::calculate_xixit_value() { - - PartonDistribution partonDistribution = m_pGPDModule->compute(m_xi, m_xi, - m_t, m_MuF2, m_MuR2, m_currentGPDComputeType); - - xixit = calculate_gpd_combination(partonDistribution); -} - -double DVCSCFFVGGModel::intd_vector_part(double x, std::vector par) { - - PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, - m_MuF2, m_MuR2, m_currentGPDComputeType); - - return (calculate_gpd_combination(partonDistribution) - xixit) / (x - m_xi); -} - -double DVCSCFFVGGModel::intc_vector_part(double x, std::vector par) { - - PartonDistribution partonDistribution = m_pGPDModule->compute(x, m_xi, m_t, - m_MuF2, m_MuR2, m_currentGPDComputeType); - - return calculate_gpd_combination(partonDistribution) / (x + m_xi); -} - -std::complex DVCSCFFVGGModel::calculate_direct() { - - //check allowed range of xi - if (m_xi - eps_cffint < 0. || m_xi + eps_cffint > 1.) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() << "Invalid xi +/- eps = " - << m_xi - eps_cffint << "/" << m_xi + eps_cffint); - } - - //parameters for the integration (zero-length vector in this case) - std::vector parameters; - - //direct Faynman diagram - double intd1 = integrate(m_pIntd_vector_part, 0., m_xi - eps_cffint, - parameters); - - double intd2 = integrate(m_pIntd_vector_part, m_xi - eps_cffint, - m_xi + eps_cffint, parameters); - - double intd3 = integrate(m_pIntd_vector_part, m_xi + eps_cffint, 1., - parameters); - - //return (multiplied by -1 to match the convention used by other CFF modules where 1/(xi-x) instead of 1/(x-xi) is used) - return -1. - * std::complex( - intd1 + intd2 + intd3 + xixit * log((1. - m_xi) / m_xi), - -Constant::PI * xixit); -} - -std::complex DVCSCFFVGGModel::calculate_crossed() { - - //check allowed range of xi - if (m_xi - eps_cffint < 0. || m_xi + eps_cffint > 1.) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() << "Invalid xi +/- eps = " - << m_xi - eps_cffint << "/" << m_xi + eps_cffint); - } - - //parameters for the integration (zero-length vector in this case) - std::vector parameters; - - //crossed Faynman diagram - double intc1 = integrate(m_pIntc_vector_part, 0., m_xi, parameters); - - double intc2 = integrate(m_pIntc_vector_part, m_xi, 1., parameters); - - //return (multiplied by -1 to match the convention used by other CFF modules where 1/(xi-x) instead of 1/(x-xi) is used) - return -1. * std::complex(intc1 + intc2, 0.); -} diff --git a/src/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.cpp b/src/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.cpp index bd4a6d83fbb9daf065f7e0467d08bc584b9eca0a..61e0a479c857aa67d67f532885685cb3a57f75ed 100644 --- a/src/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.cpp +++ b/src/partons/modules/convol_coeff_function/DVCS/DVCSConvolCoeffFunctionModule.cpp @@ -6,8 +6,8 @@ #include #include "../../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../../include/partons/modules/active_flavors/NfFunctionExample.h" -#include "../../../../../include/partons/modules/alphaS/RunningAlphaStrong.h" +#include "../../../../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h" +#include "../../../../../include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h" #include "../../../../../include/partons/ModuleObjectFactory.h" #include "../../../../../include/partons/Partons.h" @@ -70,13 +70,15 @@ DVCSConvolCoeffFunctionModule::~DVCSConvolCoeffFunctionModule() { void DVCSConvolCoeffFunctionModule::resolveObjectDependencies() { ConvolCoeffFunctionModule::resolveObjectDependencies(); + //not used! + m_pRunningAlphaStrongModule = Partons::getInstance()->getModuleObjectFactory()->newRunningAlphaStrongModule( - RunningAlphaStrong::classId); + RunningAlphaStrongStandard::classId); m_pNfConvolCoeffFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( - NfFunctionExample::classId); + Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsThresholdsModule( + ActiveFlavorsThresholdsQuarkMasses::classId); } //TODO implement @@ -235,7 +237,7 @@ List DVCSConvolCoeffFunctionModule::getListOfAvailableGPDTypeForComputa } void DVCSConvolCoeffFunctionModule::setNfConvolCoeffFunction( - ActiveFlavorsModule* pNfConvolCoeffFunction) { + ActiveFlavorsThresholdsModule* pNfConvolCoeffFunction) { m_pModuleObjectFactory->updateModulePointerReference( m_pNfConvolCoeffFunction, pNfConvolCoeffFunction); m_pNfConvolCoeffFunction = pNfConvolCoeffFunction; @@ -278,7 +280,7 @@ void DVCSConvolCoeffFunctionModule::prepareSubModules( } it = subModulesData.find( - ActiveFlavorsModule::ACTIVE_FLAVORS_MODULE_CLASS_NAME); + ActiveFlavorsThresholdsModule::ACTIVE_FLAVORS_THRESHOLDS_MODULE_CLASS_NAME); if (it != subModulesData.end()) { if (m_pNfConvolCoeffFunction != 0) { @@ -287,7 +289,7 @@ void DVCSConvolCoeffFunctionModule::prepareSubModules( } if (!m_pNfConvolCoeffFunction) { m_pNfConvolCoeffFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( + Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsThresholdsModule( (it->second).getModuleClassName()); info(__func__, diff --git a/src/partons/modules/double_distribution/DoubleDistributionExample.cpp b/src/partons/modules/double_distribution/DoubleDistributionExample.cpp index 099b28a3617c08159de68d392f217ce4813809d6..e84084a71402ad912b3a6b64c4648ab744d5a753 100644 --- a/src/partons/modules/double_distribution/DoubleDistributionExample.cpp +++ b/src/partons/modules/double_distribution/DoubleDistributionExample.cpp @@ -1,18 +1,15 @@ #include "../../../../include/partons/modules/double_distribution/DoubleDistributionExample.h" +#include #include #include -#include #include -#include #include "../../../../include/partons/beans/double_distribution/DoubleDistributionType.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" -// Initialise [class]::classId with a unique name and selfregister this module into the global registry. const unsigned int DoubleDistributionExample::classId = BaseObjectRegistry::getInstance()->registerBaseObject( new DoubleDistributionExample("DoubleDistributionExample")); diff --git a/src/partons/modules/double_distribution/DoubleDistributionFromOverlap.cpp b/src/partons/modules/double_distribution/DoubleDistributionFromOverlap.cpp index 7e5882da6bf440db4b9970840fe77ff63611ebf5..b30f1c7dc89a02ac3a79f1d4c263a1b92a556dcf 100644 --- a/src/partons/modules/double_distribution/DoubleDistributionFromOverlap.cpp +++ b/src/partons/modules/double_distribution/DoubleDistributionFromOverlap.cpp @@ -1,13 +1,10 @@ #include "../../../../include/partons/modules/double_distribution/DoubleDistributionFromOverlap.h" -#include #include #include "../../../../include/partons/beans/double_distribution/DoubleDistributionType.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/BaseObjectRegistry.h" -// Initialise [class]::classId with a unique name and selfregister this module into the global registry. const unsigned int DoubleDistributionFromOverlap::classId = BaseObjectRegistry::getInstance()->registerBaseObject( new DoubleDistributionFromOverlap( diff --git a/src/partons/modules/DoubleDistributionModule.cpp b/src/partons/modules/double_distribution/DoubleDistributionModule.cpp similarity index 95% rename from src/partons/modules/DoubleDistributionModule.cpp rename to src/partons/modules/double_distribution/DoubleDistributionModule.cpp index 18a267ebb6cb43a065fa2b9e4e9097e75c67ead3..d933af8814f030f76bed1ca93a8d83490d4ba7b0 100644 --- a/src/partons/modules/DoubleDistributionModule.cpp +++ b/src/partons/modules/double_distribution/DoubleDistributionModule.cpp @@ -1,12 +1,12 @@ -#include "../../../include/partons/modules/DoubleDistributionModule.h" +#include "../../../../include/partons/modules/double_distribution/DoubleDistributionModule.h" #include #include #include -#include "../../../include/partons/beans/double_distribution/DoubleDistributionResult.h" -#include "../../../include/partons/modules/overlap/IncompleteGPDModule.h" -#include "../../../include/partons/modules/radon_inverse/RadonInverseModule.h" +#include "../../../../include/partons/beans/double_distribution/DoubleDistributionResult.h" +#include "../../../../include/partons/modules/overlap/IncompleteGPDModule.h" +#include "../../../../include/partons/modules/radon_inverse/RadonInverseModule.h" DoubleDistributionModule::DoubleDistributionModule(const std::string& className) : ModuleObject(className), m_beta(0.), m_alpha(0.), m_t(0.), m_MuF2(0.), m_MuR2( diff --git a/src/partons/modules/evolution/GPDEvolutionModule.cpp b/src/partons/modules/evolution/GPDEvolutionModule.cpp index 4900726a2e0f505c416fe20d473c49ecc3939538..4d7c2be9a557f81eba186d6d13aa1e7fd6885cbe 100644 --- a/src/partons/modules/evolution/GPDEvolutionModule.cpp +++ b/src/partons/modules/evolution/GPDEvolutionModule.cpp @@ -1,7 +1,7 @@ #include "../../../../include/partons/modules/evolution/GPDEvolutionModule.h" #include -//#include +#include #include #include #include @@ -11,9 +11,9 @@ #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/modules/active_flavors/NfFunctionExample.h" -#include "../../../../include/partons/modules/alphaS/RunningAlphaStrong.h" -#include "../../../../include/partons/modules/GPDModule.h" +#include "../../../../include/partons/modules/active_flavors_thresholds/ActiveFlavorsThresholdsQuarkMasses.h" +#include "../../../../include/partons/modules/gpd/GPDModule.h" +#include "../../../../include/partons/modules/running_alpha_strong/RunningAlphaStrongStandard.h" #include "../../../../include/partons/ModuleObjectFactory.h" #include "../../../../include/partons/Partons.h" @@ -222,15 +222,15 @@ GPDEvolutionModule::~GPDEvolutionModule() { void GPDEvolutionModule::resolveObjectDependencies() { m_pRunningAlphaStrong = Partons::getInstance()->getModuleObjectFactory()->newRunningAlphaStrongModule( - RunningAlphaStrong::classId); + RunningAlphaStrongStandard::classId); m_pNfFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( - NfFunctionExample::classId); + Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsThresholdsModule( + ActiveFlavorsThresholdsQuarkMasses::classId); m_pNfEvolFunction = - Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsModule( - NfFunctionExample::classId); + Partons::getInstance()->getModuleObjectFactory()->newActiveFlavorsThresholdsModule( + ActiveFlavorsThresholdsQuarkMasses::classId); } //TODO logger @@ -546,7 +546,7 @@ PartonDistribution GPDEvolutionModule::compute(double x, double xi, double t, preCompute(x, xi, t, MuF2, MuR2, pGPDModule, gpdType); // 1. retrieve intervals from function nf over MuF in descending order nf ; from MuF_ref to MuF - std::vector nfIntervals = m_pNfFunction->getNfIntervals( + std::vector nfIntervals = m_pNfFunction->getNfIntervals( m_pGPDModule->getMuF2Ref(), m_MuF2); std::cerr << "nfIntervals = " << nfIntervals.size() << " for MuF2_ref = " @@ -607,7 +607,7 @@ void GPDEvolutionModule::evolutionR(double x, // return makeFinalPartonDistribution(); //} -void GPDEvolutionModule::evolution(const NfInterval &nfInterval) { +void GPDEvolutionModule::evolution(const ActiveFlavorsThresholds &nfInterval) { m_currentNf = nfInterval.getNf(); // compare nfInterval to nf of vector of GPD combination and resize vector of GPD combination to init evolution process @@ -625,7 +625,7 @@ void GPDEvolutionModule::evolution(const NfInterval &nfInterval) { m_partonDistributionEvolutionBase, m_currentNf); } -void GPDEvolutionModule::computeNonSinglet(const NfInterval &nfInterval) { +void GPDEvolutionModule::computeNonSinglet(const ActiveFlavorsThresholds &nfInterval) { // For each entry of the vector we compute FNS,i ; We started the loop at 2 because vector[0] = FG and vector[1] = FS for (unsigned int i = 2; i != m_partonDistributionEvolutionBase.size(); i++) { @@ -636,7 +636,7 @@ void GPDEvolutionModule::computeNonSinglet(const NfInterval &nfInterval) { } } -void GPDEvolutionModule::computeSingletGluon(const NfInterval &nfInterval) { +void GPDEvolutionModule::computeSingletGluon(const ActiveFlavorsThresholds &nfInterval) { // m_vectorOfNonSingletSingletGluon[0] = FG // m_vectorOfNonSingletSingletGluon[1] = FS m_partonDistributionEvolutionBase[0] = integratedGluonMuFDerivative( diff --git a/src/partons/modules/evolution/gpd/ExampleEvolQCDModel.cpp b/src/partons/modules/evolution/gpd/ExampleEvolQCDModel.cpp index 5c032ba74fe18661adcd00cbe879dbd6246d307b..55db71cf25279f71e62e7bbb276ce59fa0d5bc8d 100644 --- a/src/partons/modules/evolution/gpd/ExampleEvolQCDModel.cpp +++ b/src/partons/modules/evolution/gpd/ExampleEvolQCDModel.cpp @@ -31,16 +31,16 @@ void ExampleEvolQCDModel::initModule() { } double ExampleEvolQCDModel::integratedNonSingletMuFDerivative( - const NfInterval& nfInterval) { + const ActiveFlavorsThresholds& nfInterval) { return 1.; } double ExampleEvolQCDModel::integratedSingletMuFDerivative( - const NfInterval& nfInterval) { + const ActiveFlavorsThresholds& nfInterval) { return 1.; } double ExampleEvolQCDModel::integratedGluonMuFDerivative( - const NfInterval& nfInterval) { + const ActiveFlavorsThresholds& nfInterval) { return 1.; } diff --git a/src/partons/modules/gpd/GK11Gluonless.cpp b/src/partons/modules/gpd/GK11Gluonless.cpp deleted file mode 100644 index b994d2d92ff717fbf04d5a66fe23d7e991df1045..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/GK11Gluonless.cpp +++ /dev/null @@ -1,1882 +0,0 @@ -#include "../../../../include/partons/modules/gpd/GK11Gluonless.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int GK11Gluonless::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new GK11Gluonless("GK11Gluonless")); - -//TODO initialise missing members -GK11Gluonless::GK11Gluonless(const std::string &className) : - GPDModule(className) { - fL = 0.; - m_MuF2_ref = 4.; - Huval1tab = std::vector(3, 0.); - Hdval1tab = std::vector(3, 0.); - Huval1mtab = std::vector(3, 0.); - Hdval1mtab = std::vector(3, 0.); - Hs1tab = std::vector(4, 0.); - Hi1tab = std::vector(4, 0.); - Euval1tab = std::vector(2, 0.); - Edval1tab = std::vector(8, 0.); - Euval1mtab = std::vector(2, 0.); - Edval1mtab = std::vector(8, 0.); - Es1tab = std::vector(3, 0.); - Ei1tab = std::vector(2, 0.); - Htuval1tab = std::vector(3, 0.); - Htdval1tab = std::vector(3, 0.); - Htuval1mtab = std::vector(3, 0.); - Htdval1mtab = std::vector(3, 0.); - Hti1tab = std::vector(3, 0.); - Etuval1tab = std::vector(4, 0.); - Etdval1tab = std::vector(4, 0.); - Etuval1mtab = std::vector(4, 0.); - Etdval1mtab = std::vector(4, 0.); - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::E, &GPDModule::computeE)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Ht, &GPDModule::computeHt)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Et, &GPDModule::computeEt)); -} - -GK11Gluonless::GK11Gluonless(const GK11Gluonless& other) : - GPDModule(other) { - c1 = other.getC1(); - c2 = other.getC2(); - c3 = other.getC3(); - c4 = other.getC4(); - c5 = other.getC5(); - c6 = other.getC6(); - c7 = other.getC7(); - c8 = other.getC8(); - b0 = other.getB0(); - kappa_s = other.getKappaS(); - fL = other.getL(); - fHuValMx = other.getHuValMx(); - fHdValMx = other.getHdValMx(); - fEuValMx = other.getEuValMx(); - fEdValMx = other.getEdValMx(); - fHtuValMx = other.getHtuValMx(); - fHtdValMx = other.getHtdValMx(); - fEtuValMx = other.getEtuValMx(); - fEtdValMx = other.getEtdValMx(); - kHgluon = other.getHgluon(); - kHsea = other.getHsea(); - kHuval = other.getHuval(); - kHdval = other.getHdval(); - kEgluon = other.getEgluon(); - kEsea = other.getEsea(); - kEuval = other.getEuval(); - kEdval = other.getEdval(); - kHtgluon = other.getHtgluon(); - kHtsea = other.getHtsea(); - kHtuval = other.getHtuval(); - kHtdval = other.getHtdval(); - kEtgluon = other.getEtgluon(); - kEtsea = other.getEtsea(); - kEtuval = other.getEtuval(); - kEtdval = other.getEtdval(); - Huval1tab = other.getHuval1tab(); - Hdval1tab = other.getHdval1tab(); - Huval1mtab = other.getHuval1mtab(); - Hdval1mtab = other.getHdval1mtab(); - Hs1tab = other.getHs1tab(); - Hi1tab = other.getHi1tab(); - Euval1tab = other.getEuval1tab(); - Edval1tab = other.getEdval1tab(); - Euval1mtab = other.getEuval1mtab(); - Edval1mtab = other.getEdval1mtab(); - Es1tab = other.getEs1tab(); - Ei1tab = other.getEi1tab(); - Htuval1tab = other.getHtuval1tab(); - Htdval1tab = other.getHtdval1tab(); - Htuval1mtab = other.getHtuval1mtab(); - Htdval1mtab = other.getHtdval1mtab(); - Hti1tab = other.getHti1tab(); - Etuval1tab = other.getEtuval1tab(); - Etdval1tab = other.getEtdval1tab(); - Etuval1mtab = other.getEtuval1mtab(); - Etdval1mtab = other.getEtdval1mtab(); -} - -GK11Gluonless* GK11Gluonless::clone() const { - return new GK11Gluonless(*this); -} - -GK11Gluonless::~GK11Gluonless() { -} - -void GK11Gluonless::configure(const ElemUtils::Parameters ¶meters) { - GPDModule::configure(parameters); -} - -//TODO implement -void GK11Gluonless::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); - -} - -void GK11Gluonless::initModule() { - GPDModule::initModule(); - - fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale - - /* debug(__func__, - ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ -} - -PartonDistribution GK11Gluonless::computeH() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - -// Scales - - calculateHCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 2.23 + 0.362 * fL; // See table 1 p. 12 - c2 = 5.43 - 7.0 * fL; // See table 1 p. 12 - c3 = -34.0 + 22.5 * fL; // See table 1 p. 12 - c4 = 40.6 - 21.6 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - GluonDistribution gluonDistribution(0); - -// s quark - - c1 = 0.123 + 0.0003 * fL; // See table 1 p. 12 - c2 = -0.327 - 0.004 * fL; // See table 1 p. 12 - c3 = 0.692 - 0.068 * fL; // See table 1 p. 12 - c4 = -0.486 + 0.038 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Hs1tab.at(0) + c2 * Hs1tab.at(1) + c3 * Hs1tab.at(2) - + c4 * Hs1tab.at(3))); // See eq. (27) - -// u quark, valence part - - c1 = 1.52 + 0.248 * fL; // See eq. (27) - c2 = 2.88 - 0.94 * fL; // See eq. (27) - c3 = -0.095 * fL; // See eq. (27) - - b0 = 0; // See p. 15 - - double uVal = exp(b0 * m_t) - * (c1 * Huval1tab.at(0) + c2 * Huval1tab.at(1) - + c3 * Huval1tab.at(2)); // See eq. (27) - - fHuValMx = exp(b0 * m_t) - * (c1 * Huval1mtab.at(0) + c2 * Huval1mtab.at(1) - + c3 * Huval1mtab.at(2)); // See eq. (27); - -// d quark, valence part - - c1 = 0.76 + 0.248 * fL; // See table 1 p. 12 - c2 = 3.11 - 1.36 * fL; // See table 1 p. 12 - c3 = -3.99 + 1.15 * fL; // See table 1 p. 12 - - b0 = 0; // See p. 15 - - double dVal = exp(b0 * m_t) - * (c1 * Hdval1tab.at(0) + c2 * Hdval1tab.at(1) - + c3 * Hdval1tab.at(2)); // See eq. (27) - - // C'est HqVal (-x) - fHdValMx = exp(b0 * m_t) - * (c1 * Hdval1mtab.at(0) + c2 * Hdval1mtab.at(1) - + c3 * Hdval1mtab.at(2)); // See eq. (27) - -// u and d quarks, sea part - - kappa_s = 1. + 0.68 / (1. + 0.52 * log(m_MuF2 / m_MuF2_ref)); // See eq. (36) - - double uSea = kappa_s * quarkDistribution_s.getQuarkDistribution(); // See eq. (35) - double dSea = uSea; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - -// H, charge singlet - -// pGPD_H->setSquareChargeAveraged( -// Constant::U2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_u->getSea() -// + pGPDQuarkFlavorData_u->getValence()) -// + Constant::D2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_d->getSea() -// + pGPDQuarkFlavorData_d->getValence()) -// + Constant::S2_ELEC_CHARGE * pGPDQuarkFlavorData_s->getHq()); - - // Set Hq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal - fHuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fHdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution()); - - // Set Hq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal + fHuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fHdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK11Gluonless::computeHt() { - - debug(__func__, "Entered function ..."); - - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double delta, etau, etad, Nu, Nd; - - calculateHtCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 3.39 - 0.864 * fL; - c2 = 1.73 + 0.24 * fL - 0.17 * fL * fL; - c3 = 0.42 - 0.115 * fL - 0.069 * fL * fL; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution(0); - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0); - -// s quark, Ht_sea = 0 for GK - quarkDistribution_s.setQuarkDistribution(0.); - -// u quark, valence part - - c1 = 0.170 + 0.03 * fL; //parameters from GK3 table 4 and note 11 december 2008 - c2 = 1.340 - 0.02 * fL; - c3 = 0.120 - 0.40 * fL; - - etau = 0.926; - delta = 0.48; - b0 = 0.; - - Nu = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6 - delta) - / (5. - delta)); -// + c4 * (3.-delta) * (2.-delta) * (1-delta)/(7.-delta)/(6.-delta)/(5.-delta) ) ; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etau = " << etau - << ", delta = " << delta << ", Nu = " << Nu); - - double uVal = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1tab.at(0) + c2 * Htuval1tab.at(1) - + c3 * Htuval1tab.at(2)); - fHtuValMx = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1mtab.at(0) + c2 * Htuval1mtab.at(1) - + c3 * Htuval1mtab.at(2)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -0.320 - 0.040 * fL; // parameters from GK3 table 4 - c2 = -1.427 - 0.176 * fL; - c3 = 0.692 - 0.068 * fL; - - etad = -0.341; - - Nd = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6. - delta) - / (5. - delta)); - - b0 = 0; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etad = " << etad - << ", Nd = " << Nd); - - double dVal = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1tab.at(0) + c2 * Htdval1tab.at(1) - + c3 * Htdval1tab.at(2)); - fHtdValMx = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1mtab.at(0) + c2 * Htdval1mtab.at(1) - + c3 * Htdval1mtab.at(2)); // -pGPDData->getX() - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - - // Set Htq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal + fHtuValMx); - quarkDistribution_d.setQuarkDistributionPlus(dVal + fHtdValMx); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Htq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal - fHtuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal - fHtdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK11Gluonless::computeE() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - calculateECoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 0.779; - c2 = -c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution(0); - -// s quark (sea) - - c1 = -0.155; - c2 = -2 * c1; - c3 = c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Es1tab.at(0) + c2 * Es1tab.at(1) + c3 * Es1tab.at(2))); - -// u quark, valence part - - c1 = 2.2053; - c2 = -c1; - - b0 = 0; - - double uVal = exp(b0 * m_t) * (c1 * Euval1tab.at(0) + c2 * Euval1tab.at(1)); - fEuValMx = exp(b0 * m_t) * (c1 * Euval1mtab.at(0) + c2 * Euval1mtab.at(1)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -3.114; // DFJK4 version betad = 5.6 - c2 = 8.096; - c3 = -6.477; - c4 = 1.295; - c5 = 0.1296; - c6 = 0.0362; - c7 = 0.014516; - c8 = 0.0070504; - - b0 = 0; - - double dVal = exp(b0 * m_t) - * (c1 * Edval1tab.at(0) + c2 * Edval1tab.at(1) - + c3 * Edval1tab.at(2) + c4 * Edval1tab.at(3) - + c5 * Edval1tab.at(4) + c6 * Edval1tab.at(5) - + c7 * Edval1tab.at(6) + c8 * Edval1tab.at(7)); - fEdValMx = exp(b0 * m_t) - * (c1 * Edval1mtab.at(0) + c2 * Edval1mtab.at(1) - + c3 * Edval1mtab.at(2) + c4 * Edval1mtab.at(3) - + c5 * Edval1mtab.at(4) + c6 * Edval1mtab.at(5) - + c7 * Edval1mtab.at(6) + c8 * Edval1mtab.at(7)); // -pGPDData->getX() - -// u and d quarks, sea part - -//EuSea = Es - double uSea = quarkDistribution_s.getQuarkDistribution(); -//EdSea = Es - double dSea = quarkDistribution_s.getQuarkDistribution(); - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - - // Set Eq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal - fEuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fEdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution()); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal + fEuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fEdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK11Gluonless::computeEt() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double Nu, Nd; - double PionPolePx, PionPoleMx; - - calculateEtCoefs(); // Calculate the K's and the coefficients - - PionPolePx = Et_pole(m_x); - PionPoleMx = Et_pole(-m_x); - -// Gluons, Et_gluons = 0 for GK - GluonDistribution gluonDistribution(0.); - -// s quark, Et_sea = 0 for GK - quarkDistribution_s.setQuarkDistributionPlus(0.); - -// u quark, valence part - - Nu = 14.0; - c1 = Nu; // parameters P.Kroll Maple file - c2 = -2. * Nu; - c3 = Nu; - c4 = 0.0; - b0 = 0.9; // from P.Kroll's email, 14/3/2011 - - double fEtuVal = exp(b0 * m_t) - * (c1 * Etuval1tab.at(0) + c2 * Etuval1tab.at(1) - + c3 * Etuval1tab.at(2) + c4 * Etuval1tab.at(3)); - fEtuVal += PionPolePx; - double uVal = fEtuVal; - fEtuValMx = exp(b0 * m_t) - * (c1 * Etuval1mtab.at(0) + c2 * Etuval1mtab.at(1) - + c3 * Etuval1mtab.at(2) + c4 * Etuval1mtab.at(3)); // -pGPDData->getX() - fEtuValMx += PionPoleMx; - -// d quark, valence part - - Nd = 4.0; - c1 = Nd; // parameters P.Kroll Maple file - c2 = -2. * Nd; - c3 = Nd; - c4 = 0.0; - b0 = 0.9; - - double fEtdVal = exp(b0 * m_t) - * (c1 * Etdval1tab.at(0) + c2 * Etdval1tab.at(1) - + c3 * Etdval1tab.at(2) + c4 * Etdval1tab.at(3)); - fEtdVal -= PionPolePx; - double dVal = fEtdVal; - fEtdValMx = exp(b0 * m_t) - * (c1 * Etdval1mtab.at(0) + c2 * Etdval1mtab.at(1) - + c3 * Etdval1mtab.at(2) + c4 * Etdval1mtab.at(3)); // -pGPDData->getX() - fEtdValMx -= PionPoleMx; - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - - // Set Etq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal + fEtuValMx); - quarkDistribution_d.setQuarkDistributionPlus(dVal + fEtdValMx); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal - fEtuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal - fEtdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -//double GK11Gluonless::computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s) { -// -// if (m_nbOfQuarkFlavor == 0) { -// throwException(__func__, "divided by ZERO !"); -// } -// -// double result = quarkDistribution_u.getQuarkDistributionPlus() -// + quarkDistribution_d.getQuarkDistributionPlus() -// + quarkDistribution_s.getQuarkDistributionPlus(); -// result *= (1 / (2 * m_nbOfQuarkFlavor)); -// -// return result; -//} - -void GK11Gluonless::calculateHCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow (full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - - if (!slow_sea) { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(m_x, 1.5, kHgluon); ///< TODO: CHECK IT - ADDED BY JAKUB - } else { - Hs1tab.at(0) = -Hs1(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(-m_x, 1.5, kHgluon); - } - } else { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1_alt(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1_alt(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1_alt(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1_alt(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(m_x, 1.5, kHgluon); - } else { - Hs1tab.at(0) = -Hs1_alt(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1_alt(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1_alt(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1_alt(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(-m_x, 1.5, kHgluon); - } - } - - if (!slow_val) { - Huval1tab.at(0) = Hval1(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1(-m_x, 1., kHdval); - - } else { - Huval1tab.at(0) = Hval1_alt(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1_alt(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1_alt(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1_alt(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1_alt(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1_alt(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1_alt(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1_alt(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1_alt(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1_alt(-m_x, 1., kHdval); - } -} - -void GK11Gluonless::calculateHKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL; - kHgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kHsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kHuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9 - 0.05 * fL; - delta = 0.48 + 0.006 * fL; - kHdval = delta + alpha * m_t; -} - -double GK11Gluonless::Hs1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - - 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK11Gluonless::Hi1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - + 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - return dummy; -} - -double GK11Gluonless::Hs1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - return dummy; -} - -double GK11Gluonless::Hi1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - - dummy = double_approx(dummya); - - return dummy; -} - -double GK11Gluonless::Hval1(double x, double i, double k) { - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummy = 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dummy = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK11Gluonless::Hval1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi3 = expt(xia, 3); - - if (fabs(x + m_xi) > 1e-6) { - dummy2 = exp((2 + ia - ka) * ln((xba + xia) / (1 + xia))); - } else { - dummy2 = 0; - } - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((2 + ia - ka) * ln((xba - xia) / (1 - xia))); - } else { - dummy1 = 0; - } - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummya = dummy2 * (xia * xia - xba + (2 + ia - ka) * xia * (1 - xba)); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - - } else { - dummya = (xia * xia - xba) * (dummy2 - dummy1); - - dummya += (2 + ia - ka) * xia * (1 - xba) * (dummy2 + dummy1); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - } - - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/** ! - * \fn void STGK11Gluonless::calculateHtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Hti1 ( i = 0, 0.5, 1 ) - * - Htval1( i = 0, 1, 2 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * ( gluons only for now, Htilde_sea = 0 for Kroll ) - * - */ -void GK11Gluonless::calculateHtCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHtKas(); // comes up with kHtgluon, kHstea, kHtuval, kHtdval - -// No sea Ht for GK. - - debug(__func__, - ElemUtils::Formatter() << "slow_sea = " << slow_sea - << " slow_val = " << slow_val); - -//TODO permuter les conditions - - if (!slow_sea) { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(-m_x, 1.0, kHtgluon); - } - } else { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1_alt(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1_alt(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(-m_x, 1.0, kHtgluon); - } - } - - if (!slow_val) { - Htuval1tab.at(0) = Htval1(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); // kHtdval & kHtuval are equal - Htdval1tab.at(1) = Htuval1tab.at(1); // for u and d for Ht - Htdval1tab.at(2) = Htuval1tab.at(2); // don't need to recalculate - - Htuval1mtab.at(0) = Htval1(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - - } else { - Htuval1tab.at(0) = Htval1_alt(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1_alt(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1_alt(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); - Htdval1tab.at(1) = Htuval1tab.at(1); - Htdval1tab.at(2) = Htuval1tab.at(2); - - Htuval1mtab.at(0) = Htval1_alt(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1_alt(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1_alt(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - } -} - -/*! - * \fn void STGK11Gluonless::calculateHtKas() - * - * Compute t-dependence of GPD Ht correlated to x. - * - */ -void GK11Gluonless::calculateHtKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = -0.78 + 0.17 * fL; - kHtgluon = delta + alpha * m_t; - -// sea, not modelled by GK. - - kHtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kHtuval = delta + alpha * m_t; - -// d valence - - kHtdval = kHtuval; - - debug(__func__, - ElemUtils::Formatter() << "(t=" << m_t << ") kHtgluon=" << kHtgluon - << " kHtsea=" << kHtsea << " kHtuval=" << kHtuval - << " kHtdval=" << kHtdval); -} - -/*! - * \fn void STGK11Gluonless::CalculateEtKas() - * - * Exactly the same as Hval1_alt and Eval1_alt. - * - */ -double GK11Gluonless::Htval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/*! - * \fn double STGK11Gluonless::Hti1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK11Gluonless::Hti1(double x, double i, double k) { - - return Hs1(x, i, k); -} - -/*! - * \fn void STGK11Gluonless::CalculateEtKas() - * - * Exactly the same as Hs1_alt. - * - */ -double GK11Gluonless::Hti1_alt(double x, double i, double k) { - -//return Hs1_alt(_xi, x, i, k); - - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/*! - * \fn void STGK11Gluonless::CalculateEtKas() - * - * Exactly the same as Hval1 and Eval1. - * - */ -double GK11Gluonless::Htval1(double x, double i, double k) { - - return Hval1(x, i, k); -} - -/** ! - * \fn void STGK11Gluonless::calculateECoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Es1 (i=0, 1, 2) - * - Ei1 (i=0, 1) - * - Eval1(i=0, 1, 2) (u) - * - Eval1(i=0, .. ,7) (d) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share th(ame limits as strange/sea as far as slow/fast goes. - * - */ -void GK11Gluonless::calculateECoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEKas(); // comes up with kEgluon, kEsea, kEuval, kEdval - - if (!slow_sea) { - if (m_x >= 0) { - Es1tab.at(0) = Es1(m_x, 0., kEsea); - Es1tab.at(1) = Es1(m_x, 1., kEsea); - Es1tab.at(2) = Es1(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(-m_x, 1., kEgluon); - } - } else { - if (m_x >= 0) { - Es1tab.at(0) = Es1_alt(m_x, 0., kEsea); - Es1tab.at(1) = Es1_alt(m_x, 1., kEsea); - Es1tab.at(2) = Es1_alt(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1_alt(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1_alt(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1_alt(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(-m_x, 1., kEgluon); - } - } - - if (!slow_val) { - Euval1tab.at(0) = Eval1(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1(-m_x, 7., kEdval); - - } else { - Euval1tab.at(0) = Eval1_alt(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1_alt(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1_alt(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1_alt(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1_alt(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1_alt(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1_alt(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1_alt(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1_alt(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1_alt(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1_alt(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1_alt(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1_alt(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1_alt(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1_alt(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1_alt(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1_alt(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1_alt(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1_alt(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1_alt(-m_x, 7., kEdval); - } - -} - -/*! - * \fn void STGK11Gluonless::calculateEKas() - * - * Compute t-dependence of GPD H correlated to x. - * - */ -void GK11Gluonless::calculateEKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL - 0.0027 * fL * fL; - kEgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kEsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kEuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9; - delta = 0.48; - kEdval = delta + alpha * m_t; - -} - -/*! - * \fn double STGK11Gluonless::Es1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK11Gluonless::Es1(double x, double i, double k) { - return Hs1(x, i, k); -} - -/*! - * \fn double STGK11Gluonless::Ei1( double x, double i, double k ) - * - * Exactly the same as Hi1. - * - */ -double GK11Gluonless::Ei1(double x, double i, double k) { - return Hi1(x, i, k); -} - -/*! - * \fn double STGK11Gluonless::Es1_alt( double x, double i, double k ) - * - * Exactly the same as Hs1_alt. - * - */ -double GK11Gluonless::Es1_alt(double x, double i, double k) { - return Hs1_alt(x, i, k); -} - -/*! - * \fn double STGK11Gluonless::Ei1_alt( double x, double i, double k ) - * - * Exactly the same as Hi1_alt. - * - */ -double GK11Gluonless::Ei1_alt(double x, double i, double k) { - return Hi1_alt(x, i, k); -} - -/*! - * \fn double STGK11Gluonless::Eval1( double x, double i, double k ) - * - * Exactly the same as Hval1. - * - */ -double GK11Gluonless::Eval1(double x, double i, double k) { - return Hval1(x, i, k); -} - -/*! - * \fn void STGK11Gluonless::CalculateEtKas() - * - * Exactly the same as Hval1_alt. - * - */ -double GK11Gluonless::Eval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/** ! - * \fn void STGK11Gluonless::calculateEtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Etval1 ( i = 0, 1, 2, 3 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * For the sea ( and gluons later ) - * - */ -void GK11Gluonless::calculateEtCoefs() { - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - -// For valence - - if ((m_xi < 0.04) - && (log10(m_xi) < ((-4. / log10(0.55)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEtKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - -// WARNING : No sea or gluon Et for GK. - - if (!slow_val) { - Etuval1tab.at(0) = Etval1(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); // kEtdval & kEtuval are equal - Etdval1tab.at(1) = Etuval1tab.at(1); // for u and d for Et, - Etdval1tab.at(2) = Etuval1tab.at(2); // don't need to recalculate - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - - } else { - Etuval1tab.at(0) = Etval1_alt(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1_alt(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1_alt(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1_alt(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); - Etdval1tab.at(1) = Etuval1tab.at(1); - Etdval1tab.at(2) = Etuval1tab.at(2); - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1_alt(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1_alt(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1_alt(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1_alt(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - } -} - -/*! - * \fn void STGK11Gluonless::calculateEtKas() - * - * Compute t-dependence of GPD Et correlated to x. - * - */ -void GK11Gluonless::calculateEtKas() { - double alpha, delta; - -// gluons, not modelled by GK. - - kEtgluon = 0.; - -// sea, not modelled by GK. - - kEtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kEtuval = delta + alpha * m_t; - -// d valence - - kEtdval = kEtuval; -} - -/* ! - * \fn double STGK11Gluonless::Et_pole( double x ) - * - * Pion pole contribution to Et. - * - */ -double GK11Gluonless::Et_pole(double x) { - -//TODO extraire les constantes si existantes - - double dum = 0.; // Initialize to 0 - double eps; - double eps2; - double tmin; - double xbj; - double Q2 = m_MuF2; - double tOverQ2 = m_t / Q2; - double y = (x + m_xi) / 2. / m_xi; - double MPi2 = Constant::PI_ZERO_MASS * Constant::PI_ZERO_MASS; - double gpiNN = 13.4; - double f_pi = 0.131; // f_pi=0.131 GeV from paper. Actually 130.4 from PDG (Jul2010) - double Lambda_N2 = 0.51 * 0.51; - double Fp; - double FpiNN; - - xbj = 2. * m_xi / (m_xi - tOverQ2 * m_xi + 1. + tOverQ2 * 0.5); - eps = 2. * xbj * Constant::PROTON_MASS / sqrt(Q2); - eps2 = eps * eps; - - if (eps < 1 && (4. * xbj * (1. - xbj) + eps2) != 0) { - - tmin = -Q2 * (2. * (1. - xbj) * (1 - sqrt(1. + eps2)) + eps2) - / (4. * xbj * (1. - xbj) + eps2); - FpiNN = (Lambda_N2 - MPi2) / (Lambda_N2 - (m_t - tmin)); - Fp = -Constant::PROTON_MASS * f_pi * (2. * sqrt(2.) * gpiNN * FpiNN) - / (m_t - MPi2); - - if (x < m_xi && x > -m_xi && m_t < tmin) { -// dum = ( Fp( pKinematicVariables->getT(), Q2, tmin ) / 4. / pGPDData->getXi() ) * Phi_pi( ( x + pGPDData->getXi() ) / 2. / pGPDData->getXi() ) ; - dum = (Fp / 4. / m_xi) * 6. * y * (1. - y); - } - - } - - return dum; -} - -/*! - * \fn double STGK11Gluonless::Etval1( double x, double i, double k ) - * - * xdiff:=evalf(xb-xi); xsum:=evalf(xb+xi); - * if xsum<0 then # xb<-xi - * Hi:=0 else - * if xdiff <0 then # xb 3/2/xi^3*(((xb+xi)/(1+xi))^(2+i-k)*(xi^2-xb+(2+i-k)*xi*(1-xb))) - * /(1+i-k)/(2+i-k)/(3+i-k) - * else - * Hi:= i -> 3/2/xi^3/(1+i-k)/(2+i-k)/(3+i-k)*((xi^2-xb)*( ((xb+xi)/(1+xi))^(2+i-k) - * -((xb-xi)/(1-xi))^(2+i-k)) - * + xi*(1-xb)*(2+i-k)*(((xb+xi)/(1+xi))^(2+i-k)+ ((xb-xi)/(1-xi))^(2+i-k) ) ) - * end if: end if: - * - */ -double GK11Gluonless::Etval1(double x, double i, double k) { - double dum; - - if ((x + m_xi) < 0) { // 0 for x < -pGPDData->getXi() - dum = 0.0; - } else { // Two cases for x >= -pGPDData->getXi() - if ((x - m_xi) < 0) { - dum = - 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x - + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dum = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), - (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), - (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - } - return dum; -} - -/*! - * \fn double STGK11Gluonless::Etval1_alt( double x, double i, double k ) - * - * Exactly the same as Hval1_alt and Eval1_alt, Htval1_alt. - * - */ -double GK11Gluonless::Etval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -double GK11Gluonless::getB0() const { - return b0; -} - -double GK11Gluonless::getC1() const { - return c1; -} - -double GK11Gluonless::getC2() const { - return c2; -} - -double GK11Gluonless::getC3() const { - return c3; -} - -double GK11Gluonless::getC4() const { - return c4; -} - -double GK11Gluonless::getC5() const { - return c5; -} - -double GK11Gluonless::getC6() const { - return c6; -} - -double GK11Gluonless::getC7() const { - return c7; -} - -double GK11Gluonless::getC8() const { - return c8; -} - -const std::vector& GK11Gluonless::getEdval1mtab() const { - return Edval1mtab; -} - -const std::vector& GK11Gluonless::getEdval1tab() const { - return Edval1tab; -} - -const std::vector& GK11Gluonless::getEi1tab() const { - return Ei1tab; -} - -const std::vector& GK11Gluonless::getEs1tab() const { - return Es1tab; -} - -const std::vector& GK11Gluonless::getEtdval1mtab() const { - return Etdval1mtab; -} - -const std::vector& GK11Gluonless::getEtdval1tab() const { - return Etdval1tab; -} - -const std::vector& GK11Gluonless::getEtuval1mtab() const { - return Etuval1mtab; -} - -const std::vector& GK11Gluonless::getEtuval1tab() const { - return Etuval1tab; -} - -const std::vector& GK11Gluonless::getEuval1mtab() const { - return Euval1mtab; -} - -const std::vector& GK11Gluonless::getEuval1tab() const { - return Euval1tab; -} - -double GK11Gluonless::getEdValMx() const { - return fEdValMx; -} - -double GK11Gluonless::getEtdValMx() const { - return fEtdValMx; -} - -double GK11Gluonless::getEtuValMx() const { - return fEtuValMx; -} - -double GK11Gluonless::getEuValMx() const { - return fEuValMx; -} - -double GK11Gluonless::getHdValMx() const { - return fHdValMx; -} - -double GK11Gluonless::getHtdValMx() const { - return fHtdValMx; -} - -double GK11Gluonless::getHtuValMx() const { - return fHtuValMx; -} - -double GK11Gluonless::getHuValMx() const { - return fHuValMx; -} - -double GK11Gluonless::getL() const { - return fL; -} - -const std::vector& GK11Gluonless::getHdval1mtab() const { - return Hdval1mtab; -} - -const std::vector& GK11Gluonless::getHdval1tab() const { - return Hdval1tab; -} - -const std::vector& GK11Gluonless::getHi1tab() const { - return Hi1tab; -} - -const std::vector& GK11Gluonless::getHs1tab() const { - return Hs1tab; -} - -const std::vector& GK11Gluonless::getHtdval1mtab() const { - return Htdval1mtab; -} - -const std::vector& GK11Gluonless::getHtdval1tab() const { - return Htdval1tab; -} - -const std::vector& GK11Gluonless::getHti1tab() const { - return Hti1tab; -} - -const std::vector& GK11Gluonless::getHtuval1mtab() const { - return Htuval1mtab; -} - -const std::vector& GK11Gluonless::getHtuval1tab() const { - return Htuval1tab; -} - -const std::vector& GK11Gluonless::getHuval1mtab() const { - return Huval1mtab; -} - -const std::vector& GK11Gluonless::getHuval1tab() const { - return Huval1tab; -} - -double GK11Gluonless::getKappaS() const { - return kappa_s; -} - -double GK11Gluonless::getEdval() const { - return kEdval; -} - -double GK11Gluonless::getEgluon() const { - return kEgluon; -} - -double GK11Gluonless::getEsea() const { - return kEsea; -} - -double GK11Gluonless::getEtdval() const { - return kEtdval; -} - -double GK11Gluonless::getEtgluon() const { - return kEtgluon; -} - -double GK11Gluonless::getEtsea() const { - return kEtsea; -} - -double GK11Gluonless::getEtuval() const { - return kEtuval; -} - -double GK11Gluonless::getEuval() const { - return kEuval; -} - -double GK11Gluonless::getHdval() const { - return kHdval; -} - -double GK11Gluonless::getHgluon() const { - return kHgluon; -} - -double GK11Gluonless::getHsea() const { - return kHsea; -} - -double GK11Gluonless::getHtdval() const { - return kHtdval; -} - -double GK11Gluonless::getHtgluon() const { - return kHtgluon; -} - -double GK11Gluonless::getHtsea() const { - return kHtsea; -} - -double GK11Gluonless::getHtuval() const { - return kHtuval; -} - -double GK11Gluonless::getHuval() const { - return kHuval; -} - -std::string GK11Gluonless::toString() const { - return GPDModule::toString(); -} diff --git a/src/partons/modules/gpd/GK11ModelNoGluons.cpp b/src/partons/modules/gpd/GK11ModelNoGluons.cpp deleted file mode 100644 index e145b54f26e6b519b1a1384854722b1b315dfc07..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/GK11ModelNoGluons.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include "../../../../include/partons/modules/gpd/GK11ModelNoGluons.h" - -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDKinematic.h" -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/gpd/GK11Model.h" -#include "../../../../include/partons/ModuleObjectFactory.h" -#include "../../../../include/partons/Partons.h" -#include "../../../../include/partons/ServiceObjectRegistry.h" - -const unsigned int GK11ModelNoGluons::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new GK11ModelNoGluons("GK11ModelNoGluons")); - -GK11ModelNoGluons::GK11ModelNoGluons(const std::string &className) : - GPDModule(className) { - pGPDService = NULL; - GKmodel = NULL; - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Ht, &GPDModule::computeHt)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::E, &GPDModule::computeE)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Et, &GPDModule::computeEt)); -} - -GK11ModelNoGluons::~GK11ModelNoGluons() { -} - -GK11ModelNoGluons* GK11ModelNoGluons::clone() const { - return new GK11ModelNoGluons(*this); -} - -void GK11ModelNoGluons::configure(const ElemUtils::Parameters ¶meters) { - GPDModule::configure(parameters); -} - -std::string GK11ModelNoGluons::toString() const { - return GPDModule::toString(); -} - -GK11ModelNoGluons::GK11ModelNoGluons(const GK11ModelNoGluons& other) : - GPDModule(other) { - - pGPDService = other.pGPDService; - GKmodel = other.GKmodel; -} - -void GK11ModelNoGluons::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); -} - -void GK11ModelNoGluons::initModule() { - - pGPDService = - Partons::getInstance()->getServiceObjectRegistry()->getGPDService(); - - //TODO Why ? It's alreeady a GPDModule ! - GKmodel = Partons::getInstance()->getModuleObjectFactory()->newGPDModule( - GK11Model::classId); - - GPDModule::initModule(); -} - -PartonDistribution GK11ModelNoGluons::computeH() { - - //compute kinematics - GPDKinematic gpdKinematic(m_x, m_xi, m_t, m_MuF2, m_MuR2); - - //calculate GK11 - PartonDistribution partonDistribution = GKmodel->compute(gpdKinematic, - GPDType(GPDType::H), false); - //set gluon distribution to 0. - partonDistribution.setGluonDistribution(GluonDistribution(0.)); - - return partonDistribution; -} - -PartonDistribution GK11ModelNoGluons::computeHt() { - - //compute kinematics - GPDKinematic gpdKinematic(m_x, m_xi, m_t, m_MuF2, m_MuR2); - - //calculate GK11 - PartonDistribution partonDistribution = GKmodel->compute(gpdKinematic, - GPDType(GPDType::Ht), false); - //set gluon distribution to 0. - partonDistribution.setGluonDistribution(GluonDistribution(0.)); - - return partonDistribution; -} - -PartonDistribution GK11ModelNoGluons::computeE() { - - //compute kinematics - GPDKinematic gpdKinematic(m_x, m_xi, m_t, m_MuF2, m_MuR2); - - //calculate GK11 - PartonDistribution partonDistribution = GKmodel->compute(gpdKinematic, - GPDType(GPDType::E), false); - //set gluon distribution to 0. - partonDistribution.setGluonDistribution(GluonDistribution(0.)); - - return partonDistribution; -} - -PartonDistribution GK11ModelNoGluons::computeEt() { - - //compute kinematics - GPDKinematic gpdKinematic(m_x, m_xi, m_t, m_MuF2, m_MuR2); - - //calculate GK11 - PartonDistribution partonDistribution = GKmodel->compute(gpdKinematic, - GPDType(GPDType::Et), false); - //set gluon distribution to 0. - partonDistribution.setGluonDistribution(GluonDistribution(0.)); - - return partonDistribution; -} diff --git a/src/partons/modules/gpd/GK11ModelOnlyGluons.cpp b/src/partons/modules/gpd/GK11ModelOnlyGluons.cpp deleted file mode 100644 index 0abd67f1d182ab33c04e988749ecf10e7c100c95..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/GK11ModelOnlyGluons.cpp +++ /dev/null @@ -1,1901 +0,0 @@ -#include "../../../../include/partons/modules/gpd/GK11ModelOnlyGluons.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int GK11ModelOnlyGluons::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new GK11ModelOnlyGluons("GK11ModelOnlyGluonsOnlyGluons")); - -//TODO initialise missing members -GK11ModelOnlyGluons::GK11ModelOnlyGluons(const std::string &className) : - GPDModule(className) { - fL = 0.; - m_MuF2_ref = 4.; - Huval1tab = std::vector(3, 0.); - Hdval1tab = std::vector(3, 0.); - Huval1mtab = std::vector(3, 0.); - Hdval1mtab = std::vector(3, 0.); - Hs1tab = std::vector(4, 0.); - Hi1tab = std::vector(4, 0.); - Euval1tab = std::vector(2, 0.); - Edval1tab = std::vector(8, 0.); - Euval1mtab = std::vector(2, 0.); - Edval1mtab = std::vector(8, 0.); - Es1tab = std::vector(3, 0.); - Ei1tab = std::vector(2, 0.); - Htuval1tab = std::vector(3, 0.); - Htdval1tab = std::vector(3, 0.); - Htuval1mtab = std::vector(3, 0.); - Htdval1mtab = std::vector(3, 0.); - Hti1tab = std::vector(3, 0.); - Etuval1tab = std::vector(4, 0.); - Etdval1tab = std::vector(4, 0.); - Etuval1mtab = std::vector(4, 0.); - Etdval1mtab = std::vector(4, 0.); - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::E, &GPDModule::computeE)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Ht, &GPDModule::computeHt)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Et, &GPDModule::computeEt)); -} - -GK11ModelOnlyGluons::GK11ModelOnlyGluons(const GK11ModelOnlyGluons& other) : - GPDModule(other) { - c1 = other.getC1(); - c2 = other.getC2(); - c3 = other.getC3(); - c4 = other.getC4(); - c5 = other.getC5(); - c6 = other.getC6(); - c7 = other.getC7(); - c8 = other.getC8(); - b0 = other.getB0(); - kappa_s = other.getKappaS(); - fL = other.getL(); - fHuValMx = other.getHuValMx(); - fHdValMx = other.getHdValMx(); - fEuValMx = other.getEuValMx(); - fEdValMx = other.getEdValMx(); - fHtuValMx = other.getHtuValMx(); - fHtdValMx = other.getHtdValMx(); - fEtuValMx = other.getEtuValMx(); - fEtdValMx = other.getEtdValMx(); - kHgluon = other.getHgluon(); - kHsea = other.getHsea(); - kHuval = other.getHuval(); - kHdval = other.getHdval(); - kEgluon = other.getEgluon(); - kEsea = other.getEsea(); - kEuval = other.getEuval(); - kEdval = other.getEdval(); - kHtgluon = other.getHtgluon(); - kHtsea = other.getHtsea(); - kHtuval = other.getHtuval(); - kHtdval = other.getHtdval(); - kEtgluon = other.getEtgluon(); - kEtsea = other.getEtsea(); - kEtuval = other.getEtuval(); - kEtdval = other.getEtdval(); - Huval1tab = other.getHuval1tab(); - Hdval1tab = other.getHdval1tab(); - Huval1mtab = other.getHuval1mtab(); - Hdval1mtab = other.getHdval1mtab(); - Hs1tab = other.getHs1tab(); - Hi1tab = other.getHi1tab(); - Euval1tab = other.getEuval1tab(); - Edval1tab = other.getEdval1tab(); - Euval1mtab = other.getEuval1mtab(); - Edval1mtab = other.getEdval1mtab(); - Es1tab = other.getEs1tab(); - Ei1tab = other.getEi1tab(); - Htuval1tab = other.getHtuval1tab(); - Htdval1tab = other.getHtdval1tab(); - Htuval1mtab = other.getHtuval1mtab(); - Htdval1mtab = other.getHtdval1mtab(); - Hti1tab = other.getHti1tab(); - Etuval1tab = other.getEtuval1tab(); - Etdval1tab = other.getEtdval1tab(); - Etuval1mtab = other.getEtuval1mtab(); - Etdval1mtab = other.getEtdval1mtab(); -} - -GK11ModelOnlyGluons* GK11ModelOnlyGluons::clone() const { - return new GK11ModelOnlyGluons(*this); -} - -GK11ModelOnlyGluons::~GK11ModelOnlyGluons() { -} - -void GK11ModelOnlyGluons::configure(const ElemUtils::Parameters ¶meters) { - GPDModule::configure(parameters); -} - -//TODO implement -void GK11ModelOnlyGluons::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); - -} - -void GK11ModelOnlyGluons::initModule() { - GPDModule::initModule(); - - fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale - - /* debug(__func__, - ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ -} - -PartonDistribution GK11ModelOnlyGluons::computeH() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - -// Scales - - calculateHCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 2.23 + 0.362 * fL; // See table 1 p. 12 - c2 = 5.43 - 7.0 * fL; // See table 1 p. 12 - c3 = -34.0 + 22.5 * fL; // See table 1 p. 12 - c4 = 40.6 - 21.6 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - GluonDistribution gluonDistribution( - exp(b0 * m_t) - * (c1 * Hi1tab.at(0) + c2 * Hi1tab.at(1) + c3 * Hi1tab.at(2) - + c4 * Hi1tab.at(3))); - -// s quark - - c1 = 0.123 + 0.0003 * fL; // See table 1 p. 12 - c2 = -0.327 - 0.004 * fL; // See table 1 p. 12 - c3 = 0.692 - 0.068 * fL; // See table 1 p. 12 - c4 = -0.486 + 0.038 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Hs1tab.at(0) + c2 * Hs1tab.at(1) + c3 * Hs1tab.at(2) - + c4 * Hs1tab.at(3))); // See eq. (27) - -// u quark, valence part - - c1 = 1.52 + 0.248 * fL; // See eq. (27) - c2 = 2.88 - 0.94 * fL; // See eq. (27) - c3 = -0.095 * fL; // See eq. (27) - - b0 = 0; // See p. 15 - - double uVal = exp(b0 * m_t) - * (c1 * Huval1tab.at(0) + c2 * Huval1tab.at(1) - + c3 * Huval1tab.at(2)); // See eq. (27) - - fHuValMx = exp(b0 * m_t) - * (c1 * Huval1mtab.at(0) + c2 * Huval1mtab.at(1) - + c3 * Huval1mtab.at(2)); // See eq. (27); - -// d quark, valence part - - c1 = 0.76 + 0.248 * fL; // See table 1 p. 12 - c2 = 3.11 - 1.36 * fL; // See table 1 p. 12 - c3 = -3.99 + 1.15 * fL; // See table 1 p. 12 - - b0 = 0; // See p. 15 - - double dVal = exp(b0 * m_t) - * (c1 * Hdval1tab.at(0) + c2 * Hdval1tab.at(1) - + c3 * Hdval1tab.at(2)); // See eq. (27) - - // C'est HqVal (-x) - fHdValMx = exp(b0 * m_t) - * (c1 * Hdval1mtab.at(0) + c2 * Hdval1mtab.at(1) - + c3 * Hdval1mtab.at(2)); // See eq. (27) - -// u and d quarks, sea part - - kappa_s = 1. + 0.68 / (1. + 0.52 * log(m_MuF2 / m_MuF2_ref)); // See eq. (36) - - double uSea = kappa_s * quarkDistribution_s.getQuarkDistribution(); // See eq. (35) - double dSea = uSea; - -// u and d quarks, valence + sea parts - -/* quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea);*/ - - quarkDistribution_u.setQuarkDistribution(0); - quarkDistribution_d.setQuarkDistribution(0); - -// H, charge singlet - -// pGPD_H->setSquareChargeAveraged( -// Constant::U2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_u->getSea() -// + pGPDQuarkFlavorData_u->getValence()) -// + Constant::D2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_d->getSea() -// + pGPDQuarkFlavorData_d->getValence()) -// + Constant::S2_ELEC_CHARGE * pGPDQuarkFlavorData_s->getHq()); - - // Set Hq(+) -/* quarkDistribution_u.setQuarkDistributionPlus(uVal - fHuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fHdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution());*/ - - quarkDistribution_u.setQuarkDistributionPlus(0); - quarkDistribution_d.setQuarkDistributionPlus(0); - quarkDistribution_s.setQuarkDistributionPlus(0); - - // Set Hq(-) -/* quarkDistribution_u.setQuarkDistributionMinus(uVal + fHuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fHdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.);*/ - - quarkDistribution_u.setQuarkDistributionMinus(0); - quarkDistribution_d.setQuarkDistributionMinus(0); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - - return partonDistribution; -} - -PartonDistribution GK11ModelOnlyGluons::computeHt() { - - debug(__func__, "Entered function ..."); - - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double delta, etau, etad, Nu, Nd; - - calculateHtCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 3.39 - 0.864 * fL; - c2 = 1.73 + 0.24 * fL - 0.17 * fL * fL; - c3 = 0.42 - 0.115 * fL - 0.069 * fL * fL; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution( - exp(b0 * m_t) - * (c1 * Hti1tab.at(0) + c2 * Hti1tab.at(1) - + c3 * Hti1tab.at(2))); - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0); - -// s quark, Ht_sea = 0 for GK - quarkDistribution_s.setQuarkDistribution(0.); - -// u quark, valence part - - c1 = 0.170 + 0.03 * fL; //parameters from GK3 table 4 and note 11 december 2008 - c2 = 1.340 - 0.02 * fL; - c3 = 0.120 - 0.40 * fL; - - etau = 0.926; - delta = 0.48; - b0 = 0.; - - Nu = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6 - delta) - / (5. - delta)); -// + c4 * (3.-delta) * (2.-delta) * (1-delta)/(7.-delta)/(6.-delta)/(5.-delta) ) ; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etau = " << etau - << ", delta = " << delta << ", Nu = " << Nu); - - double uVal = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1tab.at(0) + c2 * Htuval1tab.at(1) - + c3 * Htuval1tab.at(2)); - fHtuValMx = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1mtab.at(0) + c2 * Htuval1mtab.at(1) - + c3 * Htuval1mtab.at(2)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -0.320 - 0.040 * fL; // parameters from GK3 table 4 - c2 = -1.427 - 0.176 * fL; - c3 = 0.692 - 0.068 * fL; - - etad = -0.341; - - Nd = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6. - delta) - / (5. - delta)); - - b0 = 0; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etad = " << etad - << ", Nd = " << Nd); - - double dVal = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1tab.at(0) + c2 * Htdval1tab.at(1) - + c3 * Htdval1tab.at(2)); - fHtdValMx = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1mtab.at(0) + c2 * Htdval1mtab.at(1) - + c3 * Htdval1mtab.at(2)); // -pGPDData->getX() - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(0); - quarkDistribution_d.setQuarkDistribution(0); - - // Set Htq(+) - quarkDistribution_u.setQuarkDistributionPlus(0); - quarkDistribution_d.setQuarkDistributionPlus(0); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Htq(-) - quarkDistribution_u.setQuarkDistributionMinus(0); - quarkDistribution_d.setQuarkDistributionMinus(0); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK11ModelOnlyGluons::computeE() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - calculateECoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 0.779; - c2 = -c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution( - exp(b0 * m_t) * (c1 * Ei1tab.at(0) + c2 * Ei1tab.at(1))); - -// s quark (sea) - - c1 = -0.155; - c2 = -2 * c1; - c3 = c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Es1tab.at(0) + c2 * Es1tab.at(1) + c3 * Es1tab.at(2))); - -// u quark, valence part - - c1 = 2.2053; - c2 = -c1; - - b0 = 0; - - double uVal = exp(b0 * m_t) * (c1 * Euval1tab.at(0) + c2 * Euval1tab.at(1)); - fEuValMx = exp(b0 * m_t) * (c1 * Euval1mtab.at(0) + c2 * Euval1mtab.at(1)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -3.114; // DFJK4 version betad = 5.6 - c2 = 8.096; - c3 = -6.477; - c4 = 1.295; - c5 = 0.1296; - c6 = 0.0362; - c7 = 0.014516; - c8 = 0.0070504; - - b0 = 0; - - double dVal = exp(b0 * m_t) - * (c1 * Edval1tab.at(0) + c2 * Edval1tab.at(1) - + c3 * Edval1tab.at(2) + c4 * Edval1tab.at(3) - + c5 * Edval1tab.at(4) + c6 * Edval1tab.at(5) - + c7 * Edval1tab.at(6) + c8 * Edval1tab.at(7)); - fEdValMx = exp(b0 * m_t) - * (c1 * Edval1mtab.at(0) + c2 * Edval1mtab.at(1) - + c3 * Edval1mtab.at(2) + c4 * Edval1mtab.at(3) - + c5 * Edval1mtab.at(4) + c6 * Edval1mtab.at(5) - + c7 * Edval1mtab.at(6) + c8 * Edval1mtab.at(7)); // -pGPDData->getX() - -// u and d quarks, sea part - -//EuSea = Es - double uSea = quarkDistribution_s.getQuarkDistribution(); -//EdSea = Es - double dSea = quarkDistribution_s.getQuarkDistribution(); - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - - // Set Eq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal - fEuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fEdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution()); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal + fEuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fEdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK11ModelOnlyGluons::computeEt() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double Nu, Nd; - double PionPolePx, PionPoleMx; - - calculateEtCoefs(); // Calculate the K's and the coefficients - - PionPolePx = Et_pole(m_x); - PionPoleMx = Et_pole(-m_x); - -// Gluons, Et_gluons = 0 for GK - GluonDistribution gluonDistribution(0.); - -// s quark, Et_sea = 0 for GK - quarkDistribution_s.setQuarkDistributionPlus(0.); - -// u quark, valence part - - Nu = 14.0; - c1 = Nu; // parameters P.Kroll Maple file - c2 = -2. * Nu; - c3 = Nu; - c4 = 0.0; - b0 = 0.9; // from P.Kroll's email, 14/3/2011 - - double fEtuVal = exp(b0 * m_t) - * (c1 * Etuval1tab.at(0) + c2 * Etuval1tab.at(1) - + c3 * Etuval1tab.at(2) + c4 * Etuval1tab.at(3)); - fEtuVal += PionPolePx; - double uVal = fEtuVal; - fEtuValMx = exp(b0 * m_t) - * (c1 * Etuval1mtab.at(0) + c2 * Etuval1mtab.at(1) - + c3 * Etuval1mtab.at(2) + c4 * Etuval1mtab.at(3)); // -pGPDData->getX() - fEtuValMx += PionPoleMx; - -// d quark, valence part - - Nd = 4.0; - c1 = Nd; // parameters P.Kroll Maple file - c2 = -2. * Nd; - c3 = Nd; - c4 = 0.0; - b0 = 0.9; - - double fEtdVal = exp(b0 * m_t) - * (c1 * Etdval1tab.at(0) + c2 * Etdval1tab.at(1) - + c3 * Etdval1tab.at(2) + c4 * Etdval1tab.at(3)); - fEtdVal -= PionPolePx; - double dVal = fEtdVal; - fEtdValMx = exp(b0 * m_t) - * (c1 * Etdval1mtab.at(0) + c2 * Etdval1mtab.at(1) - + c3 * Etdval1mtab.at(2) + c4 * Etdval1mtab.at(3)); // -pGPDData->getX() - fEtdValMx -= PionPoleMx; - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - - // Set Etq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal + fEtuValMx); - quarkDistribution_d.setQuarkDistributionPlus(dVal + fEtdValMx); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal - fEtuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal - fEtdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -//double GK11ModelOnlyGluons::computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s) { -// -// if (m_nbOfQuarkFlavor == 0) { -// throwException(__func__, "divided by ZERO !"); -// } -// -// double result = quarkDistribution_u.getQuarkDistributionPlus() -// + quarkDistribution_d.getQuarkDistributionPlus() -// + quarkDistribution_s.getQuarkDistributionPlus(); -// result *= (1 / (2 * m_nbOfQuarkFlavor)); -// -// return result; -//} - -void GK11ModelOnlyGluons::calculateHCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow (full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - - if (!slow_sea) { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(m_x, 1.5, kHgluon); ///< TODO: CHECK IT - ADDED BY JAKUB - } else { - Hs1tab.at(0) = -Hs1(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(-m_x, 1.5, kHgluon); - } - } else { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1_alt(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1_alt(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1_alt(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1_alt(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(m_x, 1.5, kHgluon); - } else { - Hs1tab.at(0) = -Hs1_alt(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1_alt(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1_alt(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1_alt(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(-m_x, 1.5, kHgluon); - } - } - - if (!slow_val) { - Huval1tab.at(0) = Hval1(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1(-m_x, 1., kHdval); - - } else { - Huval1tab.at(0) = Hval1_alt(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1_alt(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1_alt(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1_alt(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1_alt(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1_alt(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1_alt(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1_alt(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1_alt(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1_alt(-m_x, 1., kHdval); - } -} - -void GK11ModelOnlyGluons::calculateHKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL; - kHgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kHsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kHuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9 - 0.05 * fL; - delta = 0.48 + 0.006 * fL; - kHdval = delta + alpha * m_t; -} - -double GK11ModelOnlyGluons::Hs1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - - 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK11ModelOnlyGluons::Hi1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - + 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - return dummy; -} - -double GK11ModelOnlyGluons::Hs1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - return dummy; -} - -double GK11ModelOnlyGluons::Hi1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - - dummy = double_approx(dummya); - - return dummy; -} - -double GK11ModelOnlyGluons::Hval1(double x, double i, double k) { - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummy = 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dummy = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK11ModelOnlyGluons::Hval1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi3 = expt(xia, 3); - - if (fabs(x + m_xi) > 1e-6) { - dummy2 = exp((2 + ia - ka) * ln((xba + xia) / (1 + xia))); - } else { - dummy2 = 0; - } - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((2 + ia - ka) * ln((xba - xia) / (1 - xia))); - } else { - dummy1 = 0; - } - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummya = dummy2 * (xia * xia - xba + (2 + ia - ka) * xia * (1 - xba)); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - - } else { - dummya = (xia * xia - xba) * (dummy2 - dummy1); - - dummya += (2 + ia - ka) * xia * (1 - xba) * (dummy2 + dummy1); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - } - - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/** ! - * \fn void STGK11ModelOnlyGluons::calculateHtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Hti1 ( i = 0, 0.5, 1 ) - * - Htval1( i = 0, 1, 2 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * ( gluons only for now, Htilde_sea = 0 for Kroll ) - * - */ -void GK11ModelOnlyGluons::calculateHtCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHtKas(); // comes up with kHtgluon, kHstea, kHtuval, kHtdval - -// No sea Ht for GK. - - debug(__func__, - ElemUtils::Formatter() << "slow_sea = " << slow_sea - << " slow_val = " << slow_val); - -//TODO permuter les conditions - - if (!slow_sea) { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(-m_x, 1.0, kHtgluon); - } - } else { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1_alt(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1_alt(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(-m_x, 1.0, kHtgluon); - } - } - - if (!slow_val) { - Htuval1tab.at(0) = Htval1(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); // kHtdval & kHtuval are equal - Htdval1tab.at(1) = Htuval1tab.at(1); // for u and d for Ht - Htdval1tab.at(2) = Htuval1tab.at(2); // don't need to recalculate - - Htuval1mtab.at(0) = Htval1(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - - } else { - Htuval1tab.at(0) = Htval1_alt(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1_alt(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1_alt(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); - Htdval1tab.at(1) = Htuval1tab.at(1); - Htdval1tab.at(2) = Htuval1tab.at(2); - - Htuval1mtab.at(0) = Htval1_alt(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1_alt(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1_alt(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - } -} - -/*! - * \fn void STGK11ModelOnlyGluons::calculateHtKas() - * - * Compute t-dependence of GPD Ht correlated to x. - * - */ -void GK11ModelOnlyGluons::calculateHtKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = -0.78 + 0.17 * fL; - kHtgluon = delta + alpha * m_t; - -// sea, not modelled by GK. - - kHtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kHtuval = delta + alpha * m_t; - -// d valence - - kHtdval = kHtuval; - - debug(__func__, - ElemUtils::Formatter() << "(t=" << m_t << ") kHtgluon=" << kHtgluon - << " kHtsea=" << kHtsea << " kHtuval=" << kHtuval - << " kHtdval=" << kHtdval); -} - -/*! - * \fn void STGK11ModelOnlyGluons::CalculateEtKas() - * - * Exactly the same as Hval1_alt and Eval1_alt. - * - */ -double GK11ModelOnlyGluons::Htval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/*! - * \fn double STGK11ModelOnlyGluons::Hti1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK11ModelOnlyGluons::Hti1(double x, double i, double k) { - - return Hs1(x, i, k); -} - -/*! - * \fn void STGK11ModelOnlyGluons::CalculateEtKas() - * - * Exactly the same as Hs1_alt. - * - */ -double GK11ModelOnlyGluons::Hti1_alt(double x, double i, double k) { - -//return Hs1_alt(_xi, x, i, k); - - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/*! - * \fn void STGK11ModelOnlyGluons::CalculateEtKas() - * - * Exactly the same as Hval1 and Eval1. - * - */ -double GK11ModelOnlyGluons::Htval1(double x, double i, double k) { - - return Hval1(x, i, k); -} - -/** ! - * \fn void STGK11ModelOnlyGluons::calculateECoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Es1 (i=0, 1, 2) - * - Ei1 (i=0, 1) - * - Eval1(i=0, 1, 2) (u) - * - Eval1(i=0, .. ,7) (d) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share th(ame limits as strange/sea as far as slow/fast goes. - * - */ -void GK11ModelOnlyGluons::calculateECoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEKas(); // comes up with kEgluon, kEsea, kEuval, kEdval - - if (!slow_sea) { - if (m_x >= 0) { - Es1tab.at(0) = Es1(m_x, 0., kEsea); - Es1tab.at(1) = Es1(m_x, 1., kEsea); - Es1tab.at(2) = Es1(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(-m_x, 1., kEgluon); - } - } else { - if (m_x >= 0) { - Es1tab.at(0) = Es1_alt(m_x, 0., kEsea); - Es1tab.at(1) = Es1_alt(m_x, 1., kEsea); - Es1tab.at(2) = Es1_alt(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1_alt(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1_alt(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1_alt(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(-m_x, 1., kEgluon); - } - } - - if (!slow_val) { - Euval1tab.at(0) = Eval1(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1(-m_x, 7., kEdval); - - } else { - Euval1tab.at(0) = Eval1_alt(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1_alt(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1_alt(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1_alt(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1_alt(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1_alt(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1_alt(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1_alt(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1_alt(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1_alt(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1_alt(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1_alt(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1_alt(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1_alt(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1_alt(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1_alt(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1_alt(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1_alt(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1_alt(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1_alt(-m_x, 7., kEdval); - } - -} - -/*! - * \fn void STGK11ModelOnlyGluons::calculateEKas() - * - * Compute t-dependence of GPD H correlated to x. - * - */ -void GK11ModelOnlyGluons::calculateEKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL - 0.0027 * fL * fL; - kEgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kEsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kEuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9; - delta = 0.48; - kEdval = delta + alpha * m_t; - -} - -/*! - * \fn double STGK11ModelOnlyGluons::Es1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK11ModelOnlyGluons::Es1(double x, double i, double k) { - return Hs1(x, i, k); -} - -/*! - * \fn double STGK11ModelOnlyGluons::Ei1( double x, double i, double k ) - * - * Exactly the same as Hi1. - * - */ -double GK11ModelOnlyGluons::Ei1(double x, double i, double k) { - return Hi1(x, i, k); -} - -/*! - * \fn double STGK11ModelOnlyGluons::Es1_alt( double x, double i, double k ) - * - * Exactly the same as Hs1_alt. - * - */ -double GK11ModelOnlyGluons::Es1_alt(double x, double i, double k) { - return Hs1_alt(x, i, k); -} - -/*! - * \fn double STGK11ModelOnlyGluons::Ei1_alt( double x, double i, double k ) - * - * Exactly the same as Hi1_alt. - * - */ -double GK11ModelOnlyGluons::Ei1_alt(double x, double i, double k) { - return Hi1_alt(x, i, k); -} - -/*! - * \fn double STGK11ModelOnlyGluons::Eval1( double x, double i, double k ) - * - * Exactly the same as Hval1. - * - */ -double GK11ModelOnlyGluons::Eval1(double x, double i, double k) { - return Hval1(x, i, k); -} - -/*! - * \fn void STGK11ModelOnlyGluons::CalculateEtKas() - * - * Exactly the same as Hval1_alt. - * - */ -double GK11ModelOnlyGluons::Eval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/** ! - * \fn void STGK11ModelOnlyGluons::calculateEtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Etval1 ( i = 0, 1, 2, 3 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * For the sea ( and gluons later ) - * - */ -void GK11ModelOnlyGluons::calculateEtCoefs() { - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - -// For valence - - if ((m_xi < 0.04) - && (log10(m_xi) < ((-4. / log10(0.55)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEtKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - -// WARNING : No sea or gluon Et for GK. - - if (!slow_val) { - Etuval1tab.at(0) = Etval1(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); // kEtdval & kEtuval are equal - Etdval1tab.at(1) = Etuval1tab.at(1); // for u and d for Et, - Etdval1tab.at(2) = Etuval1tab.at(2); // don't need to recalculate - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - - } else { - Etuval1tab.at(0) = Etval1_alt(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1_alt(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1_alt(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1_alt(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); - Etdval1tab.at(1) = Etuval1tab.at(1); - Etdval1tab.at(2) = Etuval1tab.at(2); - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1_alt(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1_alt(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1_alt(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1_alt(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - } -} - -/*! - * \fn void STGK11ModelOnlyGluons::calculateEtKas() - * - * Compute t-dependence of GPD Et correlated to x. - * - */ -void GK11ModelOnlyGluons::calculateEtKas() { - double alpha, delta; - -// gluons, not modelled by GK. - - kEtgluon = 0.; - -// sea, not modelled by GK. - - kEtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kEtuval = delta + alpha * m_t; - -// d valence - - kEtdval = kEtuval; -} - -/* ! - * \fn double STGK11ModelOnlyGluons::Et_pole( double x ) - * - * Pion pole contribution to Et. - * - */ -double GK11ModelOnlyGluons::Et_pole(double x) { - -//TODO extraire les constantes si existantes - - double dum = 0.; // Initialize to 0 - double eps; - double eps2; - double tmin; - double xbj; - double Q2 = m_MuF2; - double tOverQ2 = m_t / Q2; - double y = (x + m_xi) / 2. / m_xi; - double MPi2 = Constant::PI_ZERO_MASS * Constant::PI_ZERO_MASS; - double gpiNN = 13.4; - double f_pi = 0.131; // f_pi=0.131 GeV from paper. Actually 130.4 from PDG (Jul2010) - double Lambda_N2 = 0.51 * 0.51; - double Fp; - double FpiNN; - - xbj = 2. * m_xi / (m_xi - tOverQ2 * m_xi + 1. + tOverQ2 * 0.5); - eps = 2. * xbj * Constant::PROTON_MASS / sqrt(Q2); - eps2 = eps * eps; - - if (eps < 1 && (4. * xbj * (1. - xbj) + eps2) != 0) { - - tmin = -Q2 * (2. * (1. - xbj) * (1 - sqrt(1. - eps2)) + eps2) - / (4. * xbj * (1. - xbj) + eps2); - FpiNN = (Lambda_N2 - MPi2) / (Lambda_N2 - (m_t - tmin)); - Fp = -Constant::PROTON_MASS * f_pi * (2. * sqrt(2.) * gpiNN * FpiNN) - / (m_t - MPi2); - - if (x < m_xi && x > -m_xi && m_t < tmin) { -// dum = ( Fp( pKinematicVariables->getT(), Q2, tmin ) / 4. / pGPDData->getXi() ) * Phi_pi( ( x + pGPDData->getXi() ) / 2. / pGPDData->getXi() ) ; - dum = (Fp / 4. / m_xi) * 6. * y * (1. - y); - } - - } - - return dum; -} - -/*! - * \fn double STGK11ModelOnlyGluons::Etval1( double x, double i, double k ) - * - * xdiff:=evalf(xb-xi); xsum:=evalf(xb+xi); - * if xsum<0 then # xb<-xi - * Hi:=0 else - * if xdiff <0 then # xb 3/2/xi^3*(((xb+xi)/(1+xi))^(2+i-k)*(xi^2-xb+(2+i-k)*xi*(1-xb))) - * /(1+i-k)/(2+i-k)/(3+i-k) - * else - * Hi:= i -> 3/2/xi^3/(1+i-k)/(2+i-k)/(3+i-k)*((xi^2-xb)*( ((xb+xi)/(1+xi))^(2+i-k) - * -((xb-xi)/(1-xi))^(2+i-k)) - * + xi*(1-xb)*(2+i-k)*(((xb+xi)/(1+xi))^(2+i-k)+ ((xb-xi)/(1-xi))^(2+i-k) ) ) - * end if: end if: - * - */ -double GK11ModelOnlyGluons::Etval1(double x, double i, double k) { - double dum; - - if ((x + m_xi) < 0) { // 0 for x < -pGPDData->getXi() - dum = 0.0; - } else { // Two cases for x >= -pGPDData->getXi() - if ((x - m_xi) < 0) { - dum = - 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x - + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dum = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), - (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), - (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - } - return dum; -} - -/*! - * \fn double STGK11ModelOnlyGluons::Etval1_alt( double x, double i, double k ) - * - * Exactly the same as Hval1_alt and Eval1_alt, Htval1_alt. - * - */ -double GK11ModelOnlyGluons::Etval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -double GK11ModelOnlyGluons::getB0() const { - return b0; -} - -double GK11ModelOnlyGluons::getC1() const { - return c1; -} - -double GK11ModelOnlyGluons::getC2() const { - return c2; -} - -double GK11ModelOnlyGluons::getC3() const { - return c3; -} - -double GK11ModelOnlyGluons::getC4() const { - return c4; -} - -double GK11ModelOnlyGluons::getC5() const { - return c5; -} - -double GK11ModelOnlyGluons::getC6() const { - return c6; -} - -double GK11ModelOnlyGluons::getC7() const { - return c7; -} - -double GK11ModelOnlyGluons::getC8() const { - return c8; -} - -const std::vector& GK11ModelOnlyGluons::getEdval1mtab() const { - return Edval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getEdval1tab() const { - return Edval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getEi1tab() const { - return Ei1tab; -} - -const std::vector& GK11ModelOnlyGluons::getEs1tab() const { - return Es1tab; -} - -const std::vector& GK11ModelOnlyGluons::getEtdval1mtab() const { - return Etdval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getEtdval1tab() const { - return Etdval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getEtuval1mtab() const { - return Etuval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getEtuval1tab() const { - return Etuval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getEuval1mtab() const { - return Euval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getEuval1tab() const { - return Euval1tab; -} - -double GK11ModelOnlyGluons::getEdValMx() const { - return fEdValMx; -} - -double GK11ModelOnlyGluons::getEtdValMx() const { - return fEtdValMx; -} - -double GK11ModelOnlyGluons::getEtuValMx() const { - return fEtuValMx; -} - -double GK11ModelOnlyGluons::getEuValMx() const { - return fEuValMx; -} - -double GK11ModelOnlyGluons::getHdValMx() const { - return fHdValMx; -} - -double GK11ModelOnlyGluons::getHtdValMx() const { - return fHtdValMx; -} - -double GK11ModelOnlyGluons::getHtuValMx() const { - return fHtuValMx; -} - -double GK11ModelOnlyGluons::getHuValMx() const { - return fHuValMx; -} - -double GK11ModelOnlyGluons::getL() const { - return fL; -} - -const std::vector& GK11ModelOnlyGluons::getHdval1mtab() const { - return Hdval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getHdval1tab() const { - return Hdval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHi1tab() const { - return Hi1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHs1tab() const { - return Hs1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHtdval1mtab() const { - return Htdval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getHtdval1tab() const { - return Htdval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHti1tab() const { - return Hti1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHtuval1mtab() const { - return Htuval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getHtuval1tab() const { - return Htuval1tab; -} - -const std::vector& GK11ModelOnlyGluons::getHuval1mtab() const { - return Huval1mtab; -} - -const std::vector& GK11ModelOnlyGluons::getHuval1tab() const { - return Huval1tab; -} - -double GK11ModelOnlyGluons::getKappaS() const { - return kappa_s; -} - -double GK11ModelOnlyGluons::getEdval() const { - return kEdval; -} - -double GK11ModelOnlyGluons::getEgluon() const { - return kEgluon; -} - -double GK11ModelOnlyGluons::getEsea() const { - return kEsea; -} - -double GK11ModelOnlyGluons::getEtdval() const { - return kEtdval; -} - -double GK11ModelOnlyGluons::getEtgluon() const { - return kEtgluon; -} - -double GK11ModelOnlyGluons::getEtsea() const { - return kEtsea; -} - -double GK11ModelOnlyGluons::getEtuval() const { - return kEtuval; -} - -double GK11ModelOnlyGluons::getEuval() const { - return kEuval; -} - -double GK11ModelOnlyGluons::getHdval() const { - return kHdval; -} - -double GK11ModelOnlyGluons::getHgluon() const { - return kHgluon; -} - -double GK11ModelOnlyGluons::getHsea() const { - return kHsea; -} - -double GK11ModelOnlyGluons::getHtdval() const { - return kHtdval; -} - -double GK11ModelOnlyGluons::getHtgluon() const { - return kHtgluon; -} - -double GK11ModelOnlyGluons::getHtsea() const { - return kHtsea; -} - -double GK11ModelOnlyGluons::getHtuval() const { - return kHtuval; -} - -double GK11ModelOnlyGluons::getHuval() const { - return kHuval; -} - -std::string GK11ModelOnlyGluons::toString() const { - return GPDModule::toString(); -} diff --git a/src/partons/modules/gpd/GK11NoQuarksModel.cpp b/src/partons/modules/gpd/GK11NoQuarksModel.cpp deleted file mode 100644 index bbdc99b6684840d22f6e9961f311ea739aa1f493..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/GK11NoQuarksModel.cpp +++ /dev/null @@ -1,96 +0,0 @@ -#include "../../../../include/partons/modules/gpd/GK11NoQuarksModel.h" - -#include -#include - -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" - -// Initialise [class]::classId with a unique name. -const unsigned int GK11NoQuarksModel::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new GK11NoQuarksModel("GK11NoQuarksModel")); - -GK11NoQuarksModel::GK11NoQuarksModel(const std::string& className) : - GK11Model(className) { -} - -GK11NoQuarksModel::~GK11NoQuarksModel() { -} - -GK11NoQuarksModel* GK11NoQuarksModel::clone() const { - return new GK11NoQuarksModel(*this); -} - -GK11NoQuarksModel::GK11NoQuarksModel(const GK11NoQuarksModel& other) : - GK11Model(other) { -} - -PartonDistribution GK11NoQuarksModel::computeH() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - calculateHCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 2.23 + 0.362 * fL; // See table 1 p. 12 - c2 = 5.43 - 7.0 * fL; // See table 1 p. 12 - c3 = -34.0 + 22.5 * fL; // See table 1 p. 12 - c4 = 40.6 - 21.6 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - GluonDistribution gluonDistribution( - exp(b0 * m_t) - * (c1 * Hi1tab.at(0) + c2 * Hi1tab.at(1) + c3 * Hi1tab.at(2) - + c4 * Hi1tab.at(3))); // See eq. (27) - - /* debug(__func__, - Formatter() << "1st coef " << Hi1tab.at(0) - << "2nd coef " << Hi1tab.at(1) - << "3rd coef " << Hi1tab.at(2) - << "4rdt coef " << Hi1tab.at(3)) ;*/ - -// quarks set to zero - quarkDistribution_u.setQuarkDistribution(0.); - quarkDistribution_d.setQuarkDistribution(0.); - quarkDistribution_s.setQuarkDistribution(0.); - - // Set Hq(+) - quarkDistribution_u.setQuarkDistributionPlus(0.); - quarkDistribution_d.setQuarkDistributionPlus(0.); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Hq(-) - quarkDistribution_u.setQuarkDistributionMinus(0.); - quarkDistribution_d.setQuarkDistributionMinus(0.); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -//TODO implement -PartonDistribution GK11NoQuarksModel::computeE() { - return PartonDistribution(); -} - -//TODO implement -PartonDistribution GK11NoQuarksModel::computeHt() { - return PartonDistribution(); -} - -//TODO implement -PartonDistribution GK11NoQuarksModel::computeEt() { - return PartonDistribution(); -} diff --git a/src/partons/modules/gpd/GK16ModelTest.cpp b/src/partons/modules/gpd/GK16ModelTest.cpp deleted file mode 100644 index 65115edc5965aac25d1c6afbfce8ba8c3f0efce8..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/GK16ModelTest.cpp +++ /dev/null @@ -1,1926 +0,0 @@ -#include "../../../../include/partons/modules/gpd/GK16ModelTest.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int GK16ModelTest::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new GK16ModelTest("GK16ModelTest")); - -//TODO initialise missing members -GK16ModelTest::GK16ModelTest(const std::string &className) : - GPDModule(className) { - fL = 0.; - m_MuF2_ref = 4.; - Huval1tab = std::vector(3, 0.); - Hdval1tab = std::vector(3, 0.); - Huval1mtab = std::vector(3, 0.); - Hdval1mtab = std::vector(3, 0.); - Hs1tab = std::vector(4, 0.); - Hi1tab = std::vector(4, 0.); - Euval1tab = std::vector(2, 0.); - Edval1tab = std::vector(8, 0.); - Euval1mtab = std::vector(2, 0.); - Edval1mtab = std::vector(8, 0.); - Es1tab = std::vector(3, 0.); - Ei1tab = std::vector(2, 0.); - Htuval1tab = std::vector(3, 0.); - Htdval1tab = std::vector(3, 0.); - Htuval1mtab = std::vector(3, 0.); - Htdval1mtab = std::vector(3, 0.); - Hti1tab = std::vector(3, 0.); - Etuval1tab = std::vector(4, 0.); - Etdval1tab = std::vector(4, 0.); - Etuval1mtab = std::vector(4, 0.); - Etdval1mtab = std::vector(4, 0.); - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::E, &GPDModule::computeE)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Ht, &GPDModule::computeHt)); - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::Et, &GPDModule::computeEt)); -} - -GK16ModelTest::GK16ModelTest(const GK16ModelTest& other) : - GPDModule(other) { - c1 = other.getC1(); - c2 = other.getC2(); - c3 = other.getC3(); - c4 = other.getC4(); - c5 = other.getC5(); - c6 = other.getC6(); - c7 = other.getC7(); - c8 = other.getC8(); - b0 = other.getB0(); - kappa_s = other.getKappaS(); - fL = other.getL(); - fHuValMx = other.getHuValMx(); - fHdValMx = other.getHdValMx(); - fEuValMx = other.getEuValMx(); - fEdValMx = other.getEdValMx(); - fHtuValMx = other.getHtuValMx(); - fHtdValMx = other.getHtdValMx(); - fEtuValMx = other.getEtuValMx(); - fEtdValMx = other.getEtdValMx(); - kHgluon = other.getHgluon(); - kHsea = other.getHsea(); - kHuval = other.getHuval(); - kHdval = other.getHdval(); - kEgluon = other.getEgluon(); - kEsea = other.getEsea(); - kEuval = other.getEuval(); - kEdval = other.getEdval(); - kHtgluon = other.getHtgluon(); - kHtsea = other.getHtsea(); - kHtuval = other.getHtuval(); - kHtdval = other.getHtdval(); - kEtgluon = other.getEtgluon(); - kEtsea = other.getEtsea(); - kEtuval = other.getEtuval(); - kEtdval = other.getEtdval(); - Huval1tab = other.getHuval1tab(); - Hdval1tab = other.getHdval1tab(); - Huval1mtab = other.getHuval1mtab(); - Hdval1mtab = other.getHdval1mtab(); - Hs1tab = other.getHs1tab(); - Hi1tab = other.getHi1tab(); - Euval1tab = other.getEuval1tab(); - Edval1tab = other.getEdval1tab(); - Euval1mtab = other.getEuval1mtab(); - Edval1mtab = other.getEdval1mtab(); - Es1tab = other.getEs1tab(); - Ei1tab = other.getEi1tab(); - Htuval1tab = other.getHtuval1tab(); - Htdval1tab = other.getHtdval1tab(); - Htuval1mtab = other.getHtuval1mtab(); - Htdval1mtab = other.getHtdval1mtab(); - Hti1tab = other.getHti1tab(); - Etuval1tab = other.getEtuval1tab(); - Etdval1tab = other.getEtdval1tab(); - Etuval1mtab = other.getEtuval1mtab(); - Etdval1mtab = other.getEtdval1mtab(); -} - -GK16ModelTest* GK16ModelTest::clone() const { - return new GK16ModelTest(*this); -} - -GK16ModelTest::~GK16ModelTest() { -} - -void GK16ModelTest::configure(const ElemUtils::Parameters ¶meters) { - GPDModule::configure(parameters); -} - -//TODO implement -void GK16ModelTest::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); - -} - -void GK16ModelTest::initModule() { - GPDModule::initModule(); - - fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale - - /* debug(__func__, - ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ -} - -PartonDistribution GK16ModelTest::computeH() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - -// Scales - - calculateHCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 2.23 + 0.362 * fL; // See table 1 p. 12 - c2 = 5.43 - 7.0 * fL; // See table 1 p. 12 - c3 = -34.0 + 22.5 * fL; // See table 1 p. 12 - c4 = 40.6 - 21.6 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - GluonDistribution gluonDistribution( - exp(b0 * m_t) - * (c1 * Hi1tab.at(0) + c2 * Hi1tab.at(1) + c3 * Hi1tab.at(2) - + c4 * Hi1tab.at(3))); - -// s quark - - c1 = 0.123 + 0.0003 * fL; // See table 1 p. 12 - c2 = -0.327 - 0.004 * fL; // See table 1 p. 12 - c3 = 0.692 - 0.068 * fL; // See table 1 p. 12 - c4 = -0.486 + 0.038 * fL; // See table 1 p. 12 - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); // See eq. (39) p. 14 - - if (exp(b0 * m_t) - * (c1 * Hs1tab.at(0) + c2 * Hs1tab.at(1) + c3 * Hs1tab.at(2) - + c4 * Hs1tab.at(3)) > 10e-8) { - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Hs1tab.at(0) + c2 * Hs1tab.at(1) - + c3 * Hs1tab.at(2) + c4 * Hs1tab.at(3))); // See eq. (27) - } - - else { - quarkDistribution_s.setQuarkDistribution(0); - } -// u quark, valence part - - c1 = 1.52 + 0.248 * fL; // See eq. (27) - c2 = 2.88 - 0.94 * fL; // See eq. (27) - c3 = -0.095 * fL; // See eq. (27) - - b0 = 0; // See p. 15 - - double uVal = exp(b0 * m_t) - * (c1 * Huval1tab.at(0) + c2 * Huval1tab.at(1) - + c3 * Huval1tab.at(2)); // See eq. (27) - - fHuValMx = exp(b0 * m_t) - * (c1 * Huval1mtab.at(0) + c2 * Huval1mtab.at(1) - + c3 * Huval1mtab.at(2)); // See eq. (27); - -// d quark, valence part - - c1 = 0.76 + 0.248 * fL; // See table 1 p. 12 - c2 = 3.11 - 1.36 * fL; // See table 1 p. 12 - c3 = -3.99 + 1.15 * fL; // See table 1 p. 12 - - b0 = 0; // See p. 15 - - double dVal = exp(b0 * m_t) - * (c1 * Hdval1tab.at(0) + c2 * Hdval1tab.at(1) - + c3 * Hdval1tab.at(2)); // See eq. (27) - - // C'est HqVal (-x) - fHdValMx = exp(b0 * m_t) - * (c1 * Hdval1mtab.at(0) + c2 * Hdval1mtab.at(1) - + c3 * Hdval1mtab.at(2)); // See eq. (27) - -// u and d quarks, sea part - - kappa_s = 1. + 0.68 / (1. + 0.52 * log(m_MuF2 / m_MuF2_ref)); // See eq. (36) - - double uSea = kappa_s * quarkDistribution_s.getQuarkDistribution(); // See eq. (35) - double dSea = uSea; - -// u and d quarks, valence + sea parts - if (uVal + uSea > 1e-5) { - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - } else - quarkDistribution_u.setQuarkDistribution(0); - if (dVal + dSea > 1e-5) { - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - } else - quarkDistribution_d.setQuarkDistribution(0); - -// H, charge singlet - -// pGPD_H->setSquareChargeAveraged( -// Constant::U2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_u->getSea() -// + pGPDQuarkFlavorData_u->getValence()) -// + Constant::D2_ELEC_CHARGE -// * (pGPDQuarkFlavorData_d->getSea() -// + pGPDQuarkFlavorData_d->getValence()) -// + Constant::S2_ELEC_CHARGE * pGPDQuarkFlavorData_s->getHq()); - - // Set Hq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal - fHuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fHdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution()); - - // Set Hq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal + fHuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fHdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK16ModelTest::computeHt() { - - debug(__func__, "Entered function ..."); - - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double delta, etau, etad, Nu, Nd; - - calculateHtCoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 3.39 - 0.864 * fL; - c2 = 1.73 + 0.24 * fL - 0.17 * fL * fL; - c3 = 0.42 - 0.115 * fL - 0.069 * fL * fL; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution( - exp(b0 * m_t) - * (c1 * Hti1tab.at(0) + c2 * Hti1tab.at(1) - + c3 * Hti1tab.at(2))); - - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0); - -// s quark, Ht_sea = 0 for GK - quarkDistribution_s.setQuarkDistribution(0.); - -// u quark, valence part - - c1 = 0.170 + 0.03 * fL; //parameters from GK3 table 4 and note 11 december 2008 - c2 = 1.340 - 0.02 * fL; - c3 = 0.120 - 0.40 * fL; - - etau = 0.926; - delta = 0.48; - b0 = 0.; - - Nu = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6 - delta) - / (5. - delta)); -// + c4 * (3.-delta) * (2.-delta) * (1-delta)/(7.-delta)/(6.-delta)/(5.-delta) ) ; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etau = " << etau - << ", delta = " << delta << ", Nu = " << Nu); - - double uVal = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1tab.at(0) + c2 * Htuval1tab.at(1) - + c3 * Htuval1tab.at(2)); - fHtuValMx = etau / Nu * exp(b0 * m_t) - * (c1 * Htuval1mtab.at(0) + c2 * Htuval1mtab.at(1) - + c3 * Htuval1mtab.at(2)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -0.320 - 0.040 * fL; // parameters from GK3 table 4 - c2 = -1.427 - 0.176 * fL; - c3 = 0.692 - 0.068 * fL; - - etad = -0.341; - - Nd = tgamma(1. - delta) * tgamma(4.) / tgamma(5. - delta) - * (c1 + c2 * (1. - delta) / (5. - delta) - + c3 * (2. - delta) * (1. - delta) / (6. - delta) - / (5. - delta)); - - b0 = 0; - - debug(__func__, - ElemUtils::Formatter() << "c1 = " << c1 << ", c2 = " << c2 - << ", c3 = " << c3 << ", b0 = " << b0 << ", etad = " << etad - << ", Nd = " << Nd); - - double dVal = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1tab.at(0) + c2 * Htdval1tab.at(1) - + c3 * Htdval1tab.at(2)); - fHtdValMx = etad / Nd * exp(b0 * m_t) - * (c1 * Htdval1mtab.at(0) + c2 * Htdval1mtab.at(1) - + c3 * Htdval1mtab.at(2)); // -pGPDData->getX() - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - if (uVal + uSea < 1e-5) { - quarkDistribution_u.setQuarkDistribution(0); - } - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - if (dVal + dSea < 1e-5) { - quarkDistribution_d.setQuarkDistribution(0); - } - - // Set Htq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal + fHtuValMx); - quarkDistribution_d.setQuarkDistributionPlus(dVal + fHtdValMx); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Htq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal - fHtuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal - fHtdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK16ModelTest::computeE() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - calculateECoefs(); // Calculate the K's and the coefficients - -// Gluons - - c1 = 0.779; - c2 = -c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - GluonDistribution gluonDistribution( - exp(b0 * m_t) * (c1 * Ei1tab.at(0) + c2 * Ei1tab.at(1))); - - -// s quark (sea) - - c1 = -0.155; - c2 = -2 * c1; - c3 = c1; - b0 = 2.58 + 0.25 * log(0.880354 / (0.880354 + m_MuF2)); - - quarkDistribution_s.setQuarkDistribution( - exp(b0 * m_t) - * (c1 * Es1tab.at(0) + c2 * Es1tab.at(1) + c3 * Es1tab.at(2))); - if (exp(b0 * m_t) - * (c1 * Es1tab.at(0) + c2 * Es1tab.at(1) + c3 * Es1tab.at(2)) - < 10e-7) { - quarkDistribution_s.setQuarkDistribution(0); - } - -// u quark, valence part - - c1 = 2.2053; - c2 = -c1; - - b0 = 0; - - double uVal = exp(b0 * m_t) * (c1 * Euval1tab.at(0) + c2 * Euval1tab.at(1)); - fEuValMx = exp(b0 * m_t) * (c1 * Euval1mtab.at(0) + c2 * Euval1mtab.at(1)); // -pGPDData->getX() - -// d quark, valence part - - c1 = -3.114; // DFJK4 version betad = 5.6 - c2 = 8.096; - c3 = -6.477; - c4 = 1.295; - c5 = 0.1296; - c6 = 0.0362; - c7 = 0.014516; - c8 = 0.0070504; - - b0 = 0; - - double dVal = exp(b0 * m_t) - * (c1 * Edval1tab.at(0) + c2 * Edval1tab.at(1) - + c3 * Edval1tab.at(2) + c4 * Edval1tab.at(3) - + c5 * Edval1tab.at(4) + c6 * Edval1tab.at(5) - + c7 * Edval1tab.at(6) + c8 * Edval1tab.at(7)); - fEdValMx = exp(b0 * m_t) - * (c1 * Edval1mtab.at(0) + c2 * Edval1mtab.at(1) - + c3 * Edval1mtab.at(2) + c4 * Edval1mtab.at(3) - + c5 * Edval1mtab.at(4) + c6 * Edval1mtab.at(5) - + c7 * Edval1mtab.at(6) + c8 * Edval1mtab.at(7)); // -pGPDData->getX() - -// u and d quarks, sea part - -//EuSea = Es - double uSea = quarkDistribution_s.getQuarkDistribution(); -//EdSea = Es - double dSea = quarkDistribution_s.getQuarkDistribution(); - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - if (uVal + uSea < 1e-5) { - quarkDistribution_u.setQuarkDistribution(0); - } - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - if (dVal + dSea < 1e-5) { - quarkDistribution_d.setQuarkDistribution(0); - } - - // Set Eq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal - fEuValMx + 2 * uSea); - quarkDistribution_d.setQuarkDistributionPlus(dVal - fEdValMx + 2 * dSea); - quarkDistribution_s.setQuarkDistributionPlus( - 2 * quarkDistribution_s.getQuarkDistribution()); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal + fEuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal + fEdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -PartonDistribution GK16ModelTest::computeEt() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double Nu, Nd; - double PionPolePx, PionPoleMx; - - calculateEtCoefs(); // Calculate the K's and the coefficients - - PionPolePx = Et_pole(m_x); - PionPoleMx = Et_pole(-m_x); - -// Gluons, Et_gluons = 0 for GK - GluonDistribution gluonDistribution(0.); - -// s quark, Et_sea = 0 for GK - quarkDistribution_s.setQuarkDistributionPlus(0.); - -// u quark, valence part - - Nu = 14.0; - c1 = Nu; // parameters P.Kroll Maple file - c2 = -2. * Nu; - c3 = Nu; - c4 = 0.0; - b0 = 0.9; // from P.Kroll's email, 14/3/2011 - - double fEtuVal = exp(b0 * m_t) - * (c1 * Etuval1tab.at(0) + c2 * Etuval1tab.at(1) - + c3 * Etuval1tab.at(2) + c4 * Etuval1tab.at(3)); - fEtuVal += PionPolePx; - double uVal = fEtuVal; - fEtuValMx = exp(b0 * m_t) - * (c1 * Etuval1mtab.at(0) + c2 * Etuval1mtab.at(1) - + c3 * Etuval1mtab.at(2) + c4 * Etuval1mtab.at(3)); // -pGPDData->getX() - fEtuValMx += PionPoleMx; - -// d quark, valence part - - Nd = 4.0; - c1 = Nd; // parameters P.Kroll Maple file - c2 = -2. * Nd; - c3 = Nd; - c4 = 0.0; - b0 = 0.9; - - double fEtdVal = exp(b0 * m_t) - * (c1 * Etdval1tab.at(0) + c2 * Etdval1tab.at(1) - + c3 * Etdval1tab.at(2) + c4 * Etdval1tab.at(3)); - fEtdVal -= PionPolePx; - double dVal = fEtdVal; - fEtdValMx = exp(b0 * m_t) - * (c1 * Etdval1mtab.at(0) + c2 * Etdval1mtab.at(1) - + c3 * Etdval1mtab.at(2) + c4 * Etdval1mtab.at(3)); // -pGPDData->getX() - fEtdValMx -= PionPoleMx; - -// u and d quark, sea part - double uSea = 0.; - double dSea = 0.; - -// u and d quarks, valence + sea parts - - quarkDistribution_u.setQuarkDistribution(uVal + uSea); - if (uVal + uSea < 1e-5) { - quarkDistribution_u.setQuarkDistribution(0); - } - quarkDistribution_d.setQuarkDistribution(dVal + dSea); - if (dVal + dSea < 1e-5) { - quarkDistribution_d.setQuarkDistribution(0); - } - - // Set Etq(+) - quarkDistribution_u.setQuarkDistributionPlus(uVal + fEtuValMx); - quarkDistribution_d.setQuarkDistributionPlus(dVal + fEtdValMx); - quarkDistribution_s.setQuarkDistributionPlus(0.); - - // Set Eq(-) - quarkDistribution_u.setQuarkDistributionMinus(uVal - fEtuValMx); - quarkDistribution_d.setQuarkDistributionMinus(dVal - fEtdValMx); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} - -//double GK16ModelTest::computeSinglet(const QuarkDistribution &quarkDistribution_u, -// const QuarkDistribution &quarkDistribution_d, -// const QuarkDistribution &quarkDistribution_s) { -// -// if (m_nbOfQuarkFlavor == 0) { -// throwException(__func__, "divided by ZERO !"); -// } -// -// double result = quarkDistribution_u.getQuarkDistributionPlus() -// + quarkDistribution_d.getQuarkDistributionPlus() -// + quarkDistribution_s.getQuarkDistributionPlus(); -// result *= (1 / (2 * m_nbOfQuarkFlavor)); -// -// return result; -//} - -void GK16ModelTest::calculateHCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow (full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - - if (!slow_sea) { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(m_x, 1.5, kHgluon); ///< TODO: CHECK IT - ADDED BY JAKUB - } else { - Hs1tab.at(0) = -Hs1(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1(-m_x, 1.5, kHgluon); - } - } else { - if (m_x >= 0) { - Hs1tab.at(0) = Hs1_alt(m_x, 0., kHsea); - Hs1tab.at(1) = Hs1_alt(m_x, 0.5, kHsea); - Hs1tab.at(2) = Hs1_alt(m_x, 1., kHsea); - Hs1tab.at(3) = Hs1_alt(m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(m_x, 1.5, kHgluon); - } else { - Hs1tab.at(0) = -Hs1_alt(-m_x, 0., kHsea); - Hs1tab.at(1) = -Hs1_alt(-m_x, 0.5, kHsea); - Hs1tab.at(2) = -Hs1_alt(-m_x, 1., kHsea); - Hs1tab.at(3) = -Hs1_alt(-m_x, 1.5, kHsea); - - Hi1tab.at(0) = Hi1_alt(-m_x, 0., kHgluon); - Hi1tab.at(1) = Hi1_alt(-m_x, 0.5, kHgluon); - Hi1tab.at(2) = Hi1_alt(-m_x, 1., kHgluon); - Hi1tab.at(3) = Hi1_alt(-m_x, 1.5, kHgluon); - } - } - - if (!slow_val) { - Huval1tab.at(0) = Hval1(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1(-m_x, 1., kHdval); - - } else { - Huval1tab.at(0) = Hval1_alt(m_x, 0., kHuval); - Huval1tab.at(1) = Hval1_alt(m_x, 0.5, kHuval); - Huval1tab.at(2) = Hval1_alt(m_x, 1., kHuval); - - Hdval1tab.at(0) = Hval1_alt(m_x, 0., kHdval); - Hdval1tab.at(1) = Hval1_alt(m_x, 0.5, kHdval); - Hdval1tab.at(2) = Hval1_alt(m_x, 1., kHdval); - - Huval1mtab.at(0) = Hval1_alt(-m_x, 0., kHuval); - Huval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHuval); - Huval1mtab.at(2) = Hval1_alt(-m_x, 1., kHuval); - - Hdval1mtab.at(0) = Hval1_alt(-m_x, 0., kHdval); - Hdval1mtab.at(1) = Hval1_alt(-m_x, 0.5, kHdval); - Hdval1mtab.at(2) = Hval1_alt(-m_x, 1., kHdval); - } -} - -void GK16ModelTest::calculateHKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL; - kHgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kHsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kHuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9 - 0.05 * fL; - delta = 0.48 + 0.006 * fL; - kHdval = delta + alpha * m_t; -} - -double GK16ModelTest::Hs1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - - 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK16ModelTest::Hi1(double x, double i, double k) { - - double dummy; - - if ((x - m_xi) < 0) { - dummy = 15. / 4. / pow(m_xi, 5.) - * pow((x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) / (5. + i - k) - + 15. / 4. / pow(m_xi, 5.) - * pow((-x + m_xi) / (1. + m_xi), 3. + i - k) - * ((3. * pow(3. + i - k, 2.) - - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi + x, 2.) - + 6. * (3. + i - k) * m_xi * (1. + x) - * (m_xi * m_xi + x) - - 2. * (2. + i - k) * (4. + i - k) - * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) / (1. + i - k) - / (2. + i - k) / (3. + i - k) / (4. + i - k) - / (5. + i - k); - } else { - dummy = 15. / 4. / pow(m_xi, 5.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) / (4. + i - k) / (5. + i - k) - * (((3. * pow(3. + i - k, 2.) - (1. + i - k) * (5. + i - k)) - * pow(m_xi * m_xi - x, 2.) - - 2. * (2. + i - k) * (4. + i - k) * (1. - m_xi * m_xi) - * (x * x - m_xi * m_xi)) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - - pow((x - m_xi) / (1. - m_xi), 3. + i - k)) - + 6. * (3. + i - k) * m_xi * (1. - x) - * (m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), 3. + i - k) - + pow((x - m_xi) / (1. - m_xi), - 3. + i - k))); - } - - return dummy; -} - -double GK16ModelTest::Hs1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - return dummy; -} - -double GK16ModelTest::Hi1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - - dummy = double_approx(dummya); - - return dummy; -} - -double GK16ModelTest::Hval1(double x, double i, double k) { - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummy = 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dummy = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - - /* debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" << i - << ", k=" << k << ") dummy = " << dummy);*/ - - return dummy; -} - -double GK16ModelTest::Hval1_alt(double x, double i, double k) { - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi3 = expt(xia, 3); - - if (fabs(x + m_xi) > 1e-6) { - dummy2 = exp((2 + ia - ka) * ln((xba + xia) / (1 + xia))); - } else { - dummy2 = 0; - } - - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((2 + ia - ka) * ln((xba - xia) / (1 - xia))); - } else { - dummy1 = 0; - } - - double dummy; - - if ((x + m_xi) < 0) { - dummy = 0.; // no anti-quarks in valence ! - } else if ((x - m_xi) < 0) { - dummya = dummy2 * (xia * xia - xba + (2 + ia - ka) * xia * (1 - xba)); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - - } else { - dummya = (xia * xia - xba) * (dummy2 - dummy1); - - dummya += (2 + ia - ka) * xia * (1 - xba) * (dummy2 + dummy1); - - dummya *= cl_float(3, prec) / 2 / xi3 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka); - } - - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/** ! - * \fn void STGK16ModelTest::calculateHtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Hti1 ( i = 0, 0.5, 1 ) - * - Htval1( i = 0, 1, 2 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * ( gluons only for now, Htilde_sea = 0 for Kroll ) - * - */ -void GK16ModelTest::calculateHtCoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateHtKas(); // comes up with kHtgluon, kHstea, kHtuval, kHtdval - -// No sea Ht for GK. - - debug(__func__, - ElemUtils::Formatter() << "slow_sea = " << slow_sea - << " slow_val = " << slow_val); - -//TODO permuter les conditions - - if (!slow_sea) { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1(-m_x, 1.0, kHtgluon); - } - } else { - if (m_x >= 0) { - Hti1tab.at(0) = Hti1_alt(m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(m_x, 1.0, kHtgluon); - } else { - Hti1tab.at(0) = Hti1_alt(-m_x, 0., kHtgluon); - Hti1tab.at(1) = Hti1_alt(-m_x, 0.5, kHtgluon); - Hti1tab.at(2) = Hti1_alt(-m_x, 1.0, kHtgluon); - } - } - - if (!slow_val) { - Htuval1tab.at(0) = Htval1(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); // kHtdval & kHtuval are equal - Htdval1tab.at(1) = Htuval1tab.at(1); // for u and d for Ht - Htdval1tab.at(2) = Htuval1tab.at(2); // don't need to recalculate - - Htuval1mtab.at(0) = Htval1(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - - } else { - Htuval1tab.at(0) = Htval1_alt(m_x, 0., kHtuval); - Htuval1tab.at(1) = Htval1_alt(m_x, 1., kHtuval); - Htuval1tab.at(2) = Htval1_alt(m_x, 2., kHtuval); - - Htdval1tab.at(0) = Htuval1tab.at(0); - Htdval1tab.at(1) = Htuval1tab.at(1); - Htdval1tab.at(2) = Htuval1tab.at(2); - - Htuval1mtab.at(0) = Htval1_alt(-m_x, 0., kHtuval); - Htuval1mtab.at(1) = Htval1_alt(-m_x, 1., kHtuval); - Htuval1mtab.at(2) = Htval1_alt(-m_x, 2., kHtuval); - - Htdval1mtab.at(0) = Htuval1mtab.at(0); - Htdval1mtab.at(1) = Htuval1mtab.at(1); - Htdval1mtab.at(2) = Htuval1mtab.at(2); - } -} - -/*! - * \fn void STGK16ModelTest::calculateHtKas() - * - * Compute t-dependence of GPD Ht correlated to x. - * - */ -void GK16ModelTest::calculateHtKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = -0.78 + 0.17 * fL; - kHtgluon = delta + alpha * m_t; - -// sea, not modelled by GK. - - kHtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kHtuval = delta + alpha * m_t; - -// d valence - - kHtdval = kHtuval; - - debug(__func__, - ElemUtils::Formatter() << "(t=" << m_t << ") kHtgluon=" << kHtgluon - << " kHtsea=" << kHtsea << " kHtuval=" << kHtuval - << " kHtdval=" << kHtdval); -} - -/*! - * \fn void STGK16ModelTest::CalculateEtKas() - * - * Exactly the same as Hval1_alt and Eval1_alt. - * - */ -double GK16ModelTest::Htval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/*! - * \fn double STGK16ModelTest::Hti1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK16ModelTest::Hti1(double x, double i, double k) { - - return Hs1(x, i, k); -} - -/*! - * \fn void STGK16ModelTest::CalculateEtKas() - * - * Exactly the same as Hs1_alt. - * - */ -double GK16ModelTest::Hti1_alt(double x, double i, double k) { - -//return Hs1_alt(_xi, x, i, k); - - cln::cl_R ia, ka, xba, xia; - cln::cl_R dummya, dummy1, dummy2, dummy3; - - cln::float_format_t prec = cln::float_format(30); - - xia = cl_float(m_xi, prec); - ka = cl_float(k, prec); - xba = cl_float(x, prec); - ia = cl_float(i, prec); - - cln::cl_R xi5 = expt(xia, 5); - - dummy2 = exp((3 + ia - ka) * ln((xba + xia) / (1 + xia))); - if (fabs(x - m_xi) > 1e-6) { - dummy1 = exp((3 + ia - ka) * ln((xba - xia) / (1 - xia))); - dummy3 = exp((3 + ia - ka) * ln((-xba + xia) / (1 + xia))); - } else { - dummy1 = 0; - dummy3 = 0; - } - - double dummy; - - if ((x - m_xi) < 0) { - - dummya = dummy2 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - + 6 * (3 + ia - ka) * xia * (1 - xba) - * (xia * xia - xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya += -dummy3 - * ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia + xba, 2) - + 6 * (3 + ia - ka) * xia * (1 + xba) - * (xia * xia + xba) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } else { - dummya = ((3 * expt(3 + ia - ka, 2) - (1 + ia - ka) * (5 + ia - ka)) - * expt(xia * xia - xba, 2) - - 2 * (2 + ia - ka) * (4 + ia - ka) * (1 - xia * xia) - * (xba * xba - xia * xia)) * (dummy2 - dummy1) - + 6 * (3 + ia - ka) * xia * (1 - xba) * (xia * xia - xba) - * (dummy2 + dummy1); - - dummya *= cl_float(15, prec) / 4 / xi5 / (1 + ia - ka) / (2 + ia - ka) - / (3 + ia - ka) / (4 + ia - ka) / (5 + ia - ka); - - } - dummy = double_approx(dummya); - - debug(__func__, - ElemUtils::Formatter() << "(x=" << x << ", xi=" << m_xi << ", i=" - << i << ", k=" << k << ") dummy = " << dummy); - - return dummy; -} - -/*! - * \fn void STGK16ModelTest::CalculateEtKas() - * - * Exactly the same as Hval1 and Eval1. - * - */ -double GK16ModelTest::Htval1(double x, double i, double k) { - - return Hval1(x, i, k); -} - -/** ! - * \fn void STGK16ModelTest::calculateECoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Es1 (i=0, 1, 2) - * - Ei1 (i=0, 1) - * - Eval1(i=0, 1, 2) (u) - * - Eval1(i=0, .. ,7) (d) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share th(ame limits as strange/sea as far as slow/fast goes. - * - */ -void GK16ModelTest::calculateECoefs() { - int slow_sea = 0; // by default, fast - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - - if (log10(m_xi) < (4. / 2.5) * log10(fabs(m_x))) { - slow_sea = 1; - } - -// For valence - - if ((m_xi < 0.01) - && (log10(m_xi) < ((-4. / log10(0.6)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEKas(); // comes up with kEgluon, kEsea, kEuval, kEdval - - if (!slow_sea) { - if (m_x >= 0) { - Es1tab.at(0) = Es1(m_x, 0., kEsea); - Es1tab.at(1) = Es1(m_x, 1., kEsea); - Es1tab.at(2) = Es1(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1(-m_x, 1., kEgluon); - } - } else { - if (m_x >= 0) { - Es1tab.at(0) = Es1_alt(m_x, 0., kEsea); - Es1tab.at(1) = Es1_alt(m_x, 1., kEsea); - Es1tab.at(2) = Es1_alt(m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(m_x, 1., kEgluon); - } else { - Es1tab.at(0) = -Es1_alt(-m_x, 0., kEsea); - Es1tab.at(1) = -Es1_alt(-m_x, 1., kEsea); - Es1tab.at(2) = -Es1_alt(-m_x, 2., kEsea); - - Ei1tab.at(0) = Ei1_alt(-m_x, 0., kEgluon); - Ei1tab.at(1) = Ei1_alt(-m_x, 1., kEgluon); - } - } - - if (!slow_val) { - Euval1tab.at(0) = Eval1(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1(-m_x, 7., kEdval); - - } else { - Euval1tab.at(0) = Eval1_alt(m_x, 0., kEuval); - Euval1tab.at(1) = Eval1_alt(m_x, 1., kEuval); - - Edval1tab.at(0) = Eval1_alt(m_x, 0., kEdval); - Edval1tab.at(1) = Eval1_alt(m_x, 1., kEdval); - Edval1tab.at(2) = Eval1_alt(m_x, 2., kEdval); - Edval1tab.at(3) = Eval1_alt(m_x, 3., kEdval); - Edval1tab.at(4) = Eval1_alt(m_x, 4., kEdval); - Edval1tab.at(5) = Eval1_alt(m_x, 5., kEdval); - Edval1tab.at(6) = Eval1_alt(m_x, 6., kEdval); - Edval1tab.at(7) = Eval1_alt(m_x, 7., kEdval); - - Euval1mtab.at(0) = Eval1_alt(-m_x, 0., kEuval); - Euval1mtab.at(1) = Eval1_alt(-m_x, 1., kEuval); - - Edval1mtab.at(0) = Eval1_alt(-m_x, 0., kEdval); - Edval1mtab.at(1) = Eval1_alt(-m_x, 1., kEdval); - Edval1mtab.at(2) = Eval1_alt(-m_x, 2., kEdval); - Edval1mtab.at(3) = Eval1_alt(-m_x, 3., kEdval); - Edval1mtab.at(4) = Eval1_alt(-m_x, 4., kEdval); - Edval1mtab.at(5) = Eval1_alt(-m_x, 5., kEdval); - Edval1mtab.at(6) = Eval1_alt(-m_x, 6., kEdval); - Edval1mtab.at(7) = Eval1_alt(-m_x, 7., kEdval); - } - -} - -/*! - * \fn void STGK16ModelTest::calculateEKas() - * - * Compute t-dependence of GPD H correlated to x. - * - */ -void GK16ModelTest::calculateEKas() { - double alpha, delta; - -// gluons - - alpha = 0.15; //slope of gluon trajectory - delta = 0.10 + 0.06 * fL - 0.0027 * fL * fL; - kEgluon = delta + alpha * m_t; - -// sea - - alpha = 0.15; // same as slope of gluon trajectory - delta = 1.1 + 0.06 * fL - 0.0027 * fL * fL; - kEsea = delta + alpha * m_t; - -// u valence - - alpha = 0.9; - delta = 0.48; - kEuval = delta + alpha * m_t; - -// d valence - - alpha = 0.9; - delta = 0.48; - kEdval = delta + alpha * m_t; - -} - -/*! - * \fn double STGK16ModelTest::Es1( double x, double i, double k ) - * - * Exactly the same as Hs1. - * - */ -double GK16ModelTest::Es1(double x, double i, double k) { - return Hs1(x, i, k); -} - -/*! - * \fn double STGK16ModelTest::Ei1( double x, double i, double k ) - * - * Exactly the same as Hi1. - * - */ -double GK16ModelTest::Ei1(double x, double i, double k) { - return Hi1(x, i, k); -} - -/*! - * \fn double STGK16ModelTest::Es1_alt( double x, double i, double k ) - * - * Exactly the same as Hs1_alt. - * - */ -double GK16ModelTest::Es1_alt(double x, double i, double k) { - return Hs1_alt(x, i, k); -} - -/*! - * \fn double STGK16ModelTest::Ei1_alt( double x, double i, double k ) - * - * Exactly the same as Hi1_alt. - * - */ -double GK16ModelTest::Ei1_alt(double x, double i, double k) { - return Hi1_alt(x, i, k); -} - -/*! - * \fn double STGK16ModelTest::Eval1( double x, double i, double k ) - * - * Exactly the same as Hval1. - * - */ -double GK16ModelTest::Eval1(double x, double i, double k) { - return Hval1(x, i, k); -} - -/*! - * \fn void STGK16ModelTest::CalculateEtKas() - * - * Exactly the same as Hval1_alt. - * - */ -double GK16ModelTest::Eval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -/** ! - * \fn void STGK16ModelTest::calculateEtCoefs() - * - * Generic function for fast calculation. - * - * Calculates : - * - Etval1 ( i = 0, 1, 2, 3 ) - * - * Either fast (cln) or slow, depending on kinematic domain in (x,xi) - * To be called before the evaluation of GPDs. - * - * Kinematic boundaries - * For the sea and gluons : gluons share the same limits as strange/sea as far as slow/fast goes. - * For the sea ( and gluons later ) - * - */ -void GK16ModelTest::calculateEtCoefs() { - int slow_val = 0; // if = 1 : slow ( full calculation with cln ) - -// For valence - - if ((m_xi < 0.04) - && (log10(m_xi) < ((-4. / log10(0.55)) * log10(fabs(m_x))))) { - slow_val = 1; - } - - calculateEtKas(); // comes up with kHgluon, kHsea, kHuval, kHdval - -// WARNING : No sea or gluon Et for GK. - - if (!slow_val) { - Etuval1tab.at(0) = Etval1(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); // kEtdval & kEtuval are equal - Etdval1tab.at(1) = Etuval1tab.at(1); // for u and d for Et, - Etdval1tab.at(2) = Etuval1tab.at(2); // don't need to recalculate - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - - } else { - Etuval1tab.at(0) = Etval1_alt(m_x, 0., kEtuval); - Etuval1tab.at(1) = Etval1_alt(m_x, 1., kEtuval); - Etuval1tab.at(2) = Etval1_alt(m_x, 2., kEtuval); - Etuval1tab.at(3) = Etval1_alt(m_x, 3., kEtuval); - - Etdval1tab.at(0) = Etuval1tab.at(0); - Etdval1tab.at(1) = Etuval1tab.at(1); - Etdval1tab.at(2) = Etuval1tab.at(2); - Etdval1tab.at(3) = Etuval1tab.at(3); - - Etuval1mtab.at(0) = Etval1_alt(-m_x, 0., kEtuval); - Etuval1mtab.at(1) = Etval1_alt(-m_x, 1., kEtuval); - Etuval1mtab.at(2) = Etval1_alt(-m_x, 2., kEtuval); - Etuval1mtab.at(3) = Etval1_alt(-m_x, 3., kEtuval); - - Etdval1mtab.at(0) = Etuval1mtab.at(0); - Etdval1mtab.at(1) = Etuval1mtab.at(1); - Etdval1mtab.at(2) = Etuval1mtab.at(2); - Etdval1mtab.at(3) = Etuval1mtab.at(3); - } -} - -/*! - * \fn void STGK16ModelTest::calculateEtKas() - * - * Compute t-dependence of GPD Et correlated to x. - * - */ -void GK16ModelTest::calculateEtKas() { - double alpha, delta; - -// gluons, not modelled by GK. - - kEtgluon = 0.; - -// sea, not modelled by GK. - - kEtsea = 0.; - -// u valence - - alpha = 0.45; - delta = 0.48; - kEtuval = delta + alpha * m_t; - -// d valence - - kEtdval = kEtuval; -} - -/* ! - * \fn double STGK16ModelTest::Et_pole( double x ) - * - * Pion pole contribution to Et. - * - */ -double GK16ModelTest::Et_pole(double x) { - -//TODO extraire les constantes si existantes - - double dum = 0.; // Initialize to 0 - double eps; - double eps2; - double tmin; - double xbj; - double Q2 = m_MuF2; - double tOverQ2 = m_t / Q2; - double y = (x + m_xi) / 2. / m_xi; - double MPi2 = Constant::PI_ZERO_MASS * Constant::PI_ZERO_MASS; - double gpiNN = 13.4; - double f_pi = 0.131; // f_pi=0.131 GeV from paper. Actually 130.4 from PDG (Jul2010) - double Lambda_N2 = 0.51 * 0.51; - double Fp; - double FpiNN; - - xbj = 2. * m_xi / (m_xi - tOverQ2 * m_xi + 1. + tOverQ2 * 0.5); - eps = 2. * xbj * Constant::PROTON_MASS / sqrt(Q2); - eps2 = eps * eps; - - if (eps < 1 && (4. * xbj * (1. - xbj) + eps2) != 0) { - - tmin = -Q2 * (2. * (1. - xbj) * (1 - sqrt(1. + eps2)) + eps2) - / (4. * xbj * (1. - xbj) + eps2); - FpiNN = (Lambda_N2 - MPi2) / (Lambda_N2 - (m_t - tmin)); - Fp = -Constant::PROTON_MASS * f_pi * (2. * sqrt(2.) * gpiNN * FpiNN) - / (m_t - MPi2); - - if (x < m_xi && x > -m_xi && m_t < tmin) { -// dum = ( Fp( pKinematicVariables->getT(), Q2, tmin ) / 4. / pGPDData->getXi() ) * Phi_pi( ( x + pGPDData->getXi() ) / 2. / pGPDData->getXi() ) ; - dum = (Fp / 4. / m_xi) * 6. * y * (1. - y); - } - - } - - return dum; -} - -/*! - * \fn double STGK16ModelTest::Etval1( double x, double i, double k ) - * - * xdiff:=evalf(xb-xi); xsum:=evalf(xb+xi); - * if xsum<0 then # xb<-xi - * Hi:=0 else - * if xdiff <0 then # xb 3/2/xi^3*(((xb+xi)/(1+xi))^(2+i-k)*(xi^2-xb+(2+i-k)*xi*(1-xb))) - * /(1+i-k)/(2+i-k)/(3+i-k) - * else - * Hi:= i -> 3/2/xi^3/(1+i-k)/(2+i-k)/(3+i-k)*((xi^2-xb)*( ((xb+xi)/(1+xi))^(2+i-k) - * -((xb-xi)/(1-xi))^(2+i-k)) - * + xi*(1-xb)*(2+i-k)*(((xb+xi)/(1+xi))^(2+i-k)+ ((xb-xi)/(1-xi))^(2+i-k) ) ) - * end if: end if: - * - */ -double GK16ModelTest::Etval1(double x, double i, double k) { - double dum; - - if ((x + m_xi) < 0) { // 0 for x < -pGPDData->getXi() - dum = 0.0; - } else { // Two cases for x >= -pGPDData->getXi() - if ((x - m_xi) < 0) { - dum = - 3. / 2. / pow(m_xi, 3.) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - * (m_xi * m_xi - x - + (2. + i - k) * m_xi * (1. - x))) - / (1. + i - k) / (2. + i - k) / (3. + i - k); - } else { - dum = 3. / 2. / pow(m_xi, 3.) / (1. + i - k) / (2. + i - k) - / (3. + i - k) - * ((m_xi * m_xi - x) - * (pow((x + m_xi) / (1. + m_xi), (2. + i - k)) - - pow((x - m_xi) / (1. - m_xi), - (2. + i - k))) - + m_xi * (1. - x) * (2. + i - k) - * (pow((x + m_xi) / (1. + m_xi), - (2. + i - k)) - + pow((x - m_xi) / (1. - m_xi), - (2. + i - k)))); - } - } - return dum; -} - -/*! - * \fn double STGK16ModelTest::Etval1_alt( double x, double i, double k ) - * - * Exactly the same as Hval1_alt and Eval1_alt, Htval1_alt. - * - */ -double GK16ModelTest::Etval1_alt(double x, double i, double k) { - return Hval1_alt(x, i, k); -} - -double GK16ModelTest::getB0() const { - return b0; -} - -double GK16ModelTest::getC1() const { - return c1; -} - -double GK16ModelTest::getC2() const { - return c2; -} - -double GK16ModelTest::getC3() const { - return c3; -} - -double GK16ModelTest::getC4() const { - return c4; -} - -double GK16ModelTest::getC5() const { - return c5; -} - -double GK16ModelTest::getC6() const { - return c6; -} - -double GK16ModelTest::getC7() const { - return c7; -} - -double GK16ModelTest::getC8() const { - return c8; -} - -const std::vector& GK16ModelTest::getEdval1mtab() const { - return Edval1mtab; -} - -const std::vector& GK16ModelTest::getEdval1tab() const { - return Edval1tab; -} - -const std::vector& GK16ModelTest::getEi1tab() const { - return Ei1tab; -} - -const std::vector& GK16ModelTest::getEs1tab() const { - return Es1tab; -} - -const std::vector& GK16ModelTest::getEtdval1mtab() const { - return Etdval1mtab; -} - -const std::vector& GK16ModelTest::getEtdval1tab() const { - return Etdval1tab; -} - -const std::vector& GK16ModelTest::getEtuval1mtab() const { - return Etuval1mtab; -} - -const std::vector& GK16ModelTest::getEtuval1tab() const { - return Etuval1tab; -} - -const std::vector& GK16ModelTest::getEuval1mtab() const { - return Euval1mtab; -} - -const std::vector& GK16ModelTest::getEuval1tab() const { - return Euval1tab; -} - -double GK16ModelTest::getEdValMx() const { - return fEdValMx; -} - -double GK16ModelTest::getEtdValMx() const { - return fEtdValMx; -} - -double GK16ModelTest::getEtuValMx() const { - return fEtuValMx; -} - -double GK16ModelTest::getEuValMx() const { - return fEuValMx; -} - -double GK16ModelTest::getHdValMx() const { - return fHdValMx; -} - -double GK16ModelTest::getHtdValMx() const { - return fHtdValMx; -} - -double GK16ModelTest::getHtuValMx() const { - return fHtuValMx; -} - -double GK16ModelTest::getHuValMx() const { - return fHuValMx; -} - -double GK16ModelTest::getL() const { - return fL; -} - -const std::vector& GK16ModelTest::getHdval1mtab() const { - return Hdval1mtab; -} - -const std::vector& GK16ModelTest::getHdval1tab() const { - return Hdval1tab; -} - -const std::vector& GK16ModelTest::getHi1tab() const { - return Hi1tab; -} - -const std::vector& GK16ModelTest::getHs1tab() const { - return Hs1tab; -} - -const std::vector& GK16ModelTest::getHtdval1mtab() const { - return Htdval1mtab; -} - -const std::vector& GK16ModelTest::getHtdval1tab() const { - return Htdval1tab; -} - -const std::vector& GK16ModelTest::getHti1tab() const { - return Hti1tab; -} - -const std::vector& GK16ModelTest::getHtuval1mtab() const { - return Htuval1mtab; -} - -const std::vector& GK16ModelTest::getHtuval1tab() const { - return Htuval1tab; -} - -const std::vector& GK16ModelTest::getHuval1mtab() const { - return Huval1mtab; -} - -const std::vector& GK16ModelTest::getHuval1tab() const { - return Huval1tab; -} - -double GK16ModelTest::getKappaS() const { - return kappa_s; -} - -double GK16ModelTest::getEdval() const { - return kEdval; -} - -double GK16ModelTest::getEgluon() const { - return kEgluon; -} - -double GK16ModelTest::getEsea() const { - return kEsea; -} - -double GK16ModelTest::getEtdval() const { - return kEtdval; -} - -double GK16ModelTest::getEtgluon() const { - return kEtgluon; -} - -double GK16ModelTest::getEtsea() const { - return kEtsea; -} - -double GK16ModelTest::getEtuval() const { - return kEtuval; -} - -double GK16ModelTest::getEuval() const { - return kEuval; -} - -double GK16ModelTest::getHdval() const { - return kHdval; -} - -double GK16ModelTest::getHgluon() const { - return kHgluon; -} - -double GK16ModelTest::getHsea() const { - return kHsea; -} - -double GK16ModelTest::getHtdval() const { - return kHtdval; -} - -double GK16ModelTest::getHtgluon() const { - return kHtgluon; -} - -double GK16ModelTest::getHtsea() const { - return kHtsea; -} - -double GK16ModelTest::getHtuval() const { - return kHtuval; -} - -double GK16ModelTest::getHuval() const { - return kHuval; -} - -std::string GK16ModelTest::toString() const { - return GPDModule::toString(); -} diff --git a/src/partons/modules/gpd/GK11Model.cpp b/src/partons/modules/gpd/GPDGK11.cpp similarity index 91% rename from src/partons/modules/gpd/GK11Model.cpp rename to src/partons/modules/gpd/GPDGK11.cpp index a822c4c850ca8309edaddee84f63144d91faa4e2..52e28a6e003cb952133a915bad970dcbda92fff8 100644 --- a/src/partons/modules/gpd/GK11Model.cpp +++ b/src/partons/modules/gpd/GPDGK11.cpp @@ -1,29 +1,25 @@ -#include "../../../../include/partons/modules/gpd/GK11Model.h" +#include "../../../../include/partons/modules/gpd/GPDGK11.h" +#include #include #include #include #include -#include #include -#include #include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" #include "../../../../include/partons/FundamentalPhysicalConstants.h" -// Initialise [class]::classId with a unique name. -const unsigned int GK11Model::classId = +const unsigned int GPDGK11::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new GK11Model("GK11Model")); + new GPDGK11("GPDGK11")); -//TODO initialise missing members -GK11Model::GK11Model(const std::string &className) : +GPDGK11::GPDGK11(const std::string &className) : GPDModule(className) { fL = 0.; m_MuF2_ref = 4.; @@ -59,7 +55,7 @@ GK11Model::GK11Model(const std::string &className) : std::make_pair(GPDType::Et, &GPDModule::computeEt)); } -GK11Model::GK11Model(const GK11Model& other) : +GPDGK11::GPDGK11(const GPDGK11& other) : GPDModule(other) { c1 = other.getC1(); c2 = other.getC2(); @@ -119,24 +115,24 @@ GK11Model::GK11Model(const GK11Model& other) : Etdval1mtab = other.getEtdval1mtab(); } -GK11Model* GK11Model::clone() const { - return new GK11Model(*this); +GPDGK11* GPDGK11::clone() const { + return new GPDGK11(*this); } -GK11Model::~GK11Model() { +GPDGK11::~GPDGK11() { } -void GK11Model::configure(const ElemUtils::Parameters ¶meters) { +void GPDGK11::configure(const ElemUtils::Parameters ¶meters) { GPDModule::configure(parameters); } //TODO implement -void GK11Model::isModuleWellConfigured() { +void GPDGK11::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void GK11Model::initModule() { +void GPDGK11::initModule() { GPDModule::initModule(); fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale @@ -145,7 +141,7 @@ void GK11Model::initModule() { ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ } -PartonDistribution GK11Model::computeH() { +PartonDistribution GPDGK11::computeH() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -257,7 +253,7 @@ PartonDistribution GK11Model::computeH() { return partonDistribution; } -PartonDistribution GK11Model::computeHt() { +PartonDistribution GPDGK11::computeHt() { debug(__func__, "Entered function ..."); @@ -372,7 +368,7 @@ PartonDistribution GK11Model::computeHt() { return partonDistribution; } -PartonDistribution GK11Model::computeE() { +PartonDistribution GPDGK11::computeE() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -466,7 +462,7 @@ PartonDistribution GK11Model::computeE() { return partonDistribution; } -PartonDistribution GK11Model::computeEt() { +PartonDistribution GPDGK11::computeEt() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -568,7 +564,7 @@ PartonDistribution GK11Model::computeEt() { // return result; //} -void GK11Model::calculateHCoefs() { +void GPDGK11::calculateHCoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow (full calculation with cln ) @@ -667,7 +663,7 @@ void GK11Model::calculateHCoefs() { } } -void GK11Model::calculateHKas() { +void GPDGK11::calculateHKas() { double alpha, delta; // gluons @@ -695,7 +691,7 @@ void GK11Model::calculateHKas() { kHdval = delta + alpha * m_t; } -double GK11Model::Hs1(double x, double i, double k) { +double GPDGK11::Hs1(double x, double i, double k) { double dummy; @@ -744,7 +740,7 @@ double GK11Model::Hs1(double x, double i, double k) { return dummy; } -double GK11Model::Hi1(double x, double i, double k) { +double GPDGK11::Hi1(double x, double i, double k) { double dummy; @@ -789,7 +785,7 @@ double GK11Model::Hi1(double x, double i, double k) { return dummy; } -double GK11Model::Hs1_alt(double x, double i, double k) { +double GPDGK11::Hs1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2, dummy3; @@ -850,7 +846,7 @@ double GK11Model::Hs1_alt(double x, double i, double k) { return dummy; } -double GK11Model::Hi1_alt(double x, double i, double k) { +double GPDGK11::Hi1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2, dummy3; @@ -913,7 +909,7 @@ double GK11Model::Hi1_alt(double x, double i, double k) { return dummy; } -double GK11Model::Hval1(double x, double i, double k) { +double GPDGK11::Hval1(double x, double i, double k) { double dummy; @@ -943,7 +939,7 @@ double GK11Model::Hval1(double x, double i, double k) { return dummy; } -double GK11Model::Hval1_alt(double x, double i, double k) { +double GPDGK11::Hval1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2; @@ -1013,7 +1009,7 @@ double GK11Model::Hval1_alt(double x, double i, double k) { * ( gluons only for now, Htilde_sea = 0 for Kroll ) * */ -void GK11Model::calculateHtCoefs() { +void GPDGK11::calculateHtCoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow ( full calculation with cln ) @@ -1102,7 +1098,7 @@ void GK11Model::calculateHtCoefs() { * Compute t-dependence of GPD Ht correlated to x. * */ -void GK11Model::calculateHtKas() { +void GPDGK11::calculateHtKas() { double alpha, delta; // gluons @@ -1137,7 +1133,7 @@ void GK11Model::calculateHtKas() { * Exactly the same as Hval1_alt and Eval1_alt. * */ -double GK11Model::Htval1_alt(double x, double i, double k) { +double GPDGK11::Htval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } @@ -1147,7 +1143,7 @@ double GK11Model::Htval1_alt(double x, double i, double k) { * Exactly the same as Hs1. * */ -double GK11Model::Hti1(double x, double i, double k) { +double GPDGK11::Hti1(double x, double i, double k) { return Hs1(x, i, k); } @@ -1158,7 +1154,7 @@ double GK11Model::Hti1(double x, double i, double k) { * Exactly the same as Hs1_alt. * */ -double GK11Model::Hti1_alt(double x, double i, double k) { +double GPDGK11::Hti1_alt(double x, double i, double k) { //return Hs1_alt(_xi, x, i, k); @@ -1233,7 +1229,7 @@ double GK11Model::Hti1_alt(double x, double i, double k) { * Exactly the same as Hval1 and Eval1. * */ -double GK11Model::Htval1(double x, double i, double k) { +double GPDGK11::Htval1(double x, double i, double k) { return Hval1(x, i, k); } @@ -1256,7 +1252,7 @@ double GK11Model::Htval1(double x, double i, double k) { * For the sea and gluons : gluons share th(ame limits as strange/sea as far as slow/fast goes. * */ -void GK11Model::calculateECoefs() { +void GPDGK11::calculateECoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow ( full calculation with cln ) @@ -1366,7 +1362,7 @@ void GK11Model::calculateECoefs() { * Compute t-dependence of GPD H correlated to x. * */ -void GK11Model::calculateEKas() { +void GPDGK11::calculateEKas() { double alpha, delta; // gluons @@ -1401,7 +1397,7 @@ void GK11Model::calculateEKas() { * Exactly the same as Hs1. * */ -double GK11Model::Es1(double x, double i, double k) { +double GPDGK11::Es1(double x, double i, double k) { return Hs1(x, i, k); } @@ -1411,7 +1407,7 @@ double GK11Model::Es1(double x, double i, double k) { * Exactly the same as Hi1. * */ -double GK11Model::Ei1(double x, double i, double k) { +double GPDGK11::Ei1(double x, double i, double k) { return Hi1(x, i, k); } @@ -1421,7 +1417,7 @@ double GK11Model::Ei1(double x, double i, double k) { * Exactly the same as Hs1_alt. * */ -double GK11Model::Es1_alt(double x, double i, double k) { +double GPDGK11::Es1_alt(double x, double i, double k) { return Hs1_alt(x, i, k); } @@ -1431,7 +1427,7 @@ double GK11Model::Es1_alt(double x, double i, double k) { * Exactly the same as Hi1_alt. * */ -double GK11Model::Ei1_alt(double x, double i, double k) { +double GPDGK11::Ei1_alt(double x, double i, double k) { return Hi1_alt(x, i, k); } @@ -1441,7 +1437,7 @@ double GK11Model::Ei1_alt(double x, double i, double k) { * Exactly the same as Hval1. * */ -double GK11Model::Eval1(double x, double i, double k) { +double GPDGK11::Eval1(double x, double i, double k) { return Hval1(x, i, k); } @@ -1451,7 +1447,7 @@ double GK11Model::Eval1(double x, double i, double k) { * Exactly the same as Hval1_alt. * */ -double GK11Model::Eval1_alt(double x, double i, double k) { +double GPDGK11::Eval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } @@ -1471,7 +1467,7 @@ double GK11Model::Eval1_alt(double x, double i, double k) { * For the sea ( and gluons later ) * */ -void GK11Model::calculateEtCoefs() { +void GPDGK11::calculateEtCoefs() { int slow_val = 0; // if = 1 : slow ( full calculation with cln ) // For valence @@ -1535,7 +1531,7 @@ void GK11Model::calculateEtCoefs() { * Compute t-dependence of GPD Et correlated to x. * */ -void GK11Model::calculateEtKas() { +void GPDGK11::calculateEtKas() { double alpha, delta; // gluons, not modelled by GK. @@ -1563,7 +1559,7 @@ void GK11Model::calculateEtKas() { * Pion pole contribution to Et. * */ -double GK11Model::Et_pole(double x) { +double GPDGK11::Et_pole(double x) { //TODO extraire les constantes si existantes @@ -1620,7 +1616,7 @@ double GK11Model::Et_pole(double x) { * end if: end if: * */ -double GK11Model::Etval1(double x, double i, double k) { +double GPDGK11::Etval1(double x, double i, double k) { double dum; if ((x + m_xi) < 0) { // 0 for x < -pGPDData->getXi() @@ -1656,234 +1652,234 @@ double GK11Model::Etval1(double x, double i, double k) { * Exactly the same as Hval1_alt and Eval1_alt, Htval1_alt. * */ -double GK11Model::Etval1_alt(double x, double i, double k) { +double GPDGK11::Etval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } -double GK11Model::getB0() const { +double GPDGK11::getB0() const { return b0; } -double GK11Model::getC1() const { +double GPDGK11::getC1() const { return c1; } -double GK11Model::getC2() const { +double GPDGK11::getC2() const { return c2; } -double GK11Model::getC3() const { +double GPDGK11::getC3() const { return c3; } -double GK11Model::getC4() const { +double GPDGK11::getC4() const { return c4; } -double GK11Model::getC5() const { +double GPDGK11::getC5() const { return c5; } -double GK11Model::getC6() const { +double GPDGK11::getC6() const { return c6; } -double GK11Model::getC7() const { +double GPDGK11::getC7() const { return c7; } -double GK11Model::getC8() const { +double GPDGK11::getC8() const { return c8; } -const std::vector& GK11Model::getEdval1mtab() const { +const std::vector& GPDGK11::getEdval1mtab() const { return Edval1mtab; } -const std::vector& GK11Model::getEdval1tab() const { +const std::vector& GPDGK11::getEdval1tab() const { return Edval1tab; } -const std::vector& GK11Model::getEi1tab() const { +const std::vector& GPDGK11::getEi1tab() const { return Ei1tab; } -const std::vector& GK11Model::getEs1tab() const { +const std::vector& GPDGK11::getEs1tab() const { return Es1tab; } -const std::vector& GK11Model::getEtdval1mtab() const { +const std::vector& GPDGK11::getEtdval1mtab() const { return Etdval1mtab; } -const std::vector& GK11Model::getEtdval1tab() const { +const std::vector& GPDGK11::getEtdval1tab() const { return Etdval1tab; } -const std::vector& GK11Model::getEtuval1mtab() const { +const std::vector& GPDGK11::getEtuval1mtab() const { return Etuval1mtab; } -const std::vector& GK11Model::getEtuval1tab() const { +const std::vector& GPDGK11::getEtuval1tab() const { return Etuval1tab; } -const std::vector& GK11Model::getEuval1mtab() const { +const std::vector& GPDGK11::getEuval1mtab() const { return Euval1mtab; } -const std::vector& GK11Model::getEuval1tab() const { +const std::vector& GPDGK11::getEuval1tab() const { return Euval1tab; } -double GK11Model::getEdValMx() const { +double GPDGK11::getEdValMx() const { return fEdValMx; } -double GK11Model::getEtdValMx() const { +double GPDGK11::getEtdValMx() const { return fEtdValMx; } -double GK11Model::getEtuValMx() const { +double GPDGK11::getEtuValMx() const { return fEtuValMx; } -double GK11Model::getEuValMx() const { +double GPDGK11::getEuValMx() const { return fEuValMx; } -double GK11Model::getHdValMx() const { +double GPDGK11::getHdValMx() const { return fHdValMx; } -double GK11Model::getHtdValMx() const { +double GPDGK11::getHtdValMx() const { return fHtdValMx; } -double GK11Model::getHtuValMx() const { +double GPDGK11::getHtuValMx() const { return fHtuValMx; } -double GK11Model::getHuValMx() const { +double GPDGK11::getHuValMx() const { return fHuValMx; } -double GK11Model::getL() const { +double GPDGK11::getL() const { return fL; } -const std::vector& GK11Model::getHdval1mtab() const { +const std::vector& GPDGK11::getHdval1mtab() const { return Hdval1mtab; } -const std::vector& GK11Model::getHdval1tab() const { +const std::vector& GPDGK11::getHdval1tab() const { return Hdval1tab; } -const std::vector& GK11Model::getHi1tab() const { +const std::vector& GPDGK11::getHi1tab() const { return Hi1tab; } -const std::vector& GK11Model::getHs1tab() const { +const std::vector& GPDGK11::getHs1tab() const { return Hs1tab; } -const std::vector& GK11Model::getHtdval1mtab() const { +const std::vector& GPDGK11::getHtdval1mtab() const { return Htdval1mtab; } -const std::vector& GK11Model::getHtdval1tab() const { +const std::vector& GPDGK11::getHtdval1tab() const { return Htdval1tab; } -const std::vector& GK11Model::getHti1tab() const { +const std::vector& GPDGK11::getHti1tab() const { return Hti1tab; } -const std::vector& GK11Model::getHtuval1mtab() const { +const std::vector& GPDGK11::getHtuval1mtab() const { return Htuval1mtab; } -const std::vector& GK11Model::getHtuval1tab() const { +const std::vector& GPDGK11::getHtuval1tab() const { return Htuval1tab; } -const std::vector& GK11Model::getHuval1mtab() const { +const std::vector& GPDGK11::getHuval1mtab() const { return Huval1mtab; } -const std::vector& GK11Model::getHuval1tab() const { +const std::vector& GPDGK11::getHuval1tab() const { return Huval1tab; } -double GK11Model::getKappaS() const { +double GPDGK11::getKappaS() const { return kappa_s; } -double GK11Model::getEdval() const { +double GPDGK11::getEdval() const { return kEdval; } -double GK11Model::getEgluon() const { +double GPDGK11::getEgluon() const { return kEgluon; } -double GK11Model::getEsea() const { +double GPDGK11::getEsea() const { return kEsea; } -double GK11Model::getEtdval() const { +double GPDGK11::getEtdval() const { return kEtdval; } -double GK11Model::getEtgluon() const { +double GPDGK11::getEtgluon() const { return kEtgluon; } -double GK11Model::getEtsea() const { +double GPDGK11::getEtsea() const { return kEtsea; } -double GK11Model::getEtuval() const { +double GPDGK11::getEtuval() const { return kEtuval; } -double GK11Model::getEuval() const { +double GPDGK11::getEuval() const { return kEuval; } -double GK11Model::getHdval() const { +double GPDGK11::getHdval() const { return kHdval; } -double GK11Model::getHgluon() const { +double GPDGK11::getHgluon() const { return kHgluon; } -double GK11Model::getHsea() const { +double GPDGK11::getHsea() const { return kHsea; } -double GK11Model::getHtdval() const { +double GPDGK11::getHtdval() const { return kHtdval; } -double GK11Model::getHtgluon() const { +double GPDGK11::getHtgluon() const { return kHtgluon; } -double GK11Model::getHtsea() const { +double GPDGK11::getHtsea() const { return kHtsea; } -double GK11Model::getHtuval() const { +double GPDGK11::getHtuval() const { return kHtuval; } -double GK11Model::getHuval() const { +double GPDGK11::getHuval() const { return kHuval; } -std::string GK11Model::toString() const { +std::string GPDGK11::toString() const { return GPDModule::toString(); } diff --git a/src/partons/modules/gpd/GK16Model.cpp b/src/partons/modules/gpd/GPDGK16.cpp similarity index 92% rename from src/partons/modules/gpd/GK16Model.cpp rename to src/partons/modules/gpd/GPDGK16.cpp index a71cdeabfc3b3f7f751b05cadb4257e14c4a1153..783c01483bde3e16405b9e2d81a65314428639fe 100644 --- a/src/partons/modules/gpd/GK16Model.cpp +++ b/src/partons/modules/gpd/GPDGK16.cpp @@ -1,5 +1,3 @@ -#include "../../../../include/partons/modules/gpd/GK16Model.h" - #include #include #include @@ -16,14 +14,14 @@ #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" #include "../../../../include/partons/FundamentalPhysicalConstants.h" +#include "../../../../include/partons/modules/gpd/GPDGK16.h" -// Initialise [class]::classId with a unique name. -const unsigned int GK16Model::classId = +const unsigned int GPDGK16::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new GK16Model("GK16Model")); + new GPDGK16("GPDGK16")); //TODO initialise missing members -GK16Model::GK16Model(const std::string &className) : +GPDGK16::GPDGK16(const std::string &className) : GPDModule(className) { fL = 0.; m_MuF2_ref = 4.; @@ -59,7 +57,7 @@ GK16Model::GK16Model(const std::string &className) : std::make_pair(GPDType::Et, &GPDModule::computeEt)); } -GK16Model::GK16Model(const GK16Model& other) : +GPDGK16::GPDGK16(const GPDGK16& other) : GPDModule(other) { c1 = other.getC1(); c2 = other.getC2(); @@ -119,24 +117,24 @@ GK16Model::GK16Model(const GK16Model& other) : Etdval1mtab = other.getEtdval1mtab(); } -GK16Model* GK16Model::clone() const { - return new GK16Model(*this); +GPDGK16* GPDGK16::clone() const { + return new GPDGK16(*this); } -GK16Model::~GK16Model() { +GPDGK16::~GPDGK16() { } -void GK16Model::configure(const ElemUtils::Parameters ¶meters) { +void GPDGK16::configure(const ElemUtils::Parameters ¶meters) { GPDModule::configure(parameters); } //TODO implement -void GK16Model::isModuleWellConfigured() { +void GPDGK16::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void GK16Model::initModule() { +void GPDGK16::initModule() { GPDModule::initModule(); fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale @@ -145,7 +143,7 @@ void GK16Model::initModule() { ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ } -PartonDistribution GK16Model::computeH() { +PartonDistribution GPDGK16::computeH() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -257,7 +255,7 @@ PartonDistribution GK16Model::computeH() { return partonDistribution; } -PartonDistribution GK16Model::computeHt() { +PartonDistribution GPDGK16::computeHt() { debug(__func__, "Entered function ..."); @@ -372,7 +370,7 @@ PartonDistribution GK16Model::computeHt() { return partonDistribution; } -PartonDistribution GK16Model::computeE() { +PartonDistribution GPDGK16::computeE() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -466,7 +464,7 @@ PartonDistribution GK16Model::computeE() { return partonDistribution; } -PartonDistribution GK16Model::computeEt() { +PartonDistribution GPDGK16::computeEt() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -568,7 +566,7 @@ PartonDistribution GK16Model::computeEt() { // return result; //} -void GK16Model::calculateHCoefs() { +void GPDGK16::calculateHCoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow (full calculation with cln ) @@ -667,7 +665,7 @@ void GK16Model::calculateHCoefs() { } } -void GK16Model::calculateHKas() { +void GPDGK16::calculateHKas() { double alpha, delta; // gluons @@ -695,7 +693,7 @@ void GK16Model::calculateHKas() { kHdval = delta + alpha * m_t; } -double GK16Model::Hs1(double x, double i, double k) { +double GPDGK16::Hs1(double x, double i, double k) { double dummy; @@ -744,7 +742,7 @@ double GK16Model::Hs1(double x, double i, double k) { return dummy; } -double GK16Model::Hi1(double x, double i, double k) { +double GPDGK16::Hi1(double x, double i, double k) { double dummy; @@ -789,7 +787,7 @@ double GK16Model::Hi1(double x, double i, double k) { return dummy; } -double GK16Model::Hs1_alt(double x, double i, double k) { +double GPDGK16::Hs1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2, dummy3; @@ -850,7 +848,7 @@ double GK16Model::Hs1_alt(double x, double i, double k) { return dummy; } -double GK16Model::Hi1_alt(double x, double i, double k) { +double GPDGK16::Hi1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2, dummy3; @@ -913,7 +911,7 @@ double GK16Model::Hi1_alt(double x, double i, double k) { return dummy; } -double GK16Model::Hval1(double x, double i, double k) { +double GPDGK16::Hval1(double x, double i, double k) { double dummy; @@ -943,7 +941,7 @@ double GK16Model::Hval1(double x, double i, double k) { return dummy; } -double GK16Model::Hval1_alt(double x, double i, double k) { +double GPDGK16::Hval1_alt(double x, double i, double k) { cln::cl_R ia, ka, xba, xia; cln::cl_R dummya, dummy1, dummy2; @@ -1013,7 +1011,7 @@ double GK16Model::Hval1_alt(double x, double i, double k) { * ( gluons only for now, Htilde_sea = 0 for Kroll ) * */ -void GK16Model::calculateHtCoefs() { +void GPDGK16::calculateHtCoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow ( full calculation with cln ) @@ -1102,7 +1100,7 @@ void GK16Model::calculateHtCoefs() { * Compute t-dependence of GPD Ht correlated to x. * */ -void GK16Model::calculateHtKas() { +void GPDGK16::calculateHtKas() { double alpha, delta; // gluons @@ -1137,7 +1135,7 @@ void GK16Model::calculateHtKas() { * Exactly the same as Hval1_alt and Eval1_alt. * */ -double GK16Model::Htval1_alt(double x, double i, double k) { +double GPDGK16::Htval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } @@ -1147,7 +1145,7 @@ double GK16Model::Htval1_alt(double x, double i, double k) { * Exactly the same as Hs1. * */ -double GK16Model::Hti1(double x, double i, double k) { +double GPDGK16::Hti1(double x, double i, double k) { return Hs1(x, i, k); } @@ -1158,7 +1156,7 @@ double GK16Model::Hti1(double x, double i, double k) { * Exactly the same as Hs1_alt. * */ -double GK16Model::Hti1_alt(double x, double i, double k) { +double GPDGK16::Hti1_alt(double x, double i, double k) { //return Hs1_alt(_xi, x, i, k); @@ -1233,7 +1231,7 @@ double GK16Model::Hti1_alt(double x, double i, double k) { * Exactly the same as Hval1 and Eval1. * */ -double GK16Model::Htval1(double x, double i, double k) { +double GPDGK16::Htval1(double x, double i, double k) { return Hval1(x, i, k); } @@ -1256,7 +1254,7 @@ double GK16Model::Htval1(double x, double i, double k) { * For the sea and gluons : gluons share th(ame limits as strange/sea as far as slow/fast goes. * */ -void GK16Model::calculateECoefs() { +void GPDGK16::calculateECoefs() { int slow_sea = 0; // by default, fast int slow_val = 0; // if = 1 : slow ( full calculation with cln ) @@ -1366,7 +1364,7 @@ void GK16Model::calculateECoefs() { * Compute t-dependence of GPD H correlated to x. * */ -void GK16Model::calculateEKas() { +void GPDGK16::calculateEKas() { double alpha, delta; // gluons @@ -1400,7 +1398,7 @@ void GK16Model::calculateEKas() { * Exactly the same as Hs1. * */ -double GK16Model::Es1(double x, double i, double k) { +double GPDGK16::Es1(double x, double i, double k) { return Hs1(x, i, k); } @@ -1410,7 +1408,7 @@ double GK16Model::Es1(double x, double i, double k) { * Exactly the same as Hi1. * */ -double GK16Model::Ei1(double x, double i, double k) { +double GPDGK16::Ei1(double x, double i, double k) { return Hi1(x, i, k); } @@ -1420,7 +1418,7 @@ double GK16Model::Ei1(double x, double i, double k) { * Exactly the same as Hs1_alt. * */ -double GK16Model::Es1_alt(double x, double i, double k) { +double GPDGK16::Es1_alt(double x, double i, double k) { return Hs1_alt(x, i, k); } @@ -1430,7 +1428,7 @@ double GK16Model::Es1_alt(double x, double i, double k) { * Exactly the same as Hi1_alt. * */ -double GK16Model::Ei1_alt(double x, double i, double k) { +double GPDGK16::Ei1_alt(double x, double i, double k) { return Hi1_alt(x, i, k); } @@ -1440,7 +1438,7 @@ double GK16Model::Ei1_alt(double x, double i, double k) { * Exactly the same as Hval1. * */ -double GK16Model::Eval1(double x, double i, double k) { +double GPDGK16::Eval1(double x, double i, double k) { return Hval1(x, i, k); } @@ -1450,7 +1448,7 @@ double GK16Model::Eval1(double x, double i, double k) { * Exactly the same as Hval1_alt. * */ -double GK16Model::Eval1_alt(double x, double i, double k) { +double GPDGK16::Eval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } @@ -1470,7 +1468,7 @@ double GK16Model::Eval1_alt(double x, double i, double k) { * For the sea ( and gluons later ) * */ -void GK16Model::calculateEtCoefs() { +void GPDGK16::calculateEtCoefs() { int slow_val = 0; // if = 1 : slow ( full calculation with cln ) // For valence @@ -1534,7 +1532,7 @@ void GK16Model::calculateEtCoefs() { * Compute t-dependence of GPD Et correlated to x. * */ -void GK16Model::calculateEtKas() { +void GPDGK16::calculateEtKas() { double alpha, delta; // gluons, not modelled by GK. @@ -1562,7 +1560,7 @@ void GK16Model::calculateEtKas() { * Pion pole contribution to Et. * */ -double GK16Model::Et_pole(double x) { +double GPDGK16::Et_pole(double x) { //TODO extraire les constantes si existantes @@ -1619,7 +1617,7 @@ double GK16Model::Et_pole(double x) { * end if: end if: * */ -double GK16Model::Etval1(double x, double i, double k) { +double GPDGK16::Etval1(double x, double i, double k) { double dum; if ((x + m_xi) < 0) { // 0 for x < -pGPDData->getXi() @@ -1655,234 +1653,234 @@ double GK16Model::Etval1(double x, double i, double k) { * Exactly the same as Hval1_alt and Eval1_alt, Htval1_alt. * */ -double GK16Model::Etval1_alt(double x, double i, double k) { +double GPDGK16::Etval1_alt(double x, double i, double k) { return Hval1_alt(x, i, k); } -double GK16Model::getB0() const { +double GPDGK16::getB0() const { return b0; } -double GK16Model::getC1() const { +double GPDGK16::getC1() const { return c1; } -double GK16Model::getC2() const { +double GPDGK16::getC2() const { return c2; } -double GK16Model::getC3() const { +double GPDGK16::getC3() const { return c3; } -double GK16Model::getC4() const { +double GPDGK16::getC4() const { return c4; } -double GK16Model::getC5() const { +double GPDGK16::getC5() const { return c5; } -double GK16Model::getC6() const { +double GPDGK16::getC6() const { return c6; } -double GK16Model::getC7() const { +double GPDGK16::getC7() const { return c7; } -double GK16Model::getC8() const { +double GPDGK16::getC8() const { return c8; } -const std::vector& GK16Model::getEdval1mtab() const { +const std::vector& GPDGK16::getEdval1mtab() const { return Edval1mtab; } -const std::vector& GK16Model::getEdval1tab() const { +const std::vector& GPDGK16::getEdval1tab() const { return Edval1tab; } -const std::vector& GK16Model::getEi1tab() const { +const std::vector& GPDGK16::getEi1tab() const { return Ei1tab; } -const std::vector& GK16Model::getEs1tab() const { +const std::vector& GPDGK16::getEs1tab() const { return Es1tab; } -const std::vector& GK16Model::getEtdval1mtab() const { +const std::vector& GPDGK16::getEtdval1mtab() const { return Etdval1mtab; } -const std::vector& GK16Model::getEtdval1tab() const { +const std::vector& GPDGK16::getEtdval1tab() const { return Etdval1tab; } -const std::vector& GK16Model::getEtuval1mtab() const { +const std::vector& GPDGK16::getEtuval1mtab() const { return Etuval1mtab; } -const std::vector& GK16Model::getEtuval1tab() const { +const std::vector& GPDGK16::getEtuval1tab() const { return Etuval1tab; } -const std::vector& GK16Model::getEuval1mtab() const { +const std::vector& GPDGK16::getEuval1mtab() const { return Euval1mtab; } -const std::vector& GK16Model::getEuval1tab() const { +const std::vector& GPDGK16::getEuval1tab() const { return Euval1tab; } -double GK16Model::getEdValMx() const { +double GPDGK16::getEdValMx() const { return fEdValMx; } -double GK16Model::getEtdValMx() const { +double GPDGK16::getEtdValMx() const { return fEtdValMx; } -double GK16Model::getEtuValMx() const { +double GPDGK16::getEtuValMx() const { return fEtuValMx; } -double GK16Model::getEuValMx() const { +double GPDGK16::getEuValMx() const { return fEuValMx; } -double GK16Model::getHdValMx() const { +double GPDGK16::getHdValMx() const { return fHdValMx; } -double GK16Model::getHtdValMx() const { +double GPDGK16::getHtdValMx() const { return fHtdValMx; } -double GK16Model::getHtuValMx() const { +double GPDGK16::getHtuValMx() const { return fHtuValMx; } -double GK16Model::getHuValMx() const { +double GPDGK16::getHuValMx() const { return fHuValMx; } -double GK16Model::getL() const { +double GPDGK16::getL() const { return fL; } -const std::vector& GK16Model::getHdval1mtab() const { +const std::vector& GPDGK16::getHdval1mtab() const { return Hdval1mtab; } -const std::vector& GK16Model::getHdval1tab() const { +const std::vector& GPDGK16::getHdval1tab() const { return Hdval1tab; } -const std::vector& GK16Model::getHi1tab() const { +const std::vector& GPDGK16::getHi1tab() const { return Hi1tab; } -const std::vector& GK16Model::getHs1tab() const { +const std::vector& GPDGK16::getHs1tab() const { return Hs1tab; } -const std::vector& GK16Model::getHtdval1mtab() const { +const std::vector& GPDGK16::getHtdval1mtab() const { return Htdval1mtab; } -const std::vector& GK16Model::getHtdval1tab() const { +const std::vector& GPDGK16::getHtdval1tab() const { return Htdval1tab; } -const std::vector& GK16Model::getHti1tab() const { +const std::vector& GPDGK16::getHti1tab() const { return Hti1tab; } -const std::vector& GK16Model::getHtuval1mtab() const { +const std::vector& GPDGK16::getHtuval1mtab() const { return Htuval1mtab; } -const std::vector& GK16Model::getHtuval1tab() const { +const std::vector& GPDGK16::getHtuval1tab() const { return Htuval1tab; } -const std::vector& GK16Model::getHuval1mtab() const { +const std::vector& GPDGK16::getHuval1mtab() const { return Huval1mtab; } -const std::vector& GK16Model::getHuval1tab() const { +const std::vector& GPDGK16::getHuval1tab() const { return Huval1tab; } -double GK16Model::getKappaS() const { +double GPDGK16::getKappaS() const { return kappa_s; } -double GK16Model::getEdval() const { +double GPDGK16::getEdval() const { return kEdval; } -double GK16Model::getEgluon() const { +double GPDGK16::getEgluon() const { return kEgluon; } -double GK16Model::getEsea() const { +double GPDGK16::getEsea() const { return kEsea; } -double GK16Model::getEtdval() const { +double GPDGK16::getEtdval() const { return kEtdval; } -double GK16Model::getEtgluon() const { +double GPDGK16::getEtgluon() const { return kEtgluon; } -double GK16Model::getEtsea() const { +double GPDGK16::getEtsea() const { return kEtsea; } -double GK16Model::getEtuval() const { +double GPDGK16::getEtuval() const { return kEtuval; } -double GK16Model::getEuval() const { +double GPDGK16::getEuval() const { return kEuval; } -double GK16Model::getHdval() const { +double GPDGK16::getHdval() const { return kHdval; } -double GK16Model::getHgluon() const { +double GPDGK16::getHgluon() const { return kHgluon; } -double GK16Model::getHsea() const { +double GPDGK16::getHsea() const { return kHsea; } -double GK16Model::getHtdval() const { +double GPDGK16::getHtdval() const { return kHtdval; } -double GK16Model::getHtgluon() const { +double GPDGK16::getHtgluon() const { return kHtgluon; } -double GK16Model::getHtsea() const { +double GPDGK16::getHtsea() const { return kHtsea; } -double GK16Model::getHtuval() const { +double GPDGK16::getHtuval() const { return kHtuval; } -double GK16Model::getHuval() const { +double GPDGK16::getHuval() const { return kHuval; } -std::string GK16Model::toString() const { +std::string GPDGK16::toString() const { return GPDModule::toString(); } diff --git a/src/partons/modules/gpd/GK16NumericalModel.cpp b/src/partons/modules/gpd/GPDGK16Numerical.cpp similarity index 85% rename from src/partons/modules/gpd/GK16NumericalModel.cpp rename to src/partons/modules/gpd/GPDGK16Numerical.cpp index 3644838f3009691ac66497f52ad2787683589e85..e24469e4781f7e0e8c97beda21c01f36c8efd721 100644 --- a/src/partons/modules/gpd/GK16NumericalModel.cpp +++ b/src/partons/modules/gpd/GPDGK16Numerical.cpp @@ -1,30 +1,27 @@ +#include "../../../../include/partons/modules/gpd/GPDGK16Numerical.h" + #include -#include #include +#include #include #include #include #include -#include #include -#include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" #include "../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../include/partons/modules/gpd/GK16NumericalModel.h" -// Initialise [class]::classId with a unique name. -const unsigned int GK16NumericalModel::classId = +const unsigned int GPDGK16Numerical::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new GK16NumericalModel("GK11TestModel")); + new GPDGK16Numerical("GPDGK16Numerical")); //TODO initialise missing members -GK16NumericalModel::GK16NumericalModel(const std::string &className) : +GPDGK16Numerical::GPDGK16Numerical(const std::string &className) : GPDModule(className), MathIntegratorModule() { fL = 0.; m_MuF2_ref = 4.; @@ -41,7 +38,7 @@ GK16NumericalModel::GK16NumericalModel(const std::string &className) : initFunctorsForIntegrations(); } -GK16NumericalModel::GK16NumericalModel(const GK16NumericalModel& other) : +GPDGK16Numerical::GPDGK16Numerical(const GPDGK16Numerical& other) : GPDModule(other), MathIntegratorModule(other) { c1 = other.c1; c2 = other.c2; @@ -55,29 +52,30 @@ GK16NumericalModel::GK16NumericalModel(const GK16NumericalModel& other) : kappa_s = other.kappa_s; fL = other.fL; + MathIntegratorModule(); initFunctorsForIntegrations(); } -GK16NumericalModel* GK16NumericalModel::clone() const { - return new GK16NumericalModel(*this); +GPDGK16Numerical* GPDGK16Numerical::clone() const { + return new GPDGK16Numerical(*this); } -GK16NumericalModel::~GK16NumericalModel() { +GPDGK16Numerical::~GPDGK16Numerical() { } -void GK16NumericalModel::configure(const ElemUtils::Parameters ¶meters) { +void GPDGK16Numerical::configure(const ElemUtils::Parameters ¶meters) { GPDModule::configure(parameters); MathIntegratorModule::configureIntegrator(parameters); } //TODO implement -void GK16NumericalModel::isModuleWellConfigured() { +void GPDGK16Numerical::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void GK16NumericalModel::initModule() { +void GPDGK16Numerical::initModule() { GPDModule::initModule(); fL = log(m_MuF2 / m_MuF2_ref); // Logarithmic dependence on the scale @@ -86,131 +84,131 @@ void GK16NumericalModel::initModule() { ElemUtils::Formatter() << "fMuF2 = " << fMuF2 << " fL = " << fL);*/ } -void GK16NumericalModel::initFunctorsForIntegrations() { +void GPDGK16Numerical::initFunctorsForIntegrations() { setIntegrator(NumA::IntegratorType1D::DEXP); //Integrators for H m_pIntegralHuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHuVal); + &GPDGK16Numerical::IntegralHuVal); m_pIntegralHdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHdVal); + &GPDGK16Numerical::IntegralHdVal); m_pIntegralHuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHuValMx); + &GPDGK16Numerical::IntegralHuValMx); m_pIntegralHdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHdValMx); + &GPDGK16Numerical::IntegralHdValMx); m_pIntegralxLargeHsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHsSea); + &GPDGK16Numerical::IntegralxLargeHsSea); m_pIntegralxSmallHsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmallHsSea); + &GPDGK16Numerical::IntegralxSmallHsSea); m_pIntegralxSmall1HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall1HsSea); + &GPDGK16Numerical::IntegralxSmall1HsSea); m_pIntegralxSmall2HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall2HsSea); + &GPDGK16Numerical::IntegralxSmall2HsSea); m_pIntegralxLargeHsSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHsSeaMx); + &GPDGK16Numerical::IntegralxLargeHsSeaMx); m_pIntegralxLargeHg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHg); + &GPDGK16Numerical::IntegralxLargeHg); m_pIntegralxSmall1Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall1Hg); + &GPDGK16Numerical::IntegralxSmall1Hg); m_pIntegralxSmall2Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall2Hg); + &GPDGK16Numerical::IntegralxSmall2Hg); m_pIntegralxLargeHgMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHgMx); + &GPDGK16Numerical::IntegralxLargeHgMx); //integrators for Ht m_pIntegralHtuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHtuVal); + &GPDGK16Numerical::IntegralHtuVal); m_pIntegralHtdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHtdVal); + &GPDGK16Numerical::IntegralHtdVal); m_pIntegralHtuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHtuValMx); + &GPDGK16Numerical::IntegralHtuValMx); m_pIntegralHtdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralHtdValMx); + &GPDGK16Numerical::IntegralHtdValMx); m_pIntegralxLargeHtg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHtg); + &GPDGK16Numerical::IntegralxLargeHtg); m_pIntegralxSmall1Htg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall1Htg); + &GPDGK16Numerical::IntegralxSmall1Htg); m_pIntegralxSmall2Htg = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall2Htg); + &GPDGK16Numerical::IntegralxSmall2Htg); m_pIntegralxLargeHtgMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeHtgMx); + &GPDGK16Numerical::IntegralxLargeHtgMx); //integrators for E m_pIntegralEuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEuVal); + &GPDGK16Numerical::IntegralEuVal); m_pIntegralEdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEdVal); + &GPDGK16Numerical::IntegralEdVal); m_pIntegralEuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEuValMx); + &GPDGK16Numerical::IntegralEuValMx); m_pIntegralEdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEdValMx); + &GPDGK16Numerical::IntegralEdValMx); m_pIntegralxLargeEsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeEsSea); + &GPDGK16Numerical::IntegralxLargeEsSea); m_pIntegralxLargeEsSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeEsSeaMx); + &GPDGK16Numerical::IntegralxLargeEsSeaMx); m_pIntegralxSmallEsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmallEsSea); + &GPDGK16Numerical::IntegralxSmallEsSea); m_pIntegralxSmall1EsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall1EsSea); + &GPDGK16Numerical::IntegralxSmall1EsSea); m_pIntegralxSmall2EsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall2EsSea); + &GPDGK16Numerical::IntegralxSmall2EsSea); m_pIntegralxLargeEgSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeEgSea); + &GPDGK16Numerical::IntegralxLargeEgSea); m_pIntegralxLargeEgSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxLargeEgSeaMx); + &GPDGK16Numerical::IntegralxLargeEgSeaMx); m_pIntegralxSmall1EgSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall1EgSea); + &GPDGK16Numerical::IntegralxSmall1EgSea); m_pIntegralxSmall2EgSea = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralxSmall2EgSea); + &GPDGK16Numerical::IntegralxSmall2EgSea); //integrators for Et m_pIntegralEtuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEtuVal); + &GPDGK16Numerical::IntegralEtuVal); m_pIntegralEtdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEtdVal); + &GPDGK16Numerical::IntegralEtdVal); m_pIntegralEtuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEtuValMx); + &GPDGK16Numerical::IntegralEtuValMx); m_pIntegralEtdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &GK16NumericalModel::IntegralEtdValMx); + &GPDGK16Numerical::IntegralEtdValMx); } -void GK16NumericalModel::throwBetaException(const std::string &funcName, +void GPDGK16Numerical::throwBetaException(const std::string &funcName, double betaValue) { throw ElemUtils::CustomException(getClassName(), funcName, ElemUtils::Formatter() @@ -218,7 +216,7 @@ void GK16NumericalModel::throwBetaException(const std::string &funcName, << '\n' << "Here beta = " << betaValue << '\n'); } //Profile function -double GK16NumericalModel::Profile(double N, double beta, double alpha) { +double GPDGK16Numerical::Profile(double N, double beta, double alpha) { double profile = 0.; double ProfileShape = N; double TwiceProfileShapePlus1 = 2. * ProfileShape + 1; @@ -247,20 +245,20 @@ double GK16NumericalModel::Profile(double N, double beta, double alpha) { return profile; } //forward limit ansatz for H -double GK16NumericalModel::GKPdfAnsatz(double N, double beta, double* coeff) { +double GPDGK16Numerical::GKPdfAnsatz(double N, double beta, double* coeff) { return pow(beta, -coeff[4]) * pow((1. - beta), 2 * N + 1) * (coeff[0] + coeff[1] * sqrt(beta) + coeff[2] * beta + coeff[3] * beta * sqrt(beta)); } //Forward limit ansatz for Ht -double GK16NumericalModel::GKPdfAnsatz_t(double N, double beta, double* coeff) { +double GPDGK16Numerical::GKPdfAnsatz_t(double N, double beta, double* coeff) { // as in arXiv:1210.6975v3 pag 9 return pow(beta, -coeff[4]) * pow((1. - beta), 2 * N + 1) * (coeff[0] + coeff[1] * beta + coeff[2] * beta * beta) * coeff[3]; } -double GK16NumericalModel::GKPdfAnsatz_tg(double N, double beta, double* coeff) { +double GPDGK16Numerical::GKPdfAnsatz_tg(double N, double beta, double* coeff) { // as in arXiv:1210.6975v3 pag 9 return pow(beta, -coeff[4]) * pow((1. - beta), 2 * N + 1) @@ -268,7 +266,7 @@ double GK16NumericalModel::GKPdfAnsatz_tg(double N, double beta, double* coeff) } //DD for H -double GK16NumericalModel::GKtDependentsDD(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentsDD(double beta, double alpha) { double absbeta = fabs(beta); /* if (beta <= 0 || beta > 1.) { throwBetaException(__func__, x); @@ -285,7 +283,7 @@ double GK16NumericalModel::GKtDependentsDD(double beta, double alpha) { return exp(b0 * m_t) * pow(absbeta, -alphaP * m_t) * GKPdfAnsatz(2, absbeta, coeff) * Profile(2, beta, alpha); } -double GK16NumericalModel::GKtDependentuValDD(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentuValDD(double beta, double alpha) { double absbeta = fabs(beta); double uValDD; /* if (beta <= 0 || beta > 1.) { @@ -309,7 +307,7 @@ double GK16NumericalModel::GKtDependentuValDD(double beta, double alpha) { return uValDD; } -double GK16NumericalModel::GKtDependentdValDD(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentdValDD(double beta, double alpha) { double absbeta = fabs(beta); double dValDD; /* if (beta <= 0 || beta > 1.) { @@ -334,7 +332,7 @@ double GK16NumericalModel::GKtDependentdValDD(double beta, double alpha) { return dValDD; } -double GK16NumericalModel::GKtDependentgDD(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentgDD(double beta, double alpha) { double absbeta = fabs(beta); /* if (beta <= 0 || beta > 1.) { throwBetaException(__func__, x); @@ -353,7 +351,7 @@ double GK16NumericalModel::GKtDependentgDD(double beta, double alpha) { * GKPdfAnsatz(2, absbeta, coeff) * Profile(2, beta, alpha); } -double GK16NumericalModel::GKtDependentuDD_t(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentuDD_t(double beta, double alpha) { double absbeta = fabs(beta); /* if (beta <= 0 || beta > 1.) { throwBetaException(__func__, x); @@ -383,7 +381,7 @@ double GK16NumericalModel::GKtDependentuDD_t(double beta, double alpha) { } //DD for Ht -double GK16NumericalModel::GKtDependentdDD_t(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentdDD_t(double beta, double alpha) { double absbeta = fabs(beta); /* if (beta <= 0 || beta > 1.) { throwBetaException(__func__, x); @@ -410,7 +408,7 @@ double GK16NumericalModel::GKtDependentdDD_t(double beta, double alpha) { } -double GK16NumericalModel::GKtDependentHtgDD(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentHtgDD(double beta, double alpha) { double absbeta = fabs(beta); @@ -432,7 +430,7 @@ double GK16NumericalModel::GKtDependentHtgDD(double beta, double alpha) { } //DD for E -double GK16NumericalModel::GKtDependentDD_EuVal(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_EuVal(double beta, double alpha) { double absbeta = fabs(beta); double EuVal; @@ -454,7 +452,7 @@ double GK16NumericalModel::GKtDependentDD_EuVal(double beta, double alpha) { } -double GK16NumericalModel::GKtDependentDD_EdVal(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_EdVal(double beta, double alpha) { double absbeta = fabs(beta); double EdVal; @@ -476,7 +474,7 @@ double GK16NumericalModel::GKtDependentDD_EdVal(double beta, double alpha) { } -double GK16NumericalModel::GKtDependentDD_Es(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_Es(double beta, double alpha) { double absbeta = fabs(beta); double Es; double betas = 7; @@ -493,7 +491,7 @@ double GK16NumericalModel::GKtDependentDD_Es(double beta, double alpha) { } -double GK16NumericalModel::GKtDependentDD_Eg(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_Eg(double beta, double alpha) { double absbeta = fabs(beta); double Eg; double betag = 6; @@ -510,7 +508,7 @@ double GK16NumericalModel::GKtDependentDD_Eg(double beta, double alpha) { } //DDs for Et -double GK16NumericalModel::GKtDependentDD_EtuVal(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_EtuVal(double beta, double alpha) { double absbeta = fabs(beta); double EtuVal; double N = 14; @@ -530,7 +528,7 @@ double GK16NumericalModel::GKtDependentDD_EtuVal(double beta, double alpha) { } -double GK16NumericalModel::GKtDependentDD_EtdVal(double beta, double alpha) { +double GPDGK16Numerical::GKtDependentDD_EtdVal(double beta, double alpha) { double absbeta = fabs(beta); double EduVal; double N = 4; @@ -550,7 +548,7 @@ double GK16NumericalModel::GKtDependentDD_EtdVal(double beta, double alpha) { } //Integrals for GPD Et -double GK16NumericalModel::IntegralEtuVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEtuVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -561,7 +559,7 @@ double GK16NumericalModel::IntegralEtuVal(double beta, std::vector Par) } -double GK16NumericalModel::IntegralEtdVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEtdVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -572,7 +570,7 @@ double GK16NumericalModel::IntegralEtdVal(double beta, std::vector Par) } -double GK16NumericalModel::IntegralEtuValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEtuValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -583,7 +581,7 @@ double GK16NumericalModel::IntegralEtuValMx(double beta, std::vector Par } -double GK16NumericalModel::IntegralEtdValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEtdValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -595,7 +593,7 @@ double GK16NumericalModel::IntegralEtdValMx(double beta, std::vector Par } //Integrals for GPD E -double GK16NumericalModel::IntegralEuVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEuVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -606,7 +604,7 @@ double GK16NumericalModel::IntegralEuVal(double beta, std::vector Par) { } -double GK16NumericalModel::IntegralEdVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEdVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -617,7 +615,7 @@ double GK16NumericalModel::IntegralEdVal(double beta, std::vector Par) { } -double GK16NumericalModel::IntegralEuValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEuValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -628,7 +626,7 @@ double GK16NumericalModel::IntegralEuValMx(double beta, std::vector Par) } -double GK16NumericalModel::IntegralEdValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralEdValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -639,7 +637,7 @@ double GK16NumericalModel::IntegralEdValMx(double beta, std::vector Par) } -double GK16NumericalModel::IntegralxLargeEsSea(double beta, +double GPDGK16Numerical::IntegralxLargeEsSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -650,7 +648,7 @@ double GK16NumericalModel::IntegralxLargeEsSea(double beta, return GKtDependentDD_Es(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeEsSeaMx(double beta, +double GPDGK16Numerical::IntegralxLargeEsSeaMx(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; @@ -661,13 +659,13 @@ double GK16NumericalModel::IntegralxLargeEsSeaMx(double beta, return GKtDependentDD_Es(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmallEsSea(double beta, +double GPDGK16Numerical::IntegralxSmallEsSea(double beta, std::vector Par) { return (GKtDependentDD_Es(beta, (m_x - beta) / m_xi) - GKtDependentDD_Es(beta, (m_x + beta) / m_xi)) / m_xi; } -double GK16NumericalModel::IntegralxSmall1EsSea(double beta, +double GPDGK16Numerical::IntegralxSmall1EsSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -678,7 +676,7 @@ double GK16NumericalModel::IntegralxSmall1EsSea(double beta, return GKtDependentDD_Es(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall2EsSea(double beta, +double GPDGK16Numerical::IntegralxSmall2EsSea(double beta, std::vector Par) { double Integral; @@ -689,7 +687,7 @@ double GK16NumericalModel::IntegralxSmall2EsSea(double beta, return GKtDependentDD_Es(beta, (m_x + beta) / m_xi) / m_xi; } -double GK16NumericalModel::IntegralxLargeEgSea(double beta, +double GPDGK16Numerical::IntegralxLargeEgSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -700,7 +698,7 @@ double GK16NumericalModel::IntegralxLargeEgSea(double beta, return GKtDependentDD_Eg(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeEgSeaMx(double beta, +double GPDGK16Numerical::IntegralxLargeEgSeaMx(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; @@ -711,7 +709,7 @@ double GK16NumericalModel::IntegralxLargeEgSeaMx(double beta, return GKtDependentDD_Eg(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall1EgSea(double beta, +double GPDGK16Numerical::IntegralxSmall1EgSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -722,7 +720,7 @@ double GK16NumericalModel::IntegralxSmall1EgSea(double beta, return GKtDependentDD_Eg(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall2EgSea(double beta, +double GPDGK16Numerical::IntegralxSmall2EgSea(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; @@ -734,7 +732,7 @@ double GK16NumericalModel::IntegralxSmall2EgSea(double beta, } //inetgrals for H -double GK16NumericalModel::IntegralHuVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHuVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -745,7 +743,7 @@ double GK16NumericalModel::IntegralHuVal(double beta, std::vector Par) { } -double GK16NumericalModel::IntegralHuValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHuValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -755,7 +753,7 @@ double GK16NumericalModel::IntegralHuValMx(double beta, std::vector Par) return GKtDependentuValDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralHdVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHdVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -765,7 +763,7 @@ double GK16NumericalModel::IntegralHdVal(double beta, std::vector Par) { return GKtDependentdValDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralHdValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHdValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -775,7 +773,7 @@ double GK16NumericalModel::IntegralHdValMx(double beta, std::vector Par) return GKtDependentdValDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeHg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxLargeHg(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -785,7 +783,7 @@ double GK16NumericalModel::IntegralxLargeHg(double beta, std::vector Par return beta * GKtDependentgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeHgMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxLargeHgMx(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -795,7 +793,7 @@ double GK16NumericalModel::IntegralxLargeHgMx(double beta, std::vector P return beta * GKtDependentgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall1Hg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxSmall1Hg(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -805,7 +803,7 @@ double GK16NumericalModel::IntegralxSmall1Hg(double beta, std::vector Pa return beta * GKtDependentgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall2Hg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxSmall2Hg(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -815,7 +813,7 @@ double GK16NumericalModel::IntegralxSmall2Hg(double beta, std::vector Pa return beta * GKtDependentgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeHsSea(double beta, +double GPDGK16Numerical::IntegralxLargeHsSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -826,7 +824,7 @@ double GK16NumericalModel::IntegralxLargeHsSea(double beta, return GKtDependentsDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeHsSeaMx(double beta, +double GPDGK16Numerical::IntegralxLargeHsSeaMx(double beta, std::vector Par) { double alpha = (m_x + beta) / m_xi; @@ -837,13 +835,13 @@ double GK16NumericalModel::IntegralxLargeHsSeaMx(double beta, return GKtDependentsDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmallHsSea(double beta, +double GPDGK16Numerical::IntegralxSmallHsSea(double beta, std::vector Par) { return (GKtDependentsDD(beta, (m_x - beta) / m_xi) - GKtDependentsDD(beta, (m_x + beta) / m_xi)) / m_xi; } -double GK16NumericalModel::IntegralxSmall1HsSea(double beta, +double GPDGK16Numerical::IntegralxSmall1HsSea(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; @@ -854,7 +852,7 @@ double GK16NumericalModel::IntegralxSmall1HsSea(double beta, return GKtDependentsDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall2HsSea(double beta, +double GPDGK16Numerical::IntegralxSmall2HsSea(double beta, std::vector Par) { double Integral; @@ -866,7 +864,7 @@ double GK16NumericalModel::IntegralxSmall2HsSea(double beta, } //Integrals for Ht -double GK16NumericalModel::IntegralHtuVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHtuVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -877,7 +875,7 @@ double GK16NumericalModel::IntegralHtuVal(double beta, std::vector Par) } -double GK16NumericalModel::IntegralHtdVal(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHtdVal(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -888,7 +886,7 @@ double GK16NumericalModel::IntegralHtdVal(double beta, std::vector Par) } -double GK16NumericalModel::IntegralHtuValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHtuValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -899,7 +897,7 @@ double GK16NumericalModel::IntegralHtuValMx(double beta, std::vector Par } -double GK16NumericalModel::IntegralHtdValMx(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralHtdValMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -910,7 +908,7 @@ double GK16NumericalModel::IntegralHtdValMx(double beta, std::vector Par } -double GK16NumericalModel::IntegralxLargeHtg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxLargeHtg(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -920,7 +918,7 @@ double GK16NumericalModel::IntegralxLargeHtg(double beta, std::vector Pa return GKtDependentHtgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxLargeHtgMx(double beta, +double GPDGK16Numerical::IntegralxLargeHtgMx(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; @@ -931,7 +929,7 @@ double GK16NumericalModel::IntegralxLargeHtgMx(double beta, return GKtDependentHtgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall1Htg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxSmall1Htg(double beta, std::vector Par) { double alpha = (m_x - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -941,7 +939,7 @@ double GK16NumericalModel::IntegralxSmall1Htg(double beta, std::vector P return GKtDependentHtgDD(beta, alpha) / m_xi; } -double GK16NumericalModel::IntegralxSmall2Htg(double beta, std::vector Par) { +double GPDGK16Numerical::IntegralxSmall2Htg(double beta, std::vector Par) { double alpha = (m_Mx - beta) / m_xi; if (beta <= 0 || beta > 1.) { @@ -951,7 +949,7 @@ double GK16NumericalModel::IntegralxSmall2Htg(double beta, std::vector P return GKtDependentHtgDD(beta, alpha) / m_xi; } -PartonDistribution GK16NumericalModel::computeH() { +PartonDistribution GPDGK16Numerical::computeH() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -1095,7 +1093,7 @@ PartonDistribution GK16NumericalModel::computeH() { return partonDistribution; } -PartonDistribution GK16NumericalModel::computeHt() { +PartonDistribution GPDGK16Numerical::computeHt() { debug(__func__, "Entered function ..."); @@ -1231,7 +1229,7 @@ PartonDistribution GK16NumericalModel::computeHt() { return partonDistribution; } -PartonDistribution GK16NumericalModel::computeE() { +PartonDistribution GPDGK16Numerical::computeE() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -1377,7 +1375,7 @@ PartonDistribution GK16NumericalModel::computeE() { return partonDistribution; } -PartonDistribution GK16NumericalModel::computeEt() { +PartonDistribution GPDGK16Numerical::computeEt() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); @@ -1491,7 +1489,7 @@ PartonDistribution GK16NumericalModel::computeEt() { return partonDistribution; } -double GK16NumericalModel::Et_pole(double x) { +double GPDGK16Numerical::Et_pole(double x) { //TODO extraire les constantes si existantes @@ -1532,6 +1530,6 @@ double GK16NumericalModel::Et_pole(double x) { return dum; } -std::string GK16NumericalModel::toString() const { +std::string GPDGK16Numerical::toString() const { return GPDModule::toString(); } diff --git a/src/partons/modules/gpd/MMS13Model.cpp b/src/partons/modules/gpd/GPDMMS13.cpp similarity index 83% rename from src/partons/modules/gpd/MMS13Model.cpp rename to src/partons/modules/gpd/GPDMMS13.cpp index 410295a926f4e4860fe9d690e56ff52a373a34bf..025f8cf1856886c5c6cd2ed5d034ba9aaa5f6b26 100644 --- a/src/partons/modules/gpd/MMS13Model.cpp +++ b/src/partons/modules/gpd/GPDMMS13.cpp @@ -1,4 +1,4 @@ -#include "../../../../include/partons/modules/gpd/MMS13Model.h" +#include "../../../../include/partons/modules/gpd/GPDMMS13.h" #include #include @@ -9,27 +9,25 @@ #include #include #include -#include #include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/BaseObjectRegistry.h" #include "../../../../include/partons/FundamentalPhysicalConstants.h" #include "../../../../include/partons/utils/MSTWPDF.h" #include "../../../../include/partons/utils/PartonContent.h" -const unsigned int MMS13Model::classId = +const unsigned int GPDMMS13::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new MMS13Model("MMS13Model")); + new GPDMMS13("GPDMMS13")); -const std::string MMS13Model::PARAMETER_NAME_MMS13MODEL_NHpE = "MMS13Model_NHpE"; -const std::string MMS13Model::PARAMETER_NAME_MMS13MODEL_NE = "MMS13Model_NE"; -const std::string MMS13Model::PARAMETER_NAME_MMS13MODEL_C = "MMS13Model_C"; +const std::string GPDMMS13::PARAMETER_NAME_MMS13MODEL_NHpE = "MMS13Model_NHpE"; +const std::string GPDMMS13::PARAMETER_NAME_MMS13MODEL_NE = "MMS13Model_NE"; +const std::string GPDMMS13::PARAMETER_NAME_MMS13MODEL_C = "MMS13Model_C"; -MMS13Model::MMS13Model(const std::string &className) : +GPDMMS13::GPDMMS13(const std::string &className) : GPDModule(className), MathIntegratorModule(), m_pForward(0) { m_NE = 1; @@ -45,7 +43,7 @@ MMS13Model::MMS13Model(const std::string &className) : initFunctorsForIntegrations(); } -MMS13Model::MMS13Model(const MMS13Model& other) : +GPDMMS13::GPDMMS13(const GPDMMS13& other) : GPDModule(other), MathIntegratorModule(other) { m_NE = other.m_NE; @@ -61,7 +59,7 @@ MMS13Model::MMS13Model(const MMS13Model& other) : initFunctorsForIntegrations(); } -MMS13Model::~MMS13Model() { +GPDMMS13::~GPDMMS13() { if (m_pForward) { delete m_pForward; @@ -69,60 +67,60 @@ MMS13Model::~MMS13Model() { } } -void MMS13Model::initFunctorsForIntegrations() { +void GPDMMS13::initFunctorsForIntegrations() { m_pint_IntHpEDDval = NumA::Integrator1D::newIntegrationFunctor(this, - &MMS13Model::IntHpEDDval); + &GPDMMS13::IntHpEDDval); m_pint_IntEvalPlusAB = NumA::Integrator1D::newIntegrationFunctor(this, - &MMS13Model::IntEvalPlusAB); + &GPDMMS13::IntEvalPlusAB); m_pint_IntEvalPlusA = NumA::Integrator1D::newIntegrationFunctor(this, - &MMS13Model::IntEvalPlusA); + &GPDMMS13::IntEvalPlusA); m_pint_IntEvalPlusB = NumA::Integrator1D::newIntegrationFunctor(this, - &MMS13Model::IntEvalPlusB); + &GPDMMS13::IntEvalPlusB); } -MMS13Model* MMS13Model::clone() const { - return new MMS13Model(*this); +GPDMMS13* GPDMMS13::clone() const { + return new GPDMMS13(*this); } //TODO clone MSTWPDF instead of hardcoded new -void MMS13Model::resolveObjectDependencies() { +void GPDMMS13::resolveObjectDependencies() { setIntegrator(NumA::IntegratorType1D::DEXP); } -void MMS13Model::configure(const ElemUtils::Parameters ¶meters) { +void GPDMMS13::configure(const ElemUtils::Parameters ¶meters) { GPDModule::configure(parameters); MathIntegratorModule::configureIntegrator(parameters); - if (parameters.isAvailable(MMS13Model::PARAMETER_NAME_MMS13MODEL_NHpE)) { + if (parameters.isAvailable(GPDMMS13::PARAMETER_NAME_MMS13MODEL_NHpE)) { m_NHpE = parameters.getLastAvailable().toInt(); } - if (parameters.isAvailable(MMS13Model::PARAMETER_NAME_MMS13MODEL_NE)) { + if (parameters.isAvailable(GPDMMS13::PARAMETER_NAME_MMS13MODEL_NE)) { m_NE = parameters.getLastAvailable().toInt(); } - if (parameters.isAvailable(MMS13Model::PARAMETER_NAME_MMS13MODEL_C)) { + if (parameters.isAvailable(GPDMMS13::PARAMETER_NAME_MMS13MODEL_C)) { m_C = parameters.getLastAvailable().toDouble(); } } -std::string MMS13Model::toString() const { +std::string GPDMMS13::toString() const { return GPDModule::toString(); } -void MMS13Model::isModuleWellConfigured() { +void GPDMMS13::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void MMS13Model::initModule() { +void GPDMMS13::initModule() { GPDModule::initModule(); } -PartonDistribution MMS13Model::computeH() { +PartonDistribution GPDMMS13::computeH() { //variables double uVal, uSea, dVal, dSea, sSea, g; @@ -179,7 +177,7 @@ PartonDistribution MMS13Model::computeH() { } -PartonDistribution MMS13Model::computeE() { +PartonDistribution GPDMMS13::computeE() { //variables double uVal, uSea, dVal, dSea, sSea, g; @@ -231,7 +229,7 @@ PartonDistribution MMS13Model::computeE() { return partonDistribution; } -double MMS13Model::forwardHval(double beta, QuarkFlavor::Type flavor) const { +double GPDMMS13::forwardHval(double beta, QuarkFlavor::Type flavor) const { //check x if (beta <= 0.) { @@ -279,7 +277,7 @@ double MMS13Model::forwardHval(double beta, QuarkFlavor::Type flavor) const { return 0.; } -double MMS13Model::forwardEval(double beta, QuarkFlavor::Type flavor) const { +double GPDMMS13::forwardEval(double beta, QuarkFlavor::Type flavor) const { //check x if (beta <= 0.) { @@ -332,18 +330,18 @@ double MMS13Model::forwardEval(double beta, QuarkFlavor::Type flavor) const { return 0.; } -double MMS13Model::forwardEvalFunction(double beta, double kappa, double nu, +double GPDMMS13::forwardEvalFunction(double beta, double kappa, double nu, double mu) const { return kappa * pow(beta, -1 * mu) * pow(1. - beta, nu) * tgamma(2. - mu + nu) / tgamma(1. - mu) / tgamma(1. + nu); } -double MMS13Model::profileFunction(double beta, double alpha, int N) { +double GPDMMS13::profileFunction(double beta, double alpha, int N) { return tgamma(N + 1.5) * pow(pow(1. - fabs(beta), 2) - pow(alpha, 2), N) / tgamma(N + 1) / pow(1. - fabs(beta), 2 * N + 1) / sqrt(Constant::PI); } -double MMS13Model::DTerm(double zeta) const { +double GPDMMS13::DTerm(double zeta) const { if (fabs(zeta) < 1.) { return m_C * zeta * (1. - pow(zeta, 2)); @@ -352,7 +350,7 @@ double MMS13Model::DTerm(double zeta) const { } } -double MMS13Model::HpEDDVal(double x, QuarkFlavor::Type flavor, int N) { +double GPDMMS13::HpEDDVal(double x, QuarkFlavor::Type flavor, int N) { //set parameters std::vector parameters; @@ -378,7 +376,7 @@ double MMS13Model::HpEDDVal(double x, QuarkFlavor::Type flavor, int N) { } } -double MMS13Model::EValPlus(double x, QuarkFlavor::Type flavor, int N) { +double GPDMMS13::EValPlus(double x, QuarkFlavor::Type flavor, int N) { //set parameters std::vector parameters; @@ -419,7 +417,7 @@ double MMS13Model::EValPlus(double x, QuarkFlavor::Type flavor, int N) { } } -double MMS13Model::IntHpEDDval(double beta, std::vector par) { +double GPDMMS13::IntHpEDDval(double beta, std::vector par) { return (1 / m_xi) * (forwardHval(beta, static_cast(int(par[1]))) + forwardEval(beta, @@ -427,7 +425,7 @@ double MMS13Model::IntHpEDDval(double beta, std::vector par) { * profileFunction(beta, (par[0] - beta) / m_xi, int(par[2])); } -double MMS13Model::IntEvalPlusAB(double beta, std::vector par) { +double GPDMMS13::IntEvalPlusAB(double beta, std::vector par) { if (beta == 0) { return 0.; @@ -436,13 +434,13 @@ double MMS13Model::IntEvalPlusAB(double beta, std::vector par) { } } -double MMS13Model::IntEvalPlusA(double beta, std::vector par) { +double GPDMMS13::IntEvalPlusA(double beta, std::vector par) { return (1 / m_xi) * forwardEval(beta, static_cast(int(par[1]))) * profileFunction(beta, (par[0] - beta) / m_xi, int(par[2])) / beta; } -double MMS13Model::IntEvalPlusB(double beta, std::vector par) { +double GPDMMS13::IntEvalPlusB(double beta, std::vector par) { return (1 / m_xi) * forwardEval(beta, static_cast(int(par[1]))) * profileFunction(beta, par[0] / m_xi, int(par[2])) / beta; diff --git a/src/partons/modules/gpd/MPSSW13Model.cpp b/src/partons/modules/gpd/GPDMPSSW13.cpp similarity index 89% rename from src/partons/modules/gpd/MPSSW13Model.cpp rename to src/partons/modules/gpd/GPDMPSSW13.cpp index 2c83a7e92fccb94c9650c9607cc836edb02b6441..e35807795baa11587d08212cda08faa18dd02c98 100644 --- a/src/partons/modules/gpd/MPSSW13Model.cpp +++ b/src/partons/modules/gpd/GPDMPSSW13.cpp @@ -1,4 +1,4 @@ -#include "../../../../include/partons/modules/gpd/MPSSW13Model.h" +#include "../../../../include/partons/modules/gpd/GPDMPSSW13.h" #include #include @@ -7,12 +7,10 @@ #include #include #include -#include #include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" @@ -20,12 +18,11 @@ #include "../../../../include/partons/utils/MSTWPDF.h" #include "../../../../include/partons/utils/PartonContent.h" -// Initialise [class]::classId with a unique name. -const unsigned int MPSSW13Model::classId = +const unsigned int GPDMPSSW13::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new MPSSW13Model("MPSSW13Model")); + new GPDMPSSW13("GPDMPSSW13")); -MPSSW13Model::MPSSW13Model(const std::string &className) : +GPDMPSSW13::GPDMPSSW13(const std::string &className) : GPDModule(className), MathIntegratorModule(), m_Forward(0), m_NbOfQuarkFlavor( 2), m_NbOfColor(3), m_Mx(0.), m_CA(3.), m_CF(4. / 3.), m_TF( 1. / 2.), m_F1u(0.), m_F1d(0.), m_FD(0.), m_ProfileShapeVal(1.), m_ProfileShapeSea( @@ -42,7 +39,7 @@ MPSSW13Model::MPSSW13Model(const std::string &className) : } -MPSSW13Model::MPSSW13Model(const MPSSW13Model& other) : +GPDMPSSW13::GPDMPSSW13(const GPDMPSSW13& other) : GPDModule(other), MathIntegratorModule(other) { m_NbOfQuarkFlavor = other.m_NbOfQuarkFlavor; m_NbOfColor = other.m_NbOfColor; @@ -68,90 +65,90 @@ MPSSW13Model::MPSSW13Model(const MPSSW13Model& other) : initFunctorsForIntegrations(); } -MPSSW13Model::~MPSSW13Model() { +GPDMPSSW13::~GPDMPSSW13() { if (m_Forward) { delete m_Forward; m_Forward = 0; } } -void MPSSW13Model::initFunctorsForIntegrations() { +void GPDMPSSW13::initFunctorsForIntegrations() { m_pIntegralHuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralHuVal); + &GPDMPSSW13::IntegralHuVal); m_pIntegralHdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralHdVal); + &GPDMPSSW13::IntegralHdVal); m_pIntegralHuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralHuValMx); + &GPDMPSSW13::IntegralHuValMx); m_pIntegralHdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralHdValMx); + &GPDMPSSW13::IntegralHdValMx); m_pIntegralxLargeHuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHuSea); + &GPDMPSSW13::IntegralxLargeHuSea); m_pIntegralxLargeHdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHdSea); + &GPDMPSSW13::IntegralxLargeHdSea); m_pIntegralxSmall1HuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall1HuSea); + &GPDMPSSW13::IntegralxSmall1HuSea); m_pIntegralxSmall2HuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall2HuSea); + &GPDMPSSW13::IntegralxSmall2HuSea); m_pIntegralxSmall1HdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall1HdSea); + &GPDMPSSW13::IntegralxSmall1HdSea); m_pIntegralxSmall2HdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall2HdSea); + &GPDMPSSW13::IntegralxSmall2HdSea); m_pIntegralxLargeHuSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHuSeaMx); + &GPDMPSSW13::IntegralxLargeHuSeaMx); m_pIntegralxLargeHdSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHdSeaMx); + &GPDMPSSW13::IntegralxLargeHdSeaMx); m_pIntegralxLargeHsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHsSea); + &GPDMPSSW13::IntegralxLargeHsSea); m_pIntegralxSmall1HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall1HsSea); + &GPDMPSSW13::IntegralxSmall1HsSea); m_pIntegralxSmall2HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall2HsSea); + &GPDMPSSW13::IntegralxSmall2HsSea); m_pIntegralxLargeHsSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHsSeaMx); + &GPDMPSSW13::IntegralxLargeHsSeaMx); m_pIntegralxLargeHg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHg); + &GPDMPSSW13::IntegralxLargeHg); m_pIntegralxSmall1Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall1Hg); + &GPDMPSSW13::IntegralxSmall1Hg); m_pIntegralxSmall2Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxSmall2Hg); + &GPDMPSSW13::IntegralxSmall2Hg); m_pIntegralxLargeHgMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13Model::IntegralxLargeHgMx); + &GPDMPSSW13::IntegralxLargeHgMx); } -void MPSSW13Model::resolveObjectDependencies() { +void GPDMPSSW13::resolveObjectDependencies() { setIntegrator(NumA::IntegratorType1D::DEXP); } -void MPSSW13Model::configure(const ElemUtils::Parameters ¶meters){ +void GPDMPSSW13::configure(const ElemUtils::Parameters ¶meters){ GPDModule::configure(parameters); MathIntegratorModule::configureIntegrator(parameters); } -MPSSW13Model* MPSSW13Model::clone() const { - return new MPSSW13Model(*this); +GPDMPSSW13* GPDMPSSW13::clone() const { + return new GPDMPSSW13(*this); } -void MPSSW13Model::setParameters(std::vector Parameters) { +void GPDMPSSW13::setParameters(std::vector Parameters) { // TODO: Check general syntax of setParameters... if (Parameters.size() != 3) { @@ -188,7 +185,7 @@ void MPSSW13Model::setParameters(std::vector Parameters) { m_ProfileShapeGlue = Parameters.at(2); } -void MPSSW13Model::ComputeDTerms() { +void GPDMPSSW13::ComputeDTerms() { //TODO divided by zero ! double z = m_x / m_xi; @@ -465,7 +462,7 @@ void MPSSW13Model::ComputeDTerms() { } } -void MPSSW13Model::ComputeFormFactors() { +void GPDMPSSW13::ComputeFormFactors() { double Gep, Gen, Gmp, Gmn; // Sachs form factors double F1p, F1n, F2p, F2n; // Pauli-Dirac form factors @@ -496,7 +493,7 @@ void MPSSW13Model::ComputeFormFactors() { m_FD = 1. / ((1. - m_t / MV2) * (1. - m_t / MV2)); } -double MPSSW13Model::Profile(double N, double beta, double alpha) { +double GPDMPSSW13::Profile(double N, double beta, double alpha) { double profile; double ProfileShape = N; double TwiceProfileShapePlus1 = 2. * ProfileShape + 1; @@ -521,7 +518,7 @@ double MPSSW13Model::Profile(double N, double beta, double alpha) { return profile; } -void MPSSW13Model::throwBetaException(const std::string &funcName, +void GPDMPSSW13::throwBetaException(const std::string &funcName, double betaValue) { throw ElemUtils::CustomException(getClassName(), funcName, ElemUtils::Formatter() @@ -529,7 +526,7 @@ void MPSSW13Model::throwBetaException(const std::string &funcName, << '\n' << "Here beta = " << betaValue << '\n'); } -double MPSSW13Model::IntegralHuVal(double x, std::vector Par) { +double GPDMPSSW13::IntegralHuVal(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -555,7 +552,7 @@ double MPSSW13Model::IntegralHuVal(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralHuValMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralHuValMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -581,7 +578,7 @@ double MPSSW13Model::IntegralHuValMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHuSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHuSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -603,7 +600,7 @@ double MPSSW13Model::IntegralxLargeHuSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHuSeaMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHuSeaMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -625,7 +622,7 @@ double MPSSW13Model::IntegralxLargeHuSeaMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall1HuSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall1HuSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -647,7 +644,7 @@ double MPSSW13Model::IntegralxSmall1HuSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall2HuSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall2HuSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -678,7 +675,7 @@ double MPSSW13Model::IntegralxSmall2HuSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralHdVal(double x, std::vector Par) { +double GPDMPSSW13::IntegralHdVal(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -704,7 +701,7 @@ double MPSSW13Model::IntegralHdVal(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralHdValMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralHdValMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -730,7 +727,7 @@ double MPSSW13Model::IntegralHdValMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHdSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHdSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -752,7 +749,7 @@ double MPSSW13Model::IntegralxLargeHdSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHdSeaMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHdSeaMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -774,7 +771,7 @@ double MPSSW13Model::IntegralxLargeHdSeaMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall1HdSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall1HdSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -796,7 +793,7 @@ double MPSSW13Model::IntegralxSmall1HdSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall2HdSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall2HdSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -820,7 +817,7 @@ double MPSSW13Model::IntegralxSmall2HdSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHsSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHsSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -842,7 +839,7 @@ double MPSSW13Model::IntegralxLargeHsSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHsSeaMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHsSeaMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -864,7 +861,7 @@ double MPSSW13Model::IntegralxLargeHsSeaMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall1HsSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall1HsSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -890,7 +887,7 @@ double MPSSW13Model::IntegralxSmall1HsSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall2HsSea(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall2HsSea(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -918,7 +915,7 @@ double MPSSW13Model::IntegralxSmall2HsSea(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHg(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHg(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -941,7 +938,7 @@ double MPSSW13Model::IntegralxLargeHg(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxLargeHgMx(double x, std::vector Par) { +double GPDMPSSW13::IntegralxLargeHgMx(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -964,7 +961,7 @@ double MPSSW13Model::IntegralxLargeHgMx(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall1Hg(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall1Hg(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -987,7 +984,7 @@ double MPSSW13Model::IntegralxSmall1Hg(double x, std::vector Par) { return Integral; } -double MPSSW13Model::IntegralxSmall2Hg(double x, std::vector Par) { +double GPDMPSSW13::IntegralxSmall2Hg(double x, std::vector Par) { double Integral; double pdf, beta, absbeta; @@ -1010,7 +1007,7 @@ double MPSSW13Model::IntegralxSmall2Hg(double x, std::vector Par) { return Integral; } -double MPSSW13Model::GammaQQ(const unsigned int nflavour, +double GPDMPSSW13::GammaQQ(const unsigned int nflavour, const unsigned int n) { double Gamma; double HarmonicSum = 0.; @@ -1025,7 +1022,7 @@ double MPSSW13Model::GammaQQ(const unsigned int nflavour, return Gamma; } -double MPSSW13Model::GammaQG(const unsigned int nflavour, +double GPDMPSSW13::GammaQG(const unsigned int nflavour, const unsigned int n) { double Gamma; @@ -1035,7 +1032,7 @@ double MPSSW13Model::GammaQG(const unsigned int nflavour, return Gamma; } -double MPSSW13Model::GammaGQ(const unsigned int nflavour, +double GPDMPSSW13::GammaGQ(const unsigned int nflavour, const unsigned int n) { double Gamma; @@ -1045,7 +1042,7 @@ double MPSSW13Model::GammaGQ(const unsigned int nflavour, return Gamma; } -double MPSSW13Model::GammaGG(const unsigned int nflavour, +double GPDMPSSW13::GammaGG(const unsigned int nflavour, const unsigned int n) { double Gamma; @@ -1063,78 +1060,78 @@ double MPSSW13Model::GammaGG(const unsigned int nflavour, } //TODO meme initialisation que GK11 ? -void MPSSW13Model::initModule() { +void GPDMPSSW13::initModule() { GPDModule::initModule(); debug(__func__, ElemUtils::Formatter() << "fMuF2 = " << m_MuF2); } //TODO implement -void MPSSW13Model::isModuleWellConfigured() { +void GPDMPSSW13::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -double MPSSW13Model::getCA() const { +double GPDMPSSW13::getCA() const { return m_CA; } -double MPSSW13Model::getCF() const { +double GPDMPSSW13::getCF() const { return m_CF; } -double MPSSW13Model::getF1d() const { +double GPDMPSSW13::getF1d() const { return m_F1d; } -double MPSSW13Model::getF1u() const { +double GPDMPSSW13::getF1u() const { return m_F1u; } -double MPSSW13Model::getFD() const { +double GPDMPSSW13::getFD() const { return m_FD; } -double MPSSW13Model::getGluonDTerm() const { +double GPDMPSSW13::getGluonDTerm() const { return m_GluonDTerm; } -void MPSSW13Model::setGluonDTerm(double gluonDTerm) { +void GPDMPSSW13::setGluonDTerm(double gluonDTerm) { m_GluonDTerm = gluonDTerm; } -double MPSSW13Model::getMx() const { +double GPDMPSSW13::getMx() const { return m_Mx; } -unsigned int MPSSW13Model::getNbOfColor() const { +unsigned int GPDMPSSW13::getNbOfColor() const { return m_NbOfColor; } -unsigned int MPSSW13Model::getNbOfQuarkFlavor() const { +unsigned int GPDMPSSW13::getNbOfQuarkFlavor() const { return m_NbOfQuarkFlavor; } -double MPSSW13Model::getProfileShapeGlue() const { +double GPDMPSSW13::getProfileShapeGlue() const { return m_ProfileShapeGlue; } -double MPSSW13Model::getProfileShapeSea() const { +double GPDMPSSW13::getProfileShapeSea() const { return m_ProfileShapeSea; } -double MPSSW13Model::getProfileShapeVal() const { +double GPDMPSSW13::getProfileShapeVal() const { return m_ProfileShapeVal; } -double MPSSW13Model::getQuarkDTerm() const { +double GPDMPSSW13::getQuarkDTerm() const { return m_QuarkDTerm; } -double MPSSW13Model::getTF() const { +double GPDMPSSW13::getTF() const { return m_TF; } -PartonDistribution MPSSW13Model::computeH() { +PartonDistribution GPDMPSSW13::computeH() { PartonDistribution partonDistribution; QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); diff --git a/src/partons/modules/GPDModule.cpp b/src/partons/modules/gpd/GPDModule.cpp similarity index 94% rename from src/partons/modules/GPDModule.cpp rename to src/partons/modules/gpd/GPDModule.cpp index 1dd5a40217cc43981de0b6589386eb389d569825..8f37dad91967b244163c4f46f01206c2590069f4 100644 --- a/src/partons/modules/GPDModule.cpp +++ b/src/partons/modules/gpd/GPDModule.cpp @@ -1,4 +1,4 @@ -#include "../../../include/partons/modules/GPDModule.h" +#include "../../../../include/partons/modules/gpd/GPDModule.h" #include #include @@ -8,13 +8,13 @@ #include #include -#include "../../../include/partons/beans/gpd/GPDResult.h" -#include "../../../include/partons/modules/evolution/GPDEvolutionModule.h" -#include "../../../include/partons/ModuleObjectFactory.h" -#include "../../../include/partons/Partons.h" -#include "../../../include/partons/services/GPDService.h" -#include "../../../include/partons/ServiceObjectRegistry.h" -#include "../../../include/partons/ServiceObjectTyped.h" +#include "../../../../include/partons/beans/gpd/GPDResult.h" +#include "../../../../include/partons/modules/evolution/GPDEvolutionModule.h" +#include "../../../../include/partons/ModuleObjectFactory.h" +#include "../../../../include/partons/Partons.h" +#include "../../../../include/partons/services/GPDService.h" +#include "../../../../include/partons/ServiceObjectRegistry.h" +#include "../../../../include/partons/ServiceObjectTyped.h" const std::string GPDModule::GPD_MODULE_CLASS_NAME = "GPDModule"; @@ -97,7 +97,7 @@ void GPDModule::isModuleWellConfigured() { // Test initialization of reference factorization scale if (m_MuF2_ref <= 0.) { - warn(__func__, "Square of reference factorization scale should be > 0."); + warn(__func__, "Square of reference factorization scale should be > 0."); } } diff --git a/src/partons/modules/gpd/VGGModel.cpp b/src/partons/modules/gpd/GPDVGG99.cpp similarity index 90% rename from src/partons/modules/gpd/VGGModel.cpp rename to src/partons/modules/gpd/GPDVGG99.cpp index 8f4d24bcdb12286fbd147497fe320d19eb50a20a..6fc845482118074646482007b8d6e98ada487202 100644 --- a/src/partons/modules/gpd/VGGModel.cpp +++ b/src/partons/modules/gpd/GPDVGG99.cpp @@ -1,17 +1,15 @@ -#include "../../../../include/partons/modules/gpd/VGGModel.h" +#include "../../../../include/partons/modules/gpd/GPDVGG99.h" #include #include #include -#include #include #include #include -#include +#include #include #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" @@ -19,11 +17,11 @@ #include "../../../../include/partons/utils/MSTWPDF.h" #include "../../../../include/partons/utils/PartonContent.h" -const unsigned int VGGModel::classId = +const unsigned int GPDVGG99::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new VGGModel("VGGModel")); + new GPDVGG99("GPDVGG99")); -VGGModel::VGGModel(const std::string &className) : +GPDVGG99::GPDVGG99(const std::string &className) : GPDModule(className), kappa_u(1.6596), kappa_d(-2.0352), b_profile_val( 1.), b_profile_sea(1.), alphap_val(1.105), alphap_sea(1.105), eta_e_largex_u_s( 1.713), eta_e_largex_d_s(0.566), g_AXIAL(1.267), m_Forward(0), MathIntegratorModule() { @@ -47,7 +45,7 @@ VGGModel::VGGModel(const std::string &className) : initFunctorsForIntegrations(); } -VGGModel::VGGModel(const VGGModel& other) : +GPDVGG99::GPDVGG99(const GPDVGG99& other) : kappa_u(1.6596), kappa_d(-2.0352), b_profile_val(1.), b_profile_sea(1.), alphap_val( 1.105), alphap_sea(1.105), eta_e_largex_u_s(1.713), eta_e_largex_d_s( 0.566), g_AXIAL(1.267), GPDModule(other), MathIntegratorModule( @@ -66,7 +64,7 @@ VGGModel::VGGModel(const VGGModel& other) : initFunctorsForIntegrations(); } -VGGModel::~VGGModel() { +GPDVGG99::~GPDVGG99() { if (m_Forward) { delete m_Forward; @@ -109,60 +107,61 @@ VGGModel::~VGGModel() { } } -void VGGModel::initFunctorsForIntegrations() { +void GPDVGG99::initFunctorsForIntegrations() { m_pint_symm_double_distr_reggeH = NumA::Integrator1D::newIntegrationFunctor( - this, &VGGModel::int_symm_double_distr_reggeH); + this, &GPDVGG99::int_symm_double_distr_reggeH); m_pint_symm_double_distr_reggeMxH = NumA::Integrator1D::newIntegrationFunctor(this, - &VGGModel::int_symm_double_distr_reggeMxH); + &GPDVGG99::int_symm_double_distr_reggeMxH); m_pint_symm_double_distr_reggeE = NumA::Integrator1D::newIntegrationFunctor( - this, &VGGModel::int_symm_double_distr_reggeE); + this, &GPDVGG99::int_symm_double_distr_reggeE); m_pint_symm_double_distr_reggeMxE = NumA::Integrator1D::newIntegrationFunctor(this, - &VGGModel::int_symm_double_distr_reggeMxE); + &GPDVGG99::int_symm_double_distr_reggeMxE); m_pint_symm_double_distr_reggeHt = NumA::Integrator1D::newIntegrationFunctor(this, - &VGGModel::int_symm_double_distr_reggeHt); + &GPDVGG99::int_symm_double_distr_reggeHt); m_pint_symm_double_distr_reggeMxHt = NumA::Integrator1D::newIntegrationFunctor(this, - &VGGModel::int_symm_double_distr_reggeMxHt); + &GPDVGG99::int_symm_double_distr_reggeMxHt); m_pint_mom2_up_valence_e = NumA::Integrator1D::newIntegrationFunctor(this, - &VGGModel::int_mom2_up_valence_e); + &GPDVGG99::int_mom2_up_valence_e); } -VGGModel* VGGModel::clone() const { - return new VGGModel(*this); +GPDVGG99* GPDVGG99::clone() const { + return new GPDVGG99(*this); } -void VGGModel::resolveObjectDependencies() { +void GPDVGG99::resolveObjectDependencies() { setIntegrator(NumA::IntegratorType1D::DEXP); } -void VGGModel::configure(const ElemUtils::Parameters ¶meters) { +void GPDVGG99::configure(const ElemUtils::Parameters ¶meters) { + GPDModule::configure(parameters); MathIntegratorModule::configureIntegrator(parameters); } -std::string VGGModel::toString() const { +std::string GPDVGG99::toString() const { return GPDModule::toString(); } -void VGGModel::isModuleWellConfigured() { +void GPDVGG99::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void VGGModel::initModule() { +void GPDVGG99::initModule() { GPDModule::initModule(); } -PartonDistribution VGGModel::computeH() { +PartonDistribution GPDVGG99::computeH() { //GPD gpd_s5 = GPDType::H; @@ -228,7 +227,7 @@ PartonDistribution VGGModel::computeH() { return partonDistribution; } -PartonDistribution VGGModel::computeE() { +PartonDistribution GPDVGG99::computeE() { //GPD gpd_s5 = GPDType::E; @@ -295,7 +294,7 @@ PartonDistribution VGGModel::computeE() { return partonDistribution; } -PartonDistribution VGGModel::computeHt() { +PartonDistribution GPDVGG99::computeHt() { //GPD gpd_s5 = GPDType::Ht; @@ -366,7 +365,7 @@ PartonDistribution VGGModel::computeHt() { return partonDistribution; } -PartonDistribution VGGModel::computeEt() { +PartonDistribution GPDVGG99::computeEt() { //GPD gpd_s5 = GPDType::Et; @@ -430,7 +429,7 @@ PartonDistribution VGGModel::computeEt() { return partonDistribution; } -double VGGModel::offforward_distr() { +double GPDVGG99::offforward_distr() { //result double ofpd; @@ -504,7 +503,7 @@ double VGGModel::offforward_distr() { return ofpd; } -double VGGModel::symm_double_distr_reggeH(double beta, double alpha) { +double GPDVGG99::symm_double_distr_reggeH(double beta, double alpha) { //check beta range if (beta <= 0.) { @@ -573,7 +572,7 @@ double VGGModel::symm_double_distr_reggeH(double beta, double alpha) { return symm_profile_function(beta, alpha, b_profile) * pdf * funcbetat; } -double VGGModel::symm_double_distr_reggeE(double beta, double alpha) { +double GPDVGG99::symm_double_distr_reggeE(double beta, double alpha) { //check beta range if (beta <= 0.) { @@ -626,7 +625,7 @@ double VGGModel::symm_double_distr_reggeE(double beta, double alpha) { return symm_profile_function(beta, alpha, b_profile) * pdf * funcbetat; } -double VGGModel::symm_profile_function(double beta, double alpha, +double GPDVGG99::symm_profile_function(double beta, double alpha, double b_profile) { double norm, bidon; @@ -642,27 +641,27 @@ double VGGModel::symm_profile_function(double beta, double alpha, / pow(1. - fabs(beta), 2. * b_profile + 1.); } -double VGGModel::int_symm_double_distr_reggeH(double alpha, +double GPDVGG99::int_symm_double_distr_reggeH(double alpha, std::vector par) { return symm_double_distr_reggeH(x_s5 - m_xi * alpha, alpha); } -double VGGModel::int_symm_double_distr_reggeMxH(double alpha, +double GPDVGG99::int_symm_double_distr_reggeMxH(double alpha, std::vector par) { return symm_double_distr_reggeH(-x_s5 - m_xi * alpha, alpha); } -double VGGModel::int_symm_double_distr_reggeE(double alpha, +double GPDVGG99::int_symm_double_distr_reggeE(double alpha, std::vector par) { return symm_double_distr_reggeE(x_s5 - m_xi * alpha, alpha); } -double VGGModel::int_symm_double_distr_reggeMxE(double alpha, +double GPDVGG99::int_symm_double_distr_reggeMxE(double alpha, std::vector par) { return symm_double_distr_reggeE(-x_s5 - m_xi * alpha, alpha); } -double VGGModel::int_mom2_up_valence_e(double beta, std::vector par) { +double GPDVGG99::int_mom2_up_valence_e(double beta, std::vector par) { //check beta range if (beta <= 0.) { @@ -711,7 +710,7 @@ double VGGModel::int_mom2_up_valence_e(double beta, std::vector par) { return pow(1. - beta, eta_e_largex_s) * pdf; } -double VGGModel::offforward_pol_distr() { +double GPDVGG99::offforward_pol_distr() { //result double ofpd; @@ -777,20 +776,20 @@ double VGGModel::offforward_pol_distr() { return 1. / (1. + m_xi) * ofpd; } -double VGGModel::int_symm_double_distr_reggeHt(double alpha, +double GPDVGG99::int_symm_double_distr_reggeHt(double alpha, std::vector par) { return symm_double_distr_reggeHt( (x_s5 + m_xi) / (1. + m_xi) - 2 * m_xi / (1. + m_xi) * alpha, alpha); } -double VGGModel::int_symm_double_distr_reggeMxHt(double alpha, +double GPDVGG99::int_symm_double_distr_reggeMxHt(double alpha, std::vector par) { return symm_double_distr_reggeHt( (-x_s5 + m_xi) / (1. + m_xi) - 2 * m_xi / (1. + m_xi) * alpha, alpha); } -double VGGModel::symm_double_distr_reggeHt(double beta, double alpha) { +double GPDVGG99::symm_double_distr_reggeHt(double beta, double alpha) { //check beta range if (beta <= 0.) { @@ -851,7 +850,7 @@ double VGGModel::symm_double_distr_reggeHt(double beta, double alpha) { return 6. * alpha * (1. - beta - alpha) * pdf / pow(1. - beta, 3); } -double VGGModel::test_pdf_down_val(double x) { +double GPDVGG99::test_pdf_down_val(double x) { double n3, n4, ed, gd, norm; @@ -865,7 +864,7 @@ double VGGModel::test_pdf_down_val(double x) { * (1. + ed * pow(x, 0.5) + gd * x); } -double VGGModel::test_pdf_up_val(double x) { +double GPDVGG99::test_pdf_up_val(double x) { double n1, n2, eud, gud, norm; @@ -879,7 +878,7 @@ double VGGModel::test_pdf_up_val(double x) { * (1. + eud * pow(x, 0.5) + gud * x) - test_pdf_down_val(x); } -double VGGModel::test_pdf_sea(double x) { +double GPDVGG99::test_pdf_sea(double x) { double ns, es, gs, As; @@ -891,15 +890,15 @@ double VGGModel::test_pdf_sea(double x) { return As * 1. / x * pow(1. - x, ns) * (1. + es * pow(x, 0.5) + gs * x); } -double VGGModel::test_pdf_up_bar(double x) { +double GPDVGG99::test_pdf_up_bar(double x) { return 1. / 5. * test_pdf_sea(x); } -double VGGModel::test_pdf_down_bar(double x) { +double GPDVGG99::test_pdf_down_bar(double x) { return 1. / 5. * test_pdf_sea(x); } -double VGGModel::pol_up_valence(double x) { +double GPDVGG99::pol_up_valence(double x) { double up_valence; @@ -923,7 +922,7 @@ double VGGModel::pol_up_valence(double x) { return eta_u * A_u * pow(x, a_u) * up_valence; } -double VGGModel::pol_down_valence(double x) { +double GPDVGG99::pol_down_valence(double x) { double down_valence; @@ -947,7 +946,7 @@ double VGGModel::pol_down_valence(double x) { return eta_d * A_d * pow(x, a_d) * down_valence; } -double VGGModel::pol_strange_bar(double x) { +double GPDVGG99::pol_strange_bar(double x) { double sea_distr; @@ -971,22 +970,22 @@ double VGGModel::pol_strange_bar(double x) { return etas * As * pow(x, as) * sea_distr; } -double VGGModel::pol_up_bar(double x) { +double GPDVGG99::pol_up_bar(double x) { return pol_strange_bar(x); } -double VGGModel::pol_down_bar(double x) { +double GPDVGG99::pol_down_bar(double x) { return pol_strange_bar(x); } -double VGGModel::form_factor_G_A(double Q_sqr) { +double GPDVGG99::form_factor_G_A(double Q_sqr) { double M_A = 1.03; return g_AXIAL / pow(1. + Q_sqr / pow(M_A, 2.), 2.); } -double VGGModel::form_factor_G_P(double t) { +double GPDVGG99::form_factor_G_P(double t) { double M_pion = 0.13498; diff --git a/src/partons/modules/gpd/VinnikovModel.cpp b/src/partons/modules/gpd/GPDVinnikov06.cpp similarity index 89% rename from src/partons/modules/gpd/VinnikovModel.cpp rename to src/partons/modules/gpd/GPDVinnikov06.cpp index 7be40550e77a06fa7ba983dafbf356ad05cd9faf..3e20d8f28dc6cb1eff386efee71cc8e6cba3f71d 100644 --- a/src/partons/modules/gpd/VinnikovModel.cpp +++ b/src/partons/modules/gpd/GPDVinnikov06.cpp @@ -1,25 +1,22 @@ -#include "../../../../include/partons/modules/gpd/VinnikovModel.h" +#include "../../../../include/partons/modules/gpd/GPDVinnikov06.h" #include -#include #include #include #include -#include #include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" -const unsigned int VinnikovModel::classId = +const unsigned int GPDVinnikov06::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new VinnikovModel("VinnikovModel")); + new GPDVinnikov06("GPDVinnikov06")); -VinnikovModel::VinnikovModel(const std::string &className) : +GPDVinnikov06::GPDVinnikov06(const std::string &className) : GPDModule(className), EPS_BETR(1.E-8), SIMP_INT(100) { n_par = 1; @@ -32,25 +29,25 @@ VinnikovModel::VinnikovModel(const std::string &className) : std::make_pair(GPDType::Ht, &GPDModule::computeHt)); } -VinnikovModel::~VinnikovModel() { +GPDVinnikov06::~GPDVinnikov06() { } -VinnikovModel* VinnikovModel::clone() const { - return new VinnikovModel(*this); +GPDVinnikov06* GPDVinnikov06::clone() const { + return new GPDVinnikov06(*this); } -void VinnikovModel::resolveObjectDependencies() { +void GPDVinnikov06::resolveObjectDependencies() { } -void VinnikovModel::configure(const ElemUtils::Parameters ¶meters) { +void GPDVinnikov06::configure(const ElemUtils::Parameters ¶meters) { GPDModule::configure(parameters); } -std::string VinnikovModel::toString() const { +std::string GPDVinnikov06::toString() const { return GPDModule::toString(); } -VinnikovModel::VinnikovModel(const VinnikovModel& other) : +GPDVinnikov06::GPDVinnikov06(const GPDVinnikov06& other) : EPS_BETR(1.E-8), SIMP_INT(100), GPDModule(other) { n_par = other.n_par; @@ -58,15 +55,15 @@ VinnikovModel::VinnikovModel(const VinnikovModel& other) : param[i] = other.param[i]; } -void VinnikovModel::isModuleWellConfigured() { +void GPDVinnikov06::isModuleWellConfigured() { GPDModule::isModuleWellConfigured(); } -void VinnikovModel::initModule() { +void GPDVinnikov06::initModule() { GPDModule::initModule(); } -PartonDistribution VinnikovModel::computeH() { +PartonDistribution GPDVinnikov06::computeH() { double g, uVal, uSea, dVal, dSea, sSea, uValMx, dValMx; @@ -111,7 +108,7 @@ PartonDistribution VinnikovModel::computeH() { return partonDistribution; } -PartonDistribution VinnikovModel::computeHt() { +PartonDistribution GPDVinnikov06::computeHt() { double g, uVal, uSea, dVal, dSea, sSea, uValMx, dValMx; @@ -181,7 +178,7 @@ PartonDistribution VinnikovModel::computeHt() { // param[4] = b(d_sea), // param[5] = b(s_sea), -double VinnikovModel::gpdh(int const i_part, double x, double const xi, +double GPDVinnikov06::gpdh(int const i_part, double x, double const xi, double const t, int const n_par, double* const param) { if (x == xi) @@ -197,7 +194,7 @@ double VinnikovModel::gpdh(int const i_part, double x, double const xi, if (x < -xi) { double bmin = (-x - xi) / (1.0 - xi); double bmax = (-x + xi) / (1.0 + xi); - double h = dd_int_simp(bmin, bmax, &VinnikovModel::dd1, i_part, x, xi, + double h = dd_int_simp(bmin, bmax, &GPDVinnikov06::dd1, i_part, x, xi, t, n_par, param); return h / xi; } @@ -205,25 +202,25 @@ double VinnikovModel::gpdh(int const i_part, double x, double const xi, if (x <= 0.0) { double bmax1 = (xi + x) / (1.0 + xi); double bmax2 = (xi - x) / (1.0 + xi); - double h1 = dd_int_simp(0.0, bmax1, &VinnikovModel::dd2, i_part, x, xi, + double h1 = dd_int_simp(0.0, bmax1, &GPDVinnikov06::dd2, i_part, x, xi, t, n_par, param); - double h2 = dd_int_simp(bmax1, bmax2, &VinnikovModel::dd1, i_part, x, + double h2 = dd_int_simp(bmax1, bmax2, &GPDVinnikov06::dd1, i_part, x, xi, t, n_par, param); return (h1 + h2) / xi; } if (x < xi) { double bmax1 = (xi - x) / (1.0 + xi); double bmax2 = (xi + x) / (1.0 + xi); - double h1 = dd_int_simp(0.0, bmax1, &VinnikovModel::dd2, i_part, x, xi, + double h1 = dd_int_simp(0.0, bmax1, &GPDVinnikov06::dd2, i_part, x, xi, t, n_par, param); - double h2 = dd_int_simp(bmax1, bmax2, &VinnikovModel::dd3, i_part, x, + double h2 = dd_int_simp(bmax1, bmax2, &GPDVinnikov06::dd3, i_part, x, xi, t, n_par, param); return (h1 + h2) / xi; } if (x <= 1.0) { double bmin = (x - xi) / (1.0 - xi); double bmax = (x + xi) / (1.0 + xi); - double h = dd_int_simp(bmin, bmax, &VinnikovModel::dd3, i_part, x, xi, + double h = dd_int_simp(bmin, bmax, &GPDVinnikov06::dd3, i_part, x, xi, t, n_par, param); return h / xi; } @@ -232,7 +229,7 @@ double VinnikovModel::gpdh(int const i_part, double x, double const xi, return 0.0; } -double VinnikovModel::dd1(int const i_part, double const beta, double const x, +double GPDVinnikov06::dd1(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double prof_b; double alpha = (x + beta) / xi; @@ -277,7 +274,7 @@ double VinnikovModel::dd1(int const i_part, double const beta, double const x, return 0.0; } -double VinnikovModel::dd2(int const i_part, double const beta, double const x, +double GPDVinnikov06::dd2(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double prof_b_val = param[n_par * abs(i_part)]; double prof_b_sea = param[n_par * (abs(i_part) + 2)]; @@ -342,7 +339,7 @@ double VinnikovModel::dd2(int const i_part, double const beta, double const x, return 0.0; } -double VinnikovModel::dd3(int const i_part, double const beta, double const x, +double GPDVinnikov06::dd3(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double prof_b_val = param[n_par * abs(i_part)]; double prof_b_sea = param[n_par * (abs(i_part) + 2)]; @@ -391,7 +388,7 @@ double VinnikovModel::dd3(int const i_part, double const beta, double const x, return 0.0; } -double VinnikovModel::uval(double const x, double const t) { +double GPDVinnikov06::uval(double const x, double const t) { if (x <= 0.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -419,7 +416,7 @@ double VinnikovModel::uval(double const x, double const t) { + log(1.0 + a4 * x) * a5 + t * fq); } -double VinnikovModel::usea(double const x, double const t) { +double GPDVinnikov06::usea(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -449,7 +446,7 @@ double VinnikovModel::usea(double const x, double const t) { * exp(b4 * log(1.0 - exp(2.6 * log(x)))); } -double VinnikovModel::dval(double const x, double const t) { +double GPDVinnikov06::dval(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -480,7 +477,7 @@ double VinnikovModel::dval(double const x, double const t) { + log(1.0 + a4 * x) * a5 + t * fq); } -double VinnikovModel::dsea(double const x, double const t) { +double GPDVinnikov06::dsea(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -510,7 +507,7 @@ double VinnikovModel::dsea(double const x, double const t) { * exp(b4 * log(1.0 - exp(2.6 * log(x)))); } -double VinnikovModel::ssea(double const x, double const t) { +double GPDVinnikov06::ssea(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -534,7 +531,7 @@ double VinnikovModel::ssea(double const x, double const t) { return 0.0; } -double VinnikovModel::glu(double const x, double const t) { +double GPDVinnikov06::glu(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -564,7 +561,7 @@ double VinnikovModel::glu(double const x, double const t) { //TODO make a unique return at the end of the function ; better for debbuging and avoid compilation warning. //TODO remove double* use vector instead -double VinnikovModel::gpdh_pol(int const i_part, double x, double const xi, +double GPDVinnikov06::gpdh_pol(int const i_part, double x, double const xi, double const t, int const n_par, double* const param) { if (x == xi) { x -= EPS_BETR; @@ -581,7 +578,7 @@ double VinnikovModel::gpdh_pol(int const i_part, double x, double const xi, if (x < -xi) { double bmin = (-x - xi) / (1.0 - xi); double bmax = (-x + xi) / (1.0 + xi); - double h = dd_int_simp(bmin, bmax, &VinnikovModel::dd1_pol, i_part, x, + double h = dd_int_simp(bmin, bmax, &GPDVinnikov06::dd1_pol, i_part, x, xi, t, n_par, param); return h / xi; } @@ -589,25 +586,25 @@ double VinnikovModel::gpdh_pol(int const i_part, double x, double const xi, if (x <= 0.0) { double bmax1 = (xi + x) / (1.0 + xi); double bmax2 = (xi - x) / (1.0 + xi); - double h1 = dd_int_simp(0.0, bmax1, &VinnikovModel::dd2_pol, i_part, x, + double h1 = dd_int_simp(0.0, bmax1, &GPDVinnikov06::dd2_pol, i_part, x, xi, t, n_par, param); - double h2 = dd_int_simp(bmax1, bmax2, &VinnikovModel::dd1_pol, i_part, + double h2 = dd_int_simp(bmax1, bmax2, &GPDVinnikov06::dd1_pol, i_part, x, xi, t, n_par, param); return (h1 + h2) / xi; } if (x < xi) { double bmax1 = (xi - x) / (1.0 + xi); double bmax2 = (xi + x) / (1.0 + xi); - double h1 = dd_int_simp(0.0, bmax1, &VinnikovModel::dd2_pol, i_part, x, + double h1 = dd_int_simp(0.0, bmax1, &GPDVinnikov06::dd2_pol, i_part, x, xi, t, n_par, param); - double h2 = dd_int_simp(bmax1, bmax2, &VinnikovModel::dd3_pol, i_part, + double h2 = dd_int_simp(bmax1, bmax2, &GPDVinnikov06::dd3_pol, i_part, x, xi, t, n_par, param); return (h1 + h2) / xi; } if (x <= 1.0) { double bmin = (x - xi) / (1.0 - xi); double bmax = (x + xi) / (1.0 + xi); - double h = dd_int_simp(bmin, bmax, &VinnikovModel::dd3_pol, i_part, x, + double h = dd_int_simp(bmin, bmax, &GPDVinnikov06::dd3_pol, i_part, x, xi, t, n_par, param); return h / xi; } @@ -618,7 +615,7 @@ double VinnikovModel::gpdh_pol(int const i_part, double x, double const xi, return 0.0; } -double VinnikovModel::dd1_pol(int const i_part, double const beta, +double GPDVinnikov06::dd1_pol(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double alpha = (x + beta) / xi; @@ -660,7 +657,7 @@ double VinnikovModel::dd1_pol(int const i_part, double const beta, return 0.0; } -double VinnikovModel::dd2_pol(int const i_part, double const beta, +double GPDVinnikov06::dd2_pol(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double prof_b_val = param[n_par * abs(i_part)]; @@ -726,7 +723,7 @@ double VinnikovModel::dd2_pol(int const i_part, double const beta, return 0.0; } -double VinnikovModel::dd3_pol(int const i_part, double const beta, +double GPDVinnikov06::dd3_pol(int const i_part, double const beta, double const x, double const xi, double const t, int const n_par, double* const param) { double prof_b_val = param[n_par * abs(i_part)]; @@ -776,7 +773,7 @@ double VinnikovModel::dd3_pol(int const i_part, double const beta, return 0.0; } -double VinnikovModel::uval_pol(double const x, double const t) { +double GPDVinnikov06::uval_pol(double const x, double const t) { if (x <= 0.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -803,7 +800,7 @@ double VinnikovModel::uval_pol(double const x, double const t) { * (1.0 + gam * x); } -double VinnikovModel::usea_pol(double const x, double const t) { +double GPDVinnikov06::usea_pol(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -824,7 +821,7 @@ double VinnikovModel::usea_pol(double const x, double const t) { * (1.0 + gam * x); } -double VinnikovModel::dval_pol(double const x, double const t) { +double GPDVinnikov06::dval_pol(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -854,7 +851,7 @@ double VinnikovModel::dval_pol(double const x, double const t) { * (1.0 + gam * x); } -double VinnikovModel::dsea_pol(double const x, double const t) { +double GPDVinnikov06::dsea_pol(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -875,7 +872,7 @@ double VinnikovModel::dsea_pol(double const x, double const t) { * (1.0 + gam * x); } -double VinnikovModel::ssea_pol(double const x, double const t) { +double GPDVinnikov06::ssea_pol(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -896,7 +893,7 @@ double VinnikovModel::ssea_pol(double const x, double const t) { * (1.0 + gam * x); } -double VinnikovModel::glu_pol(double const x, double const t) { +double GPDVinnikov06::glu_pol(double const x, double const t) { if (x <= 0.0 || x > 1.0) { throw ElemUtils::CustomException(getClassName(), __func__, ElemUtils::Formatter() << "x = " << x << " < 0"); @@ -919,7 +916,7 @@ double VinnikovModel::glu_pol(double const x, double const t) { // COMMON FUNCTIONS =================================================================================== -double VinnikovModel::prof_funct(double const b, double const beta, +double GPDVinnikov06::prof_funct(double const b, double const beta, double const alpha) { double gamma1 = gammf(2.0 * b + 2.0); double gamma2 = gammf(b + 1.0); @@ -929,11 +926,11 @@ double VinnikovModel::prof_funct(double const b, double const beta, return gamma1 * power1 * power2 / (gamma2 * gamma2); } -double VinnikovModel::power(double const x, double const y) { +double GPDVinnikov06::power(double const x, double const y) { return exp(y * log(x)); } -double VinnikovModel::gammf(double xx) { +double GPDVinnikov06::gammf(double xx) { double x, y, tmp, ser; static double cof[6] = { 76.18009172947146, -86.50532032941677, 24.01409824083091, -1.231739572450155, 0.1208650973866179e-2, @@ -949,8 +946,8 @@ double VinnikovModel::gammf(double xx) { return exp(-tmp) * 2.5066282746310005 * ser / x; } -double VinnikovModel::dd_int_simp(double const bmin, double const bmax, - double (VinnikovModel::*dd)(int, double, double, double, double, int, +double GPDVinnikov06::dd_int_simp(double const bmin, double const bmax, + double (GPDVinnikov06::*dd)(int, double, double, double, double, int, double*), int const i_part, double const x, double const xi, double const t, int const n_par, double* const param) { int i; diff --git a/src/partons/modules/gpd/MPSSW13ModelNoGluons.cpp b/src/partons/modules/gpd/MPSSW13ModelNoGluons.cpp deleted file mode 100644 index 8a7dfd7507f11bc38b2d711923df487e74043163..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/MPSSW13ModelNoGluons.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "../../../../include/partons/modules/gpd/MPSSW13ModelNoGluons.h" - -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDKinematic.h" -//#include "../../../../include/partons/beans/gpd/GPDResult.h" -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -//#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -//#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/gpd/MPSSW13Model.h" -#include "../../../../include/partons/ModuleObjectFactory.h" -#include "../../../../include/partons/Partons.h" -//#include "../../../../include/partons/services/GPDService.h" -#include "../../../../include/partons/ServiceObjectRegistry.h" - -const unsigned int MPSSW13ModelNoGluons::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new MPSSW13ModelNoGluons("MPSSW13ModelNoGluons")); - -MPSSW13ModelNoGluons::MPSSW13ModelNoGluons(const std::string &className) : - GPDModule(className) { - pGPDService = NULL; - MPSSW13model = NULL; - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); -} - -MPSSW13ModelNoGluons::~MPSSW13ModelNoGluons() { -} - -MPSSW13ModelNoGluons* MPSSW13ModelNoGluons::clone() const { - return new MPSSW13ModelNoGluons(*this); -} - -void MPSSW13ModelNoGluons::configure(const ElemUtils::Parameters ¶meters) { - GPDModule::configure(parameters); -} - -std::string MPSSW13ModelNoGluons::toString() const { - return GPDModule::toString(); -} - -MPSSW13ModelNoGluons::MPSSW13ModelNoGluons(const MPSSW13ModelNoGluons& other) : - GPDModule(other) { - - pGPDService = other.pGPDService; - MPSSW13model = other.MPSSW13model; -} - -void MPSSW13ModelNoGluons::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); -} - -void MPSSW13ModelNoGluons::initModule() { - - pGPDService = - Partons::getInstance()->getServiceObjectRegistry()->getGPDService(); - - //TODO Why ? It's alreeady a GPDModule ! - MPSSW13model = - Partons::getInstance()->getModuleObjectFactory()->newGPDModule( - MPSSW13Model::classId); - - GPDModule::initModule(); -} - -PartonDistribution MPSSW13ModelNoGluons::computeH() { - - //compute kinematics - GPDKinematic gpdKinematic(m_x, m_xi, m_t, m_MuF2, m_MuR2); - - //calculate MPSSW13 - PartonDistribution partonDistribution = MPSSW13model->compute(gpdKinematic, - GPDType(GPDType::H), false); - //set gluon distribution to 0. - partonDistribution.setGluonDistribution(GluonDistribution(0.)); - - return partonDistribution; -} diff --git a/src/partons/modules/gpd/MPSSW13WithDTermModel.cpp b/src/partons/modules/gpd/MPSSW13WithDTermModel.cpp deleted file mode 100644 index 7d25ec3fd4edf262a14af2e1325ebed3d40f0015..0000000000000000000000000000000000000000 --- a/src/partons/modules/gpd/MPSSW13WithDTermModel.cpp +++ /dev/null @@ -1,1368 +0,0 @@ -#include "../../../../include/partons/modules/gpd/MPSSW13WithDTermModel.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../../../../include/partons/beans/gpd/GPDType.h" -#include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" -#include "../../../../include/partons/beans/QuarkFlavor.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../include/partons/utils/MSTWPDF.h" -#include "../../../../include/partons/utils/PartonContent.h" - -// Initialise [class]::classId with a unique name. -const unsigned int MPSSW13WithDTermModel::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new MPSSW13WithDTermModel("MPSSW13WithDTermModel")); - -MPSSW13WithDTermModel::MPSSW13WithDTermModel(const std::string &className) : - GPDModule(className), MathIntegratorModule(), m_Forward(0), m_NbOfQuarkFlavor( - 2), m_NbOfColor(3), m_Mx(0.), m_CA(3.), m_CF(4. / 3.), m_TF( - 1. / 2.), m_F1u(0.), m_F1d(0.), m_FD(0.), m_ProfileShapeVal(1.), m_ProfileShapeSea( - 2.), m_ProfileShapeGlue(2.), m_QuarkDTerm(0.), m_GluonDTerm(0.) { - - m_NbOfQuarkFlavor = 3; - m_MuF2 = 4.; - m_MuF2_ref = 4.; - - m_listGPDComputeTypeAvailable.insert( - std::make_pair(GPDType::H, &GPDModule::computeH)); - - initFunctorsForIntegrations(); - -} - -MPSSW13WithDTermModel::MPSSW13WithDTermModel(const MPSSW13WithDTermModel& other) : - GPDModule(other), MathIntegratorModule(other) { - m_NbOfQuarkFlavor = other.m_NbOfQuarkFlavor; - m_NbOfColor = other.m_NbOfColor; - m_Mx = other.m_Mx; - m_CA = other.m_CA; - m_CF = other.m_CF; - m_TF = other.m_TF; - m_F1u = other.m_F1u; - m_F1d = other.m_F1d; - m_FD = other.m_FD; - m_ProfileShapeVal = other.m_ProfileShapeVal; - m_ProfileShapeSea = other.m_ProfileShapeSea; - m_ProfileShapeGlue = other.m_ProfileShapeGlue; - m_QuarkDTerm = other.m_QuarkDTerm; - m_GluonDTerm = other.m_GluonDTerm; - - //TODO make a clone instance ; create MSTWPDF as a module. - m_Forward = new MSTWPDF(); - m_Forward->init( - ElemUtils::PropertiesManager::getInstance()->getString( - "grid.directory") + "mstw2008nlo.00.dat"); - - initFunctorsForIntegrations(); -} - -MPSSW13WithDTermModel::~MPSSW13WithDTermModel() { - if (m_Forward) { - delete m_Forward; - m_Forward = 0; - } -} - -void MPSSW13WithDTermModel::initFunctorsForIntegrations() { - m_pIntegralHuVal = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralHuVal); - - m_pIntegralHdVal = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralHdVal); - - m_pIntegralHuValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralHuValMx); - - m_pIntegralHdValMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralHdValMx); - - m_pIntegralxLargeHuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHuSea); - - m_pIntegralxLargeHdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHdSea); - - m_pIntegralxSmall1HuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall1HuSea); - - m_pIntegralxSmall2HuSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall2HuSea); - - m_pIntegralxSmall1HdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall1HdSea); - - m_pIntegralxSmall2HdSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall2HdSea); - - m_pIntegralxLargeHuSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHuSeaMx); - - m_pIntegralxLargeHdSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHdSeaMx); - - m_pIntegralxLargeHsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHsSea); - - m_pIntegralxSmall1HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall1HsSea); - - m_pIntegralxSmall2HsSea = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall2HsSea); - - m_pIntegralxLargeHsSeaMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHsSeaMx); - - m_pIntegralxLargeHg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHg); - - m_pIntegralxSmall1Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall1Hg); - - m_pIntegralxSmall2Hg = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxSmall2Hg); - - m_pIntegralxLargeHgMx = NumA::Integrator1D::newIntegrationFunctor(this, - &MPSSW13WithDTermModel::IntegralxLargeHgMx); -} - -void MPSSW13WithDTermModel::resolveObjectDependencies() { - setIntegrator(NumA::IntegratorType1D::DEXP); -} - -void MPSSW13WithDTermModel::configure(const ElemUtils::Parameters ¶meters){ - - GPDModule::configure(parameters); - MathIntegratorModule::configureIntegrator(parameters); -} - -MPSSW13WithDTermModel* MPSSW13WithDTermModel::clone() const { - return new MPSSW13WithDTermModel(*this); -} - -void MPSSW13WithDTermModel::setParameters(std::vector Parameters) { - // TODO: Check general syntax of setParameters... - - if (Parameters.size() != 3) { - throw ElemUtils::CustomException(getClassName(), __func__, - "Missing parameters !"); - } - - // Test known constraints on free parameters - if (Parameters.at(0) < 1.) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() - << "Exponent in valence profile function should be >= 1." - << '\n' << "Here exponent = " << Parameters.at(0) - << '\n'); - } - if (Parameters.at(1) < 1.) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() - << "Exponent in sea profile function should be >= 1." - << '\n' << "Here exponent = " << Parameters.at(1) - << '\n'); - } - if (Parameters.at(2) < 1.) { - throw ElemUtils::CustomException(getClassName(), __func__, - ElemUtils::Formatter() - << "Exponent in glue profile function should be >= 1." - << '\n' << "Here exponent = " << Parameters.at(2) - << '\n'); - } - - // Assign parameters - m_ProfileShapeVal = Parameters.at(0); - m_ProfileShapeSea = Parameters.at(1); - m_ProfileShapeGlue = Parameters.at(2); -} - -void MPSSW13WithDTermModel::ComputeDTerms(double x) { - //TODO divided by zero ! - double z = x / m_xi; - - const double Mu0 = 0.6; // Reference scale (in GeV) - const double CA2 = m_CA * m_CA; - const double Lambda3 = 0.232; // LambdaQCD with 3 active flavours (in GeV) - const double Lambda4 = 0.200; // LambdaQCD with 4 active flavours (in GeV) - const double MuSwitch = 1.5; // NFlavour = 3 if fMuR < MuSwitch, 4 otherwise (in GeV) - - double Beta0[2]; // 1st coefficient of QCD Beta function - double Beta1[2]; // 2nd coefficient of QCD Beta function - double AlphaS0; // Strong running coupling at reference scale - double AlphaSMuSwitch; // Strong running coupling at charm threshold MuSwitch - double AlphaS; // Strong running coupling at current scale - double Lambda; // Current value of LambdaQCD, either Lambda3 or Lambda4 - double t; // t = 2 log( t / LambdaQCD ) - double lt; // lt = log t - unsigned int NFlavour; - - const unsigned int nGegen = 3; - double QuarkGegenbauer[nGegen]; // Gegenbauer polynomials C3/2 - double GluonGegenbauer[nGegen]; // Gegenbauer polynomials C5/2 - double TabGammaQQ[2][nGegen]; // Anomalous dimension eq. (42) - double TabGammaQG[2][nGegen]; // Anomalous dimension eq. (42) - double TabGammaGQ[2][nGegen]; // Anomalous dimension eq. (42) - double TabGammaGG[2][nGegen]; // Anomalous dimension eq. (42) - - double TabGammaPrimeQG[2][nGegen]; // Anomalous dimension eq. (45) - double TabGammaPrimeGQ[2][nGegen]; // Anomalous dimension eq. (45) - - double CapitalGammap[2][nGegen]; // Anomalous dimension eq. (46) - double CapitalGammam[2][nGegen]; // Anomalous dimension eq. (46) - - double gp[2][nGegen]; // Eigenvector eq. (48) - double gm[2][nGegen]; // Eigenvector eq. (48) - - double Ap[2][nGegen]; // Coefficients for scale-dependence in eq. (51) - double Am[2][nGegen]; // Coefficients for scale-dependence in eq. (51) - - double Kp[2][nGegen]; // Anomalous dimension between eq. (51) and eq. (52) - double Km[2][nGegen]; // Anomalous dimension between eq. (51) and eq. (52) - - double Quarkd[nGegen]; // Coefficients of the D-term expansion over Gegenbauer polynomial basis C3/2 at current scale - double Gluond[nGegen]; // Coefficients of the D-term expansion over Gegenbauer polynomial basis C5/2 at current scale - double QuarkInputd[2][nGegen]; - double GluonInputd[2][nGegen]; - double QuarkChQSMd[nGegen]; // Coefficients of the D-term expansion over Gegenbauer polynomial basis C3/2 at initial scale - double GluonChQSMd[nGegen]; // Coefficients of the D-term expansion over Gegenbauer polynomial basis C5/2 at initial scale - - //////////////////////////////////// - // Beta function coefficients // - //////////////////////////////////// - - // 3 active flavours - NFlavour = 3; - Beta0[0] = (11. / 3. * m_CA - 4. / 3. * m_TF * NFlavour) / 4.; - Beta1[0] = (34. / 3. * CA2 - 20. / 3. * m_CA * m_TF * NFlavour - - 4. * m_CF * m_TF * NFlavour) / 16.; - - // 4 active flavours - - NFlavour = 4; - Beta0[1] = (11. / 3. * m_CA - 4. / 3. * m_TF * NFlavour) / 4.; - Beta1[1] = (34. / 3. * CA2 - 20. / 3. * m_CA * m_TF * NFlavour - - 4. * m_CF * m_TF * NFlavour) / 16.; - - ////////////////////////////////////////////////////// - // Strong Running coupling at initial scale Mu0 // - ////////////////////////////////////////////////////// - Lambda = Lambda3; - t = 2. * log(Mu0 / Lambda); - lt = log(t); - - AlphaS0 = 1. / (Beta0[0] * t); // - Beta1[ 0 ] * lt / ( ( Beta0[ 0 ] * t ) * ( Beta0[ 0 ] * t ) ) ; - AlphaS0 *= Constant::PI; - - ////////////////////////////////////////////////////////////////////////// - // Strong Running coupling at charm threshold MuActiveFlavourSwitch // - ////////////////////////////////////////////////////////////////////////// - Lambda = Lambda3; - t = 2. * log(MuSwitch / Lambda); - lt = log(t); - - AlphaSMuSwitch = 1. / (Beta0[0] * t); // - Beta1[ 0 ] * lt / ( ( Beta0[ 0 ] * t ) * ( Beta0[ 0 ] * t ) ) ; - AlphaSMuSwitch *= Constant::PI; - - /////////////////////////////////////////////////////// - // Strong Running coupling at current scale fMuR // - /////////////////////////////////////////////////////// - if (m_MuR2 <= MuSwitch) { - Lambda = Lambda3; - t = 2. * log(m_MuR2 / Lambda); - lt = log(t); - AlphaS = 1. / (Beta0[0] * t); // - Beta1[ 0 ] * lt / ( ( Beta0[ 0 ] * t ) * ( Beta0[ 0 ] * t ) ) ; - } else { - Lambda = Lambda4; - t = 2. * log(m_MuR2 / Lambda); - lt = log(t); - AlphaS = 1. / (Beta0[1] * t); // - Beta1[ 1 ] * lt / ( ( Beta0[ 1 ] * t ) * ( Beta0[ 1 ] * t ) ) ; - } - AlphaS *= Constant::PI; - - ///////////////////////////////////// - // Gegenbauer polynomials C3/2 // - ///////////////////////////////////// - - // C^(3/2)_1 - QuarkGegenbauer[0] = 3. * z; - - // C^(3/2)_3 - QuarkGegenbauer[1] = 5. / 2. * (-3. * z + 7. * pow(z, 3)); - - // C^(3/2)_5 - QuarkGegenbauer[2] = 21. / 8. - * (5. * z - 30. * pow(z, 3) + 33. * pow(z, 5)); - - ///////////////////////////////////// - // Gegenbauer polynomials C5/2 // - ///////////////////////////////////// - - // C^(5/2)_0 - GluonGegenbauer[0] = 1.; - - // C^(5/2)_2 - GluonGegenbauer[1] = 5. / 2. * (-1. + 7. * pow(z, 2)); - - // C^(5/2)_4 - GluonGegenbauer[2] = 35. / 8. * (1. - 18. * pow(z, 2) + 33. * pow(z, 4)); - - ////////////////////////////// - // Anomalous dimensions // - ////////////////////////////// - for (unsigned int iGegen = 0; iGegen < nGegen; iGegen++) { - // 3 active flavours - TabGammaQQ[0][iGegen] = GammaQQ(3, 2 * iGegen + 1); - TabGammaGQ[0][iGegen] = GammaGQ(3, 2 * iGegen + 1); - TabGammaQG[0][iGegen] = GammaQG(3, 2 * iGegen + 1); - TabGammaGG[0][iGegen] = GammaGG(3, 2 * iGegen + 1); - - // 4 active flavours - TabGammaQQ[1][iGegen] = GammaQQ(4, 2 * iGegen + 1); - TabGammaGQ[1][iGegen] = GammaGQ(4, 2 * iGegen + 1); - TabGammaQG[1][iGegen] = GammaQG(4, 2 * iGegen + 1); - TabGammaGG[1][iGegen] = GammaGG(4, 2 * iGegen + 1); - - for (unsigned int i = 0; i < 2; i++) { - TabGammaPrimeQG[i][iGegen] = (2. * iGegen + 1.) / 3. - * TabGammaQG[i][iGegen]; - TabGammaPrimeGQ[i][iGegen] = 3. / (2. * iGegen + 1.) - * TabGammaGQ[i][iGegen]; - - CapitalGammap[i][iGegen] = (TabGammaQQ[i][iGegen] - - TabGammaGG[i][iGegen]) - * (TabGammaQQ[i][iGegen] - TabGammaGG[i][iGegen]); - CapitalGammap[i][iGegen] += 4. * TabGammaPrimeQG[i][iGegen] - * TabGammaPrimeGQ[i][iGegen]; - CapitalGammap[i][iGegen] = sqrt(CapitalGammap[i][iGegen]); - CapitalGammap[i][iGegen] += TabGammaQQ[i][iGegen] - + TabGammaGG[i][iGegen]; - CapitalGammap[i][iGegen] /= 2.; - - CapitalGammam[i][iGegen] = (TabGammaQQ[i][iGegen] - - TabGammaGG[i][iGegen]) - * (TabGammaQQ[i][iGegen] - TabGammaGG[i][iGegen]); - CapitalGammam[i][iGegen] += 4. * TabGammaPrimeQG[i][iGegen] - * TabGammaPrimeGQ[i][iGegen]; - CapitalGammam[i][iGegen] = -sqrt(CapitalGammam[i][iGegen]); - CapitalGammam[i][iGegen] += TabGammaQQ[i][iGegen] - + TabGammaGG[i][iGegen]; - CapitalGammam[i][iGegen] /= 2.; - - gp[i][iGegen] = CapitalGammap[i][iGegen] - TabGammaQQ[i][iGegen]; - gp[i][iGegen] /= TabGammaPrimeQG[i][iGegen]; - - gm[i][iGegen] = CapitalGammam[i][iGegen] - TabGammaQQ[i][iGegen]; - gm[i][iGegen] /= TabGammaPrimeQG[i][iGegen]; - -// Kp[i][iGegen] = 2. * CapitalGammap[i][iGegen] / Beta1[i]; -// Km[i][iGegen] = 2. * CapitalGammam[i][iGegen] / Beta1[i]; - Kp[i][iGegen] = 2. * CapitalGammap[i][iGegen] / (4. * Beta0[i]); - Km[i][iGegen] = 2. * CapitalGammam[i][iGegen] / (4. * Beta0[i]); - } - } - - ////////////////////////////////////////////////////////////////// - // Coefficients initialized with Chiral Quark Soliton Model // - ////////////////////////////////////////////////////////////////// - - QuarkChQSMd[0] = 4.0; - QuarkChQSMd[1] = 1.2; - QuarkChQSMd[2] = 0.4; - - GluonChQSMd[0] = 0.; - GluonChQSMd[1] = 0.; - GluonChQSMd[2] = 0.; - - for (unsigned int iGegen = 0; iGegen < nGegen; iGegen++) { - QuarkInputd[0][iGegen] = QuarkChQSMd[iGegen]; - GluonInputd[0][iGegen] = GluonChQSMd[iGegen]; - } - - ///////////////////////////////////// - // Scale dependent coefficients // - ///////////////////////////////////// - for (unsigned int iGegen = 0; iGegen < nGegen; iGegen++) { - - // Find coefficients Ap and Am at input scale Mu0 - Ap[0][iGegen] = (gm[0][iGegen] * QuarkInputd[0][iGegen] - - GluonInputd[0][iGegen]) / (gm[0][iGegen] - gp[0][iGegen]); - Am[0][iGegen] = (gp[0][iGegen] * QuarkInputd[0][iGegen] - - GluonInputd[0][iGegen]) / (gp[0][iGegen] - gm[0][iGegen]); - - // Compute expansion into Gegenbauer polynomials at Mu = MuSwitch - QuarkInputd[1][iGegen] = Ap[0][iGegen] - * pow(AlphaSMuSwitch / AlphaS0, Kp[0][iGegen]); - QuarkInputd[1][iGegen] += Am[0][iGegen] - * pow(AlphaSMuSwitch / AlphaS0, Km[0][iGegen]); - - GluonInputd[1][iGegen] = gp[0][iGegen] * Ap[0][iGegen] - * pow(AlphaSMuSwitch / AlphaS0, Kp[0][iGegen]); - GluonInputd[1][iGegen] += gm[0][iGegen] * Am[0][iGegen] - * pow(AlphaSMuSwitch / AlphaS0, Km[0][iGegen]); - - // Find coefficients Ap and Am at Mu = MuSwitch - Ap[1][iGegen] = (gm[1][iGegen] * QuarkInputd[1][iGegen] - - GluonInputd[1][iGegen]) / (gm[1][iGegen] - gp[1][iGegen]); - Am[1][iGegen] = (gp[1][iGegen] * QuarkInputd[1][iGegen] - - GluonInputd[1][iGegen]) / (gp[1][iGegen] - gm[1][iGegen]); - - if (m_MuR2 <= MuSwitch) { - Quarkd[iGegen] = Ap[0][iGegen] - * pow(AlphaS / AlphaS0, Kp[0][iGegen]); - Quarkd[iGegen] += Am[0][iGegen] - * pow(AlphaS / AlphaS0, Km[0][iGegen]); - - Gluond[iGegen] = gp[0][iGegen] * Ap[0][iGegen] - * pow(AlphaS / AlphaS0, Kp[0][iGegen]); - Gluond[iGegen] += gm[0][iGegen] * Am[0][iGegen] - * pow(AlphaS / AlphaS0, Km[0][iGegen]); - } else { - Quarkd[iGegen] = Ap[1][iGegen] - * pow(AlphaS / AlphaSMuSwitch, Kp[1][iGegen]); - Quarkd[iGegen] += Am[1][iGegen] - * pow(AlphaS / AlphaSMuSwitch, Km[1][iGegen]); - - Gluond[iGegen] = gp[1][iGegen] * Ap[1][iGegen] - * pow(AlphaS / AlphaSMuSwitch, Kp[1][iGegen]); - Gluond[iGegen] += gm[1][iGegen] * Am[1][iGegen] - * pow(AlphaS / AlphaSMuSwitch, Km[1][iGegen]); - } - -// cout << "Quarkd[" << iGegen << "] = " << Quarkd[iGegen] << endl ; -// cout << "Gluond[" << iGegen << "] = " << Gluond[iGegen] << endl ; - } - - //////////////// - // D-terms // - //////////////// - m_QuarkDTerm = 0.; - m_GluonDTerm = 0.; - if (fabs(z) < 1.) { - for (unsigned int iGegen = 0; iGegen < nGegen; iGegen++) { - m_QuarkDTerm += Quarkd[iGegen] * QuarkGegenbauer[iGegen]; - m_GluonDTerm += Gluond[iGegen] * GluonGegenbauer[iGegen]; - } - - // Normalize with appropriate weight - m_QuarkDTerm *= -(1. - z * z); - m_GluonDTerm *= -3. / 2. * (1. - z * z) * (1. - z * z); - - // Add t-dependence - m_QuarkDTerm *= m_FD / 3.; - m_GluonDTerm *= m_FD * m_xi; - } -} - -void MPSSW13WithDTermModel::ComputeFormFactors() { - double Gep, Gen, Gmp, Gmn; // Sachs form factors - double F1p, F1n, F2p, F2n; // Pauli-Dirac form factors - - const double Mup = 2.79278; // Proton magnetic moment (Nucl. Phys. B32 (1971) 221) - const double Mun = -1.91315; // Neutron magnetic moment (Nucl. Phys. B32 (1971) 221) - const double MassScaleProton2 = 0.71; // Mass scale for t-dep of Gep (in GeV^2) - const double MV2 = 0.84 * 0.84; - double tau = m_t / (4. * Constant::PROTON_MASS * Constant::PROTON_MASS); - - // Sachs form factors - Gep = 1. / ((1. - m_t / MV2) * (1. - m_t / MV2)); - Gmp = Mup * Gep; - - Gmn = Mun * Gep; - Gen = -tau / (1 - 5.6 * tau) * fabs(Gmn); - - // Pauli-Dirac from factors - F1p = (Gep - Gmp * tau) / (1. - tau); - F2p = (Gmp - Gep) / (1. - tau); - - F1n = (Gen - Gmn * tau) / (1. - tau); - F2n = (Gmn - Gen) / (1. - tau); - - // Quark contributions to Pauli-Dirac fom factors - m_F1u = 2. * F1p + F1n; - m_F1d = F1p + 2. * F1n; - - m_FD = 1. / ((1. - m_t / MV2) * (1. - m_t / MV2)); -} - -double MPSSW13WithDTermModel::Profile(double N, double beta, double alpha) { - double profile; - double ProfileShape = N; - double TwiceProfileShapePlus1 = 2. * ProfileShape + 1; - -// double alphaBeta = fabs(alpha) + fabs(beta); -// if (alphaBeta > 1.) { -// error(__func__, -// ElemUtils::Formatter() -// << "MPSSW13WithDTermModel : Parameters of profile function should be in rhombus | alpha | + | beta | <= 1." -// << '\n' << "Here alpha = " << alpha << " beta = " -// << beta << " | alpha | + | beta | = " << alphaBeta -// << '\n'); -// } - - profile = pow((1. - fabs(beta)) * (1. - fabs(beta)) - alpha * alpha, - ProfileShape); - profile /= pow(1. - fabs(beta), TwiceProfileShapePlus1); - profile *= tgamma(TwiceProfileShapePlus1 + 1.); - profile /= (pow(2., TwiceProfileShapePlus1) * tgamma(ProfileShape + 1.) - * tgamma(ProfileShape + 1.)); - - return profile; -} - -void MPSSW13WithDTermModel::throwBetaException(const std::string &funcName, - double betaValue) { - throw ElemUtils::CustomException(getClassName(), funcName, - ElemUtils::Formatter() - << "Longitudinal momentum fraction should be in ] 0., +1. ]" - << '\n' << "Here beta = " << betaValue << '\n'); -} - -double MPSSW13WithDTermModel::IntegralHuVal(double x, std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuVal(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getUpv() / absbeta; - } else { - pdf = 0.; - } - Integral = pdf * Profile(m_ProfileShapeVal, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralHuValMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuVal(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getUpv() / absbeta; - } else { - pdf = 0.; - } - Integral = pdf * Profile(m_ProfileShapeVal, beta, (m_Mx - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHuSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getUsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHuSeaMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getUsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall1HuSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getUsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall2HuSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetuSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getUsea() / absbeta; - - /* m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getUpv() / absbeta; - } else { - - }*/ // Possible source of the error, J.Wagner - Integral = Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral += -Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral *= pdf; - Integral /= m_xi; - Integral *= m_F1u / 2.; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralHdVal(double x, std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdVal(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getDnv() / absbeta; - } else { - pdf = 0.; - } - Integral = pdf * Profile(m_ProfileShapeVal, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralHdValMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdVal(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getDnv() / absbeta; - } else { - pdf = 0.; - } - Integral = pdf * Profile(m_ProfileShapeVal, beta, (m_Mx - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHdSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getDsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHdSeaMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getDsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall1HdSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getDsea() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall2HdSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getDsea() / absbeta; - Integral = Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral += -Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral *= pdf; - Integral /= m_xi; - Integral *= m_F1d; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHsSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getSbar() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHsSeaMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->GetdSea(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getSbar() / absbeta; - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall1HsSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Gets(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getSbar() / absbeta; - } else { - pdf = -m_Forward->getPartonContent().getSbar() / absbeta; - } - Integral = pdf * Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall2HsSea(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Gets(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - if (beta > 0) { - pdf = m_Forward->getPartonContent().getSbar() / absbeta; - } else { - pdf = -m_Forward->getPartonContent().getSbar() / absbeta; - } - Integral = Profile(m_ProfileShapeSea, beta, (m_x - beta) / m_xi); - Integral += -Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral *= pdf; - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHg(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Getg(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getGlu() / absbeta; - Integral = pdf * beta - * Profile(m_ProfileShapeGlue, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxLargeHgMx(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Getg(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getGlu() / absbeta; - Integral = pdf * beta - * Profile(m_ProfileShapeGlue, beta, (m_x + beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall1Hg(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Getg(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getGlu() / absbeta; - Integral = pdf * beta - * Profile(m_ProfileShapeGlue, beta, (m_x - beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::IntegralxSmall2Hg(double x, - std::vector Par) { - double Integral; - double pdf, beta, absbeta; - - beta = x; - absbeta = fabs(beta); - - if (beta <= 0 || beta > 1.) { - throwBetaException(__func__, x); - } - -// m_Forward->Setx( beta ); -// pdf = m_Forward->Getg(); - m_Forward->update(absbeta, sqrt(m_MuF2)); - pdf = m_Forward->getPartonContent().getGlu() / absbeta; - Integral = pdf * beta - * Profile(m_ProfileShapeSea, beta, (m_x + beta) / m_xi); - Integral /= m_xi; - Integral *= m_FD; - - return Integral; -} - -double MPSSW13WithDTermModel::GammaQQ(const unsigned int nflavour, - const unsigned int n) { - double Gamma; - double HarmonicSum = 0.; - - for (unsigned int k = 2; k <= n + 1; k++) { - HarmonicSum += 1. / k; - } - - Gamma = 0.5 - 1. / ((n + 1.) * (n + 2.)) + 2. * HarmonicSum; - Gamma *= m_CF; - - return Gamma; -} - -double MPSSW13WithDTermModel::GammaQG(const unsigned int nflavour, - const unsigned int n) { - double Gamma; - - Gamma = (n * n + 3. * n + 4.) / (n * (n + 1.) * (n + 2.)); - Gamma *= -1. * nflavour * m_TF; - - return Gamma; -} - -double MPSSW13WithDTermModel::GammaGQ(const unsigned int nflavour, - const unsigned int n) { - double Gamma; - - Gamma = (n * n + 3. * n + 4.) / ((n + 1.) * (n + 2.) * (n + 3.)); - Gamma *= -2. * m_CF; - - return Gamma; -} - -double MPSSW13WithDTermModel::GammaGG(const unsigned int nflavour, - const unsigned int n) { - double Gamma; - - double HarmonicSum = 0.; - for (unsigned int k = 2; k <= n + 1; k++) { - HarmonicSum += 1. / k; - } - - Gamma = 1. / 6. - 2. / (n * (n + 1.)) - 2. / ((n + 2.) * (n + 3.)) - + 2. * HarmonicSum; - Gamma *= m_CA; - Gamma += 2. / 3. * nflavour * m_TF; - - return Gamma; -} - -//TODO meme initialisation que GK11 ? -void MPSSW13WithDTermModel::initModule() { - GPDModule::initModule(); - - debug(__func__, ElemUtils::Formatter() << "fMuF2 = " << m_MuF2); -} - -//TODO implement -void MPSSW13WithDTermModel::isModuleWellConfigured() { - GPDModule::isModuleWellConfigured(); -} - -double MPSSW13WithDTermModel::getCA() const { - return m_CA; -} - -double MPSSW13WithDTermModel::getCF() const { - return m_CF; -} - -double MPSSW13WithDTermModel::getF1d() const { - return m_F1d; -} - -double MPSSW13WithDTermModel::getF1u() const { - return m_F1u; -} - -double MPSSW13WithDTermModel::getFD() const { - return m_FD; -} - -double MPSSW13WithDTermModel::getGluonDTerm() const { - return m_GluonDTerm; -} - -void MPSSW13WithDTermModel::setGluonDTerm(double gluonDTerm) { - m_GluonDTerm = gluonDTerm; -} - -double MPSSW13WithDTermModel::getMx() const { - return m_Mx; -} - -unsigned int MPSSW13WithDTermModel::getNbOfColor() const { - return m_NbOfColor; -} - -unsigned int MPSSW13WithDTermModel::getNbOfQuarkFlavor() const { - return m_NbOfQuarkFlavor; -} - -double MPSSW13WithDTermModel::getProfileShapeGlue() const { - return m_ProfileShapeGlue; -} - -double MPSSW13WithDTermModel::getProfileShapeSea() const { - return m_ProfileShapeSea; -} - -double MPSSW13WithDTermModel::getProfileShapeVal() const { - return m_ProfileShapeVal; -} - -double MPSSW13WithDTermModel::getQuarkDTerm() const { - return m_QuarkDTerm; -} - -double MPSSW13WithDTermModel::getTF() const { - return m_TF; -} - -PartonDistribution MPSSW13WithDTermModel::computeH() { - PartonDistribution partonDistribution; - - QuarkDistribution quarkDistribution_u(QuarkFlavor::UP); - QuarkDistribution quarkDistribution_d(QuarkFlavor::DOWN); - QuarkDistribution quarkDistribution_s(QuarkFlavor::STRANGE); - - double Eps = 1.e-9; - m_Mx = -m_x; - - // Integration limits and methods - double Beta1 = (m_x - m_xi) / (1. - m_xi); // eq. (54) in A. Radyushkin's paper - double Beta2 = (m_x + m_xi) / (1. + m_xi); // eq. (54) in A. Radyushkin's paper - - double Beta1Mx = (m_Mx - m_xi) / (1. - m_xi); // eq. (54) in A. Radyushkin's paper - double Beta2Mx = (m_Mx + m_xi) / (1. + m_xi); // eq. (54) in A. Radyushkin's paper - - // Scales -// m_Forward->SetFactorizationScale( m_MuF2 ); -// m_Forward->SetRenormalizationScale( m_MuR2 ); - - // Form factors - ComputeFormFactors(); - - //compute Dterms - double quarkDTerm, quarkDTermMx, gluonDTerm; - - ComputeDTerms(m_x); - quarkDTerm = m_QuarkDTerm; - gluonDTerm = m_GluonDTerm; - - ComputeDTerms(m_Mx); - quarkDTermMx = m_QuarkDTerm; - - ////////////////////////////////////////////////////// - // u and d quarks, valence part evaluated at fx // - ////////////////////////////////////////////////////// - double HuVal = 0.; - double HdVal = 0.; - - std::vector emptyParameters; - - if (m_x >= m_xi) { - // Integration, u quark - HuVal = integrate(m_pIntegralHuVal, Beta1, Beta2, emptyParameters); - - // Integration, d quark - HdVal = integrate(m_pIntegralHdVal, Beta1, Beta2, emptyParameters); - } - - if (fabs(m_x) < m_xi) { - // Integration, u quark - HuVal = integrate(m_pIntegralHuVal, Eps, Beta2, emptyParameters); - - // Integration, d quark - HdVal = integrate(m_pIntegralHdVal, Eps, Beta2, emptyParameters); - } - - HuVal += quarkDTerm; - HdVal += quarkDTerm; - - /////////////////////////////////////////////////////////////////////// - // u and d quarks, valence part evaluated at fMx (instead of fx) // - /////////////////////////////////////////////////////////////////////// - - double HuValMx = 0.; - double HdValMx = 0.; - - if (m_Mx >= m_xi) { - // Integration, u quark - HuValMx = integrate(m_pIntegralHuValMx, Beta1Mx, Beta2Mx, - emptyParameters); - - // Integration, d quark - HdValMx = integrate(m_pIntegralHdValMx, Beta1Mx, Beta2Mx, - emptyParameters); - } - - if (fabs(m_Mx) < m_xi) { - // Integration, u quark - HuValMx = integrate(m_pIntegralHuValMx, Eps, Beta2Mx, emptyParameters); - - // Integration, d quark - HdValMx = integrate(m_pIntegralHdValMx, Eps, Beta2Mx, emptyParameters); - } - - HuValMx += quarkDTermMx; - HdValMx += quarkDTermMx; - - ////////////////////////////////// - // u and d quarks, sea part // - ////////////////////////////////// - - double HuSea = 0.; - double HdSea = 0.; - - if (m_x >= m_xi) { - // Integration, u quark - HuSea = integrate(m_pIntegralxLargeHuSea, Beta1, Beta2, - emptyParameters); - - // Integration, d quark - HdSea = integrate(m_pIntegralxLargeHdSea, Beta1, Beta2, - emptyParameters); - } - - if (fabs(m_x) < m_xi) { - // Integration, u quark - HuSea = integrate(m_pIntegralxSmall1HuSea, Beta2Mx, Beta2, - emptyParameters); - - HuSea += integrate(m_pIntegralxSmall2HuSea, Eps, Beta2Mx, - emptyParameters); - - // Integration, d quark - HdSea = integrate(m_pIntegralxSmall1HdSea, Beta2Mx, Beta2, - emptyParameters); - - HdSea += integrate(m_pIntegralxSmall2HdSea, Eps, Beta2Mx, - emptyParameters); - } - - if (m_x <= -m_xi) { - // Integration, u quark - HuSea = -integrate(m_pIntegralxLargeHuSeaMx, Beta1Mx, Beta2Mx, - emptyParameters); - - // Integration, d quark - HdSea = -integrate(m_pIntegralxLargeHdSeaMx, Beta1Mx, Beta2Mx, - emptyParameters); - } - - HuSea += quarkDTerm; - HdSea += quarkDTerm; - - quarkDistribution_u.setQuarkDistribution(HuVal + HuSea); - quarkDistribution_d.setQuarkDistribution(HdVal + HdSea); - - ////////////////////////////// - // s quarks, "sea part" // - ////////////////////////////// - double Hs = 0.; - - if (m_x >= m_xi) { - Hs = integrate(m_pIntegralxLargeHsSea, Beta1, Beta2, emptyParameters); - } - - if (fabs(m_x) < m_xi) { - Hs = integrate(m_pIntegralxSmall1HsSea, Beta2Mx, Beta2, - emptyParameters); - - Hs += integrate(m_pIntegralxSmall2HsSea, Eps, Beta2Mx, emptyParameters); - } - - if (m_x <= -m_xi) { - Hs = -integrate(m_pIntegralxLargeHsSeaMx, Beta1Mx, Beta2Mx, - emptyParameters); - } - - Hs += quarkDTerm; - - quarkDistribution_s.setQuarkDistribution(Hs); - - //////////////// - // Gluons // - //////////////// - double Hg = 0.; - - if (m_x >= m_xi) { - // Integration - Hg = integrate(m_pIntegralxLargeHg, Beta1, Beta2, emptyParameters); - } - - if (fabs(m_x) < m_xi) { - // Integration - Hg = integrate(m_pIntegralxSmall1Hg, 0., Beta2, emptyParameters); - - Hg += integrate(m_pIntegralxSmall2Hg, 0., Beta2Mx, emptyParameters); - } - - if (m_x <= -m_xi) { - // Integration - Hg = integrate(m_pIntegralxLargeHgMx, Beta1Mx, Beta2Mx, - emptyParameters); - } - - Hg += gluonDTerm; - - GluonDistribution gluonDistribution(Hg); - - ////////////////////////////////////////// - // H, C-odd and C-even combinations // - ////////////////////////////////////////// - // u quark - quarkDistribution_u.setQuarkDistributionPlus(HuVal - HuValMx + 2 * HuSea); - quarkDistribution_u.setQuarkDistributionMinus(HuVal + HuValMx); - - // d quark - quarkDistribution_d.setQuarkDistributionPlus(HdVal - HdValMx + 2 * HdSea); - quarkDistribution_d.setQuarkDistributionMinus(HdVal + HdValMx); - - // s quark - quarkDistribution_s.setQuarkDistributionPlus(2 * Hs); - quarkDistribution_s.setQuarkDistributionMinus(0.); - - //TODO no singlet ? - - partonDistribution.setGluonDistribution(gluonDistribution); - partonDistribution.addQuarkDistribution(quarkDistribution_u); - partonDistribution.addQuarkDistribution(quarkDistribution_d); - partonDistribution.addQuarkDistribution(quarkDistribution_s); - - return partonDistribution; -} diff --git a/src/partons/modules/gpd_border_function/KM10BorderFunctionModel.cpp b/src/partons/modules/gpd_border_function/GPDBorderFunctionKM10.cpp similarity index 79% rename from src/partons/modules/gpd_border_function/KM10BorderFunctionModel.cpp rename to src/partons/modules/gpd_border_function/GPDBorderFunctionKM10.cpp index bb6d222eda2ffcb5e0c53d988b33ee75bc919410..38101ee0a882c23baff13f9813e07a0f87ad392d 100644 --- a/src/partons/modules/gpd_border_function/KM10BorderFunctionModel.cpp +++ b/src/partons/modules/gpd_border_function/GPDBorderFunctionKM10.cpp @@ -5,28 +5,22 @@ * Author: Pawel Sznajder (IPNO) */ -#include "../../../../include/partons/modules/gpd_border_function/KM10BorderFunctionModel.h" +#include "../../../../include/partons/modules/gpd_border_function/GPDBorderFunctionKM10.h" #include -#include #include -#include "../../../../include/partons/beans/gpd/GPDResult.h" #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/GluonDistribution.h" -#include "../../../../include/partons/beans/parton_distribution/PartonDistribution.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" #include "../../../../include/partons/beans/QuarkFlavor.h" #include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/gpd/GK11Model.h" -#include "../../../../include/partons/ModuleObjectFactory.h" -#include "../../../../include/partons/Partons.h" -const unsigned int KM10BorderFunctionModel::classId = +const unsigned int GPDBorderFunctionKM10::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new KM10BorderFunctionModel("KM10BorderFunctionModel")); + new GPDBorderFunctionKM10("GPDBorderFunctionKM10")); -KM10BorderFunctionModel::KM10BorderFunctionModel(const std::string& className) : +GPDBorderFunctionKM10::GPDBorderFunctionKM10(const std::string& className) : GPDBorderFunctionModule(className) { m_par_H_b_val = 2.4; //Eq. (112) @@ -54,8 +48,8 @@ KM10BorderFunctionModel::KM10BorderFunctionModel(const std::string& className) : m_MuF2_ref = 2.; //does not depend of Q2, muF2_ref set here arbitrary } -KM10BorderFunctionModel::KM10BorderFunctionModel( - const KM10BorderFunctionModel& other) : +GPDBorderFunctionKM10::GPDBorderFunctionKM10( + const GPDBorderFunctionKM10& other) : GPDBorderFunctionModule(other) { m_par_H_b_val = other.m_par_H_b_val; @@ -77,26 +71,26 @@ KM10BorderFunctionModel::KM10BorderFunctionModel( m_par_H_p_sea = other.m_par_H_p_sea; } -KM10BorderFunctionModel::~KM10BorderFunctionModel() { +GPDBorderFunctionKM10::~GPDBorderFunctionKM10() { } -KM10BorderFunctionModel* KM10BorderFunctionModel::clone() const { - return new KM10BorderFunctionModel(*this); +GPDBorderFunctionKM10* GPDBorderFunctionKM10::clone() const { + return new GPDBorderFunctionKM10(*this); } -void KM10BorderFunctionModel::resolveObjectDependencies() { +void GPDBorderFunctionKM10::resolveObjectDependencies() { } -void KM10BorderFunctionModel::configure( +void GPDBorderFunctionKM10::configure( const ElemUtils::Parameters& parameters) { GPDBorderFunctionModule::configure(parameters); } -std::string KM10BorderFunctionModel::toString() const { +std::string GPDBorderFunctionKM10::toString() const { GPDBorderFunctionModule::toString(); } -PartonDistribution KM10BorderFunctionModel::computeH() { +PartonDistribution GPDBorderFunctionKM10::computeH() { //parameters double n, r, alpha, b, M, p; @@ -151,7 +145,7 @@ PartonDistribution KM10BorderFunctionModel::computeH() { return partonDistribution; } -double KM10BorderFunctionModel::getDiagonalGPD(double xi, double n, double r, +double GPDBorderFunctionKM10::getDiagonalGPD(double xi, double n, double r, double alpha, double b, double M, double p) const { return n * r / (1. + xi) * pow(2 * xi / (1 + xi), -1 * alpha) * pow((1. - xi) / (1. + xi), b) diff --git a/src/partons/modules/GPDBorderFunctionModule.cpp b/src/partons/modules/gpd_border_function/GPDBorderFunctionModule.cpp similarity index 91% rename from src/partons/modules/GPDBorderFunctionModule.cpp rename to src/partons/modules/gpd_border_function/GPDBorderFunctionModule.cpp index d6b4125c539b3657ddb67f4d6e173cb4c6985864..a61d45a6b12b229c33fff1ba5b6a1dd2eec43c1b 100644 --- a/src/partons/modules/GPDBorderFunctionModule.cpp +++ b/src/partons/modules/gpd_border_function/GPDBorderFunctionModule.cpp @@ -5,9 +5,7 @@ * Author: Pawel Sznajder (IPNO) */ -#include "../../../include/partons/modules/GPDBorderFunctionModule.h" - -#include "../../../include/partons/beans/parton_distribution/PartonDistribution.h" +#include "../../../../include/partons/modules/gpd_border_function/GPDBorderFunctionModule.h" GPDBorderFunctionModule::GPDBorderFunctionModule(const std::string &className) : GPDModule(className) { diff --git a/src/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.cpp b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.cpp similarity index 58% rename from src/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.cpp rename to src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.cpp index c3febf4315435667c4b56cd720f6ecf2bb7b506c..d30d73012b51d72e91641648dc949d363eb07369 100644 --- a/src/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.cpp +++ b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.cpp @@ -1,18 +1,17 @@ -#include "../../../../include/partons/modules/gpd_subtraction_constant/KM10SubtractionConstantModel.h" +#include "../../../../include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantKM10.h" #include -#include #include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/BaseObjectRegistry.h" -const unsigned int KM10SubtractionConstantModel::classId = +const unsigned int GPDSubtractionConstantKM10::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new KM10SubtractionConstantModel( - "KM10SubtractionConstantModel")); + new GPDSubtractionConstantKM10( + "GPDSubtractionConstantKM10")); -KM10SubtractionConstantModel::KM10SubtractionConstantModel( +GPDSubtractionConstantKM10::GPDSubtractionConstantKM10( const std::string& className) : GPDSubtractionConstantModule(className) { @@ -28,25 +27,25 @@ KM10SubtractionConstantModel::KM10SubtractionConstantModel( m_par_H_M_sub = 1.5; //Eq. (112) } -KM10SubtractionConstantModel::~KM10SubtractionConstantModel() { +GPDSubtractionConstantKM10::~GPDSubtractionConstantKM10() { } -KM10SubtractionConstantModel* KM10SubtractionConstantModel::clone() const { - return new KM10SubtractionConstantModel(*this); +GPDSubtractionConstantKM10* GPDSubtractionConstantKM10::clone() const { + return new GPDSubtractionConstantKM10(*this); } -KM10SubtractionConstantModel::KM10SubtractionConstantModel( - const KM10SubtractionConstantModel& other) : +GPDSubtractionConstantKM10::GPDSubtractionConstantKM10( + const GPDSubtractionConstantKM10& other) : GPDSubtractionConstantModule(other) { m_par_H_C = other.m_par_H_C; m_par_H_M_sub = other.m_par_H_M_sub; } -double KM10SubtractionConstantModel::computeH() { +double GPDSubtractionConstantKM10::computeH() { return m_par_H_C * pow(1. - m_t * pow(m_par_H_M_sub, -2), -2); } -double KM10SubtractionConstantModel::computeE() { +double GPDSubtractionConstantKM10::computeE() { return -1 * computeH(); } diff --git a/src/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.cpp b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.cpp similarity index 61% rename from src/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.cpp rename to src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.cpp index 38d8be3dd3f9a9cd4f17b00203ba185072aa27fa..fd1a9b917f51be608ec298351fd2f530688060ec 100644 --- a/src/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.cpp +++ b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.cpp @@ -1,4 +1,4 @@ -#include "../../../../include/partons/modules/gpd_subtraction_constant/MMS13SubtractionConstantModel.h" +#include "../../../../include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantMMS13.h" #include #include @@ -7,16 +7,16 @@ #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/gpd/MMS13Model.h" +#include "../../../../include/partons/modules/gpd/GPDMMS13.h" #include "../../../../include/partons/ModuleObjectFactory.h" #include "../../../../include/partons/Partons.h" -const unsigned int MMS13SubtractionConstantModel::classId = +const unsigned int GPDSubtractionConstantMMS13::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new MMS13SubtractionConstantModel( - "MMS13SubtractionConstantModel")); + new GPDSubtractionConstantMMS13( + "GPDSubtractionConstantMMS13")); -MMS13SubtractionConstantModel::MMS13SubtractionConstantModel( +GPDSubtractionConstantMMS13::GPDSubtractionConstantMMS13( const std::string& className) : GPDSubtractionConstantModule(className), MathIntegratorModule() { @@ -33,7 +33,7 @@ MMS13SubtractionConstantModel::MMS13SubtractionConstantModel( initFunctorsForIntegrations(); } -MMS13SubtractionConstantModel::~MMS13SubtractionConstantModel() { +GPDSubtractionConstantMMS13::~GPDSubtractionConstantMMS13() { if (m_p_int_dTermIntegral) { delete m_p_int_dTermIntegral; @@ -41,50 +41,50 @@ MMS13SubtractionConstantModel::~MMS13SubtractionConstantModel() { } } -MMS13SubtractionConstantModel* MMS13SubtractionConstantModel::clone() const { - return new MMS13SubtractionConstantModel(*this); +GPDSubtractionConstantMMS13* GPDSubtractionConstantMMS13::clone() const { + return new GPDSubtractionConstantMMS13(*this); } -void MMS13SubtractionConstantModel::configure( +void GPDSubtractionConstantMMS13::configure( const ElemUtils::Parameters& parameters) { GPDSubtractionConstantModule::configure(parameters); MathIntegratorModule::configureIntegrator(parameters); } -std::string MMS13SubtractionConstantModel::toString() const { +std::string GPDSubtractionConstantMMS13::toString() const { return GPDSubtractionConstantModule::toString(); } -void MMS13SubtractionConstantModel::resolveObjectDependencies() { +void GPDSubtractionConstantMMS13::resolveObjectDependencies() { setIntegrator(NumA::IntegratorType1D::DEXP); m_pMMS13Model = - static_cast(Partons::getInstance()->getModuleObjectFactory()->newGPDModule( - MMS13Model::classId)); + static_cast(Partons::getInstance()->getModuleObjectFactory()->newGPDModule( + GPDMMS13::classId)); } -void MMS13SubtractionConstantModel::prepareSubModules( +void GPDSubtractionConstantMMS13::prepareSubModules( const std::map& subModulesData) { GPDSubtractionConstantModule::prepareSubModules(subModulesData); } -void MMS13SubtractionConstantModel::initModule() { +void GPDSubtractionConstantMMS13::initModule() { GPDSubtractionConstantModule::initModule(); } -void MMS13SubtractionConstantModel::isModuleWellConfigured() { +void GPDSubtractionConstantMMS13::isModuleWellConfigured() { GPDSubtractionConstantModule::isModuleWellConfigured(); } -void MMS13SubtractionConstantModel::initFunctorsForIntegrations() { +void GPDSubtractionConstantMMS13::initFunctorsForIntegrations() { m_p_int_dTermIntegral = NumA::Integrator1D::newIntegrationFunctor(this, - &MMS13SubtractionConstantModel::dTermIntegral); + &GPDSubtractionConstantMMS13::dTermIntegral); } -MMS13SubtractionConstantModel::MMS13SubtractionConstantModel( - const MMS13SubtractionConstantModel& other) : +GPDSubtractionConstantMMS13::GPDSubtractionConstantMMS13( + const GPDSubtractionConstantMMS13& other) : GPDSubtractionConstantModule(other), MathIntegratorModule(other) { m_pMMS13Model = other.m_pMMS13Model; @@ -92,7 +92,7 @@ MMS13SubtractionConstantModel::MMS13SubtractionConstantModel( initFunctorsForIntegrations(); } -double MMS13SubtractionConstantModel::computeH() { +double GPDSubtractionConstantMMS13::computeH() { std::vector parameters; //TODO H, E, etc nie potrzebne @@ -100,13 +100,13 @@ double MMS13SubtractionConstantModel::computeH() { return integrate(m_p_int_dTermIntegral, -1., 1., parameters); } -double MMS13SubtractionConstantModel::computeE() { +double GPDSubtractionConstantMMS13::computeE() { std::vector parameters; return -1 * integrate(m_p_int_dTermIntegral, -1., 1., parameters); } -double MMS13SubtractionConstantModel::dTermIntegral(double zeta, +double GPDSubtractionConstantMMS13::dTermIntegral(double zeta, std::vector par) { return m_pMMS13Model->DTerm(zeta) / (1. - zeta); } diff --git a/src/partons/modules/GPDSubtractionConstantModule.cpp b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.cpp similarity index 97% rename from src/partons/modules/GPDSubtractionConstantModule.cpp rename to src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.cpp index add813709bfce7c2a05d6e3693c38df4abc276dd..9267856eb9c36047ffce7a503eddc0809f3e2a90 100644 --- a/src/partons/modules/GPDSubtractionConstantModule.cpp +++ b/src/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.cpp @@ -5,7 +5,7 @@ * Author: debian */ -#include "../../../include/partons/modules/GPDSubtractionConstantModule.h" +#include "../../../../include/partons/modules/gpd_subtraction_constant/GPDSubtractionConstantModule.h" #include #include diff --git a/src/partons/modules/observable/Ac.cpp b/src/partons/modules/observable/Ac.cpp deleted file mode 100644 index c6a07477e8984e5e7227e9a48654241b18243f68..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/Ac.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "../../../../include/partons/modules/observable/Ac.h" - -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int Ac::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new Ac("Ac")); - -Ac::Ac(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -Ac::Ac(const Ac& other) : - Observable(other) { -} - -Ac::~Ac() { -} - -Ac* Ac::clone() const { - return new Ac(*this); -} - -//TODO vérifier -//TODO !!! division par zero !!! -double Ac::computePhiObservable(double phi) { - - debug(__func__, ElemUtils::Formatter() << "phi = " << phi); - - double result = 0.; - - result = ((m_pProcessModule->computeCrossSection(+1, +1, - NumA::Vector3D(0., 0., 0.), phi) - + m_pProcessModule->computeCrossSection(-1, +1, - NumA::Vector3D(0., 0., 0.), phi)) - - ((m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., 0.), phi) - + m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., 0.), phi)))) - / (4. - * (m_pProcessModule->computeCrossSection(0., 0., - NumA::Vector3D(0., 0., 0.), phi))); - return result; -} diff --git a/src/partons/modules/observable/AcCos0phi.cpp b/src/partons/modules/observable/AcCos0phi.cpp deleted file mode 100644 index 528298b46fbcf719fdb3ad3a8d3457bd4b1e7220..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AcCos0phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AcCos0phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AcCos0phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AcCos0phi("AcCos0phi")); - -AcCos0phi::AcCos0phi(const std::string &className) : - Ac(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AcCos0phi::AcCos0phi(const AcCos0phi& other) : - Ac(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AcCos0phi::~AcCos0phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AcCos0phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AcCos0phi::functionToIntegrateObservable); -} - -AcCos0phi* AcCos0phi::clone() const { - return new AcCos0phi(*this); -} - -double AcCos0phi::functionToIntegrateObservable(double x, - std::vector params) { - return Ac::computePhiObservable(x) * cos(0 * x); -} - -double AcCos0phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / (2 * Constant::PI); -} diff --git a/src/partons/modules/observable/AcCos1phi.cpp b/src/partons/modules/observable/AcCos1phi.cpp deleted file mode 100644 index 194fd6855e3572bc86c3ae135d70c6350e9fcd86..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AcCos1phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AcCos1phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AcCos1phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AcCos1phi("AcCos1phi")); - -AcCos1phi::AcCos1phi(const std::string &className) : - Ac(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AcCos1phi::AcCos1phi(const AcCos1phi& other) : - Ac(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AcCos1phi::~AcCos1phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AcCos1phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AcCos1phi::functionToIntegrateObservable); -} - -AcCos1phi* AcCos1phi::clone() const { - return new AcCos1phi(*this); -} - -double AcCos1phi::functionToIntegrateObservable(double x, - std::vector params) { - return Ac::computePhiObservable(x) * cos(x); -} - -double AcCos1phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AcCos2phi.cpp b/src/partons/modules/observable/AcCos2phi.cpp deleted file mode 100644 index b8829e7164e65a7633a0ab5815438d1d18cf2708..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AcCos2phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AcCos2phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AcCos2phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AcCos2phi("AcCos2phi")); - -AcCos2phi::AcCos2phi(const std::string &className) : - Ac(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AcCos2phi::AcCos2phi(const AcCos2phi& other) : - Ac(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AcCos2phi::~AcCos2phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AcCos2phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AcCos2phi::functionToIntegrateObservable); -} - -AcCos2phi* AcCos2phi::clone() const { - return new AcCos2phi(*this); -} - -double AcCos2phi::functionToIntegrateObservable(double x, - std::vector params) { - return Ac::computePhiObservable(x) * cos(2 * x); -} - -double AcCos2phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AcCos3phi.cpp b/src/partons/modules/observable/AcCos3phi.cpp deleted file mode 100644 index 5adb952ff5974f180b2c897b65fc62e1709c415f..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AcCos3phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AcCos3phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AcCos3phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AcCos3phi("AcCos3phi")); - -AcCos3phi::AcCos3phi(const std::string &className) : - Ac(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AcCos3phi::AcCos3phi(const AcCos3phi& other) : - Ac(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AcCos3phi::~AcCos3phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AcCos3phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AcCos3phi::functionToIntegrateObservable); -} - -AcCos3phi* AcCos3phi::clone() const { - return new AcCos3phi(*this); -} - -double AcCos3phi::functionToIntegrateObservable(double x, - std::vector params) { - return Ac::computePhiObservable(x) * cos(3 * x); -} - -double AcCos3phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/All.cpp b/src/partons/modules/observable/All.cpp deleted file mode 100644 index aa90fbd50c081c06c6f73474b9d328055c0d43b2..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/All.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "../../../../include/partons/modules/observable/All.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int All::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new All("All")); - -All::All(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -All::All(const All& other) : - Observable(other) { -} - -All::~All() { -} - -All* All::clone() const { - return new All(*this); -} - - -double All::computePhiObservable(double phi) { - - double result = 0.; - - - - - double SigmaPP = m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., +1.0), phi); - - double SigmaMM = m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., -1.0), phi); - - double SigmaMP = m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., +1.0), phi); - - double SigmaPM = m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., -1.0), phi); - - //TODO !!! division par zero !!! - result = (SigmaPP + SigmaMM - SigmaMP - SigmaPM) / (SigmaPP + SigmaMM + SigmaMP + SigmaPM); - - - return result; -} - - - - - diff --git a/src/partons/modules/observable/AllCos0phi.cpp b/src/partons/modules/observable/AllCos0phi.cpp deleted file mode 100644 index bb1c5c612c3e6076d17ebaf1841ea6abc79bf347..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AllCos0phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AllCos0phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AllCos0phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AllCos0phi("AllCos0phi")); - -AllCos0phi::AllCos0phi(const std::string &className) : - All(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AllCos0phi::AllCos0phi(const AllCos0phi& other) : - All(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AllCos0phi::~AllCos0phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AllCos0phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AllCos0phi::functionToIntegrateObservable); -} - -AllCos0phi* AllCos0phi::clone() const { - return new AllCos0phi(*this); -} - -double AllCos0phi::functionToIntegrateObservable(double x, - std::vector params) { - return All::computePhiObservable(x) * cos(0 * x); -} - -double AllCos0phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / (2 * Constant::PI); -} diff --git a/src/partons/modules/observable/AllCos1phi.cpp b/src/partons/modules/observable/AllCos1phi.cpp deleted file mode 100644 index ff6ca95379c35f819908726f1860460f48e52d24..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AllCos1phi.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "../../../../include/partons/modules/observable/AllCos1phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AllCos1phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AllCos1phi("AllCos1phi")); - -AllCos1phi::AllCos1phi(const std::string &className) : - All(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AllCos1phi::AllCos1phi(const AllCos1phi& other) : - All(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AllCos1phi::~AllCos1phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AllCos1phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AllCos1phi::functionToIntegrateObservable); -} - -AllCos1phi* AllCos1phi::clone() const { - return new AllCos1phi(*this); -} - -double AllCos1phi::functionToIntegrateObservable(double x, - std::vector params) { - // x[0] = phi - return All::computePhiObservable(x) * cos(1 * x); -} - -double AllCos1phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / (Constant::PI); -} diff --git a/src/partons/modules/observable/AllCos2phi.cpp b/src/partons/modules/observable/AllCos2phi.cpp deleted file mode 100644 index ff6ec518f658c95cec6d7650e289e30c72eaa9c5..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AllCos2phi.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AllCos2phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AllCos2phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AllCos2phi("AllCos2phi")); - -AllCos2phi::AllCos2phi(const std::string &className) : - All(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AllCos2phi::AllCos2phi(const AllCos2phi& other) : - All(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AllCos2phi::~AllCos2phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AllCos2phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AllCos2phi::functionToIntegrateObservable); -} - -AllCos2phi* AllCos2phi::clone() const { - return new AllCos2phi(*this); -} - -double AllCos2phi::functionToIntegrateObservable(double x, - std::vector params) { - return All::computePhiObservable(x) * cos(2 * x); -} - -double AllCos2phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / (Constant::PI); -} diff --git a/src/partons/modules/observable/Alu.cpp b/src/partons/modules/observable/Alu.cpp deleted file mode 100644 index ced69e17a0a719153439e3bd9de75b6bbe369f30..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/Alu.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "../../../../include/partons/modules/observable/Alu.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int Alu::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new Alu("Alu")); - -Alu::Alu(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -Alu::Alu(const Alu& other) : - Observable(other) { -} - -Alu::~Alu() { -} - -Alu* Alu::clone() const { - return new Alu(*this); -} - -// optimisation remplacement des multiples appels similaires par A - B / A + B -double Alu::computePhiObservable(double phi) { - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - double B = m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - //TODO !!! division par zero !!! - result = (A - B) / (A + B); - - return result; -} diff --git a/src/partons/modules/observable/AluDVCS.cpp b/src/partons/modules/observable/AluDVCS.cpp deleted file mode 100644 index 36c92a2dbd7a17c437b591f60ca4d5284631cd47..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AluDVCS.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "../../../../include/partons/modules/observable/AluDVCS.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AluDVCS::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new AluDVCS("AluDVCS")); - -AluDVCS::AluDVCS(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -AluDVCS::AluDVCS(const AluDVCS& other) : - Observable(other) { -} - -AluDVCS::~AluDVCS() { -} - -AluDVCS* AluDVCS::clone() const { - return new AluDVCS(*this); -} - -// optimisation remplacement des multiples appels similaires par A - B / A + B -double AluDVCS::computePhiObservable(double phi) { - - double result = 0.; - - double SigmaPP = m_pProcessModule->computeCrossSection(+1, +1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaPM = m_pProcessModule->computeCrossSection(-1, +1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaMP = m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaMM = m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaUU = m_pProcessModule->computeCrossSection(0., 0, - NumA::Vector3D(0., 0., 0.), phi); - - //TODO !!! division par zero !!! - result = ((SigmaPP + SigmaPM) - (SigmaMP + SigmaMM)) / (4 * SigmaUU); - - return result; -} diff --git a/src/partons/modules/observable/AluDVCSSin1phi.cpp b/src/partons/modules/observable/AluDVCSSin1phi.cpp deleted file mode 100644 index 814f427b6dc2ad90e5812b4bd1206fe381e6c534..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AluDVCSSin1phi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AluDVCSSin1phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AluDVCSSin1phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AluDVCSSin1phi("AluDVCSSin1phi")); - -AluDVCSSin1phi::AluDVCSSin1phi(const std::string &className) : - AluDVCS(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AluDVCSSin1phi::AluDVCSSin1phi(const AluDVCSSin1phi& other) : - AluDVCS(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AluDVCSSin1phi::~AluDVCSSin1phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AluDVCSSin1phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AluDVCSSin1phi::functionToIntegrateObservable); -} - -AluDVCSSin1phi* AluDVCSSin1phi::clone() const { - return new AluDVCSSin1phi(*this); -} - -double AluDVCSSin1phi::functionToIntegrateObservable(double x, - std::vector params) { - return AluDVCS::computePhiObservable(x) * sin(x); -} - -double AluDVCSSin1phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; - -} diff --git a/src/partons/modules/observable/AluSinPhi.cpp b/src/partons/modules/observable/AluSinPhi.cpp deleted file mode 100644 index c879150f898a877de5211d1f3b4b9352424a151e..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AluSinPhi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AluSinPhi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AluSinPhi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AluSinPhi("AluSinPhi")); - -AluSinPhi::AluSinPhi(const std::string &className) : - Alu(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AluSinPhi::AluSinPhi(const AluSinPhi& other) : - Alu(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AluSinPhi::~AluSinPhi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AluSinPhi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AluSinPhi::functionToIntegrateObservable); -} - -AluSinPhi* AluSinPhi::clone() const { - return new AluSinPhi(*this); -} - -double AluSinPhi::functionToIntegrateObservable(double x, - std::vector params) { - return Alu::computePhiObservable(x) * sin(x); -} - -double AluSinPhi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/Alui.cpp b/src/partons/modules/observable/Alui.cpp deleted file mode 100644 index 38926f101d4b20ab387e8d132bc98ac9e8c7188d..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/Alui.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "../../../../include/partons/modules/observable/Alui.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int Alui::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new Alui("Alui")); - -Alui::Alui(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -Alui::Alui(const Alui& other) : - Observable(other) { -} - -Alui::~Alui() { -} - -Alui* Alui::clone() const { - return new Alui(*this); -} - -// optimisation remplacement des multiples appels similaires par A - B / A + B -double Alui::computePhiObservable(double phi) { - - double result = 0.; - - double SigmaPP = m_pProcessModule->computeCrossSection(+1, +1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaPM = m_pProcessModule->computeCrossSection(-1, +1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaMP = m_pProcessModule->computeCrossSection(+1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - double SigmaMM = m_pProcessModule->computeCrossSection(-1, -1, - NumA::Vector3D(0., 0., 0.), phi); - - //TODO !!! division par zero !!! - result = ((SigmaPP - SigmaPM) - (SigmaMP - SigmaMM)) - / (SigmaPP + SigmaPM + SigmaMP + SigmaMM); - - return result; -} diff --git a/src/partons/modules/observable/AluiSin1phi.cpp b/src/partons/modules/observable/AluiSin1phi.cpp deleted file mode 100644 index 0e910f93a13fb2fe65f663315d85235d8e0a7a96..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AluiSin1phi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AluiSin1phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AluiSin1phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AluiSin1phi("AluiSin1phi")); - -AluiSin1phi::AluiSin1phi(const std::string &className) : - Alui(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AluiSin1phi::AluiSin1phi(const AluiSin1phi& other) : - Alui(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AluiSin1phi::~AluiSin1phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AluiSin1phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AluiSin1phi::functionToIntegrateObservable); -} - -AluiSin1phi* AluiSin1phi::clone() const { - return new AluiSin1phi(*this); -} - -double AluiSin1phi::functionToIntegrateObservable(double x, - std::vector params) { - return Alui::computePhiObservable(x) * sin(x); -} - -double AluiSin1phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AluiSin2phi.cpp b/src/partons/modules/observable/AluiSin2phi.cpp deleted file mode 100644 index 23688adbd5e976e3dc3aa45751591b8dd2c97179..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AluiSin2phi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AluiSin2phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AluiSin2phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AluiSin2phi("AluiSin2phi")); - -AluiSin2phi::AluiSin2phi(const std::string &className) : - Alui(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AluiSin2phi::AluiSin2phi(const AluiSin2phi& other) : - Alui(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AluiSin2phi::~AluiSin2phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AluiSin2phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AluiSin2phi::functionToIntegrateObservable); -} - -AluiSin2phi* AluiSin2phi::clone() const { - return new AluiSin2phi(*this); -} - -double AluiSin2phi::functionToIntegrateObservable(double x, - std::vector params) { - return Alui::computePhiObservable(x) * sin(2 * x); -} - -double AluiSin2phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/Aul.cpp b/src/partons/modules/observable/Aul.cpp deleted file mode 100644 index 10c2117df3da2ce877da9b8bc76f310d4a7f6938..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/Aul.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "../../../../include/partons/modules/observable/Aul.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int Aul::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new Aul("Aul")); - -Aul::Aul(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -Aul::Aul(const Aul& other) : - Observable(other) { -} - -Aul::~Aul() { -} - -Aul* Aul::clone() const { - return new Aul(*this); -} - -double Aul::computePhiObservable(double phi) { - - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., 0., +1.), phi); - - double B = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., 0., -1.), phi); - - //TODO !!! division par zero !!! - result = (A - B) / (A + B); - - return result; -} diff --git a/src/partons/modules/observable/AulSin2phi.cpp b/src/partons/modules/observable/AulSin2phi.cpp deleted file mode 100644 index dacc959f18f521653eba67af572e357cf04e424b..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AulSin2phi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AulSin2phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AulSin2phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AulSin2phi("AulSin2phi")); - -AulSin2phi::AulSin2phi(const std::string &className) : - Aul(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AulSin2phi::AulSin2phi(const AulSin2phi& other) : - Aul(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AulSin2phi::~AulSin2phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AulSin2phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AulSin2phi::functionToIntegrateObservable); -} - -AulSin2phi* AulSin2phi::clone() const { - return new AulSin2phi(*this); -} - -double AulSin2phi::functionToIntegrateObservable(double x, - std::vector params) { - return Aul::computePhiObservable(x) * sin(2 * x); -} - -double AulSin2phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AulSin3phi.cpp b/src/partons/modules/observable/AulSin3phi.cpp deleted file mode 100644 index 2f3e57e94cef4d045c14488fff1c0bf89fbbcf80..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AulSin3phi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AulSin3phi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AulSin3phi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AulSin3phi("AulSin3phi")); - -AulSin3phi::AulSin3phi(const std::string &className) : - Aul(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AulSin3phi::AulSin3phi(const AulSin3phi& other) : - Aul(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AulSin3phi::~AulSin3phi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AulSin3phi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AulSin3phi::functionToIntegrateObservable); -} - -AulSin3phi* AulSin3phi::clone() const { - return new AulSin3phi(*this); -} - -double AulSin3phi::functionToIntegrateObservable(double x, - std::vector params) { - return Aul::computePhiObservable(x) * sin(3 * x); -} - -double AulSin3phi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AulSinPhi.cpp b/src/partons/modules/observable/AulSinPhi.cpp deleted file mode 100644 index 754a43f43ad79203c987e328a36add6e77fe60b4..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AulSinPhi.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "../../../../include/partons/modules/observable/AulSinPhi.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AulSinPhi::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AulSinPhi("AulSinPhi")); - -AulSinPhi::AulSinPhi(const std::string &className) : - Aul(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AulSinPhi::AulSinPhi(const AulSinPhi& other) : - Aul(other), MathIntegratorModule(other) { - initFunctorsForIntegrations(); -} - -AulSinPhi::~AulSinPhi() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } - -} - -void AulSinPhi::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AulSinPhi::functionToIntegrateObservable); -} - -AulSinPhi* AulSinPhi::clone() const { - return new AulSinPhi(*this); -} - -double AulSinPhi::functionToIntegrateObservable(double x, - std::vector params) { - return Aul::computePhiObservable(x) * sin(x); -} - -double AulSinPhi::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / Constant::PI; -} diff --git a/src/partons/modules/observable/AutINT.cpp b/src/partons/modules/observable/AutINT.cpp deleted file mode 100644 index 4c54f41b21a4eddca84b1ba850273a1286408330..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AutINT.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/AutINT.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AutINT::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new AutINT("AutINT")); - -AutINT::AutINT(const std::string &className) : - AutSinPhiPhiS(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -AutINT::AutINT(const AutINT& other) : - AutSinPhiPhiS(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -AutINT::~AutINT() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void AutINT::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &AutINT::functionToIntegrateObservable); -} - -AutINT* AutINT::clone() const { - return new AutINT(*this); -} - -double AutINT::functionToIntegrateObservable(double x, - std::vector params) { - return AutSinPhiPhiS::computePhiObservable(x)*cos(x); -} - -double AutINT::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters) / (2 * Constant::PI); -} diff --git a/src/partons/modules/observable/AutSinPhiPhiS.cpp b/src/partons/modules/observable/AutSinPhiPhiS.cpp deleted file mode 100644 index 36f6c08d2750e5865aea6f892a04d00f07fa67e8..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AutSinPhiPhiS.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "../../../../include/partons/modules/observable/AutSinPhiPhiS.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AutSinPhiPhiS::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new AutSinPhiPhiS("AutSinPhiPhiS")); - -AutSinPhiPhiS::AutSinPhiPhiS(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -AutSinPhiPhiS::AutSinPhiPhiS(const AutSinPhiPhiS& other) : - Observable(other) { -} - -AutSinPhiPhiS::~AutSinPhiPhiS() { -} - -AutSinPhiPhiS* AutSinPhiPhiS::clone() const { - return new AutSinPhiPhiS(*this); -} - -double AutSinPhiPhiS::computePhiObservable(double phi) { - - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., 0., 0.), phi); - - double B = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., -1., 0.), phi); - - //TODO !!! division par zero !!! - // result = (A - B) / (A + B); - result = B/A-1; - return result; -} diff --git a/src/partons/modules/observable/AutSinPhiPhiSOld.cpp b/src/partons/modules/observable/AutSinPhiPhiSOld.cpp deleted file mode 100644 index 273dce9bddf401fce7c73e1712ff5b3f5dea9c21..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/AutSinPhiPhiSOld.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "../../../../include/partons/modules/observable/AutSinPhiPhiSOld.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -// Initialise [class]::classId with a unique name. -const unsigned int AutSinPhiPhiSOld::classId = - BaseObjectRegistry::getInstance()->registerBaseObject(new AutSinPhiPhiSOld("AutSinPhiPhiSOld")); - -AutSinPhiPhiSOld::AutSinPhiPhiSOld(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -AutSinPhiPhiSOld::AutSinPhiPhiSOld(const AutSinPhiPhiSOld& other) : - Observable(other) { -} - -AutSinPhiPhiSOld::~AutSinPhiPhiSOld() { -} - -AutSinPhiPhiSOld* AutSinPhiPhiSOld::clone() const { - return new AutSinPhiPhiSOld(*this); -} - -double AutSinPhiPhiSOld::computePhiObservable(double phi) { - - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., 1., 0.), phi); - - double B = m_pProcessModule->computeCrossSection(0, -1, - NumA::Vector3D(0., -1., 0.), phi); - - //TODO !!! division par zero !!! - result = (A - B) / (A + B); - - return result; -} diff --git a/src/partons/modules/observable/CrossSectionBeamMinusUU.cpp b/src/partons/modules/observable/CrossSectionBeamMinusUU.cpp deleted file mode 100644 index 5a0a5d943c5db378a761756e49b436969ba291de..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/CrossSectionBeamMinusUU.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "../../../../include/partons/modules/observable/CrossSectionBeamMinusUU.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -const unsigned int CrossSectionBeamMinusUU::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new CrossSectionBeamMinusUU("CrossSectionBeamMinusUU")); - -CrossSectionBeamMinusUU::CrossSectionBeamMinusUU(const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -CrossSectionBeamMinusUU::CrossSectionBeamMinusUU( - const CrossSectionBeamMinusUU& other) : - Observable(other) { -} - -CrossSectionBeamMinusUU::~CrossSectionBeamMinusUU() { -} - -CrossSectionBeamMinusUU* CrossSectionBeamMinusUU::clone() const { - return new CrossSectionBeamMinusUU(*this); -} - -double CrossSectionBeamMinusUU::computePhiObservable(double phi) { - - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(1., -1, - NumA::Vector3D(0., 0., +1.), phi); - - double B = m_pProcessModule->computeCrossSection(-1., -1, - NumA::Vector3D(0., 0., +1.), phi); - - double C = m_pProcessModule->computeCrossSection(1., -1, - NumA::Vector3D(0., 0., -1.), phi); - - double D = m_pProcessModule->computeCrossSection(-1., -1, - NumA::Vector3D(0., 0., -1.), phi); - - result = (A + B + C + D) / 4.; - - result *= 2 * Constant::PI; //integrate over transversely polarized target dependence to obtain 4-fold differential cross-section - result *= 0.3894 * 1.E6; //change to nb - - return result; -} diff --git a/src/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.cpp b/src/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.cpp deleted file mode 100644 index a412458c6ff0bee10e5857bf9919a3a8816a0d7d..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.cpp +++ /dev/null @@ -1,49 +0,0 @@ -#include "../../../../include/partons/modules/observable/CrossSectionDifferenceBeamMinusLU.h" - -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" -#include "../../../../include/partons/modules/ProcessModule.h" - -const unsigned int CrossSectionDifferenceBeamMinusLU::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new CrossSectionDifferenceBeamMinusLU( - "CrossSectionDifferenceBeamMinusLU")); - -CrossSectionDifferenceBeamMinusLU::CrossSectionDifferenceBeamMinusLU( - const std::string &className) : - Observable(className) { - m_channel = ObservableChannel::DVCS; -} - -CrossSectionDifferenceBeamMinusLU::CrossSectionDifferenceBeamMinusLU( - const CrossSectionDifferenceBeamMinusLU& other) : - Observable(other) { -} - -CrossSectionDifferenceBeamMinusLU::~CrossSectionDifferenceBeamMinusLU() { -} - -CrossSectionDifferenceBeamMinusLU* CrossSectionDifferenceBeamMinusLU::clone() const { - return new CrossSectionDifferenceBeamMinusLU(*this); -} - -double CrossSectionDifferenceBeamMinusLU::computePhiObservable(double phi) { - - double result = 0.; - - double A = m_pProcessModule->computeCrossSection(1., -1, - NumA::Vector3D(0., 0., 0.), phi); - - double B = m_pProcessModule->computeCrossSection(-1., -1, - NumA::Vector3D(0., 0., 0.), phi); - - result = 0.5*(A - B); - - result *= 2 * Constant::PI; //integrate over transversely polarized target dependence to obtain 4-fold differential cross-section - result *= 0.3894 * 1.E6; //change to nb - - return result; -} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAc.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAc.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4a117bebe3494cbbb91b60f9a437e30fbbdfdfff --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAc.cpp @@ -0,0 +1,55 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAc.h" + +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAc::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAc("DVCSAc")); + +DVCSAc::DVCSAc(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAc::DVCSAc(const DVCSAc& other) : + Observable(other) { +} + +DVCSAc::~DVCSAc() { +} + +DVCSAc* DVCSAc::clone() const { + return new DVCSAc(*this); +} + +void DVCSAc::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAc::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(-1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double C = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A + B) - (C + D)) / ((A + B) + (C + D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a83a4bbcc921e1328a6edcf6429cca6888ff7b62 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.cpp @@ -0,0 +1,69 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos0Phi.h" + +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAcCos0Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAcCos0Phi("DVCSAcCos0Phi")); + +DVCSAcCos0Phi::DVCSAcCos0Phi(const std::string &className) : + DVCSAc(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAcCos0Phi::DVCSAcCos0Phi(const DVCSAcCos0Phi& other) : + DVCSAc(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAcCos0Phi::~DVCSAcCos0Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAcCos0Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAcCos0Phi::functionToIntegrateObservable); +} + +DVCSAcCos0Phi* DVCSAcCos0Phi::clone() const { + return new DVCSAcCos0Phi(*this); +} + +void DVCSAcCos0Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAc::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAcCos0Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAc::computePhiObservable(x); +} + +double DVCSAcCos0Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / (2 * Constant::PI); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9934bb4cf027614852d77ac2163bab2ad543fc2 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAcCos1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAcCos1Phi("DVCSAcCos1Phi")); + +DVCSAcCos1Phi::DVCSAcCos1Phi(const std::string &className) : + DVCSAc(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAcCos1Phi::DVCSAcCos1Phi(const DVCSAcCos1Phi& other) : + DVCSAc(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAcCos1Phi::~DVCSAcCos1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAcCos1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAcCos1Phi::functionToIntegrateObservable); +} + +DVCSAcCos1Phi* DVCSAcCos1Phi::clone() const { + return new DVCSAcCos1Phi(*this); +} + +void DVCSAcCos1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAc::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAcCos1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAc::computePhiObservable(x) * cos(x); +} + +double DVCSAcCos1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..456dd66d78f6d07cfb7ce410ad89b1112f8bb3c9 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos2Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAcCos2Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAcCos2Phi("DVCSAcCos2Phi")); + +DVCSAcCos2Phi::DVCSAcCos2Phi(const std::string &className) : + DVCSAc(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAcCos2Phi::DVCSAcCos2Phi(const DVCSAcCos2Phi& other) : + DVCSAc(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAcCos2Phi::~DVCSAcCos2Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAcCos2Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAcCos2Phi::functionToIntegrateObservable); +} + +DVCSAcCos2Phi* DVCSAcCos2Phi::clone() const { + return new DVCSAcCos2Phi(*this); +} + +void DVCSAcCos2Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAc::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAcCos2Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAc::computePhiObservable(x) * cos(2 * x); +} + +double DVCSAcCos2Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..258e9d19b71ca705921ad9b762d4621716098790 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAcCos3Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAcCos3Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAcCos3Phi("DVCSAcCos3Phi")); + +DVCSAcCos3Phi::DVCSAcCos3Phi(const std::string &className) : + DVCSAc(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAcCos3Phi::DVCSAcCos3Phi(const DVCSAcCos3Phi& other) : + DVCSAc(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAcCos3Phi::~DVCSAcCos3Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAcCos3Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAcCos3Phi::functionToIntegrateObservable); +} + +DVCSAcCos3Phi* DVCSAcCos3Phi::clone() const { + return new DVCSAcCos3Phi(*this); +} + +void DVCSAcCos3Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAc::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAcCos3Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAc::computePhiObservable(x) * cos(3 * x); +} + +double DVCSAcCos3Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a1eb50bc445ee94144ea53ef7fbad5d7d4352082 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinus.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAllMinus::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAllMinus("DVCSAllMinus")); + +DVCSAllMinus::DVCSAllMinus(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAllMinus::DVCSAllMinus(const DVCSAllMinus& other) : + Observable(other) { +} + +DVCSAllMinus::~DVCSAllMinus() { +} + +DVCSAllMinus* DVCSAllMinus::clone() const { + return new DVCSAllMinus(*this); +} + +void DVCSAllMinus::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAllMinus::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., -1.), phi); + + double B = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., +1.), phi); + + double C = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., +1.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., -1.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A + B) - (C + D)) / ((A + B) + (C + D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5a30ff4cfee8045a5345023c56c659dcf2306db8 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos0Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAllMinusCos0Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAllMinusCos0Phi("DVCSAllMinusCos0Phi")); + +DVCSAllMinusCos0Phi::DVCSAllMinusCos0Phi(const std::string &className) : + DVCSAllMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos0Phi::DVCSAllMinusCos0Phi(const DVCSAllMinusCos0Phi& other) : + DVCSAllMinus(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos0Phi::~DVCSAllMinusCos0Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAllMinusCos0Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAllMinusCos0Phi::functionToIntegrateObservable); +} + +DVCSAllMinusCos0Phi* DVCSAllMinusCos0Phi::clone() const { + return new DVCSAllMinusCos0Phi(*this); +} + +void DVCSAllMinusCos0Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAllMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAllMinusCos0Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAllMinus::computePhiObservable(x) * cos(0 * x); +} + +double DVCSAllMinusCos0Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / (2 * Constant::PI); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..42dd27c661d1b18b7e2ed3711f39619e63420e6e --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAllMinusCos1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAllMinusCos1Phi("DVCSAllMinusCos1Phi")); + +DVCSAllMinusCos1Phi::DVCSAllMinusCos1Phi(const std::string &className) : + DVCSAllMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos1Phi::DVCSAllMinusCos1Phi(const DVCSAllMinusCos1Phi& other) : + DVCSAllMinus(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos1Phi::~DVCSAllMinusCos1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAllMinusCos1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAllMinusCos1Phi::functionToIntegrateObservable); +} + +DVCSAllMinusCos1Phi* DVCSAllMinusCos1Phi::clone() const { + return new DVCSAllMinusCos1Phi(*this); +} + +void DVCSAllMinusCos1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAllMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAllMinusCos1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAllMinus::computePhiObservable(x) * cos(1 * x); +} + +double DVCSAllMinusCos1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / (Constant::PI); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e9efda83d07284a858c94f4a821a1d5bbece0fcc --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAllMinusCos2Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAllMinusCos2Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAllMinusCos2Phi("DVCSAllMinusCos2Phi")); + +DVCSAllMinusCos2Phi::DVCSAllMinusCos2Phi(const std::string &className) : + DVCSAllMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos2Phi::DVCSAllMinusCos2Phi(const DVCSAllMinusCos2Phi& other) : + DVCSAllMinus(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAllMinusCos2Phi::~DVCSAllMinusCos2Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAllMinusCos2Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAllMinusCos2Phi::functionToIntegrateObservable); +} + +DVCSAllMinusCos2Phi* DVCSAllMinusCos2Phi::clone() const { + return new DVCSAllMinusCos2Phi(*this); +} + +void DVCSAllMinusCos2Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAllMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAllMinusCos2Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAllMinus::computePhiObservable(x) * cos(2 * x); +} + +double DVCSAllMinusCos2Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / (Constant::PI); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a20ef6cf5146a9c868ab4bd62ab094b1cb1d36b7 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCS.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAluDVCS::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluDVCS("DVCSAluDVCS")); + +DVCSAluDVCS::DVCSAluDVCS(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAluDVCS::DVCSAluDVCS(const DVCSAluDVCS& other) : + Observable(other) { +} + +DVCSAluDVCS::~DVCSAluDVCS() { +} + +DVCSAluDVCS* DVCSAluDVCS::clone() const { + return new DVCSAluDVCS(*this); +} + +void DVCSAluDVCS::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAluDVCS::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + double C = m_pProcessModule->computeCrossSection(-1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A + B) - (C + D)) / ((A + B) + (C + D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..537f90844803a5f5c6d4778a55b68a8b626ad001 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.cpp @@ -0,0 +1,69 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluDVCSSin1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAluDVCSSin1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluDVCSSin1Phi("DVCSAluDVCSSin1Phi")); + +DVCSAluDVCSSin1Phi::DVCSAluDVCSSin1Phi(const std::string &className) : + DVCSAluDVCS(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAluDVCSSin1Phi::DVCSAluDVCSSin1Phi(const DVCSAluDVCSSin1Phi& other) : + DVCSAluDVCS(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAluDVCSSin1Phi::~DVCSAluDVCSSin1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAluDVCSSin1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAluDVCSSin1Phi::functionToIntegrateObservable); +} + +DVCSAluDVCSSin1Phi* DVCSAluDVCSSin1Phi::clone() const { + return new DVCSAluDVCSSin1Phi(*this); +} + +void DVCSAluDVCSSin1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAluDVCS::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAluDVCSSin1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAluDVCS::computePhiObservable(x) * sin(x); +} + +double DVCSAluDVCSSin1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; + +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7097c1b0487dd11c9e80da9f9c39f34ad3b72c52 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluInt.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAluInt::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluInt("DVCSAluInt")); + +DVCSAluInt::DVCSAluInt(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAluInt::DVCSAluInt(const DVCSAluInt& other) : + Observable(other) { +} + +DVCSAluInt::~DVCSAluInt() { +} + +DVCSAluInt* DVCSAluInt::clone() const { + return new DVCSAluInt(*this); +} + +void DVCSAluInt::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAluInt::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + double C = m_pProcessModule->computeCrossSection(-1, +1, + NumA::Vector3D(0., 0., 0.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A - B) - (C - D)) / ((A - B) + (C - D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e25df4bddddc01169fb1d3f82fce6b337a3c69c0 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.cpp @@ -0,0 +1,68 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAluIntSin1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluIntSin1Phi("DVCSAluIntSin1Phi")); + +DVCSAluIntSin1Phi::DVCSAluIntSin1Phi(const std::string &className) : + DVCSAluInt(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAluIntSin1Phi::DVCSAluIntSin1Phi(const DVCSAluIntSin1Phi& other) : + DVCSAluInt(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAluIntSin1Phi::~DVCSAluIntSin1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAluIntSin1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAluIntSin1Phi::functionToIntegrateObservable); +} + +DVCSAluIntSin1Phi* DVCSAluIntSin1Phi::clone() const { + return new DVCSAluIntSin1Phi(*this); +} + +void DVCSAluIntSin1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAluInt::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAluIntSin1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAluInt::computePhiObservable(x) * sin(x); +} + +double DVCSAluIntSin1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..68eb3abd1311c05af524219978fccf8de1c41b55 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.cpp @@ -0,0 +1,68 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluIntSin2Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAluIntSin2Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluIntSin2Phi("DVCSAluIntSin2Phi")); + +DVCSAluIntSin2Phi::DVCSAluIntSin2Phi(const std::string &className) : + DVCSAluInt(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAluIntSin2Phi::DVCSAluIntSin2Phi(const DVCSAluIntSin2Phi& other) : + DVCSAluInt(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAluIntSin2Phi::~DVCSAluIntSin2Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAluIntSin2Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAluIntSin2Phi::functionToIntegrateObservable); +} + +DVCSAluIntSin2Phi* DVCSAluIntSin2Phi::clone() const { + return new DVCSAluIntSin2Phi(*this); +} + +void DVCSAluIntSin2Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAluInt::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAluIntSin2Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAluInt::computePhiObservable(x) * sin(2 * x); +} + +double DVCSAluIntSin2Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bfbe09b718e854e0598af66befd8fd3813ec9d7a --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.cpp @@ -0,0 +1,48 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinus.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAluMinus::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluMinus("DVCSAluMinus")); + +DVCSAluMinus::DVCSAluMinus(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAluMinus::DVCSAluMinus(const DVCSAluMinus& other) : + Observable(other) { +} + +DVCSAluMinus::~DVCSAluMinus() { +} + +DVCSAluMinus* DVCSAluMinus::clone() const { + return new DVCSAluMinus(*this); +} + +void DVCSAluMinus::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAluMinus::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., 0.), phi); + + if (A + B == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return (A - B) / (A + B); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9e1525057f39dc94098c47acb34cd20a070b3342 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.cpp @@ -0,0 +1,69 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAluMinusSin1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAluMinusSin1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAluMinusSin1Phi("DVCSAluMinusSin1Phi")); + +DVCSAluMinusSin1Phi::DVCSAluMinusSin1Phi(const std::string &className) : + DVCSAluMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAluMinusSin1Phi::DVCSAluMinusSin1Phi(const DVCSAluMinusSin1Phi& other) : + DVCSAluMinus(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAluMinusSin1Phi::~DVCSAluMinusSin1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } + +} + +void DVCSAluMinusSin1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAluMinusSin1Phi::functionToIntegrateObservable); +} + +DVCSAluMinusSin1Phi* DVCSAluMinusSin1Phi::clone() const { + return new DVCSAluMinusSin1Phi(*this); +} + +void DVCSAluMinusSin1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAluMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAluMinusSin1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAluMinus::computePhiObservable(x) * sin(x); +} + +double DVCSAluMinusSin1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7611c1a2b4e6282f4820341796bdc644e2ef07da --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinus.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAulMinus::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAulMinus("DVCSAulMinus")); + +DVCSAulMinus::DVCSAulMinus(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAulMinus::DVCSAulMinus(const DVCSAulMinus& other) : + Observable(other) { +} + +DVCSAulMinus::~DVCSAulMinus() { +} + +DVCSAulMinus* DVCSAulMinus::clone() const { + return new DVCSAulMinus(*this); +} + +void DVCSAulMinus::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAulMinus::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., -1.), phi); + + double B = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., -1.), phi); + + double C = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., 0., +1.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., 0., +1.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A + B) - (C + D)) / ((A + B) + (C + D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f9d7d6c20f1d77592d5cc1eeb9b6e81a57144513 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.cpp @@ -0,0 +1,68 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin1Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAulMinusSin1Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAulMinusSin1Phi("DVCSAulMinusSin1Phi")); + +DVCSAulMinusSin1Phi::DVCSAulMinusSin1Phi(const std::string &className) : + DVCSAulMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin1Phi::DVCSAulMinusSin1Phi(const DVCSAulMinusSin1Phi& other) : + DVCSAulMinus(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin1Phi::~DVCSAulMinusSin1Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAulMinusSin1Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAulMinusSin1Phi::functionToIntegrateObservable); +} + +DVCSAulMinusSin1Phi* DVCSAulMinusSin1Phi::clone() const { + return new DVCSAulMinusSin1Phi(*this); +} + +void DVCSAulMinusSin1Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAulMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAulMinusSin1Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAulMinus::computePhiObservable(x) * sin(x); +} + +double DVCSAulMinusSin1Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3cc5d3b2e0baaf1aeb6136cac336bf79e82fdc41 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.cpp @@ -0,0 +1,68 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin2Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAulMinusSin2Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAulMinusSin2Phi("DVCSAulMinusSin2Phi")); + +DVCSAulMinusSin2Phi::DVCSAulMinusSin2Phi(const std::string &className) : + DVCSAulMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin2Phi::DVCSAulMinusSin2Phi(const DVCSAulMinusSin2Phi& other) : + DVCSAulMinus(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin2Phi::~DVCSAulMinusSin2Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAulMinusSin2Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAulMinusSin2Phi::functionToIntegrateObservable); +} + +DVCSAulMinusSin2Phi* DVCSAulMinusSin2Phi::clone() const { + return new DVCSAulMinusSin2Phi(*this); +} + +void DVCSAulMinusSin2Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAulMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAulMinusSin2Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAulMinus::computePhiObservable(x) * sin(2 * x); +} + +double DVCSAulMinusSin2Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..76fd2f7a8c14956c8e57693df6786d4cc0e8a7df --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.cpp @@ -0,0 +1,68 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAulMinusSin3Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAulMinusSin3Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAulMinusSin3Phi("DVCSAulMinusSin3Phi")); + +DVCSAulMinusSin3Phi::DVCSAulMinusSin3Phi(const std::string &className) : + DVCSAulMinus(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin3Phi::DVCSAulMinusSin3Phi(const DVCSAulMinusSin3Phi& other) : + DVCSAulMinus(other), MathIntegratorModule(other) { + initFunctorsForIntegrations(); +} + +DVCSAulMinusSin3Phi::~DVCSAulMinusSin3Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAulMinusSin3Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAulMinusSin3Phi::functionToIntegrateObservable); +} + +DVCSAulMinusSin3Phi* DVCSAulMinusSin3Phi::clone() const { + return new DVCSAulMinusSin3Phi(*this); +} + +void DVCSAulMinusSin3Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAulMinus::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAulMinusSin3Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAulMinus::computePhiObservable(x) * sin(3 * x); +} + +double DVCSAulMinusSin3Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / Constant::PI; +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.cpp new file mode 100644 index 0000000000000000000000000000000000000000..4b7bd1ba1ec4f01a85cbb5d2ef5fe5767d54d165 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhis.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSAutSinPhiMPhis::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAutSinPhiMPhis("DVCSAutSinPhiMPhis")); + +DVCSAutSinPhiMPhis::DVCSAutSinPhiMPhis(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSAutSinPhiMPhis::DVCSAutSinPhiMPhis(const DVCSAutSinPhiMPhis& other) : + Observable(other) { +} + +DVCSAutSinPhiMPhis::~DVCSAutSinPhiMPhis() { +} + +DVCSAutSinPhiMPhis* DVCSAutSinPhiMPhis::clone() const { + return new DVCSAutSinPhiMPhis(*this); +} + +void DVCSAutSinPhiMPhis::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSAutSinPhiMPhis::computePhiObservable(double phi) { + + double A = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., -1., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., -1., 0.), phi); + + double C = m_pProcessModule->computeCrossSection(+1, -1, + NumA::Vector3D(0., +1., 0.), phi); + + double D = m_pProcessModule->computeCrossSection(-1, -1, + NumA::Vector3D(0., +1., 0.), phi); + + if (A + B + C + D == 0.) { + + warn(__func__, "Asymmetry denominator is zero."); + return 0.; + } + + return ((A + B) - (C + D)) / ((A + B) + (C + D)); +} diff --git a/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.cpp b/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ce1c2fffab5d67398a9b59d712edae0d6a215ba9 --- /dev/null +++ b/src/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.cpp @@ -0,0 +1,72 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/asymmetry/DVCSAutSinPhiMPhisCos0Phi.h" + +#include +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +const unsigned int DVCSAutSinPhiMPhisCos0Phi::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSAutSinPhiMPhisCos0Phi("DVCSAutSinPhiMPhisCos0Phi")); + +DVCSAutSinPhiMPhisCos0Phi::DVCSAutSinPhiMPhisCos0Phi( + const std::string &className) : + DVCSAutSinPhiMPhis(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + initFunctorsForIntegrations(); +} + +DVCSAutSinPhiMPhisCos0Phi::DVCSAutSinPhiMPhisCos0Phi( + const DVCSAutSinPhiMPhisCos0Phi& other) : + DVCSAutSinPhiMPhis(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + initFunctorsForIntegrations(); +} + +DVCSAutSinPhiMPhisCos0Phi::~DVCSAutSinPhiMPhisCos0Phi() { + + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSAutSinPhiMPhisCos0Phi::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSAutSinPhiMPhisCos0Phi::functionToIntegrateObservable); +} + +DVCSAutSinPhiMPhisCos0Phi* DVCSAutSinPhiMPhisCos0Phi::clone() const { + return new DVCSAutSinPhiMPhisCos0Phi(*this); +} + +void DVCSAutSinPhiMPhisCos0Phi::configure(const ElemUtils::Parameters ¶meters) { + + DVCSAutSinPhiMPhis::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSAutSinPhiMPhisCos0Phi::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSAutSinPhiMPhis::computePhiObservable(x) * cos(x); +} + +double DVCSAutSinPhiMPhisCos0Phi::computeFourierObservable() { + + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters) / (2 * Constant::PI); +} diff --git a/src/partons/modules/observable/CrossSectionObservable.cpp b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.cpp similarity index 52% rename from src/partons/modules/observable/CrossSectionObservable.cpp rename to src/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.cpp index eb8986a5a8b557d05e9d2afa7ffb82a99c4a9eae..082cf9f8339cf7bac9133c4a1d4a83103c38efa6 100644 --- a/src/partons/modules/observable/CrossSectionObservable.cpp +++ b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.cpp @@ -1,75 +1,62 @@ -#include "../../../../include/partons/modules/observable/CrossSectionObservable.h" +#include "../../../../../../include/partons/modules/observable/DVCS/cross_section/DVCSCrossSection.h" #include -#include #include #include -#include #include -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/modules/ProcessModule.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" -const std::string CrossSectionObservable::PARAMETER_NAME_BEAM_HELICITY = +const std::string DVCSCrossSection::PARAMETER_NAME_BEAM_HELICITY = "beam_helicity"; -const std::string CrossSectionObservable::PARAMETER_NAME_BEAM_CHARGE = +const std::string DVCSCrossSection::PARAMETER_NAME_BEAM_CHARGE = "beam_charge"; -const std::string CrossSectionObservable::PARAMETER_NAME_TARGET_POLARIZATION = +const std::string DVCSCrossSection::PARAMETER_NAME_TARGET_POLARIZATION = "target_polarization"; -// Initialise [class]::classId with a unique name. -const unsigned int CrossSectionObservable::classId = +const unsigned int DVCSCrossSection::classId = BaseObjectRegistry::getInstance()->registerBaseObject( - new CrossSectionObservable("CrossSectionObservable")); + new DVCSCrossSection("DVCSCrossSection")); -CrossSectionObservable::CrossSectionObservable(const std::string &className) : +DVCSCrossSection::DVCSCrossSection(const std::string &className) : Observable(className) { } -CrossSectionObservable::CrossSectionObservable( - const CrossSectionObservable& other) : +DVCSCrossSection::DVCSCrossSection( + const DVCSCrossSection& other) : Observable(other) { } -CrossSectionObservable::~CrossSectionObservable() { +DVCSCrossSection::~DVCSCrossSection() { } -CrossSectionObservable* CrossSectionObservable::clone() const { - return new CrossSectionObservable(*this); +DVCSCrossSection* DVCSCrossSection::clone() const { + return new DVCSCrossSection(*this); } -double CrossSectionObservable::computePhiObservable(double phi) { -// double result = pDVCSModule->computeCrossSection(+1, -1, -// Vector3D(0., 1., 0.), phi); -// return result; - - double result = m_pProcessModule->computeCrossSection(m_beamHelicity, - m_beamCharge, m_targetPolarization, phi); - return result; -} - -void CrossSectionObservable::configure( +void DVCSCrossSection::configure( const ElemUtils::Parameters ¶meters) { if (parameters.isAvailable( - CrossSectionObservable::PARAMETER_NAME_BEAM_HELICITY)) { + DVCSCrossSection::PARAMETER_NAME_BEAM_HELICITY)) { m_beamHelicity = parameters.getLastAvailable().toDouble(); info(__func__, ElemUtils::Formatter() - << CrossSectionObservable::PARAMETER_NAME_BEAM_HELICITY + << DVCSCrossSection::PARAMETER_NAME_BEAM_HELICITY << " configured with value = " << m_beamHelicity); } if (parameters.isAvailable( - CrossSectionObservable::PARAMETER_NAME_BEAM_CHARGE)) { + DVCSCrossSection::PARAMETER_NAME_BEAM_CHARGE)) { m_beamCharge = parameters.getLastAvailable().toDouble(); info(__func__, ElemUtils::Formatter() - << CrossSectionObservable::PARAMETER_NAME_BEAM_CHARGE + << DVCSCrossSection::PARAMETER_NAME_BEAM_CHARGE << " configured with value = " << m_beamCharge); } if (parameters.isAvailable( - CrossSectionObservable::PARAMETER_NAME_TARGET_POLARIZATION)) { + DVCSCrossSection::PARAMETER_NAME_TARGET_POLARIZATION)) { std::string temp_str = parameters.getLastAvailable().getString(); if (!temp_str.empty()) { @@ -85,7 +72,7 @@ void CrossSectionObservable::configure( info(__func__, ElemUtils::Formatter() - << CrossSectionObservable::PARAMETER_NAME_TARGET_POLARIZATION + << DVCSCrossSection::PARAMETER_NAME_TARGET_POLARIZATION << " configured with value = " << m_targetPolarization.toString()); } else { @@ -96,3 +83,10 @@ void CrossSectionObservable::configure( Observable::configure(parameters); } + +double DVCSCrossSection::computePhiObservable(double phi) { + + double result = m_pProcessModule->computeCrossSection(m_beamHelicity, + m_beamCharge, m_targetPolarization, phi); + return result; +} diff --git a/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.cpp b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6545537720636671ee0b6e68f1a601c18436b7ae --- /dev/null +++ b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.cpp @@ -0,0 +1,56 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionDifferenceLUMinus.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSCrossSectionDifferenceLUMinus::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSCrossSectionDifferenceLUMinus( + "DVCSCrossSectionDifferenceLUMinus")); + +DVCSCrossSectionDifferenceLUMinus::DVCSCrossSectionDifferenceLUMinus( + const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSCrossSectionDifferenceLUMinus::DVCSCrossSectionDifferenceLUMinus( + const DVCSCrossSectionDifferenceLUMinus& other) : + Observable(other) { +} + +DVCSCrossSectionDifferenceLUMinus::~DVCSCrossSectionDifferenceLUMinus() { +} + +DVCSCrossSectionDifferenceLUMinus* DVCSCrossSectionDifferenceLUMinus::clone() const { + return new DVCSCrossSectionDifferenceLUMinus(*this); +} + +void DVCSCrossSectionDifferenceLUMinus::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSCrossSectionDifferenceLUMinus::computePhiObservable(double phi) { + + double result = 0.; + + double A = m_pProcessModule->computeCrossSection(1., -1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(-1., -1, + NumA::Vector3D(0., 0., 0.), phi); + + result = 0.5 * (A - B); + + //integrate over transversely polarized target dependence to obtain 4-fold differential cross-section + result *= 2 * Constant::PI; + + //change to nb + result *= Constant::CONV_GEVm2_TO_NBARN; + + return result; +} diff --git a/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.cpp b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.cpp new file mode 100644 index 0000000000000000000000000000000000000000..da494955ca146efda9e4848f79c8d377f39c0a34 --- /dev/null +++ b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.cpp @@ -0,0 +1,70 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionPhiIntegrated.h" + +#include +#include +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/beans/observable/ObservableType.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" + +// Initialise [class]::classId with a unique name. +const unsigned int DVCSCrossSectionPhiIntegrated::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSCrossSectionPhiIntegrated("DVCSCrossSectionPhiIntegrated")); + +DVCSCrossSectionPhiIntegrated::DVCSCrossSectionPhiIntegrated(const std::string &className) : + DVCSCrossSection(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( + 0) { + + m_observableType = ObservableType::FOURIER; + m_channel = ObservableChannel::DVCS; + + setIntegrator(NumA::IntegratorType1D::DEXP); + + initFunctorsForIntegrations(); +} + +DVCSCrossSectionPhiIntegrated::DVCSCrossSectionPhiIntegrated(const DVCSCrossSectionPhiIntegrated& other) : + DVCSCrossSection(other), MathIntegratorModule(other) { + + m_pFunctionToIntegrateObservable = 0; + + initFunctorsForIntegrations(); +} + +DVCSCrossSectionPhiIntegrated::~DVCSCrossSectionPhiIntegrated() { + if (m_pFunctionToIntegrateObservable) { + delete m_pFunctionToIntegrateObservable; + m_pFunctionToIntegrateObservable = 0; + } +} + +void DVCSCrossSectionPhiIntegrated::initFunctorsForIntegrations() { + m_pFunctionToIntegrateObservable = + NumA::Integrator1D::newIntegrationFunctor(this, + &DVCSCrossSectionPhiIntegrated::functionToIntegrateObservable); +} + +DVCSCrossSectionPhiIntegrated* DVCSCrossSectionPhiIntegrated::clone() const { + return new DVCSCrossSectionPhiIntegrated(*this); +} + +void DVCSCrossSectionPhiIntegrated::configure(const ElemUtils::Parameters ¶meters) { + + DVCSCrossSection::configure(parameters); + MathIntegratorModule::configureIntegrator(parameters); +} + +double DVCSCrossSectionPhiIntegrated::functionToIntegrateObservable(double x, + std::vector params) { + return DVCSCrossSection::computePhiObservable(x); +} + +double DVCSCrossSectionPhiIntegrated::computeFourierObservable() { + std::vector emptyParameters; + + return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), + emptyParameters); +} diff --git a/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.cpp b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b9ef122a1f4203398b7cb34a5c310e23d84a5a7d --- /dev/null +++ b/src/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.cpp @@ -0,0 +1,54 @@ +#include "../../../../../../include/partons/modules/observable/DVCS/cross_section/DVCSCrossSectionUUMinus.h" + +#include + +#include "../../../../../../include/partons/beans/observable/ObservableChannel.h" +#include "../../../../../../include/partons/BaseObjectRegistry.h" +#include "../../../../../../include/partons/FundamentalPhysicalConstants.h" +#include "../../../../../../include/partons/modules/process/ProcessModule.h" + +const unsigned int DVCSCrossSectionUUMinus::classId = + BaseObjectRegistry::getInstance()->registerBaseObject( + new DVCSCrossSectionUUMinus("DVCSCrossSectionUUMinus")); + +DVCSCrossSectionUUMinus::DVCSCrossSectionUUMinus(const std::string &className) : + Observable(className) { + m_channel = ObservableChannel::DVCS; +} + +DVCSCrossSectionUUMinus::DVCSCrossSectionUUMinus( + const DVCSCrossSectionUUMinus& other) : + Observable(other) { +} + +DVCSCrossSectionUUMinus::~DVCSCrossSectionUUMinus() { +} + +DVCSCrossSectionUUMinus* DVCSCrossSectionUUMinus::clone() const { + return new DVCSCrossSectionUUMinus(*this); +} + +void DVCSCrossSectionUUMinus::configure(const ElemUtils::Parameters ¶meters) { + Observable::configure(parameters); +} + +double DVCSCrossSectionUUMinus::computePhiObservable(double phi) { + + double result = 0.; + + double A = m_pProcessModule->computeCrossSection(1., -1, + NumA::Vector3D(0., 0., 0.), phi); + + double B = m_pProcessModule->computeCrossSection(-1., -1, + NumA::Vector3D(0., 0., 0.), phi); + + result = (A + B) / 2.; + + //integrate over transversely polarized target dependence to obtain 4-fold differential cross-section + result *= 2 * Constant::PI; + + //change to nb + result *= Constant::CONV_GEVm2_TO_NBARN; + + return result; +} diff --git a/src/partons/modules/observable/Observable.cpp b/src/partons/modules/observable/Observable.cpp index 1461c7db83df4a3bb150036abf4d10cf46968e27..7019714e5a5596d81f490baa12770aafaf405e7c 100644 --- a/src/partons/modules/observable/Observable.cpp +++ b/src/partons/modules/observable/Observable.cpp @@ -2,12 +2,11 @@ #include #include -#include #include #include #include -#include "../../../../include/partons/beans/observable/ObservableResult.h" +#include "../../../../include/partons/modules/process/ProcessModule.h" #include "../../../../include/partons/ModuleObjectFactory.h" #include "../../../../include/partons/Partons.h" #include "../../../../include/partons/services/ObservableService.h" diff --git a/src/partons/modules/observable/PhiIntegratedCrossSection.cpp b/src/partons/modules/observable/PhiIntegratedCrossSection.cpp deleted file mode 100644 index 48366f4dd06a82a22b977d4e21ca29adc003a3e0..0000000000000000000000000000000000000000 --- a/src/partons/modules/observable/PhiIntegratedCrossSection.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "../../../../include/partons/modules/observable/PhiIntegratedCrossSection.h" - -#include -#include -#include -#include - -#include "../../../../include/partons/beans/observable/ObservableChannel.h" -#include "../../../../include/partons/beans/observable/ObservableType.h" -#include "../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int PhiIntegratedCrossSection::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new PhiIntegratedCrossSection("PhiIntegratedCrossSection")); - -PhiIntegratedCrossSection::PhiIntegratedCrossSection(const std::string &className) : - CrossSectionObservable(className), MathIntegratorModule(), m_pFunctionToIntegrateObservable( - 0) { - - m_observableType = ObservableType::FOURIER; - m_channel = ObservableChannel::DVCS; - - setIntegrator(NumA::IntegratorType1D::DEXP); - - initFunctorsForIntegrations(); -} - -PhiIntegratedCrossSection::PhiIntegratedCrossSection(const PhiIntegratedCrossSection& other) : - CrossSectionObservable(other), MathIntegratorModule(other) { - - m_pFunctionToIntegrateObservable = 0; - - initFunctorsForIntegrations(); -} - -PhiIntegratedCrossSection::~PhiIntegratedCrossSection() { - if (m_pFunctionToIntegrateObservable) { - delete m_pFunctionToIntegrateObservable; - m_pFunctionToIntegrateObservable = 0; - } -} - -void PhiIntegratedCrossSection::initFunctorsForIntegrations() { - m_pFunctionToIntegrateObservable = - NumA::Integrator1D::newIntegrationFunctor(this, - &PhiIntegratedCrossSection::functionToIntegrateObservable); -} - -PhiIntegratedCrossSection* PhiIntegratedCrossSection::clone() const { - return new PhiIntegratedCrossSection(*this); -} - -double PhiIntegratedCrossSection::functionToIntegrateObservable(double x, - std::vector params) { - return CrossSectionObservable::computePhiObservable(x); -} - -double PhiIntegratedCrossSection::computeFourierObservable() { - std::vector emptyParameters; - - return integrate(m_pFunctionToIntegrateObservable, 0., (2 * Constant::PI), - emptyParameters); -} diff --git a/src/partons/modules/overlap/IncompleteGPDModule.cpp b/src/partons/modules/overlap/IncompleteGPDModule.cpp index 15827d49aac424707d695e8135c6244bbc6ed399..07a3e577f2b3baa7e422323fe6786be19a2f70db 100644 --- a/src/partons/modules/overlap/IncompleteGPDModule.cpp +++ b/src/partons/modules/overlap/IncompleteGPDModule.cpp @@ -1,11 +1,9 @@ #include "../../../../include/partons/modules/overlap/IncompleteGPDModule.h" -//#include #include -//#include #include +#include -//#include "../../../../include/partons/modules/GPDModule.h" #include "../../../../include/partons/modules/radon_inverse/RadonInverseModule.h" #include "../../../../include/partons/ModuleObjectFactory.h" #include "../../../../include/partons/Partons.h" diff --git a/src/partons/modules/overlap/OverlapMMR15.cpp b/src/partons/modules/overlap/OverlapMMR15.cpp index c9be1eeec70d07a25a880db3a6016ecfff28621b..ff273d481554e1e575bd961019e20cfeb818c03e 100644 --- a/src/partons/modules/overlap/OverlapMMR15.cpp +++ b/src/partons/modules/overlap/OverlapMMR15.cpp @@ -1,12 +1,10 @@ #include "../../../../include/partons/modules/overlap/OverlapMMR15.h" -#include -#include -#include -//#include #include #include #include +#include +#include #include "../../../../include/partons/beans/gpd/GPDType.h" #include "../../../../include/partons/beans/parton_distribution/QuarkDistribution.h" @@ -14,7 +12,6 @@ #include "../../../../include/partons/BaseObjectRegistry.h" #include "../../../../include/partons/modules/radon_inverse/RadonInverseModule.h" -// Initialise [class]::classId with a unique name. const unsigned int OverlapMMR15::classId = BaseObjectRegistry::getInstance()->registerBaseObject( new OverlapMMR15("OverlapMMR15")); diff --git a/src/partons/modules/process/DVCS/BMJ2012BHModel.cpp b/src/partons/modules/process/DVCS/BMJ2012BHModel.cpp deleted file mode 100644 index 5ed9039c48f3bab2e9445192a970ad00bc6ae97d..0000000000000000000000000000000000000000 --- a/src/partons/modules/process/DVCS/BMJ2012BHModel.cpp +++ /dev/null @@ -1,1408 +0,0 @@ -#include "../../../../../include/partons/modules/process/DVCS/BMJ2012BHModel.h" - -#include -#include -#include - -#include "../../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int BMJ2012BHModel::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new BMJ2012BHModel("BMJ2012BHModel")); - -/*--------------------------------------- Constructors ---------------------------------*/ - -BMJ2012BHModel::BMJ2012BHModel(const std::string &className) : - DVCSModule(className) { - m_phi1BMK = 0.; - m_phi2BMK = 0.; - m_PhiBMK = 0.; - m_theta = 0.; - m_Lambda = 0.; - m_lambda = 0.; - m_xB2 = 0.; - m_yBMJ.assign(3, 0.); - m_Q.assign(4, 0.); - m_xBtQ2.assign(3, 0.); - m_M.assign(2, 0.); - m_epsilonBMJ.assign(2, 0.); - m_epsroot.assign(6, 0.); - m_K.assign(2, 0.); - m_Kt.assign(2, 0.); - m_Delta2.assign(2, 0.); - m_cBH.assign(3, std::vector(3, 0.)); - m_s1BHTP = 0.; - m_P1 = 0.; - m_P2 = 0.; - m_F1 = 0.; - m_F2 = 0.; - m_cVCS.assign(3, std::vector(3, 0.)); - m_sVCS.assign(3, std::vector(3, 0.)); - m_cI.assign(3, std::vector(4, 0.)); - m_sI.assign(3, std::vector(4, 0.)); - m_C.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_S.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_dC.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_dS.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_cF.assign(3, std::vector(3, 0.)); - m_CFF.assign(4, std::vector >(3, 0.)); -} - -/*-------------------------------------- Destructor ------------------------------------*/ - -BMJ2012BHModel::~BMJ2012BHModel() { -} - -BMJ2012BHModel::BMJ2012BHModel(const BMJ2012BHModel& other) : - DVCSModule(other) { - m_phi1BMK = other.m_phi1BMK; - m_phi2BMK = other.m_phi2BMK; - m_PhiBMK = other.m_PhiBMK; - m_theta = other.m_theta; - m_Lambda = other.m_Lambda; - m_lambda = other.m_lambda; - m_xB2 = other.m_xB2; - m_yBMJ = other.m_yBMJ; - m_Q = other.m_Q; - m_xBtQ2 = other.m_xBtQ2; - m_M = other.m_M; - m_epsilonBMJ = other.m_epsilonBMJ; - m_epsroot = other.m_epsroot; - m_K = other.m_K; - m_Kt = other.m_Kt; - m_Delta2 = other.m_Delta2; - m_cBH = other.m_cBH; - m_s1BHTP = other.m_s1BHTP; - m_P1 = other.m_P1; - m_P2 = other.m_P2; - m_F1 = other.m_F1; - m_F2 = other.m_F2; - m_cVCS = other.m_cVCS; - m_sVCS = other.m_sVCS; - m_cI = other.m_cI; - m_sI = other.m_sI; - m_C = other.m_C; - m_S = other.m_S; - m_dC = other.m_dC; - m_dS = other.m_dS; - m_cF = other.m_cF; - m_CFF = other.m_CFF; -} - -BMJ2012BHModel* BMJ2012BHModel::clone() const { - return new BMJ2012BHModel(*this); -} - -void BMJ2012BHModel::initModule() { - - //init mother class - DVCSModule::initModule(); - - m_xB2 = m_xB * m_xB; - m_Q[0] = sqrt(m_Q2); - m_Q[1] = m_Q2; - m_Q[2] = m_Q[0] * m_Q2; - m_Q[3] = m_Q2 * m_Q2; - m_Delta2[0] = m_t; - m_Delta2[1] = m_t * m_t; - m_xBtQ2[0] = 2 - m_xB + m_xB * m_t / m_Q2; - m_xBtQ2[1] = m_xBtQ2[0] * m_xBtQ2[0]; - m_xBtQ2[2] = m_xBtQ2[1] * m_xBtQ2[0]; - m_M[0] = Constant::PROTON_MASS; // 0.938271998 // Test Maxime; - m_M[1] = m_M[0] * m_M[0]; - m_yBMJ[0] = m_y; - m_yBMJ[1] = m_yBMJ[0] * m_yBMJ[0]; - m_yBMJ[2] = m_yBMJ[0] * m_yBMJ[1]; - m_epsilonBMJ[0] = m_epsilon; - m_epsilonBMJ[1] = m_epsilonBMJ[0] * m_epsilonBMJ[0]; - m_epsroot[1] = 1 + m_epsilonBMJ[1]; - m_epsroot[0] = sqrt(m_epsroot[1]); - m_epsroot[2] = m_epsroot[1] * m_epsroot[0]; - m_epsroot[3] = m_epsroot[1] * m_epsroot[1]; - m_epsroot[4] = m_epsroot[2] * m_epsroot[1]; - m_epsroot[5] = m_epsroot[2] * m_epsroot[2]; - m_K[1] = -(m_t / m_Q2) * (1 - m_xB) - * (1 - m_yBMJ[0] - m_yBMJ[1] * m_epsilonBMJ[1] / 4) - * (1 - m_tmin / m_t) - * (m_epsroot[0] - + (4 * m_xB * (1 - m_xB) + m_epsilonBMJ[1]) - / (4 * (1 - m_xB)) * (m_t - m_tmin) / m_Q2); - m_K[0] = sqrt(m_K[1]); - m_Kt[1] = ((1 - m_xB) * m_xB + m_epsilonBMJ[1] / 4.) * (m_tmin - m_t) - * (m_t - m_tmax) / m_Q2; - m_Kt[0] = sqrt(m_Kt[1]); - // double K = sqrt(1 - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.) * m_Kt[0] / m_Q[0]; // Test - - // Dirac and Pauli form factors - computeFormFactors(); - - // Compute CFFs F+b and F0+ - computeCFFs(); - - // Compute Angular coeffs for Interf cross section - computeAngularCoeffsInterf(); - - // Phase space - m_phaseSpace = m_xB * m_yBMJ[1] - / (1024 * pow(Constant::PI, 5) * m_Q[3] * m_epsroot[0]); - -} - -void BMJ2012BHModel::initModule(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - - //init mother class - DVCSModule::initModule(beamHelicity, beamCharge, targetPolarization); - - // define the angles and Lambda - defineAngles(targetPolarization); - - //define the Lepton propagators - double Delta2Q2 = m_t / m_Q2; - double yeps = m_yBMJ[0] * (1. + m_epsilonBMJ[1]); - double J = (1. - m_yBMJ[0] - m_yBMJ[0] * m_epsilonBMJ[1] / 2.) - * (1. + Delta2Q2) - (1. - m_xB) * (2. - m_yBMJ[0]) * Delta2Q2; - m_P1 = -(J + 2. * m_K[0] * cos(m_phi1BMK)) / yeps; - m_P2 = 1. + Delta2Q2 - m_P1; - - // beam helicity - m_lambda = beamHelicity; - - // Compute Fourier coeffs of BH - computeFourierCoeffsBH(); - // Compute Fourier coeffs of VCS - computeFourierCoeffsVCS(); - // Compute Fourier coeffs of Interference - computeFourierCoeffsInterf(); -} - -void BMJ2012BHModel::isModuleWellConfigured() { - - //check mother class - DVCSModule::isModuleWellConfigured(); -} - -void BMJ2012BHModel::defineAngles(const NumA::Vector3D &targetPolarization) { - double Px = targetPolarization.getX(); - double Py = targetPolarization.getY(); - double Pz = targetPolarization.getZ(); - - // m_phi is considered in the Trento convention here. - double Sx = Px * cos(m_phi) - Py * sin(m_phi); - double Sy = -(Px * sin(m_phi) + Py * cos(m_phi)); - double Sz = -Pz; - - m_Lambda = sqrt(Sx * Sx + Sy * Sy + Sz * Sz); - - if (m_Lambda != 0.) { - double costheta = Sz / m_Lambda; - m_theta = acos(costheta); - - double sintheta = sin(m_theta); - if (sintheta != 0.) { - double sinPhi = Sy / sintheta / m_Lambda; - double cosPhi = Sx / sintheta / m_Lambda; - if (cosPhi == 0.) { - m_PhiBMK = ((sinPhi > 0.) - (sinPhi < 0.)) * Constant::PI / 2; - } else { - m_PhiBMK = atan(Sy / Sx); - if (cosPhi <= 0.) { - if (sinPhi < 0.) { - m_PhiBMK = m_PhiBMK - Constant::PI; - } else { - m_PhiBMK = m_PhiBMK + Constant::PI; - } - } - } - } - } - - m_phi1BMK = Constant::PI - m_phi; - m_phi2BMK = m_PhiBMK - m_phi1BMK; -} - -void BMJ2012BHModel::computeFormFactors() { - //TODO Get the value of F1(t) and F2(t) from another module - m_F1 = - (4. * m_M[1] - 2.79285 * m_t) - / (pow(1. - 1.4084507042253522 * m_t, 2) - * (4. * m_M[1] - 1. * m_t)); - m_F2 = (7.1714 * m_M[1]) - / (pow(1 - 1.4084507042253522 * m_t, 2) * (4 * m_M[1] - m_t)); -} - -void BMJ2012BHModel::computeCFFs() { - // Compute coefficients in CFFs F+b and F0+ - for (int j = 0; j < 2; j++) { - m_cF[j][0] = (1. + (1 - 2 * j) * m_epsroot[0]) / (2. * m_epsroot[0]) - + (1 - m_xB) * m_xB2 * (4 * m_M[1] - m_t) * (1 + m_t / m_Q2) - / (m_Q2 * m_epsroot[0] * m_xBtQ2[1]); - m_cF[j][1] = (1. - (1 - 2 * j) * m_epsroot[0]) / (2. * m_epsroot[0]) - * 2. * m_Kt[1] / (m_M[1] * m_xBtQ2[1]); - m_cF[j][2] = 4 * m_xB2 * m_Kt[1] / (m_Q2 * m_epsroot[0] * m_xBtQ2[2]); - } - double A = -sqrt(2.) * m_Kt[0] / (m_epsroot[0] * m_Q[0] * m_xBtQ2[0]); - m_cF[2][0] = A * m_xB - * (1 + 2. * m_xB * (4 * m_M[1] - m_t) / (m_Q2 * m_xBtQ2[0])); - m_cF[2][1] = A * (4. * m_xB2 * m_M[1] - (2. * m_xB + m_epsilonBMJ[1]) * m_t) - / (2. * m_M[1] * m_xBtQ2[0]); - m_cF[2][2] = A * 2. * m_xB / m_xBtQ2[0] - * (1 + 2. * m_xB2 * (4 * m_M[1] - m_t) / (m_Q2 * m_xBtQ2[0])); - - // Gets CFFs H, Ht, etc. - std::vector > CFF_F(4, 0.); - std::vector > CFF_FT(4, 0.); - std::vector > CFF_FLT(4, 0.); - - CFF_F[0] = getConvolCoeffFunctionValue(GPDType::H); - CFF_FT[0] = getConvolCoeffFunctionValue(GPDType::HTrans); - CFF_FLT[0] = getConvolCoeffFunctionValue(GPDType::H3p) - - getConvolCoeffFunctionValue(GPDType::H3m); - - CFF_F[1] = getConvolCoeffFunctionValue(GPDType::E); - CFF_FT[1] = getConvolCoeffFunctionValue(GPDType::ETrans); - CFF_FLT[1] = getConvolCoeffFunctionValue(GPDType::E3p) - - getConvolCoeffFunctionValue(GPDType::E3m); - - CFF_F[2] = getConvolCoeffFunctionValue(GPDType::Ht); - CFF_FT[2] = getConvolCoeffFunctionValue(GPDType::HtTrans); - CFF_FLT[2] = getConvolCoeffFunctionValue(GPDType::Ht3p) - - getConvolCoeffFunctionValue(GPDType::Ht3m); - - CFF_F[3] = getConvolCoeffFunctionValue(GPDType::Et); - CFF_FT[3] = getConvolCoeffFunctionValue(GPDType::EtTrans); - CFF_FLT[3] = getConvolCoeffFunctionValue(GPDType::Et3p) - - getConvolCoeffFunctionValue(GPDType::Et3m); - - // Compute CFFs F+b and F0+ - for (unsigned int i = 0; i < 4; i++) { - for (unsigned int j = 0; j < 3; j++) { - m_CFF[i][j] = m_cF[j][0] * CFF_F[i] + m_cF[j][1] * CFF_FT[i] - + m_cF[j][2] * CFF_FLT[i]; - } - } -} - -void BMJ2012BHModel::computeFourierCoeffsBH() { - //TODO Get the value of F1(t) and F2(t) from another module - double F1 = m_F1; // Dirac form factor - double F2 = m_F2; // Pauli form factor -// F1 = -// (4. * m_M[1] - 2.79285 * m_t) -// / (pow(1. - 1.4084507042253522 * m_t, 2) -// * (4. * m_M[1] - 1. * m_t)); -// F2 = (7.1714 * m_M[1]) -// / (pow(1 - 1.4084507042253522 * m_t, 2) * (4 * m_M[1] - m_t)); - - //F1 = 0.7341366837442705; // Test avec Maxime - //F2 = 1.204141183854909; - - double F12 = pow(F1, 2); - double F22 = pow(F2, 2); - double F1PlusF2 = F1 + F2; - double F1PlusF22 = pow(F1PlusF2, 2); - double Delta2M2 = m_t / (4 * m_M[1]); - double Delta2Q2 = m_t / m_Q2; - double MQ = m_M[0] / m_Q[0]; - double F1PlusDeltaF2 = F1 + Delta2M2 * F2; - double F1MinusDeltaF2 = F12 - Delta2M2 * F22; - - // Unpolarized Fourier coefficients - m_cBH[0][0] = 8. * m_K[1] - * ((2. + 3. * m_epsilonBMJ[1]) * F1MinusDeltaF2 / Delta2Q2 - + 2. * m_xB2 * F1PlusF22) - + pow((2. - m_yBMJ[0]), 2) - * ((2. + m_epsilonBMJ[1]) - * ((m_xB2 / Delta2M2) * pow((1. + Delta2Q2), 2) - + 4. * (1. - m_xB) * (1. + m_xB * Delta2Q2)) - * F1MinusDeltaF2 - + (4. * m_xB2) - * (m_xB - + (1. - m_xB + m_epsilonBMJ[1] / 2.) - * pow((1. - Delta2Q2), 2) - - m_xB * (1. - 2. * m_xB) - * m_Delta2[1] / m_Q[3]) - * F1PlusF22) - + 8. * (1. + m_epsilonBMJ[1]) - * (1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.) - * (2. * m_epsilonBMJ[1] * (1. - Delta2M2) * F1MinusDeltaF2 - - m_xB2 * pow((1. - Delta2Q2), 2) * F1PlusF22); - m_cBH[0][1] = 8. * m_K[0] * (2. - m_yBMJ[0]) - * ((m_xB2 / Delta2M2 - 2. * m_xB - m_epsilonBMJ[1]) * F1MinusDeltaF2 - + 2. * m_xB2 * (1. - (1. - 2. * m_xB) * Delta2Q2) - * F1PlusF22); - m_cBH[0][2] = 8. * m_xB2 * m_K[1] - * (F1MinusDeltaF2 / Delta2M2 + 2. * F1PlusF22); - - // LP Fourier coefficients - double C1 = 8. * m_lambda * m_xB * m_yBMJ[0] * m_epsroot[0] * F1PlusF2 - / (1. - Delta2M2); - m_cBH[1][0] = C1 * (2. - m_yBMJ[0]) - * (0.5 * (m_xB / 2. * (1. - Delta2Q2) - Delta2M2) - * (2. - m_xB - 2. * pow((1 - m_xB), 2) * Delta2Q2 - + m_epsilonBMJ[1] * (1. - Delta2Q2) - - m_xB * (1. - 2. * m_xB) * m_Delta2[1] / m_Q[3]) - * F1PlusF2 - + (1. - (1. - m_xB) * Delta2Q2) - * (m_xB2 / (4. * Delta2M2) * pow(1. + Delta2Q2, 2) - + (1. - m_xB) * (1. + m_xB * Delta2Q2)) - * F1PlusDeltaF2); - m_cBH[1][1] = -C1 * m_K[0] - * ((2. * Delta2M2 - m_xB * (1. - Delta2Q2)) - * (1. - m_xB + m_xB * Delta2Q2) * F1PlusF2 - + (1. + m_xB - (3. - 2. * m_xB) * (1. + m_xB * Delta2Q2) - - m_xB2 / Delta2M2 * (1. + m_Delta2[1] / m_Q[3])) - * F1PlusDeltaF2); - - // TP Fourier coefficients - double C2 = sqrt(1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.); - m_cBH[2][0] = -8. * m_lambda * cos(m_phi2BMK) * (2. - m_yBMJ[0]) * m_yBMJ[0] - / MQ * m_epsroot[0] * m_K[0] / C2 * F1PlusF2 - * (m_xB * m_xB2 * pow(MQ, 2) * (1. - Delta2Q2) * F1PlusF2 - + (1. - (1. - m_xB) * Delta2Q2) - * (m_xB2 / (4. * Delta2M2) * (1. - Delta2Q2) * F1 - + m_xB / 2. * F2)); - m_cBH[2][1] = -16 * m_lambda * cos(m_phi2BMK) * m_xB * m_yBMJ[0] * C2 * MQ - * m_epsroot[0] * F1PlusF2 - * (2. * m_K[1] / (Delta2Q2 * pow(C2, 2)) - * (m_xB * (1. - Delta2Q2) * F1 + Delta2M2 * F2) - + (1. + m_epsilonBMJ[1]) * m_xB * (1. - Delta2Q2) - * F1PlusDeltaF2); - m_s1BHTP = 16. * m_lambda * sin(m_phi2BMK) * m_yBMJ[0] * m_xB2 * C2 * MQ - * m_epsroot[2] * (1. - Delta2Q2) * F1PlusF2 * F1PlusDeltaF2; -} - -void BMJ2012BHModel::computeFourierCoeffsVCS() { - double C1, C2; - C2 = 1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.; - C1 = sqrt(C2); - - // Unpolarized Fourier coeffs - m_cVCS[0][0] = (2 - * (2 - 2 * m_yBMJ[0] + m_yBMJ[1] * (1. + m_epsilonBMJ[1] / 2.)) - * C_VCS(0, 1, 1, 1, 1, -1, 1, -1, 1).real() - + 8 * C2 * C_VCS(0, 0, 1, 0, 1).real()) / m_epsroot[1]; - m_cVCS[0][1] = 4 * sqrt(2.) * C1 / m_epsroot[1] * (2 - m_yBMJ[0]) - * C_VCS(0, 0, 1, 1, 1, -1, 1).real(); - m_sVCS[0][1] = 4 * sqrt(2.) * C1 / m_epsroot[1] - * (-m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(0, 0, 1, 1, 1, -1, 1).imag(); - m_cVCS[0][2] = 8 * C2 / m_epsroot[1] * C_VCS(0, -1, 1, 1, 1).real(); - - // Longitudinally polarized Fourier coeffs - m_cVCS[1][0] = 2 * m_lambda * m_yBMJ[0] * (2 - m_yBMJ[0]) / m_epsroot[1] - * C_VCS(1, 1, 1, 1, 1, -1, 1, -1, 1).real(); - m_cVCS[1][1] = -4 * sqrt(2.) * C1 / m_epsroot[2] - * (-m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(1, 0, 1, 1, 1, -1, 1).real(); - m_sVCS[1][1] = -4 * sqrt(2.) * C1 / m_epsroot[2] * (2 - m_yBMJ[0]) - * C_VCS(1, 0, 1, 1, 1, -1, 1).imag(); - m_sVCS[1][2] = -8 * C2 / m_epsroot[2] * C_VCS(1, -1, 1, 1, 1).imag(); - - // Transversally polarized Fourier coeffs - m_cVCS[2][0] = - m_Kt[0] / m_M[0] / m_epsroot[1] - * (-4 * C2 * sin(m_phi2BMK) * C_VCS(3, 0, 1, 0, 1).imag() - + (2 - m_yBMJ[0]) - * (m_lambda * cos(m_phi2BMK) * m_yBMJ[0] - * C_VCS(2, 1, 1, 1, 1, -1, 1, -1, 1).real() - - sin(m_phi2BMK) - * (2 - 2 * m_yBMJ[0] - + m_yBMJ[1] - * (1. - + m_epsilonBMJ[1] - / 2.)) - / (2. - m_yBMJ[0]) - * C_VCS(3, 1, 1, 1, 1, -1, - 1, -1, 1).imag())); - m_cVCS[2][1] = -2 * sqrt(2.) * C1 / m_epsroot[1] * m_Kt[0] / m_M[0] - * (cos(m_phi2BMK) * (-m_lambda * m_yBMJ[0]) - * C_VCS(2, 0, 1, 1, 1, -1, 1).real() - + sin(m_phi2BMK) * (2 - m_yBMJ[0]) - * C_VCS(3, 0, 1, 1, 1, -1, 1).imag()); - m_sVCS[2][1] = -2 * sqrt(2.) * C1 / m_epsroot[1] * m_Kt[0] / m_M[0] - * (cos(m_phi2BMK) * (2 - m_yBMJ[0]) / m_epsroot[0] - * C_VCS(2, 0, 1, 1, 1, -1, 1).imag() - + sin(m_phi2BMK) * (m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(3, 0, 1, 1, 1, -1, 1).real()); - m_cVCS[2][2] = -4 * C2 / m_epsroot[2] * m_Kt[0] / m_M[0] * m_epsroot[0] - * sin(m_phi2BMK) * C_VCS(3, -1, 1, 1, 1).imag(); - m_sVCS[2][2] = -4 * C2 / m_epsroot[2] * m_Kt[0] / m_M[0] * cos(m_phi2BMK) - * C_VCS(2, -1, 1, 1, 1).imag(); -} - -void BMJ2012BHModel::computeAngularCoeffsInterf() { - double tQ2 = m_t / m_Q2; - double Kt2Q2 = m_Kt[1] / m_Q2; - double tp = m_t - m_tmin; - double tpQ2 = tp / m_Q2; - double C2 = 1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.; - double C1 = sqrt(C2); - double B2 = 2. - 2 * m_yBMJ[0] + m_yBMJ[1] - + m_epsilonBMJ[1] * m_yBMJ[1] / 2.; - - /* Unpolarized and TP- target - * Angulars coeffs C and S - */ - - // C++ coefficients - m_C[0][0][0] = - -4 * (2. - m_yBMJ[0]) * (1. + m_epsroot[0]) / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - / m_epsroot[0] - + tQ2 * C2 * (2 - m_xB) - * (1. - + (2 * m_xB - * (2 - m_xB - + (m_epsroot[0] - 1.) - / 2. - + m_epsilonBMJ[1] - / (2 * m_xB)) - * tQ2 + m_epsilonBMJ[1]) - / ((2. - m_xB) - * (1 + m_epsroot[0])))); - m_C[0][1][0] = 8 * (2. - m_yBMJ[0]) * m_xB * tQ2 / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) / m_epsroot[0] - + C2 * (1 + m_epsroot[0]) / 2. * (1. + tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) * tQ2 - / (1 + m_epsroot[0]))); - m_C[0][2][0] = - 8 * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - / m_epsroot[0] * (1 + m_epsroot[0] - 2 * m_xB) / 2. - - C2 - * (2 * Kt2Q2 - - (1 + m_epsroot[0]) / 2. - * (1 + m_epsroot[0] - m_xB - + (m_epsroot[0] - 1. - + m_xB - * (3. - + m_epsroot[0] - - 2 - * m_xB) - / (1 - + m_epsroot[0])) - * tQ2))); - m_C[0][0][1] = -16 * m_K[0] * C2 / m_epsroot[4] - * ((1. + (1. - m_xB) * (m_epsroot[0] - 1.) / (2 * m_xB) - + m_epsilonBMJ[1] / (4 * m_xB)) * m_xB * tQ2 - - 3 * m_epsilonBMJ[1] / 4.) - - 4 * m_K[0] * B2 * (1. + m_epsroot[0] - m_epsilonBMJ[1]) - / m_epsroot[4] - * (1. - (1. - 3 * m_xB) * tQ2 - + (1. - m_epsroot[0] + 3 * m_epsilonBMJ[1]) * m_xB - * tQ2 - / (1. + m_epsroot[0] - m_epsilonBMJ[1])); - m_C[0][1][1] = 16 * m_K[0] * m_xB * tQ2 / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1. - (1. - 2 * m_xB) * tQ2) - + C2 * (1 + m_epsroot[0] - 2 * m_xB) * tpQ2 / 2.); - m_C[0][2][1] = -16 * m_K[0] * tQ2 / m_epsroot[3] - * (C2 - * (1. - (1. - 2 * m_xB) * tQ2 - + (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) * tpQ2 - / (4 * m_epsroot[0])) - - (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1. - m_xB / 2. - + (1 + m_epsroot[0] - 2 * m_xB) / 4. - * (1. - tQ2) - + (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - * tpQ2 / (2 * m_epsroot[0]))); - m_C[0][0][2] = 8 * (2. - m_yBMJ[0]) * C2 / m_epsroot[3] - * (2 * m_epsilonBMJ[1] * Kt2Q2 / (m_epsroot[0] + m_epsroot[1]) - + m_xB * tQ2 * tpQ2 - * (1. - m_xB - (m_epsroot[0] - 1.) / 2. - + m_epsilonBMJ[1] / (2 * m_xB))); - m_C[0][1][2] = 8 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[3] - * (4 * Kt2Q2 / m_epsroot[0] - + (1. + m_epsroot[0] - 2 * m_xB) / 2. * (1 + tQ2) * tpQ2); - m_C[0][2][2] = 4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[3] - * (4 * (1. - 2 * m_xB) * Kt2Q2 / m_epsroot[0] - - (3. - m_epsroot[0] - 2 * m_xB + m_epsilonBMJ[1] / m_xB) - * m_xB * tpQ2); - m_C[0][0][3] = -8 * m_K[0] * C2 * (m_epsroot[0] - 1.) / m_epsroot[4] - * ((1. - m_xB) * tQ2 + (m_epsroot[0] - 1.) / 2. * (1 + tQ2)); - m_C[0][1][3] = -8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_C[0][2][3] = 16 * m_K[0] * C2 * tQ2 * tpQ2 / m_epsroot[4] - * (m_xB * (1. - m_xB) + m_epsilonBMJ[1] / 4.); - - // S++ coefficients - m_S[0][0][1] = - 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] / m_epsroot[1] - * (1. - + (1. - m_xB + (m_epsroot[0] - 1.) / 2.) - / m_epsroot[1] * tpQ2); - m_S[0][1][1] = -8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * m_xB * tQ2 - / m_epsroot[3] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_S[0][2][1] = 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * tQ2 - / m_epsroot[1] - * (1. - - (1. - 2 * m_xB) * (1. + m_epsroot[0] - 2 * m_xB) - / (2 * m_epsroot[1]) * tpQ2); - m_S[0][0][2] = -4 * C2 * m_yBMJ[0] / m_epsroot[2] - * (1. + m_epsroot[0] - 2 * m_xB) * tpQ2 - * ((m_epsilonBMJ[1] - m_xB * (m_epsroot[0] - 1.)) - / (1. + m_epsroot[0] - 2 * m_xB) - - (2 * m_xB + m_epsilonBMJ[1]) * tpQ2 / (2 * m_epsroot[0])); - m_S[0][1][2] = -4 * C2 * m_yBMJ[0] * m_xB * tQ2 / m_epsroot[3] - * (1. - (1. - 2 * m_xB) * tQ2) - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_S[0][2][2] = -8 * C2 * m_yBMJ[0] * tQ2 * tpQ2 / m_epsroot[3] - * (1. - m_xB / 2. + 3 * m_epsilonBMJ[1] / 4.) - * (1. + m_epsroot[0] - 2 * m_xB) - * (1. - + (4 * (1 - m_xB) * m_xB + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2); - - // C0+ - m_C[2][0][0] = 12 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (m_epsilonBMJ[1] + (2. - 6 * m_xB - m_epsilonBMJ[1]) / 3. * tQ2); - m_C[2][1][0] = 24 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_C[2][2][0] = 4 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * tQ2 - / m_epsroot[4] * (8. - 6 * m_xB + 5 * m_epsilonBMJ[1]) - * (1. - - tQ2 * (2. - 12 * m_xB * (1. - m_xB) - m_epsilonBMJ[1]) - / (8. - 6 * m_xB + 5 * m_epsilonBMJ[1])); - m_C[2][0][1] = 8 * sqrt(2.) * C1 / m_epsroot[3] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * tpQ2 - * (1. - m_xB - + ((1. - m_xB) * m_xB + m_epsilonBMJ[1] / 4.) - / m_epsroot[0] * tpQ2) - + C2 / m_epsroot[0] * (1. - (1. - 2 * m_xB) * tQ2) - * (m_epsilonBMJ[1] - - 2 * (1. + m_epsilonBMJ[1] / (2 * m_xB)) - * m_xB * tQ2)); - m_C[2][1][1] = 16 * sqrt(2.) * C1 * m_xB * tQ2 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + pow(1. - (1. - 2 * m_xB) * tQ2, 2) * C2); - m_C[2][2][1] = 8 * sqrt(2.) * C1 * tQ2 / m_epsroot[4] - * (Kt2Q2 * (1. - 2 * m_xB) * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. - (1. - 2 * m_xB) * tQ2) * C2 - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 - * (4 * m_xB * (1. - m_xB) - + m_epsilonBMJ[1]))); - m_C[2][0][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (1. + m_epsilonBMJ[1] / 2.) - * (1. - + (1. + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsilonBMJ[1] / 2.) * m_xB * tQ2); - m_C[2][1][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_C[2][2][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * tQ2 - / m_epsroot[3] - * (1. - m_xB - + tpQ2 / 2. * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / m_epsroot[0]); - - // S0+ - m_S[2][0][1] = 8 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] * C1 * Kt2Q2 - / m_epsroot[3]; - m_S[2][1][1] = 4 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] - * (4 * (1. - m_xB) * tQ2 * (1 + m_xB * tQ2) - + m_epsilonBMJ[1] * (1 + tQ2) * (1 + tQ2)); - m_S[2][2][1] = -8 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] - * (1. - 2 * m_xB) * C1 * tQ2 * Kt2Q2 / m_epsroot[3]; - m_S[2][0][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 - * (1. + m_epsilonBMJ[1] / 2.) / m_epsroot[3] - * (1. - + (1. + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsilonBMJ[1] / 2.) * m_xB * tQ2); - m_S[2][1][2] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. - (1. - 2 * m_xB) * tQ2); - m_S[2][2][2] = -2 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * tQ2 / m_epsroot[3] - * (4. - 4 * m_xB + 2 * m_epsilonBMJ[1] - + 2 * tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])); - - // C-+ - m_C[1][0][0] = 8 * (2. - m_yBMJ[0]) / m_epsroot[2] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (m_epsroot[0] - 1.) - / (2 * m_epsroot[1]) * Kt2Q2 - + C2 / m_epsroot[0] - * (1. - m_xB - (m_epsroot[0] - 1.) / 2. - + m_epsilonBMJ[1] / (2 * m_xB)) * m_xB * tQ2 - * tpQ2); - m_C[1][1][0] = 4 * (2. - m_yBMJ[0]) * m_xB * tQ2 / m_epsroot[4] - * (2 * Kt2Q2 * B2 - - (1. - (1. - 2 * m_xB) * tQ2) * C2 - * (m_epsroot[0] - 1. - + (m_epsroot[0] + 1. - 2 * m_xB) * tQ2)); - m_C[1][2][0] = 4 * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[3] - * (tpQ2 * C2 - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - + m_xB * m_epsroot[0]) - + Kt2Q2 / m_epsroot[0] - * (4. - - 2 * m_xB * (2. - m_yBMJ[0]) - * (2. - m_yBMJ[0]) - 4 * m_yBMJ[0] - + m_yBMJ[1] - m_yBMJ[1] * m_epsroot[2])); - m_C[1][0][1] = - 8 * m_K[0] / m_epsroot[2] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (2. - m_epsroot[0]) - / m_epsroot[1] - * ((m_epsroot[0] - 1. + m_epsilonBMJ[1]) - / (2 * (2. - m_epsroot[0])) * (1. - tQ2) - - m_xB * tQ2) - + 2 * C2 / m_epsroot[0] - * ((1. - m_epsroot[0] + m_epsilonBMJ[1] / 2.) - / (2 * m_epsroot[0]) - + tQ2 - * (1. - 3 * m_xB / 2. - + (m_xB - + m_epsilonBMJ[1] - / 2.) - / (2 - * m_epsroot[0])))); - m_C[1][1][1] = - 8 * m_K[0] * m_xB * tQ2 / m_epsroot[4] - * (2 * (1. - (1. - 2 * m_xB) * tQ2) * B2 - + C2 - * (3. - m_epsroot[0] - - (3 * (1. - 2 * m_xB) - + m_epsroot[0]) * tQ2)); - m_C[1][2][1] = - 4 * m_K[0] * tQ2 / m_epsroot[4] - * (B2 - * (5. - 4 * m_xB + 3 * m_epsilonBMJ[1] - - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - - m_epsroot[0] - - 2 * m_xB - * (4. - 4 * m_xB - - m_epsroot[0]))) - + C2 - * (8. + 5 * m_epsilonBMJ[1] - 6 * m_xB - + 2 * m_xB * m_epsroot[0] - - tQ2 - * (2. - m_epsilonBMJ[1] - + 2 * m_epsroot[0] - - 4 * m_xB - * (3. - - 3 - * m_xB - + m_epsroot[0])))); - m_C[1][0][2] = 4 * (2. - m_yBMJ[0]) * C2 * (1. + m_epsroot[0]) - / m_epsroot[4] - * ((2. - 3 * m_xB) * tQ2 - + (1. - 2 * m_xB + 2 * (1. - m_xB) / (1. + m_epsroot[0])) - * m_xB * tQ2 * tQ2 - + (1. - + (m_epsroot[0] + m_xB + (1. - m_xB) * tQ2) - / (1. + m_epsroot[0]) * tQ2) - * m_epsilonBMJ[1]); - m_C[1][1][2] = 4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[4] - * (4 * Kt2Q2 + 1. + m_epsroot[0] - + tQ2 - * ((1. - 2 * m_xB) * (1. - 2 * m_xB - m_epsroot[0]) - * tQ2 - 2. + 4 * m_xB - + 2 * m_xB * m_epsroot[0])); - m_C[1][2][2] = - 16 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[2] - * (Kt2Q2 * (1. - 2 * m_xB) / m_epsroot[1] - - (1. - m_xB) - / (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - - m_xB * m_epsroot[0]) - - tpQ2 - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - - m_xB * m_epsroot[0]) - / (4 * m_epsroot[0])); - m_C[1][0][3] = -8 * m_K[0] * C2 * (1. + m_epsroot[0] + m_epsilonBMJ[1] / 2.) - / m_epsroot[4] - * (1. - + (1. + m_epsroot[0] + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsroot[0] + m_epsilonBMJ[1] / 2) * m_xB - * tQ2); - m_C[1][1][3] = 8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. + m_epsroot[0]) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_C[1][2][3] = 16 * m_K[0] * C2 * tQ2 / m_epsroot[3] - * (1. - m_xB - + tpQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / (4 * m_epsroot[0])); - - // S-+ - m_S[1][0][1] = 4 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] / m_epsroot[3] - * (1. - m_epsroot[0] + 2 * m_epsilonBMJ[1] - - 2 * (1. + (m_epsroot[0] - 1.) / (2 * m_xB)) * m_xB * tQ2); - m_S[1][1][1] = 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * m_xB * tQ2 - / m_epsroot[3] * (1. + m_epsroot[0]) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_S[1][2][1] = 4 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * tQ2 - / m_epsroot[3] - * (3. + 2 * m_epsilonBMJ[1] + m_epsroot[0] - - 2 * m_xB * (1. + m_epsroot[0]) - - tQ2 * (1. - 2 * m_xB) * (1. - 2 * m_xB - m_epsroot[0])); - m_S[1][0][2] = 2 * m_yBMJ[0] * C2 * (1. + m_epsroot[0]) / m_epsroot[3] - * (m_epsilonBMJ[1] - - 2 * (1. + m_epsilonBMJ[1] / (2 * m_xB)) * m_xB * tQ2) - * (1. + (m_epsroot[0] - 1. + 2 * m_xB) / (1. + m_epsroot[0]) * tQ2); - m_S[1][1][2] = 4 * m_yBMJ[0] * C2 * m_xB * tQ2 / m_epsroot[3] - * (1. + m_epsroot[0]) * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_S[1][2][2] = 2 * m_yBMJ[0] * C2 * tQ2 / m_epsroot[3] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])) - * (1. + m_epsroot[0] - tQ2 * (1. - 2 * m_xB - m_epsroot[0])); - - /* LP and TP+ target - * Angulars coeffs dC and dS - */ - - // dC++ coefficients - m_dC[0][0][0] = -4 * m_yBMJ[0] * (1. + m_epsroot[0]) / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * Kt2Q2 - + C2 * (m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1] / 2.) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][1][0] = - 4 * m_yBMJ[0] * (1. + m_epsroot[0]) * tQ2 / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1. + m_epsroot[0] - 2 * m_xB) * Kt2Q2 - / (1. + m_epsroot[0]) - + C2 * (2. - m_xB + 3 * m_epsilonBMJ[1] / 2.) - * (1. - + (4 * (1. - m_xB) * m_xB - + m_epsilonBMJ[1]) - / (4. - 2 * m_xB - + 3 - * m_epsilonBMJ[1]) - * tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][2][0] = 4 * m_yBMJ[0] * m_xB * tQ2 / m_epsroot[4] - * (2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * Kt2Q2 - + C2 * (1. + m_epsroot[0]) * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][0][1] = -4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) - * (1. + m_epsroot[0] - m_epsilonBMJ[1]) / m_epsroot[4] - * (1. - - (1. - - 2 * m_xB * (2. + m_epsroot[0]) - / (1. + m_epsroot[0] - m_epsilonBMJ[1])) - * tQ2); - m_dC[0][1][1] = 8 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) - * (m_epsroot[0] + 2 * (1. - m_xB)) * tQ2 / m_epsroot[3] - * (1. - - (1. + (1. - m_epsilonBMJ[1]) / m_epsroot[0] - - 2 * m_xB * (1. + 4 * (1. - m_xB) / m_epsroot[0])) - * tpQ2 / (2 * (m_epsroot[0] + 2 * (1. - m_xB)))); - m_dC[0][2][1] = 16 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_dC[0][0][2] = -4 * m_yBMJ[0] * C2 / m_epsroot[4] - * (m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1] / 2.) - * (1. - m_epsroot[0] - (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_dC[0][1][2] = -2 * m_yBMJ[0] * C2 / m_epsroot[4] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2 - * (1. - + (4 * (1. - m_xB) * m_xB + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2) - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_dC[0][2][2] = 4 * m_yBMJ[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - m_epsroot[0] - (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - - // dS++ coefficients - m_dS[0][0][1] = - 4 * m_K[0] * B2 * (1. + m_epsroot[0]) / m_epsroot[5] - * (2 * m_epsroot[0] - 1. - + (1. + m_epsroot[0] - 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2) - + 8 * m_K[0] * C2 / m_epsroot[5] - * (3 * m_epsilonBMJ[1] / 2. - + (1. - m_epsroot[0] - m_epsilonBMJ[1] / 2. - - m_xB * (3. - m_epsroot[0])) * tQ2); - m_dS[0][1][1] = 8 * m_K[0] * B2 * tQ2 / m_epsroot[3] - * (1. - - (1. - 2 * m_xB) * (1. + m_epsroot[0] - 2 * m_xB) * tpQ2 - / (2 * m_epsroot[1])) - + 32 * m_K[0] * C2 / m_epsroot[5] - * (1. - (3. + m_epsroot[0]) * m_xB / 4. - + 5 * m_epsilonBMJ[1] / 8.) * tQ2 - * (1. - - (1. - m_epsroot[0] - m_epsilonBMJ[1] / 2. - - 2 * m_xB - * (3 * (1. - m_xB) - m_epsroot[0])) - * tQ2 - / (4. - m_xB * (m_epsroot[0] + 3.) - + 5 * m_epsilonBMJ[1] / 2.)); - m_dS[0][2][1] = -8 * m_K[0] * B2 * m_xB * tQ2 / m_epsroot[5] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2) - + 8 * m_K[0] * C2 * (3. + m_epsroot[0]) * m_xB * tQ2 / m_epsroot[5] - * (1. - - (3. - m_epsroot[0] - 6 * m_xB) * tQ2 - / (3. + m_epsroot[0])); - m_dS[0][0][2] = -4 * (2. - m_yBMJ[0]) * C2 / m_epsroot[4] - * (4 * Kt2Q2 / m_epsroot[0] - + (1. + m_epsroot[0] - 2 * m_xB) - * (1. + m_epsroot[0] + m_xB * tQ2) * tpQ2); - m_dS[0][1][2] = 4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[4] - * (4 * (1. - 2 * m_xB) * Kt2Q2 / m_epsroot[0] - - (3. - m_epsroot[0] - 2 * m_xB + m_epsilonBMJ[1] / m_xB) - * m_xB * tpQ2); - m_dS[0][2][2] = 4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[5] - * (4 * Kt2Q2 - - (1. + m_epsroot[0] - 2 * m_xB) - * (1. - (1. - 2 * m_xB) * tQ2) * tpQ2); - m_dS[0][0][3] = -4 * m_K[0] * C2 / m_epsroot[5] - * (1. + m_epsroot[0] - 2 * m_xB) / (1. + m_epsroot[0]) - * m_epsilonBMJ[1] * tpQ2; - m_dS[0][1][3] = 4 * m_K[0] * C2 / m_epsroot[5] - * (4 * (1. - m_xB) * m_xB + m_epsilonBMJ[1]) * tQ2 * tpQ2; - m_dS[0][2][3] = -8 * m_K[0] * C2 / m_epsroot[5] - * (1. + m_epsroot[0] - 2 * m_xB) * m_xB * tQ2 * tpQ2; - - // dC0+ - m_dC[2][0][0] = 8 * sqrt(2.) * m_K[0] * (1. - m_xB) * m_yBMJ[0] * C1 * tQ2 - / m_epsroot[3]; - m_dC[2][1][0] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * tQ2 / m_epsroot[3] - * (m_xB - tQ2 * (1. - 2 * m_xB)); - m_dC[2][2][0] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. + tQ2); - m_dC[2][0][1] = -8 * sqrt(2.) * m_yBMJ[0] * (2. - m_yBMJ[0]) * C1 * Kt2Q2 - / m_epsroot[3]; - m_dC[2][1][1] = 8 * sqrt(2.) * m_yBMJ[0] * (2. - m_yBMJ[0]) * C1 * tQ2 - * Kt2Q2 / m_epsroot[3]; - m_dC[2][2][1] = 0.; - m_dC[2][0][2] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * (1. + m_xB * tQ2) - / m_epsroot[3]; - m_dC[2][1][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * (1. - m_xB) * C1 * tQ2 - / m_epsroot[3]; - m_dC[2][2][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. + tQ2); - - // dS0+ - m_dS[2][0][1] = 8 * sqrt(2.) * C1 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. + tQ2) * C2 - * (2 * m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1])); - m_dS[2][1][1] = -8 * sqrt(2.) * C1 * tQ2 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. + tQ2) * C2 - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 - * (4 * m_xB * (1. - m_xB) - + m_epsilonBMJ[1]))); - m_dS[2][2][1] = -16 * sqrt(2.) * C1 * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. + tQ2) * (1. - (1. - 2 * m_xB) * tQ2); - m_dS[2][0][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (1. + m_xB * tQ2); - m_dS[2][1][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * (1. - m_xB) * C1 - * tQ2 / m_epsroot[4]; - m_dS[2][2][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - * (1. + tQ2) / m_epsroot[4]; - - // dC-+ - m_dC[1][0][0] = 4 * m_yBMJ[0] / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (1. - m_epsroot[0]) - + C2 / 2. * (2 * m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1]) - * (1. - m_epsroot[0] - - tQ2 * (1. - 2 * m_xB + m_epsroot[0]))); - m_dC[1][1][0] = 2 * m_yBMJ[0] * tQ2 / m_epsroot[4] - * ((4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * C2 - * (1. - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1])) - * (m_epsroot[0] - 1. + tQ2 * (1. - 2 * m_xB + m_epsroot[0])) - + 2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (m_epsroot[0] - 1. + 2 * m_xB) * Kt2Q2); - m_dC[1][2][0] = 4 * m_xB * m_yBMJ[0] * tQ2 / m_epsroot[4] - * (2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * ((1. - m_xB) * tQ2 * (1. + m_xB * tQ2) - + (1. + tQ2) * (1. + tQ2) * m_epsilonBMJ[1] / 4.) - - C2 * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - m_epsroot[0] - - tQ2 * (1. + m_epsroot[0] - 2 * m_xB))); - m_dC[1][0][1] = 4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) / m_epsroot[4] - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - 2 * m_xB * (2. - m_epsroot[0]))); - m_dC[1][1][1] = - -4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[4] - * (5. - 4 * m_xB + 3 * m_epsilonBMJ[1] - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - 2 * m_xB - * (4. - 4 * m_xB - - m_epsroot[0]))); - m_dC[1][2][1] = -16 * m_K[0] * m_xB * m_yBMJ[0] * (2. - m_yBMJ[0]) * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_dC[1][0][2] = -2 * m_yBMJ[0] * C2 / m_epsroot[4] - * (m_epsilonBMJ[1] * (1. + m_epsroot[0]) - - 2 * tQ2 - * ((1. - m_xB) * m_epsilonBMJ[1] - + m_xB * (1. + m_epsroot[0])) - + tQ2 * tQ2 * (2 * m_xB + m_epsilonBMJ[1]) - * (1. - 2 * m_xB - m_epsroot[0])); - m_dC[1][1][2] = -2 * m_yBMJ[0] * C2 * tQ2 / m_epsroot[4] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])) - * (1. + m_epsroot[0] - tQ2 * (1. - m_epsroot[0] - 2 * m_xB)); - m_dC[1][2][2] = -4 * m_xB * m_yBMJ[0] * C2 * tQ2 / m_epsroot[4] - * (1. - (1. - 2 * m_xB) * tQ2) - * (1. + m_epsroot[0] - tQ2 * (1. - m_epsroot[0] - 2 * m_xB)); - - // dS-+ - m_dS[1][0][1] = - -4 * m_K[0] / m_epsroot[5] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1 + 2 * m_epsilonBMJ[1] - m_epsroot[0] - + tQ2 * (1. - 2 * m_xB - m_epsroot[0])) - - C2 - * (2. + m_epsilonBMJ[1] - 2 * m_epsroot[0] - + tQ2 - * (m_epsilonBMJ[1] - - 4 * m_epsroot[0] - + 2 * m_xB - * (1. - + m_epsroot[0])))); - m_dS[1][1][1] = - -4 * m_K[0] * tQ2 / m_epsroot[5] - * (B2 - * (3. + 2 * m_epsilonBMJ[1] + m_epsroot[0] - - 2 * m_xB * (1. + m_epsroot[0]) - - tQ2 * (1. - 2 * m_xB) - * (1. - 2 * m_xB - m_epsroot[0])) - + C2 - * (8. + 5 * m_epsilonBMJ[1] - - 2 * m_xB * (3. - m_epsroot[0]) - - tQ2 - * (2. - m_epsilonBMJ[1] - + 2 * m_epsroot[0] - - 12 * m_xB - * (1. - m_xB) - - 4 * m_xB - * m_epsroot[0]))); - m_dS[1][2][1] = - -8 * m_K[0] * B2 * (1. + m_epsroot[0]) * m_xB * tQ2 / m_epsroot[5] - * (1. - - tQ2 * (1. - m_epsroot[0] - 2 * m_xB) - / (1. + m_epsroot[0])) - - 8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[5] - * (3. - m_epsroot[0] - - tQ2 * (3. + m_epsroot[0] - 6 * m_xB)); - m_dS[1][0][2] = -4 * (2. - m_yBMJ[0]) * C2 / m_epsroot[5] - * (tQ2 * tQ2 - * (m_epsilonBMJ[1] - 2 * m_xB2 * (2. + m_epsroot[0]) - + m_xB * (3. - m_epsilonBMJ[1] + m_epsroot[0])) - + m_epsilonBMJ[1] * (1. + m_epsroot[0]) - + tQ2 - * (2. + 2 * m_epsroot[0] - + m_epsilonBMJ[1] * m_epsroot[0] - - m_xB - * (3. - m_epsilonBMJ[1] - + 3 * m_epsroot[0]))); - m_dS[1][1][2] = -4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[4] - * ((2. - m_xB) * (1. + m_epsroot[0]) + m_epsilonBMJ[1] - + 4 * Kt2Q2 * (1. - 2 * m_xB) / m_epsroot[0] - + tQ2 - * (m_epsilonBMJ[1] - + m_xB * (3. - 2 * m_xB + m_epsroot[0]))); - m_dS[1][2][2] = -4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[5] - * (1. + 4 * Kt2Q2 + m_epsroot[0] - - 2 * tQ2 * (1. - 2 * m_xB - m_xB * m_epsroot[0]) - + tQ2 * tQ2 * (1. - 2 * m_xB) - * (1. - 2 * m_xB - m_epsroot[0])); - m_dS[1][0][3] = 4 * m_K[0] * C2 / m_epsroot[5] - * (2. + m_epsilonBMJ[1] + 2 * m_epsroot[0] - + tQ2 * (m_epsilonBMJ[1] + 2 * m_xB * (1. + m_epsroot[0]))); - m_dS[1][1][3] = -4 * m_K[0] * C2 * tQ2 / m_epsroot[4] - * (4. - 4 * m_xB - + tpQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / m_epsroot[0]); - m_dS[1][2][3] = -8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[5] - * (1. + m_epsroot[0] - tQ2 * (1. - 2 * m_xB - m_epsroot[0])); -} - -void BMJ2012BHModel::computeFourierCoeffsInterf() { -// Unpolarized Fourier coeffs - for (unsigned n = 0; n < 4; n++) { - m_cI[0][n] = C_I(0, n, 1, 1).real() + C_I(0, n, -1, 1).real() - + C_I(0, n, 0, 1).real(); - } - for (unsigned n = 1; n < 3; n++) { - m_sI[0][n] = m_lambda - * (S_I(0, n, 1, 1).imag() + S_I(0, n, -1, 1).imag() - + S_I(0, n, 0, 1).imag()); - } - -// LP Fourier coeffs - for (unsigned n = 0; n < 3; n++) { - m_cI[1][n] = m_lambda - * (C_I(1, n, 1, 1).real() + C_I(1, n, -1, 1).real() - + C_I(1, n, 0, 1).real()); - } - for (unsigned n = 1; n < 4; n++) { - m_sI[1][n] = (S_I(1, n, 1, 1).imag() + S_I(1, n, -1, 1).imag() - + S_I(1, n, 0, 1).imag()); - } - -// TP Fourier coeffs - for (unsigned n = 0; n < 4; n++) { - m_cI[2][n] = m_M[0] / m_Kt[0] - * ((n != 3) * m_lambda * cos(m_phi2BMK) - * (C_I(2, n, 1, 1).real() + C_I(2, n, -1, 1).real() - + C_I(2, n, 0, 1).real()) - - sin(m_phi2BMK) - * (C_I(3, n, 1, 1).imag() - + C_I(3, n, -1, 1).imag() - + C_I(3, n, 0, 1).imag())); - } - for (unsigned n = 1; n < 4; n++) { - m_sI[2][n] = m_M[0] / m_Kt[0] - * (cos(m_phi2BMK) - * (S_I(2, n, 1, 1).imag() + S_I(2, n, -1, 1).imag() - + S_I(2, n, 0, 1).imag()) - + (n != 3) * m_lambda * sin(m_phi2BMK) - * (S_I(3, n, 1, 1).real() - + S_I(3, n, -1, 1).real() - + S_I(3, n, 0, 1).real())); - } - -} - -std::complex BMJ2012BHModel::CFF(GPDType::Type F, int a, int b) { - unsigned int j; - - if (a == -1) { - a = 1; - b = -1 * b; - } - - if (a == 1 and b == 1) { - j = 0; - } else if (a == 1 and b == -1) { - j = 1; - } else if (a == 0 and abs(b) == 1) { - j = 2; - } else { - return 0.; - } - - if (F == GPDType::H) { - return m_CFF[0][j]; - } else if (F == GPDType::E) { - return m_CFF[1][j]; - } else if (F == GPDType::Ht) { - return m_CFF[2][j]; - } else if (F == GPDType::Et) { - return m_CFF[3][j]; - } else { - return 0.; - } - -} - -std::complex BMJ2012BHModel::C_VCS(unsigned int S, int a1, int b1, - int a2, int b2) { - std::complex H1(0., 0.), Ht1(0., 0.), E1(0., 0.), Et1(0., 0.); - std::complex H2(0., 0.), Ht2(0., 0.), E2(0., 0.), Et2(0., 0.); - H1 = CFF(GPDType::H, a1, b1); - Ht1 = CFF(GPDType::Ht, a1, b1); - E1 = CFF(GPDType::E, a1, b1); - Et1 = CFF(GPDType::Et, a1, b1); - H2 = CFF(GPDType::H, a2, b2); - Ht2 = CFF(GPDType::Ht, a2, b2); - E2 = CFF(GPDType::E, a2, b2); - Et2 = CFF(GPDType::Et, a2, b2); - - double tQ2 = m_t / m_Q2; - if (S == 0) { - return 4. * (1 - m_xB) * (1 + m_xB * tQ2) / m_xBtQ2[1] - * (H1 * conj(H2) + Ht1 * conj(Ht2)) - + (2 + tQ2) * m_epsilonBMJ[1] / m_xBtQ2[1] * Ht1 * conj(Ht2) - - m_t / (4 * m_M[1]) * E1 * conj(E2) - - m_xB2 / m_xBtQ2[1] - * (pow(1 + tQ2, 2) - * (H1 * conj(E2) + E1 * conj(H2) + E1 * conj(E2)) - + Ht1 * conj(Et2) + Et1 * conj(Ht2) - + m_t / (4 * m_M[1]) * Et1 * conj(Et2)); - } else if (S == 1) { - return (4 * (1 - m_xB) * (1 + m_xB * tQ2) - + 2 * (3. / 2. - m_xB + tQ2 / 2.) * m_epsilonBMJ[1]) - / m_xBtQ2[1] * (H1 * conj(Ht2) + Ht1 * conj(H2)) - - m_xB2 * (1. - (1 - 2 * m_xB) * tQ2) / m_xBtQ2[1] - * (H1 * conj(Et2) + Et1 * conj(H2) + Ht1 * conj(E2) - + E1 * conj(Ht2)) - - (4 * m_xB * (1. - m_xB) * (1 + m_xB * tQ2) * tQ2 - + m_xB * (1 + tQ2) * (1 + tQ2) * m_epsilonBMJ[1]) - / (2 * m_xBtQ2[1]) * (Ht1 * conj(E2) + E1 * conj(Ht2)) - - m_xB / m_xBtQ2[0] - * (m_xB2 * (1 + tQ2) * (1 + tQ2) / (2 * m_xBtQ2[0]) - + m_t / (4 * m_M[1])) - * (E1 * conj(Et2) + Et1 * conj(E2)); - } else if (S == 2) { - return 2. / m_xBtQ2[1] - * (m_xB * (H1 * conj(Et2) + Et1 * conj(H2)) - + 4 * m_xB * (1 - 2 * m_xB) * m_M[1] / m_Q2 - * (H1 * conj(Ht2) + Ht1 * conj(H2)) - - (m_xBtQ2[0] + (3. + tQ2) * m_epsilonBMJ[1] / 2.) - * (Ht1 * conj(E2) + E1 * conj(Ht2)) - + m_xB2 / 2. * (1 - tQ2) - * (E1 * conj(Et2) + Et1 * conj(E2))); - } else if (S == 3) { - return 2. / m_xBtQ2[0] * (H1 * conj(E2) - E1 * conj(H2)) - - 2 * m_xB / m_xBtQ2[1] * (Ht1 * conj(Et2) - Et1 * conj(Ht2)); - } else { - return 0.; - } -} - -std::complex BMJ2012BHModel::C_VCS(unsigned int S, int a1, int b1, - int a2, int b2, int a3, int b3) { - int signe; - if (S == 0 or S == 3) { - signe = +1; - } else if (S == 1 or S == 2) { - signe = -1; - } else { - return 0.; - } - - return C_VCS(S, a1, b1, a2, b2) + signe * 1. * C_VCS(S, a1, b1, a3, b3); -} - -std::complex BMJ2012BHModel::C_VCS(unsigned int S, int a1, int b1, - int a2, int b2, int a3, int b3, int a4, int b4) { - int signe; - if (S == 0 or S == 3) { - signe = +1; - } else if (S == 1 or S == 2) { - signe = -1; - } else { - return 0.; - } - - return C_VCS(S, a1, b1, a2, b2) + signe * 1. * C_VCS(S, a3, b3, a4, b4); - -} - -std::complex BMJ2012BHModel::C_I(unsigned int S, int a, int b, - const std::string& VA) { - std::complex H(0., 0.), Ht(0., 0.), E(0., 0.), Et(0., 0.); - H = CFF(GPDType::H, a, b); - Ht = CFF(GPDType::Ht, a, b); - E = CFF(GPDType::E, a, b); - Et = CFF(GPDType::Et, a, b); - - double F1PlusF2 = m_F1 + m_F2; - double xBF1PlusF2 = m_xB * F1PlusF2 / m_xBtQ2[0]; - - if (S == 0) { - if (VA == "V") { - return xBF1PlusF2 * (H + E); - } else if (VA == "A") { - return xBF1PlusF2 * Ht; - } else { - return m_F1 * H - m_t / (4 * m_M[1]) * m_F2 * E + xBF1PlusF2 * Ht; - } - } else if (S == 1) { - if (VA == "V") { - return xBF1PlusF2 * (H + m_xB / 2. * (1 - m_t / m_Q2) * E); - } else if (VA == "A") { - return xBF1PlusF2 - * (Ht + 2 * m_xB * m_M[1] / m_Q2 * Ht + m_xB / 2. * Et); - } else { - return 2. / m_xBtQ2[0] * m_F1 - * (((1 - m_xB) * (1 + m_xB * m_t / m_Q2) + m_xB / 2. - + m_xB2 * m_M[1] / m_Q2 * (3 + m_t / m_Q2)) * Ht - + m_xB / 2. - * (m_t / (4 * m_M[1]) - - m_xB / 2. * (1 - m_t / m_Q2)) * Et) - + xBF1PlusF2 - * (H + m_xB / 2. * (1 - m_t / m_Q2) * E - - (1 - 2 * m_xB) * m_t / m_Q2 * Ht - - m_t / (4 * m_M[1]) * Et); - } - } else if (S == 2) { - if (VA == "V") { - return xBF1PlusF2 - * (m_xB * (1 - m_t / m_Q2 * (1 - 2 * m_xB)) - * (H + m_t / (4 * m_M[1]) * E) - - m_Kt[1] / (2 * m_M[1]) * E); - } else if (VA == "A") { - return -xBF1PlusF2 - * ((2 - m_xB + 2 * m_xB * m_t / m_Q2 - + (3 + m_t / m_Q2 - m_t / m_M[1]) * m_epsilonBMJ[1] - / 2.) * Ht - - m_xB / 2. - * (m_xB * (1 - m_t / m_Q2) - - m_t / (2 * m_M[1])) * Et); - } else { - return m_xB * (1 - (1 - 2 * m_xB) * m_t / m_Q2) * xBF1PlusF2 - * (H - Ht + m_t / (4 * m_M[1]) * (E - Et)) - - 1. / m_xBtQ2[0] * m_Kt[1] / m_M[1] - * (m_xB / 2. * m_F1 - * (E - Et - 4 * m_M[1] / m_Q2 * Ht) - + m_F2 * (m_xB / 2. * E + Ht)); - } - } else if (S == 3) { - if (VA == "V") { - return m_xB * F1PlusF2 * (H + m_t / (4 * m_M[1]) * E); - } else if (VA == "A") { - return -m_xB * xBF1PlusF2 * (Ht + m_t / (4 * m_M[1]) * Et); - } else { - return 1. / m_xBtQ2[0] - * (m_Kt[1] / m_M[1] * (m_F2 * H - m_F1 * E) - + m_xB2 * F1PlusF2 - * (pow(1 + m_t / m_Q2, 2) - * (H + m_t / (4 * m_M[1]) * E) - Ht - - m_t / (4 * m_M[1]) * Et)); - } - } else { - return 0.; - } -} - -std::complex BMJ2012BHModel::C_I(unsigned int S, unsigned int n, int a, - int b) { - unsigned int i; - if (a == -1) { - a = 1; - b = -1 * b; - } - if (a == 1 and b == 1) { - i = 0; - } else if (a == 1 and b == -1) { - i = 1; - } else if (a == 0 and abs(b) == 1) { - i = 2; - } else { - return 0.; - } - - if (n < 4) { - if (S == 0 or S == 3) { - return m_C[i][0][n] * C_I(S, a, b, "") - + m_C[i][1][n] * C_I(S, a, b, "V") - + m_C[i][2][n] * C_I(S, a, b, "A"); - } else if (S == 1 or S == 2) { - return m_dC[i][0][n] * C_I(S, a, b, "") - + m_dC[i][1][n] * C_I(S, a, b, "V") - + m_dC[i][2][n] * C_I(S, a, b, "A"); - } else { - return 0.; - } - } else { - return 0.; - } -} - -std::complex BMJ2012BHModel::S_I(unsigned int S, unsigned int n, int a, - int b) { - unsigned int i; - if (a == -1) { - a = 1; - b = -1 * b; - } - if (a == 1 and b == 1) { - i = 0; - } else if (a == 1 and b == -1) { - i = 1; - } else if (a == 0 and abs(b) == 1) { - i = 2; - } else { - return 0.; - } - - if (n < 4) { - if (S == 0 or S == 3) { - return m_S[i][0][n] * C_I(S, a, b, "") - + m_S[i][1][n] * C_I(S, a, b, "V") - + m_S[i][2][n] * C_I(S, a, b, "A"); - } else if (S == 1 or S == 2) { - return m_dS[i][0][n] * C_I(S, a, b, "") - + m_dS[i][1][n] * C_I(S, a, b, "V") - + m_dS[i][2][n] * C_I(S, a, b, "A"); - } else { - return 0.; - } - } else { - return 0.; - } -} - -double BMJ2012BHModel::SqrAmplBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - - double A = pow(Constant::POSITRON_CHARGE, 6) - / (m_xB2 * m_yBMJ[1] * m_epsroot[3] * m_t * m_P1 * m_P2); - - double result = 0.; - for (int n = 0; n < 3; n++) { - result += (m_cBH[0][n] + m_Lambda * cos(m_theta) * m_cBH[1][n] - + m_Lambda * sin(m_theta) * m_cBH[2][n]) * cos(n * m_phi1BMK); - } - result += m_s1BHTP * m_Lambda * sin(m_theta) * sin(m_phi1BMK); - result *= A; - - return result; -} - -double BMJ2012BHModel::SqrAmplVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - - double A = pow(Constant::POSITRON_CHARGE, 6) / (m_yBMJ[1] * m_Q2); - - double result = 0.; - for (int n(0); n < 3; n++) { - result += (m_cVCS[0][n] + m_Lambda * cos(m_theta) * m_cVCS[1][n] - + m_Lambda * sin(m_theta) * m_cVCS[2][n]) * cos(n * m_phi1BMK); - result += (m_sVCS[0][n] + m_Lambda * cos(m_theta) * m_sVCS[1][n] - + m_Lambda * sin(m_theta) * m_sVCS[2][n]) * sin(n * m_phi1BMK); - } - result *= A; - - return result; -} - -double BMJ2012BHModel::SqrAmplInterf(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - - double A = -beamCharge * pow(Constant::POSITRON_CHARGE, 6) - / (m_xB * m_yBMJ[2] * m_t * m_P1 * m_P2); - - double result = 0.; - for (int n(0); n < 4; n++) { - result += (m_cI[0][n] + m_Lambda * cos(m_theta) * m_cI[1][n] - + m_Lambda * sin(m_theta) * m_cI[2][n]) * cos(n * m_phi1BMK); - result += (m_sI[0][n] + m_Lambda * cos(m_theta) * m_sI[1][n] - + m_Lambda * sin(m_theta) * m_sI[2][n]) * sin(n * m_phi1BMK); - } - result *= A; - - return result; -} - -double BMJ2012BHModel::CrossSectionBH(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - return SqrAmplBH(beamHelicity, beamCharge, targetPolarization) - * m_phaseSpace; -} - -double BMJ2012BHModel::CrossSectionVCS(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - return 0; -} - -double BMJ2012BHModel::CrossSectionInterf(double beamHelicity, - double beamCharge, NumA::Vector3D targetPolarization) { - return 0; -} diff --git a/src/partons/modules/process/DVCS/BMJ2012INTModel.cpp b/src/partons/modules/process/DVCS/BMJ2012INTModel.cpp deleted file mode 100644 index 31a29be2f4fe58162a1d8860aa713359378a0d57..0000000000000000000000000000000000000000 --- a/src/partons/modules/process/DVCS/BMJ2012INTModel.cpp +++ /dev/null @@ -1,1395 +0,0 @@ -#include "../../../../../include/partons/modules/process/DVCS/BMJ2012INTModel.h" - -#include -#include -#include - -#include "../../../../../include/partons/BaseObjectRegistry.h" -#include "../../../../../include/partons/FundamentalPhysicalConstants.h" - -// Initialise [class]::classId with a unique name. -const unsigned int BMJ2012INTModel::classId = - BaseObjectRegistry::getInstance()->registerBaseObject( - new BMJ2012INTModel("BMJ2012INTModel")); - -/*--------------------------------------- Constructors ---------------------------------*/ - -BMJ2012INTModel::BMJ2012INTModel(const std::string &className) : - DVCSModule(className) { - m_phi1BMK = 0.; - m_phi2BMK = 0.; - m_PhiBMK = 0.; - m_theta = 0.; - m_Lambda = 0.; - m_lambda = 0.; - m_xB2 = 0.; - m_yBMJ.assign(3, 0.); - m_Q.assign(4, 0.); - m_xBtQ2.assign(3, 0.); - m_M.assign(2, 0.); - m_epsilonBMJ.assign(2, 0.); - m_epsroot.assign(6, 0.); - m_K.assign(2, 0.); - m_Kt.assign(2, 0.); - m_Delta2.assign(2, 0.); - m_cBH.assign(3, std::vector(3, 0.)); - m_s1BHTP = 0.; - m_P1 = 0.; - m_P2 = 0.; - m_F1 = 0.; - m_F2 = 0.; - m_cVCS.assign(3, std::vector(3, 0.)); - m_sVCS.assign(3, std::vector(3, 0.)); - m_cI.assign(3, std::vector(4, 0.)); - m_sI.assign(3, std::vector(4, 0.)); - m_C.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_S.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_dC.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_dS.assign(3, - std::vector >(3, std::vector(4, 0.))); - m_cF.assign(3, std::vector(3, 0.)); - m_CFF.assign(4, std::vector >(3, 0.)); -} - -/*-------------------------------------- Destructor ------------------------------------*/ - -BMJ2012INTModel::~BMJ2012INTModel() { -} - -BMJ2012INTModel::BMJ2012INTModel(const BMJ2012INTModel& other) : - DVCSModule(other) { - m_phi1BMK = other.m_phi1BMK; - m_phi2BMK = other.m_phi2BMK; - m_PhiBMK = other.m_PhiBMK; - m_theta = other.m_theta; - m_Lambda = other.m_Lambda; - m_lambda = other.m_lambda; - m_xB2 = other.m_xB2; - m_yBMJ = other.m_yBMJ; - m_Q = other.m_Q; - m_xBtQ2 = other.m_xBtQ2; - m_M = other.m_M; - m_epsilonBMJ = other.m_epsilonBMJ; - m_epsroot = other.m_epsroot; - m_K = other.m_K; - m_Kt = other.m_Kt; - m_Delta2 = other.m_Delta2; - m_cBH = other.m_cBH; - m_s1BHTP = other.m_s1BHTP; - m_P1 = other.m_P1; - m_P2 = other.m_P2; - m_F1 = other.m_F1; - m_F2 = other.m_F2; - m_cVCS = other.m_cVCS; - m_sVCS = other.m_sVCS; - m_cI = other.m_cI; - m_sI = other.m_sI; - m_C = other.m_C; - m_S = other.m_S; - m_dC = other.m_dC; - m_dS = other.m_dS; - m_cF = other.m_cF; - m_CFF = other.m_CFF; -} - -BMJ2012INTModel* BMJ2012INTModel::clone() const { - return new BMJ2012INTModel(*this); -} - -void BMJ2012INTModel::initModule() { - - //init mother class - DVCSModule::initModule(); - - m_xB2 = m_xB * m_xB; - m_Q[0] = sqrt(m_Q2); - m_Q[1] = m_Q2; - m_Q[2] = m_Q[0] * m_Q2; - m_Q[3] = m_Q2 * m_Q2; - m_Delta2[0] = m_t; - m_Delta2[1] = m_t * m_t; - m_xBtQ2[0] = 2 - m_xB + m_xB * m_t / m_Q2; - m_xBtQ2[1] = m_xBtQ2[0] * m_xBtQ2[0]; - m_xBtQ2[2] = m_xBtQ2[1] * m_xBtQ2[0]; - m_M[0] = Constant::PROTON_MASS; // 0.938271998 // Test Maxime; - m_M[1] = m_M[0] * m_M[0]; - m_yBMJ[0] = m_y; - m_yBMJ[1] = m_yBMJ[0] * m_yBMJ[0]; - m_yBMJ[2] = m_yBMJ[0] * m_yBMJ[1]; - m_epsilonBMJ[0] = m_epsilon; - m_epsilonBMJ[1] = m_epsilonBMJ[0] * m_epsilonBMJ[0]; - m_epsroot[1] = 1 + m_epsilonBMJ[1]; - m_epsroot[0] = sqrt(m_epsroot[1]); - m_epsroot[2] = m_epsroot[1] * m_epsroot[0]; - m_epsroot[3] = m_epsroot[1] * m_epsroot[1]; - m_epsroot[4] = m_epsroot[2] * m_epsroot[1]; - m_epsroot[5] = m_epsroot[2] * m_epsroot[2]; - m_K[1] = -(m_t / m_Q2) * (1 - m_xB) - * (1 - m_yBMJ[0] - m_yBMJ[1] * m_epsilonBMJ[1] / 4) - * (1 - m_tmin / m_t) - * (m_epsroot[0] - + (4 * m_xB * (1 - m_xB) + m_epsilonBMJ[1]) / (4 * (1 - m_xB)) - * (m_t - m_tmin) / m_Q2); - m_K[0] = sqrt(m_K[1]); - m_Kt[1] = ((1 - m_xB) * m_xB + m_epsilonBMJ[1] / 4.) * (m_tmin - m_t) - * (m_t - m_tmax) / m_Q2; - m_Kt[0] = sqrt(m_Kt[1]); - // double K = sqrt(1 - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.) * m_Kt[0] / m_Q[0]; // Test - - // Dirac and Pauli form factors - computeFormFactors(); - - // Compute CFFs F+b and F0+ - computeCFFs(); - - // Compute Angular coeffs for Interf cross section - computeAngularCoeffsInterf(); - - // Phase space - m_phaseSpace = m_xB * m_yBMJ[1] / (1024 * pow(Constant::PI, 5) * m_Q[3] * m_epsroot[0]); - -} - -void BMJ2012INTModel::initModule(double beamHelicity, double beamCharge, - NumA::Vector3D targetPolarization) { - - //init mother class - DVCSModule::initModule(beamHelicity, beamCharge, targetPolarization); - - // define the angles and Lambda - defineAngles(targetPolarization); - - //define the Lepton propagators - double Delta2Q2 = m_t / m_Q2; - double yeps = m_yBMJ[0] * (1. + m_epsilonBMJ[1]); - double J = (1. - m_yBMJ[0] - m_yBMJ[0] * m_epsilonBMJ[1] / 2.) * (1. + Delta2Q2) - - (1. - m_xB) * (2. - m_yBMJ[0]) * Delta2Q2; - m_P1 = -(J + 2. * m_K[0] * cos(m_phi1BMK)) / yeps; - m_P2 = 1. + Delta2Q2 - m_P1; - - // beam helicity - m_lambda = beamHelicity; - - // Compute Fourier coeffs of BH - computeFourierCoeffsBH(); - // Compute Fourier coeffs of VCS - computeFourierCoeffsVCS(); - // Compute Fourier coeffs of Interference - computeFourierCoeffsInterf(); -} - -void BMJ2012INTModel::isModuleWellConfigured() { - - //check mother class - DVCSModule::isModuleWellConfigured(); -} - -void BMJ2012INTModel::defineAngles(const NumA::Vector3D &targetPolarization) { - double Px = targetPolarization.getX(); - double Py = targetPolarization.getY(); - double Pz = targetPolarization.getZ(); - - // m_phi is considered in the Trento convention here. - double Sx = Px * cos(m_phi) - Py * sin(m_phi); - double Sy = -(Px * sin(m_phi) + Py * cos(m_phi)); - double Sz = -Pz; - - m_Lambda = sqrt(Sx * Sx + Sy * Sy + Sz * Sz); - - if (m_Lambda != 0.) { - double costheta = Sz / m_Lambda; - m_theta = acos(costheta); - - double sintheta = sin(m_theta); - if (sintheta != 0.) { - double sinPhi = Sy / sintheta / m_Lambda; - double cosPhi = Sx / sintheta / m_Lambda; - if (cosPhi == 0.) { - m_PhiBMK = ((sinPhi > 0.) - (sinPhi < 0.)) * Constant::PI / 2; - } else { - m_PhiBMK = atan(Sy / Sx); - if (cosPhi <= 0.) { - if (sinPhi < 0.) { - m_PhiBMK = m_PhiBMK - Constant::PI; - } else { - m_PhiBMK = m_PhiBMK + Constant::PI; - } - } - } - } - } - - m_phi1BMK = Constant::PI - m_phi; - m_phi2BMK = m_PhiBMK - m_phi1BMK; -} - -void BMJ2012INTModel::computeFormFactors() { - //TODO Get the value of F1(t) and F2(t) from another module - m_F1 = - (4. * m_M[1] - 2.79285 * m_t) - / (pow(1. - 1.4084507042253522 * m_t, 2) - * (4. * m_M[1] - 1. * m_t)); - m_F2 = (7.1714 * m_M[1]) - / (pow(1 - 1.4084507042253522 * m_t, 2) * (4 * m_M[1] - m_t)); -} - -void BMJ2012INTModel::computeCFFs() { - // Compute coefficients in CFFs F+b and F0+ - for (int j = 0; j < 2; j++) { - m_cF[j][0] = (1. + (1 - 2 * j) * m_epsroot[0]) / (2. * m_epsroot[0]) - + (1 - m_xB) * m_xB2 * (4 * m_M[1] - m_t) * (1 + m_t / m_Q2) - / (m_Q2 * m_epsroot[0] * m_xBtQ2[1]); - m_cF[j][1] = (1. - (1 - 2 * j) * m_epsroot[0]) / (2. * m_epsroot[0]) - * 2. * m_Kt[1] / (m_M[1] * m_xBtQ2[1]); - m_cF[j][2] = 4 * m_xB2 * m_Kt[1] / (m_Q2 * m_epsroot[0] * m_xBtQ2[2]); - } - double A = -sqrt(2.) * m_Kt[0] / (m_epsroot[0] * m_Q[0] * m_xBtQ2[0]); - m_cF[2][0] = A * m_xB - * (1 + 2. * m_xB * (4 * m_M[1] - m_t) / (m_Q2 * m_xBtQ2[0])); - m_cF[2][1] = A * (4. * m_xB2 * m_M[1] - (2. * m_xB + m_epsilonBMJ[1]) * m_t) - / (2. * m_M[1] * m_xBtQ2[0]); - m_cF[2][2] = A * 2. * m_xB / m_xBtQ2[0] - * (1 + 2. * m_xB2 * (4 * m_M[1] - m_t) / (m_Q2 * m_xBtQ2[0])); - - // Gets CFFs H, Ht, etc. - std::vector > CFF_F(4, 0.); - std::vector > CFF_FT(4, 0.); - std::vector > CFF_FLT(4, 0.); - - CFF_F[0] = getConvolCoeffFunctionValue(GPDType::H); - CFF_FT[0] = getConvolCoeffFunctionValue(GPDType::HTrans); - CFF_FLT[0] = getConvolCoeffFunctionValue(GPDType::H3p) - - getConvolCoeffFunctionValue(GPDType::H3m); - - CFF_F[1] = getConvolCoeffFunctionValue(GPDType::E); - CFF_FT[1] = getConvolCoeffFunctionValue(GPDType::ETrans); - CFF_FLT[1] = getConvolCoeffFunctionValue(GPDType::E3p) - - getConvolCoeffFunctionValue(GPDType::E3m); - - CFF_F[2] = getConvolCoeffFunctionValue(GPDType::Ht); - CFF_FT[2] = getConvolCoeffFunctionValue(GPDType::HtTrans); - CFF_FLT[2] = getConvolCoeffFunctionValue(GPDType::Ht3p) - - getConvolCoeffFunctionValue(GPDType::Ht3m); - - CFF_F[3] = getConvolCoeffFunctionValue(GPDType::Et); - CFF_FT[3] = getConvolCoeffFunctionValue(GPDType::EtTrans); - CFF_FLT[3] = getConvolCoeffFunctionValue(GPDType::Et3p) - - getConvolCoeffFunctionValue(GPDType::Et3m); - - // Compute CFFs F+b and F0+ - for (unsigned int i = 0; i < 4; i++) { - for (unsigned int j = 0; j < 3; j++) { - m_CFF[i][j] = m_cF[j][0] * CFF_F[i] + m_cF[j][1] * CFF_FT[i] - + m_cF[j][2] * CFF_FLT[i]; - } - } -} - -void BMJ2012INTModel::computeFourierCoeffsBH() { - //TODO Get the value of F1(t) and F2(t) from another module - double F1 = m_F1; // Dirac form factor - double F2 = m_F2; // Pauli form factor -// F1 = -// (4. * m_M[1] - 2.79285 * m_t) -// / (pow(1. - 1.4084507042253522 * m_t, 2) -// * (4. * m_M[1] - 1. * m_t)); -// F2 = (7.1714 * m_M[1]) -// / (pow(1 - 1.4084507042253522 * m_t, 2) * (4 * m_M[1] - m_t)); - - //F1 = 0.7341366837442705; // Test avec Maxime - //F2 = 1.204141183854909; - - double F12 = pow(F1, 2); - double F22 = pow(F2, 2); - double F1PlusF2 = F1 + F2; - double F1PlusF22 = pow(F1PlusF2, 2); - double Delta2M2 = m_t / (4 * m_M[1]); - double Delta2Q2 = m_t / m_Q2; - double MQ = m_M[0] / m_Q[0]; - double F1PlusDeltaF2 = F1 + Delta2M2 * F2; - double F1MinusDeltaF2 = F12 - Delta2M2 * F22; - - // Unpolarized Fourier coefficients - m_cBH[0][0] = 8. * m_K[1] - * ((2. + 3. * m_epsilonBMJ[1]) * F1MinusDeltaF2 / Delta2Q2 - + 2. * m_xB2 * F1PlusF22) - + pow((2. - m_yBMJ[0]), 2) - * ((2. + m_epsilonBMJ[1]) - * ((m_xB2 / Delta2M2) * pow((1. + Delta2Q2), 2) - + 4. * (1. - m_xB) * (1. + m_xB * Delta2Q2)) - * F1MinusDeltaF2 - + (4. * m_xB2) - * (m_xB - + (1. - m_xB + m_epsilonBMJ[1] / 2.) - * pow((1. - Delta2Q2), 2) - - m_xB * (1. - 2. * m_xB) - * m_Delta2[1] / m_Q[3]) - * F1PlusF22) - + 8. * (1. + m_epsilonBMJ[1]) - * (1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.) - * (2. * m_epsilonBMJ[1] * (1. - Delta2M2) * F1MinusDeltaF2 - - m_xB2 * pow((1. - Delta2Q2), 2) * F1PlusF22); - m_cBH[0][1] = 8. * m_K[0] * (2. - m_yBMJ[0]) - * ((m_xB2 / Delta2M2 - 2. * m_xB - m_epsilonBMJ[1]) * F1MinusDeltaF2 - + 2. * m_xB2 * (1. - (1. - 2. * m_xB) * Delta2Q2) - * F1PlusF22); - m_cBH[0][2] = 8. * m_xB2 * m_K[1] - * (F1MinusDeltaF2 / Delta2M2 + 2. * F1PlusF22); - - // LP Fourier coefficients - double C1 = 8. * m_lambda * m_xB * m_yBMJ[0] * m_epsroot[0] * F1PlusF2 - / (1. - Delta2M2); - m_cBH[1][0] = C1 * (2. - m_yBMJ[0]) - * (0.5 * (m_xB / 2. * (1. - Delta2Q2) - Delta2M2) - * (2. - m_xB - 2. * pow((1 - m_xB), 2) * Delta2Q2 - + m_epsilonBMJ[1] * (1. - Delta2Q2) - - m_xB * (1. - 2. * m_xB) * m_Delta2[1] / m_Q[3]) - * F1PlusF2 - + (1. - (1. - m_xB) * Delta2Q2) - * (m_xB2 / (4. * Delta2M2) * pow(1. + Delta2Q2, 2) - + (1. - m_xB) * (1. + m_xB * Delta2Q2)) - * F1PlusDeltaF2); - m_cBH[1][1] = -C1 * m_K[0] - * ((2. * Delta2M2 - m_xB * (1. - Delta2Q2)) - * (1. - m_xB + m_xB * Delta2Q2) * F1PlusF2 - + (1. + m_xB - (3. - 2. * m_xB) * (1. + m_xB * Delta2Q2) - - m_xB2 / Delta2M2 * (1. + m_Delta2[1] / m_Q[3])) - * F1PlusDeltaF2); - - // TP Fourier coefficients - double C2 = sqrt(1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.); - m_cBH[2][0] = -8. * m_lambda * cos(m_phi2BMK) * (2. - m_yBMJ[0]) * m_yBMJ[0] / MQ - * m_epsroot[0] * m_K[0] / C2 * F1PlusF2 - * (m_xB * m_xB2 * pow(MQ, 2) * (1. - Delta2Q2) * F1PlusF2 - + (1. - (1. - m_xB) * Delta2Q2) - * (m_xB2 / (4. * Delta2M2) * (1. - Delta2Q2) * F1 - + m_xB / 2. * F2)); - m_cBH[2][1] = -16 * m_lambda * cos(m_phi2BMK) * m_xB * m_yBMJ[0] * C2 * MQ - * m_epsroot[0] * F1PlusF2 - * (2. * m_K[1] / (Delta2Q2 * pow(C2, 2)) - * (m_xB * (1. - Delta2Q2) * F1 + Delta2M2 * F2) - + (1. + m_epsilonBMJ[1]) * m_xB * (1. - Delta2Q2) - * F1PlusDeltaF2); - m_s1BHTP = 16. * m_lambda * sin(m_phi2BMK) * m_yBMJ[0] * m_xB2 * C2 * MQ - * m_epsroot[2] * (1. - Delta2Q2) * F1PlusF2 * F1PlusDeltaF2; -} - -void BMJ2012INTModel::computeFourierCoeffsVCS() { - double C1, C2; - C2 = 1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.; - C1 = sqrt(C2); - - // Unpolarized Fourier coeffs - m_cVCS[0][0] = (2 * (2 - 2 * m_yBMJ[0] + m_yBMJ[1] * (1. + m_epsilonBMJ[1] / 2.)) - * C_VCS(0, 1, 1, 1, 1, -1, 1, -1, 1).real() - + 8 * C2 * C_VCS(0, 0, 1, 0, 1).real()) / m_epsroot[1]; - m_cVCS[0][1] = 4 * sqrt(2.) * C1 / m_epsroot[1] * (2 - m_yBMJ[0]) - * C_VCS(0, 0, 1, 1, 1, -1, 1).real(); - m_sVCS[0][1] = 4 * sqrt(2.) * C1 / m_epsroot[1] - * (-m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(0, 0, 1, 1, 1, -1, 1).imag(); - m_cVCS[0][2] = 8 * C2 / m_epsroot[1] * C_VCS(0, -1, 1, 1, 1).real(); - - // Longitudinally polarized Fourier coeffs - m_cVCS[1][0] = 2 * m_lambda * m_yBMJ[0] * (2 - m_yBMJ[0]) / m_epsroot[1] - * C_VCS(1, 1, 1, 1, 1, -1, 1, -1, 1).real(); - m_cVCS[1][1] = -4 * sqrt(2.) * C1 / m_epsroot[2] - * (-m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(1, 0, 1, 1, 1, -1, 1).real(); - m_sVCS[1][1] = -4 * sqrt(2.) * C1 / m_epsroot[2] * (2 - m_yBMJ[0]) - * C_VCS(1, 0, 1, 1, 1, -1, 1).imag(); - m_sVCS[1][2] = -8 * C2 / m_epsroot[2] * C_VCS(1, -1, 1, 1, 1).imag(); - - // Transversally polarized Fourier coeffs - m_cVCS[2][0] = - m_Kt[0] / m_M[0] / m_epsroot[1] - * (-4 * C2 * sin(m_phi2BMK) * C_VCS(3, 0, 1, 0, 1).imag() - + (2 - m_yBMJ[0]) - * (m_lambda * cos(m_phi2BMK) * m_yBMJ[0] - * C_VCS(2, 1, 1, 1, 1, -1, 1, -1, 1).real() - - sin(m_phi2BMK) - * (2 - 2 * m_yBMJ[0] - + m_yBMJ[1] - * (1. - + m_epsilonBMJ[1] - / 2.)) - / (2. - m_yBMJ[0]) - * C_VCS(3, 1, 1, 1, 1, -1, - 1, -1, 1).imag())); - m_cVCS[2][1] = -2 * sqrt(2.) * C1 / m_epsroot[1] * m_Kt[0] / m_M[0] - * (cos(m_phi2BMK) * (-m_lambda * m_yBMJ[0]) - * C_VCS(2, 0, 1, 1, 1, -1, 1).real() - + sin(m_phi2BMK) * (2 - m_yBMJ[0]) - * C_VCS(3, 0, 1, 1, 1, -1, 1).imag()); - m_sVCS[2][1] = -2 * sqrt(2.) * C1 / m_epsroot[1] * m_Kt[0] / m_M[0] - * (cos(m_phi2BMK) * (2 - m_yBMJ[0]) / m_epsroot[0] - * C_VCS(2, 0, 1, 1, 1, -1, 1).imag() - + sin(m_phi2BMK) * (m_lambda * m_yBMJ[0] * m_epsroot[0]) - * C_VCS(3, 0, 1, 1, 1, -1, 1).real()); - m_cVCS[2][2] = -4 * C2 / m_epsroot[2] * m_Kt[0] / m_M[0] * m_epsroot[0] - * sin(m_phi2BMK) * C_VCS(3, -1, 1, 1, 1).imag(); - m_sVCS[2][2] = -4 * C2 / m_epsroot[2] * m_Kt[0] / m_M[0] * cos(m_phi2BMK) - * C_VCS(2, -1, 1, 1, 1).imag(); -} - -void BMJ2012INTModel::computeAngularCoeffsInterf() { - double tQ2 = m_t / m_Q2; - double Kt2Q2 = m_Kt[1] / m_Q2; - double tp = m_t - m_tmin; - double tpQ2 = tp / m_Q2; - double C2 = 1. - m_yBMJ[0] - m_epsilonBMJ[1] * m_yBMJ[1] / 4.; - double C1 = sqrt(C2); - double B2 = 2. - 2 * m_yBMJ[0] + m_yBMJ[1] + m_epsilonBMJ[1] * m_yBMJ[1] / 2.; - - /* Unpolarized and TP- target - * Angulars coeffs C and S - */ - - // C++ coefficients - m_C[0][0][0] = - -4 * (2. - m_yBMJ[0]) * (1. + m_epsroot[0]) / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) / m_epsroot[0] - + tQ2 * C2 * (2 - m_xB) - * (1. - + (2 * m_xB - * (2 - m_xB - + (m_epsroot[0] - 1.) - / 2. - + m_epsilonBMJ[1] - / (2 * m_xB)) - * tQ2 + m_epsilonBMJ[1]) - / ((2. - m_xB) - * (1 + m_epsroot[0])))); - m_C[0][1][0] = 8 * (2. - m_yBMJ[0]) * m_xB * tQ2 / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) / m_epsroot[0] - + C2 * (1 + m_epsroot[0]) / 2. * (1. + tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) * tQ2 - / (1 + m_epsroot[0]))); - m_C[0][2][0] = - 8 * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[3] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) / m_epsroot[0] - * (1 + m_epsroot[0] - 2 * m_xB) / 2. - - C2 - * (2 * Kt2Q2 - - (1 + m_epsroot[0]) / 2. - * (1 + m_epsroot[0] - m_xB - + (m_epsroot[0] - 1. - + m_xB - * (3. - + m_epsroot[0] - - 2 - * m_xB) - / (1 - + m_epsroot[0])) - * tQ2))); - m_C[0][0][1] = -16 * m_K[0] * C2 / m_epsroot[4] - * ((1. + (1. - m_xB) * (m_epsroot[0] - 1.) / (2 * m_xB) - + m_epsilonBMJ[1] / (4 * m_xB)) * m_xB * tQ2 - - 3 * m_epsilonBMJ[1] / 4.) - - 4 * m_K[0] * B2 * (1. + m_epsroot[0] - m_epsilonBMJ[1]) - / m_epsroot[4] - * (1. - (1. - 3 * m_xB) * tQ2 - + (1. - m_epsroot[0] + 3 * m_epsilonBMJ[1]) * m_xB - * tQ2 / (1. + m_epsroot[0] - m_epsilonBMJ[1])); - m_C[0][1][1] = 16 * m_K[0] * m_xB * tQ2 / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (1. - (1. - 2 * m_xB) * tQ2) - + C2 * (1 + m_epsroot[0] - 2 * m_xB) * tpQ2 / 2.); - m_C[0][2][1] = -16 * m_K[0] * tQ2 / m_epsroot[3] - * (C2 - * (1. - (1. - 2 * m_xB) * tQ2 - + (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) * tpQ2 - / (4 * m_epsroot[0])) - - (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1. - m_xB / 2. - + (1 + m_epsroot[0] - 2 * m_xB) / 4. - * (1. - tQ2) - + (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - * tpQ2 / (2 * m_epsroot[0]))); - m_C[0][0][2] = 8 * (2. - m_yBMJ[0]) * C2 / m_epsroot[3] - * (2 * m_epsilonBMJ[1] * Kt2Q2 / (m_epsroot[0] + m_epsroot[1]) - + m_xB * tQ2 * tpQ2 - * (1. - m_xB - (m_epsroot[0] - 1.) / 2. - + m_epsilonBMJ[1] / (2 * m_xB))); - m_C[0][1][2] = 8 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[3] - * (4 * Kt2Q2 / m_epsroot[0] - + (1. + m_epsroot[0] - 2 * m_xB) / 2. * (1 + tQ2) * tpQ2); - m_C[0][2][2] = 4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[3] - * (4 * (1. - 2 * m_xB) * Kt2Q2 / m_epsroot[0] - - (3. - m_epsroot[0] - 2 * m_xB + m_epsilonBMJ[1] / m_xB) - * m_xB * tpQ2); - m_C[0][0][3] = -8 * m_K[0] * C2 * (m_epsroot[0] - 1.) / m_epsroot[4] - * ((1. - m_xB) * tQ2 + (m_epsroot[0] - 1.) / 2. * (1 + tQ2)); - m_C[0][1][3] = -8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_C[0][2][3] = 16 * m_K[0] * C2 * tQ2 * tpQ2 / m_epsroot[4] - * (m_xB * (1. - m_xB) + m_epsilonBMJ[1] / 4.); - - // S++ coefficients - m_S[0][0][1] = - 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] / m_epsroot[1] - * (1. - + (1. - m_xB + (m_epsroot[0] - 1.) / 2.) - / m_epsroot[1] * tpQ2); - m_S[0][1][1] = -8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * m_xB * tQ2 - / m_epsroot[3] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_S[0][2][1] = 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * tQ2 / m_epsroot[1] - * (1. - - (1. - 2 * m_xB) * (1. + m_epsroot[0] - 2 * m_xB) - / (2 * m_epsroot[1]) * tpQ2); - m_S[0][0][2] = -4 * C2 * m_yBMJ[0] / m_epsroot[2] - * (1. + m_epsroot[0] - 2 * m_xB) * tpQ2 - * ((m_epsilonBMJ[1] - m_xB * (m_epsroot[0] - 1.)) - / (1. + m_epsroot[0] - 2 * m_xB) - - (2 * m_xB + m_epsilonBMJ[1]) * tpQ2 / (2 * m_epsroot[0])); - m_S[0][1][2] = -4 * C2 * m_yBMJ[0] * m_xB * tQ2 / m_epsroot[3] - * (1. - (1. - 2 * m_xB) * tQ2) - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_S[0][2][2] = -8 * C2 * m_yBMJ[0] * tQ2 * tpQ2 / m_epsroot[3] - * (1. - m_xB / 2. + 3 * m_epsilonBMJ[1] / 4.) - * (1. + m_epsroot[0] - 2 * m_xB) - * (1. - + (4 * (1 - m_xB) * m_xB + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2); - - // C0+ - m_C[2][0][0] = 12 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (m_epsilonBMJ[1] + (2. - 6 * m_xB - m_epsilonBMJ[1]) / 3. * tQ2); - m_C[2][1][0] = 24 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_C[2][2][0] = 4 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * tQ2 - / m_epsroot[4] * (8. - 6 * m_xB + 5 * m_epsilonBMJ[1]) - * (1. - - tQ2 * (2. - 12 * m_xB * (1. - m_xB) - m_epsilonBMJ[1]) - / (8. - 6 * m_xB + 5 * m_epsilonBMJ[1])); - m_C[2][0][1] = 8 * sqrt(2.) * C1 / m_epsroot[3] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * tpQ2 - * (1. - m_xB - + ((1. - m_xB) * m_xB + m_epsilonBMJ[1] / 4.) - / m_epsroot[0] * tpQ2) - + C2 / m_epsroot[0] * (1. - (1. - 2 * m_xB) * tQ2) - * (m_epsilonBMJ[1] - - 2 * (1. + m_epsilonBMJ[1] / (2 * m_xB)) - * m_xB * tQ2)); - m_C[2][1][1] = 16 * sqrt(2.) * C1 * m_xB * tQ2 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + pow(1. - (1. - 2 * m_xB) * tQ2, 2) * C2); - m_C[2][2][1] = 8 * sqrt(2.) * C1 * tQ2 / m_epsroot[4] - * (Kt2Q2 * (1. - 2 * m_xB) * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. - (1. - 2 * m_xB) * tQ2) * C2 - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 - * (4 * m_xB * (1. - m_xB) - + m_epsilonBMJ[1]))); - m_C[2][0][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (1. + m_epsilonBMJ[1] / 2.) - * (1. - + (1. + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsilonBMJ[1] / 2.) * m_xB * tQ2); - m_C[2][1][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_C[2][2][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * tQ2 - / m_epsroot[3] - * (1. - m_xB - + tpQ2 / 2. * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / m_epsroot[0]); - - // S0+ - m_S[2][0][1] = 8 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] * C1 * Kt2Q2 - / m_epsroot[3]; - m_S[2][1][1] = 4 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] - * (4 * (1. - m_xB) * tQ2 * (1 + m_xB * tQ2) - + m_epsilonBMJ[1] * (1 + tQ2) * (1 + tQ2)); - m_S[2][2][1] = -8 * sqrt(2.) * (2. - m_yBMJ[0]) * m_yBMJ[0] * (1. - 2 * m_xB) * C1 - * tQ2 * Kt2Q2 / m_epsroot[3]; - m_S[2][0][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 - * (1. + m_epsilonBMJ[1] / 2.) / m_epsroot[3] - * (1. - + (1. + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsilonBMJ[1] / 2.) * m_xB * tQ2); - m_S[2][1][2] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. - (1. - 2 * m_xB) * tQ2); - m_S[2][2][2] = -2 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * tQ2 / m_epsroot[3] - * (4. - 4 * m_xB + 2 * m_epsilonBMJ[1] - + 2 * tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])); - - // C-+ - m_C[1][0][0] = 8 * (2. - m_yBMJ[0]) / m_epsroot[2] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (m_epsroot[0] - 1.) - / (2 * m_epsroot[1]) * Kt2Q2 - + C2 / m_epsroot[0] - * (1. - m_xB - (m_epsroot[0] - 1.) / 2. - + m_epsilonBMJ[1] / (2 * m_xB)) * m_xB * tQ2 - * tpQ2); - m_C[1][1][0] = 4 * (2. - m_yBMJ[0]) * m_xB * tQ2 / m_epsroot[4] - * (2 * Kt2Q2 * B2 - - (1. - (1. - 2 * m_xB) * tQ2) * C2 - * (m_epsroot[0] - 1. - + (m_epsroot[0] + 1. - 2 * m_xB) * tQ2)); - m_C[1][2][0] = - 4 * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[3] - * (tpQ2 * C2 - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - + m_xB * m_epsroot[0]) - + Kt2Q2 / m_epsroot[0] - * (4. - - 2 * m_xB * (2. - m_yBMJ[0]) - * (2. - m_yBMJ[0]) - 4 * m_yBMJ[0] - + m_yBMJ[1] - m_yBMJ[1] * m_epsroot[2])); - m_C[1][0][1] = - 8 * m_K[0] / m_epsroot[2] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (2. - m_epsroot[0]) - / m_epsroot[1] - * ((m_epsroot[0] - 1. + m_epsilonBMJ[1]) - / (2 * (2. - m_epsroot[0])) * (1. - tQ2) - - m_xB * tQ2) - + 2 * C2 / m_epsroot[0] - * ((1. - m_epsroot[0] + m_epsilonBMJ[1] / 2.) - / (2 * m_epsroot[0]) - + tQ2 - * (1. - 3 * m_xB / 2. - + (m_xB - + m_epsilonBMJ[1] - / 2.) - / (2 - * m_epsroot[0])))); - m_C[1][1][1] = - 8 * m_K[0] * m_xB * tQ2 / m_epsroot[4] - * (2 * (1. - (1. - 2 * m_xB) * tQ2) * B2 - + C2 - * (3. - m_epsroot[0] - - (3 * (1. - 2 * m_xB) - + m_epsroot[0]) * tQ2)); - m_C[1][2][1] = - 4 * m_K[0] * tQ2 / m_epsroot[4] - * (B2 - * (5. - 4 * m_xB + 3 * m_epsilonBMJ[1] - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - 2 * m_xB - * (4. - 4 * m_xB - - m_epsroot[0]))) - + C2 - * (8. + 5 * m_epsilonBMJ[1] - 6 * m_xB - + 2 * m_xB * m_epsroot[0] - - tQ2 - * (2. - m_epsilonBMJ[1] - + 2 * m_epsroot[0] - - 4 * m_xB - * (3. - - 3 - * m_xB - + m_epsroot[0])))); - m_C[1][0][2] = - 4 * (2. - m_yBMJ[0]) * C2 * (1. + m_epsroot[0]) / m_epsroot[4] - * ((2. - 3 * m_xB) * tQ2 - + (1. - 2 * m_xB - + 2 * (1. - m_xB) / (1. + m_epsroot[0])) - * m_xB * tQ2 * tQ2 - + (1. - + (m_epsroot[0] + m_xB + (1. - m_xB) * tQ2) - / (1. + m_epsroot[0]) * tQ2) - * m_epsilonBMJ[1]); - m_C[1][1][2] = 4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[4] - * (4 * Kt2Q2 + 1. + m_epsroot[0] - + tQ2 - * ((1. - 2 * m_xB) * (1. - 2 * m_xB - m_epsroot[0]) - * tQ2 - 2. + 4 * m_xB - + 2 * m_xB * m_epsroot[0])); - m_C[1][2][2] = - 16 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[2] - * (Kt2Q2 * (1. - 2 * m_xB) / m_epsroot[1] - - (1. - m_xB) - / (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - - m_xB * m_epsroot[0]) - - tpQ2 - * (2 * m_xB2 - m_epsilonBMJ[1] - 3 * m_xB - - m_xB * m_epsroot[0]) - / (4 * m_epsroot[0])); - m_C[1][0][3] = -8 * m_K[0] * C2 * (1. + m_epsroot[0] + m_epsilonBMJ[1] / 2.) - / m_epsroot[4] - * (1. - + (1. + m_epsroot[0] + m_epsilonBMJ[1] / (2 * m_xB)) - / (1. + m_epsroot[0] + m_epsilonBMJ[1] / 2) * m_xB - * tQ2); - m_C[1][1][3] = 8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. + m_epsroot[0]) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_C[1][2][3] = 16 * m_K[0] * C2 * tQ2 / m_epsroot[3] - * (1. - m_xB - + tpQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / (4 * m_epsroot[0])); - - // S-+ - m_S[1][0][1] = 4 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] / m_epsroot[3] - * (1. - m_epsroot[0] + 2 * m_epsilonBMJ[1] - - 2 * (1. + (m_epsroot[0] - 1.) / (2 * m_xB)) * m_xB * tQ2); - m_S[1][1][1] = 8 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * m_xB * tQ2 - / m_epsroot[3] * (1. + m_epsroot[0]) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_S[1][2][1] = 4 * m_K[0] * (2. - m_yBMJ[0]) * m_yBMJ[0] * tQ2 / m_epsroot[3] - * (3. + 2 * m_epsilonBMJ[1] + m_epsroot[0] - - 2 * m_xB * (1. + m_epsroot[0]) - - tQ2 * (1. - 2 * m_xB) * (1. - 2 * m_xB - m_epsroot[0])); - m_S[1][0][2] = 2 * m_yBMJ[0] * C2 * (1. + m_epsroot[0]) / m_epsroot[3] - * (m_epsilonBMJ[1] - 2 * (1. + m_epsilonBMJ[1] / (2 * m_xB)) * m_xB * tQ2) - * (1. + (m_epsroot[0] - 1. + 2 * m_xB) / (1. + m_epsroot[0]) * tQ2); - m_S[1][1][2] = 4 * m_yBMJ[0] * C2 * m_xB * tQ2 / m_epsroot[3] - * (1. + m_epsroot[0]) * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - tQ2 * (1. - 2 * m_xB - m_epsroot[0]) / (1. + m_epsroot[0])); - m_S[1][2][2] = 2 * m_yBMJ[0] * C2 * tQ2 / m_epsroot[3] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])) - * (1. + m_epsroot[0] - tQ2 * (1. - 2 * m_xB - m_epsroot[0])); - - /* LP and TP+ target - * Angulars coeffs dC and dS - */ - - // dC++ coefficients - m_dC[0][0][0] = -4 * m_yBMJ[0] * (1. + m_epsroot[0]) / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * Kt2Q2 - + C2 * (m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1] / 2.) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][1][0] = 4 * m_yBMJ[0] * (1. + m_epsroot[0]) * tQ2 / m_epsroot[4] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (1. + m_epsroot[0] - 2 * m_xB) - * Kt2Q2 / (1. + m_epsroot[0]) - + C2 * (2. - m_xB + 3 * m_epsilonBMJ[1] / 2.) - * (1. - + (4 * (1. - m_xB) * m_xB + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) - * tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][2][0] = 4 * m_yBMJ[0] * m_xB * tQ2 / m_epsroot[4] - * (2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * Kt2Q2 - + C2 * (1. + m_epsroot[0]) * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - + (m_epsroot[0] - 1. + 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2)); - m_dC[0][0][1] = - -4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) - * (1. + m_epsroot[0] - m_epsilonBMJ[1]) / m_epsroot[4] - * (1. - - (1. - - 2 * m_xB * (2. + m_epsroot[0]) - / (1. + m_epsroot[0] - m_epsilonBMJ[1])) - * tQ2); - m_dC[0][1][1] = 8 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) - * (m_epsroot[0] + 2 * (1. - m_xB)) * tQ2 / m_epsroot[3] - * (1. - - (1. + (1. - m_epsilonBMJ[1]) / m_epsroot[0] - - 2 * m_xB * (1. + 4 * (1. - m_xB) / m_epsroot[0])) - * tpQ2 / (2 * (m_epsroot[0] + 2 * (1. - m_xB)))); - m_dC[0][2][1] = 16 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) * m_xB * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_dC[0][0][2] = -4 * m_yBMJ[0] * C2 / m_epsroot[4] - * (m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1] / 2.) - * (1. - m_epsroot[0] - (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_dC[0][1][2] = -2 * m_yBMJ[0] * C2 / m_epsroot[4] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2 - * (1. - + (4 * (1. - m_xB) * m_xB + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * tQ2) - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - m_dC[0][2][2] = 4 * m_yBMJ[0] * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - m_epsroot[0] - (1. + m_epsroot[0] - 2 * m_xB) * tQ2); - - // dS++ coefficients - m_dS[0][0][1] = - 4 * m_K[0] * B2 * (1. + m_epsroot[0]) / m_epsroot[5] - * (2 * m_epsroot[0] - 1. - + (1. + m_epsroot[0] - 2 * m_xB) - / (1. + m_epsroot[0]) * tQ2) - + 8 * m_K[0] * C2 / m_epsroot[5] - * (3 * m_epsilonBMJ[1] / 2. - + (1. - m_epsroot[0] - m_epsilonBMJ[1] / 2. - - m_xB * (3. - m_epsroot[0])) * tQ2); - m_dS[0][1][1] = 8 * m_K[0] * B2 * tQ2 / m_epsroot[3] - * (1. - - (1. - 2 * m_xB) * (1. + m_epsroot[0] - 2 * m_xB) * tpQ2 - / (2 * m_epsroot[1])) - + 32 * m_K[0] * C2 / m_epsroot[5] - * (1. - (3. + m_epsroot[0]) * m_xB / 4. - + 5 * m_epsilonBMJ[1] / 8.) * tQ2 - * (1. - - (1. - m_epsroot[0] - m_epsilonBMJ[1] / 2. - - 2 * m_xB - * (3 * (1. - m_xB) - m_epsroot[0])) - * tQ2 - / (4. - m_xB * (m_epsroot[0] + 3.) - + 5 * m_epsilonBMJ[1] / 2.)); - m_dS[0][2][1] = -8 * m_K[0] * B2 * m_xB * tQ2 / m_epsroot[5] - * (m_epsroot[0] - 1. + (1. + m_epsroot[0] - 2 * m_xB) * tQ2) - + 8 * m_K[0] * C2 * (3. + m_epsroot[0]) * m_xB * tQ2 / m_epsroot[5] - * (1. - - (3. - m_epsroot[0] - 6 * m_xB) * tQ2 - / (3. + m_epsroot[0])); - m_dS[0][0][2] = -4 * (2. - m_yBMJ[0]) * C2 / m_epsroot[4] - * (4 * Kt2Q2 / m_epsroot[0] - + (1. + m_epsroot[0] - 2 * m_xB) - * (1. + m_epsroot[0] + m_xB * tQ2) * tpQ2); - m_dS[0][1][2] = 4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[4] - * (4 * (1. - 2 * m_xB) * Kt2Q2 / m_epsroot[0] - - (3. - m_epsroot[0] - 2 * m_xB + m_epsilonBMJ[1] / m_xB) - * m_xB * tpQ2); - m_dS[0][2][2] = 4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[5] - * (4 * Kt2Q2 - - (1. + m_epsroot[0] - 2 * m_xB) - * (1. - (1. - 2 * m_xB) * tQ2) * tpQ2); - m_dS[0][0][3] = -4 * m_K[0] * C2 / m_epsroot[5] - * (1. + m_epsroot[0] - 2 * m_xB) / (1. + m_epsroot[0]) - * m_epsilonBMJ[1] * tpQ2; - m_dS[0][1][3] = 4 * m_K[0] * C2 / m_epsroot[5] - * (4 * (1. - m_xB) * m_xB + m_epsilonBMJ[1]) * tQ2 * tpQ2; - m_dS[0][2][3] = -8 * m_K[0] * C2 / m_epsroot[5] - * (1. + m_epsroot[0] - 2 * m_xB) * m_xB * tQ2 * tpQ2; - - // dC0+ - m_dC[2][0][0] = 8 * sqrt(2.) * m_K[0] * (1. - m_xB) * m_yBMJ[0] * C1 * tQ2 - / m_epsroot[3]; - m_dC[2][1][0] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * tQ2 / m_epsroot[3] - * (m_xB - tQ2 * (1. - 2 * m_xB)); - m_dC[2][2][0] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. + tQ2); - m_dC[2][0][1] = -8 * sqrt(2.) * m_yBMJ[0] * (2. - m_yBMJ[0]) * C1 * Kt2Q2 - / m_epsroot[3]; - m_dC[2][1][1] = 8 * sqrt(2.) * m_yBMJ[0] * (2. - m_yBMJ[0]) * C1 * tQ2 * Kt2Q2 - / m_epsroot[3]; - m_dC[2][2][1] = 0.; - m_dC[2][0][2] = -8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * (1. + m_xB * tQ2) - / m_epsroot[3]; - m_dC[2][1][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * (1. - m_xB) * C1 * tQ2 - / m_epsroot[3]; - m_dC[2][2][2] = 8 * sqrt(2.) * m_K[0] * m_yBMJ[0] * C1 * m_xB * tQ2 - / m_epsroot[3] * (1. + tQ2); - - // dS0+ - m_dS[2][0][1] = 8 * sqrt(2.) * C1 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. + tQ2) * C2 - * (2 * m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1])); - m_dS[2][1][1] = -8 * sqrt(2.) * C1 * tQ2 / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - + (1. + tQ2) * C2 - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 - * (4 * m_xB * (1. - m_xB) - + m_epsilonBMJ[1]))); - m_dS[2][2][1] = -16 * sqrt(2.) * C1 * C2 * m_xB * tQ2 / m_epsroot[4] - * (1. + tQ2) * (1. - (1. - 2 * m_xB) * tQ2); - m_dS[2][0][2] = 8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 / m_epsroot[4] - * (1. + m_xB * tQ2); - m_dS[2][1][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * (1. - m_xB) * C1 - * tQ2 / m_epsroot[4]; - m_dS[2][2][2] = -8 * sqrt(2.) * m_K[0] * (2. - m_yBMJ[0]) * C1 * m_xB * tQ2 - * (1. + tQ2) / m_epsroot[4]; - - // dC-+ - m_dC[1][0][0] = 4 * m_yBMJ[0] / m_epsroot[4] - * (Kt2Q2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) * (1. - m_epsroot[0]) - + C2 / 2. * (2 * m_xB * tQ2 - (1. - tQ2) * m_epsilonBMJ[1]) - * (1. - m_epsroot[0] - - tQ2 * (1. - 2 * m_xB + m_epsroot[0]))); - m_dC[1][1][0] = 2 * m_yBMJ[0] * tQ2 / m_epsroot[4] - * ((4. - 2 * m_xB + 3 * m_epsilonBMJ[1]) * C2 - * (1. - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / (4. - 2 * m_xB + 3 * m_epsilonBMJ[1])) - * (m_epsroot[0] - 1. + tQ2 * (1. - 2 * m_xB + m_epsroot[0])) - + 2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (m_epsroot[0] - 1. + 2 * m_xB) * Kt2Q2); - m_dC[1][2][0] = 4 * m_xB * m_yBMJ[0] * tQ2 / m_epsroot[4] - * (2 * (2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * ((1. - m_xB) * tQ2 * (1. + m_xB * tQ2) - + (1. + tQ2) * (1. + tQ2) * m_epsilonBMJ[1] / 4.) - - C2 * (1. - (1. - 2 * m_xB) * tQ2) - * (1. - m_epsroot[0] - - tQ2 * (1. + m_epsroot[0] - 2 * m_xB))); - m_dC[1][0][1] = 4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) / m_epsroot[4] - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - 2 * m_xB * (2. - m_epsroot[0]))); - m_dC[1][1][1] = - -4 * m_K[0] * m_yBMJ[0] * (2. - m_yBMJ[0]) * tQ2 / m_epsroot[4] - * (5. - 4 * m_xB + 3 * m_epsilonBMJ[1] - m_epsroot[0] - - tQ2 - * (1. - m_epsilonBMJ[1] - m_epsroot[0] - - 2 * m_xB - * (4. - 4 * m_xB - - m_epsroot[0]))); - m_dC[1][2][1] = -16 * m_K[0] * m_xB * m_yBMJ[0] * (2. - m_yBMJ[0]) * tQ2 - / m_epsroot[4] * (1. - (1. - 2 * m_xB) * tQ2); - m_dC[1][0][2] = -2 * m_yBMJ[0] * C2 / m_epsroot[4] - * (m_epsilonBMJ[1] * (1. + m_epsroot[0]) - - 2 * tQ2 - * ((1. - m_xB) * m_epsilonBMJ[1] - + m_xB * (1. + m_epsroot[0])) - + tQ2 * tQ2 * (2 * m_xB + m_epsilonBMJ[1]) - * (1. - 2 * m_xB - m_epsroot[0])); - m_dC[1][1][2] = -2 * m_yBMJ[0] * C2 * tQ2 / m_epsroot[4] - * (4. - 2 * m_xB + 3 * m_epsilonBMJ[1] - + tQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1])) - * (1. + m_epsroot[0] - tQ2 * (1. - m_epsroot[0] - 2 * m_xB)); - m_dC[1][2][2] = -4 * m_xB * m_yBMJ[0] * C2 * tQ2 / m_epsroot[4] - * (1. - (1. - 2 * m_xB) * tQ2) - * (1. + m_epsroot[0] - tQ2 * (1. - m_epsroot[0] - 2 * m_xB)); - - // dS-+ - m_dS[1][0][1] = - -4 * m_K[0] / m_epsroot[5] - * ((2. - m_yBMJ[0]) * (2. - m_yBMJ[0]) - * (1 + 2 * m_epsilonBMJ[1] - m_epsroot[0] - + tQ2 * (1. - 2 * m_xB - m_epsroot[0])) - - C2 - * (2. + m_epsilonBMJ[1] - 2 * m_epsroot[0] - + tQ2 - * (m_epsilonBMJ[1] - - 4 * m_epsroot[0] - + 2 * m_xB - * (1. - + m_epsroot[0])))); - m_dS[1][1][1] = - -4 * m_K[0] * tQ2 / m_epsroot[5] - * (B2 - * (3. + 2 * m_epsilonBMJ[1] + m_epsroot[0] - - 2 * m_xB * (1. + m_epsroot[0]) - - tQ2 * (1. - 2 * m_xB) - * (1. - 2 * m_xB - m_epsroot[0])) - + C2 - * (8. + 5 * m_epsilonBMJ[1] - - 2 * m_xB * (3. - m_epsroot[0]) - - tQ2 - * (2. - m_epsilonBMJ[1] - + 2 * m_epsroot[0] - - 12 * m_xB - * (1. - m_xB) - - 4 * m_xB - * m_epsroot[0]))); - m_dS[1][2][1] = - -8 * m_K[0] * B2 * (1. + m_epsroot[0]) * m_xB * tQ2 / m_epsroot[5] - * (1. - - tQ2 * (1. - m_epsroot[0] - 2 * m_xB) - / (1. + m_epsroot[0])) - - 8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[5] - * (3. - m_epsroot[0] - - tQ2 * (3. + m_epsroot[0] - 6 * m_xB)); - m_dS[1][0][2] = -4 * (2. - m_yBMJ[0]) * C2 / m_epsroot[5] - * (tQ2 * tQ2 - * (m_epsilonBMJ[1] - 2 * m_xB2 * (2. + m_epsroot[0]) - + m_xB * (3. - m_epsilonBMJ[1] + m_epsroot[0])) - + m_epsilonBMJ[1] * (1. + m_epsroot[0]) - + tQ2 - * (2. + 2 * m_epsroot[0] - + m_epsilonBMJ[1] * m_epsroot[0] - - m_xB - * (3. - m_epsilonBMJ[1] - + 3 * m_epsroot[0]))); - m_dS[1][1][2] = -4 * (2. - m_yBMJ[0]) * C2 * tQ2 / m_epsroot[4] - * ((2. - m_xB) * (1. + m_epsroot[0]) + m_epsilonBMJ[1] - + 4 * Kt2Q2 * (1. - 2 * m_xB) / m_epsroot[0] - + tQ2 - * (m_epsilonBMJ[1] - + m_xB * (3. - 2 * m_xB + m_epsroot[0]))); - m_dS[1][2][2] = -4 * (2. - m_yBMJ[0]) * C2 * m_xB * tQ2 / m_epsroot[5] - * (1. + 4 * Kt2Q2 + m_epsroot[0] - - 2 * tQ2 * (1. - 2 * m_xB - m_xB * m_epsroot[0]) - + tQ2 * tQ2 * (1. - 2 * m_xB) - * (1. - 2 * m_xB - m_epsroot[0])); - m_dS[1][0][3] = 4 * m_K[0] * C2 / m_epsroot[5] - * (2. + m_epsilonBMJ[1] + 2 * m_epsroot[0] - + tQ2 * (m_epsilonBMJ[1] + 2 * m_xB * (1. + m_epsroot[0]))); - m_dS[1][1][3] = -4 * m_K[0] * C2 * tQ2 / m_epsroot[4] - * (4. - 4 * m_xB - + tpQ2 * (4 * m_xB * (1. - m_xB) + m_epsilonBMJ[1]) - / m_epsroot[0]); - m_dS[1][2][3] = -8 * m_K[0] * C2 * m_xB * tQ2 / m_epsroot[5] - * (1. + m_epsroot[0] - tQ2 * (1. - 2 * m_xB - m_epsroot[0])); -} - -void BMJ2012INTModel::computeFourierCoeffsInterf() { -// Unpolarized Fourier coeffs - for (unsigned n = 0; n < 4; n++) { - m_cI[0][n] = C_I(0, n, 1, 1).real() + C_I(0, n, -1, 1).real() - + C_I(0, n, 0, 1).real(); - } - for (unsigned n = 1; n < 3; n++) { - m_sI[0][n] = m_lambda - * (S_I(0, n, 1, 1).imag() + S_I(0, n, -1, 1).imag() - + S_I(0, n, 0, 1).imag()); - } - -// LP Fourier coeffs - for (unsigned n = 0; n < 3; n++) { - m_cI[1][n] = m_lambda - * (C_I(1, n, 1, 1).real() + C_I(1, n, -1, 1).real() - + C_I(1, n, 0, 1).real()); - } - for (unsigned n = 1; n < 4; n++) { - m_sI[1][n] = (S_I(1, n, 1, 1).imag() + S_I(1, n, -1, 1).imag() - + S_I(1, n, 0, 1).imag()); - } - -// TP Fourier coeffs - for (unsigned n = 0; n < 4; n++) { - m_cI[2][n] = m_M[0] / m_Kt[0] - * ((n != 3) * m_lambda * cos(m_phi2BMK) - * (C_I(2, n, 1, 1).real() + C_I(2, n, -1, 1).real() - + C_I(2, n, 0, 1).real()) - - sin(m_phi2BMK) - * (C_I(3, n, 1, 1).imag() - + C_I(3, n, -1, 1).imag() - + C_I(3, n, 0, 1).imag())); - } - for (unsigned n = 1; n < 4; n++) { - m_sI[2][n] = m_M[0] / m_Kt[0] - * (cos(m_phi2BMK) - * (S_I(2, n, 1, 1).imag() + S_I(2, n, -1, 1).imag() - + S_I(2, n, 0, 1).imag()) - + (n != 3) * m_lambda * sin(m_phi2BMK) - * (S_I(3, n, 1, 1).real() - + S_I(3, n, -1, 1).real() - + S_I(3, n, 0, 1).real())); - } - -} - -std::complex BMJ2012INTModel::CFF(GPDType::Type F, int a, int b) { - unsigned int j; - - if (a == -1) { - a = 1; - b = -1 * b; - } - - if (a == 1 and b == 1) { - j = 0; - } else if (a == 1 and b == -1) { - j = 1; - } else if (a == 0 and abs(b) == 1) { - j = 2; - } else { - return 0.; - } - - if (F == GPDType::H) { - return m_CFF[0][j]; - } else if (F == GPDType::E) { - return m_CFF[1][j]; - } else if (F == GPDType::Ht) { - return m_CFF[2][j]; - } else if (F == GPDType::Et) { - return m_CFF[3][j]; - } else { - return 0.; - } - -} - -std::complex BMJ2012INTModel::C_VCS(unsigned int S, int a1, int b1, int a2, - int b2) { - std::complex H1(0., 0.), Ht1(0., 0.), E1(0., 0.), Et1(0., 0.); - std::complex H2(0., 0.), Ht2(0., 0.), E2(0., 0.), Et2(0., 0.); - H1 = CFF(GPDType::H, a1, b1); - Ht1 = CFF(GPDType::Ht, a1, b1); - E1 = CFF(GPDType::E, a1, b1); - Et1 = CFF(GPDType::Et, a1, b1); - H2 = CFF(GPDType::H, a2, b2); - Ht2 = CFF(GPDType::Ht, a2, b2); - E2 = CFF(GPDType::E, a2, b2); - Et2 = CFF(GPDType::Et, a2, b2); - - double tQ2 = m_t / m_Q2; - if (S == 0) { - return 4. * (1 - m_xB) * (1 + m_xB * tQ2) / m_xBtQ2[1] - * (H1 * conj(H2) + Ht1 * conj(Ht2)) - + (2 + tQ2) * m_epsilonBMJ[1] / m_xBtQ2[1] * Ht1 * conj(Ht2) - - m_t / (4 * m_M[1]) * E1 * conj(E2) - - m_xB2 / m_xBtQ2[1] - * (pow(1 + tQ2, 2) - * (H1 * conj(E2) + E1 * conj(H2) + E1 * conj(E2)) - + Ht1 * conj(Et2) + Et1 * conj(Ht2) - + m_t / (4 * m_M[1]) * Et1 * conj(Et2)); - } else if (S == 1) { - return (4 * (1 - m_xB) * (1 + m_xB * tQ2) - + 2 * (3. / 2. - m_xB + tQ2 / 2.) * m_epsilonBMJ[1]) / m_xBtQ2[1] - * (H1 * conj(Ht2) + Ht1 * conj(H2)) - - m_xB2 * (1. - (1 - 2 * m_xB) * tQ2) / m_xBtQ2[1] - * (H1 * conj(Et2) + Et1 * conj(H2) + Ht1 * conj(E2) - + E1 * conj(Ht2)) - - (4 * m_xB * (1. - m_xB) * (1 + m_xB * tQ2) * tQ2 - + m_xB * (1 + tQ2) * (1 + tQ2) * m_epsilonBMJ[1]) - / (2 * m_xBtQ2[1]) * (Ht1 * conj(E2) + E1 * conj(Ht2)) - - m_xB / m_xBtQ2[0] - * (m_xB2 * (1 + tQ2) * (1 + tQ2) / (2 * m_xBtQ2[0]) - + m_t / (4 * m_M[1])) - * (E1 * conj(Et2) + Et1 * conj(E2)); - } else if (S == 2) { - return 2. / m_xBtQ2[1] - * (m_xB * (H1 * conj(Et2) + Et1 * conj(H2)) - + 4 * m_xB * (1 - 2 * m_xB) * m_M[1] / m_Q2 - * (H1 * conj(Ht2) + Ht1 * conj(H2)) - - (m_xBtQ2[0] + (3. + tQ2) * m_epsilonBMJ[1] / 2.) - * (Ht1 * conj(E2) + E1 * conj(Ht2)) - + m_xB2 / 2. * (1 - tQ2) - * (E1 * conj(Et2) + Et1 * conj(E2))); - } else if (S == 3) { - return 2. / m_xBtQ2[0] * (H1 * conj(E2) - E1 * conj(H2)) - - 2 * m_xB / m_xBtQ2[1] * (Ht1 * conj(Et2) - Et1 * conj(Ht2)); - } else { - return 0.; - } -} - -std::complex BMJ2012INTModel::C_VCS(unsigned int S, int a1, int b1, int a2, - int b2, int a3, int b3) { - int signe; - if (S == 0 or S == 3) { - signe = +1; - } else if (S == 1 or S == 2) { - signe = -1; - } else { - return 0.; - } - - return C_VCS(S, a1, b1, a2, b2) + signe * 1. * C_VCS(S, a1, b1, a3, b3); -} - -std::complex BMJ2012INTModel::C_VCS(unsigned int S, int a1, int b1, int a2, - int b2, int a3, int b3, int a4, int b4) { - int signe; - if (S == 0 or S == 3) { - signe = +1; - } else if (S == 1 or S == 2) { - signe = -1; - } else { - return 0.; - } - - return C_VCS(S, a1, b1, a2, b2) + signe * 1. * C_VCS(S, a3, b3, a4, b4); - -} - -std::complex BMJ2012INTModel::C_I(unsigned int S, int a, int b, - const std::string& VA) { - std::complex H(0., 0.), Ht(0., 0.), E(0., 0.), Et(0., 0.); - H = CFF(GPDType::H, a, b); - Ht = CFF(GPDType::Ht, a, b); - E = CFF(GPDType::E, a, b); - Et = CFF(GPDType::Et, a, b); - - double F1PlusF2 = m_F1 + m_F2; - double xBF1PlusF2 = m_xB * F1PlusF2 / m_xBtQ2[0]; - - if (S == 0) { - if (VA == "V") { - return xBF1PlusF2 * (H + E); - } else if (VA == "A") { - return xBF1PlusF2 * Ht; - } else { - return m_F1 * H - m_t / (4 * m_M[1]) * m_F2 * E + xBF1PlusF2 * Ht; - } - } else if (S == 1) { - if (VA == "V") { - return xBF1PlusF2 * (H + m_xB / 2. * (1 - m_t / m_Q2) * E); - } else if (VA == "A") { - return xBF1PlusF2 - * (Ht + 2 * m_xB * m_M[1] / m_Q2 * Ht + m_xB / 2. * Et); - } else { - return 2. / m_xBtQ2[0] * m_F1 - * (((1 - m_xB) * (1 + m_xB * m_t / m_Q2) + m_xB / 2. - + m_xB2 * m_M[1] / m_Q2 * (3 + m_t / m_Q2)) * Ht - + m_xB / 2. - * (m_t / (4 * m_M[1]) -