40 #include <boost/assign/list_of.hpp>
45 #include "reportingUtils.hpp"
50 using namespace boost::assign;
59 ampIntegralMatrix::setDebug(
true);
67 vector<string> binAmpFileNames = list_of
68 (
"1-0-+0+f0980_00_pi-.amp" )
69 (
"1-0-+0+rho770_11_pi-.amp" )
70 (
"1-0-+0+sigma_00_pi-.amp" )
71 (
"1-1++0+f21270_12_pi-.amp" )
72 (
"1-1++0+rho770_01_pi-.amp" )
73 (
"1-1-+0-rho770_11_pi-.amp" )
74 (
"1-1++0+rho770_21_pi-.amp" )
75 (
"1-1++0+sigma_10_pi-.amp" )
76 (
"1-1++1+f21270_12_pi-.amp" )
77 (
"1-1++1-rho770_01_pi-.amp" )
78 (
"1-1++1+rho770_01_pi-.amp" )
79 (
"1-1-+1-rho770_11_pi-.amp" )
80 (
"1-1-+1+rho770_11_pi-.amp" )
81 (
"1-1++1+rho770_21_pi-.amp" )
82 (
"1-1++1+sigma_10_pi-.amp" )
83 (
"1-2-+0+f21270_02_pi-.amp" )
84 (
"1-2++0-f21270_12_pi-.amp" )
85 (
"1-2-+0+f21270_22_pi-.amp" )
86 (
"1-2-+0+rho770_11_pi-.amp" )
87 (
"1-2++0-rho770_21_pi-.amp" )
88 (
"1-2-+0+rho770_31_pi-.amp" )
89 (
"1-2-+0+sigma_20_pi-.amp" )
90 (
"1-2-+1-f21270_02_pi-.amp" )
91 (
"1-2-+1+f21270_02_pi-.amp" )
92 (
"1-2++1-f21270_12_pi-.amp" )
93 (
"1-2++1+f21270_12_pi-.amp" )
94 (
"1-2-+1+f21270_22_pi-.amp" )
95 (
"1-2-+1+rho770_11_pi-.amp" )
96 (
"1-2++1+rho770_21_pi-.amp" )
97 (
"1-2-+1+rho770_31_pi-.amp" )
98 (
"1-2-+1+sigma_20_pi-.amp" )
99 (
"1-3++0+f21270_12_pi-.amp" )
100 (
"1-3++0+rho31690_03_pi-.amp")
101 (
"1-3++0+rho770_21_pi-.amp" )
102 (
"1-3++1+f21270_12_pi-.amp" )
103 (
"1-3++1+rho31690_03_pi-.amp")
104 (
"1-3++1+rho770_21_pi-.amp" )
105 (
"1-4-+0+rho770_31_pi-.amp" )
106 (
"1-4++1+f21270_32_pi-.amp" )
107 (
"1-4-+1+rho770_31_pi-.amp" )
108 (
"1-4++1+rho770_41_pi-.amp" );
109 for (
size_t i = 0;
i < binAmpFileNames.size(); ++
i)
110 binAmpFileNames[
i] =
"/data/compass/hadronData/massBins/2004/Q3PiData/r481.trunk/1260.1300/PSPAMPS/SYM/" + binAmpFileNames[
i];
111 vector<string> rootAmpFileNames;
113 integral.
integrate(binAmpFileNames, rootAmpFileNames);
125 #ifdef USE_STD_COMPLEX_TREE_LEAFS
128 gROOT->ProcessLine(
"#include <complex>");
130 TFile* outFile = TFile::Open(
"testIntegral.root",
"RECREATE");
131 printInfo <<
"writing integral to 'testIntegral.root'" << endl;
132 integral.Write(
"integral");
136 TFile* inFile = TFile::Open(
"testIntegral.root",
"READ");
138 printInfo <<
"reading integral from 'testIntegral.root'" << endl;
139 inFile->GetObject(
"integral", integral3);
141 printErr <<
"cannot find integral 'integral'" << endl;
143 if (*integral3 == integral)
144 printSucc <<
"ROOT file integral is identical" << endl;
146 printErr <<
"ROOT file intergral differs" << endl;
151 #endif // USE_STD_COMPLEX_TREE_LEAFS
158 const unsigned int nmbInt =
sizeof(integrals) /
sizeof(integrals[0]);
160 for (
unsigned int i = 0;
i < nmbInt; ++
i)
161 integrals[
i].readAscii(
"testIntegral.int");
162 integrals[0] = integral + integral;
163 integrals[1] = integrals[0] - integral;
164 integrals[2] = 2 * integral - integral;
165 integrals[3] = integral * 0.1 + integral * 0.9;
166 integrals[4] = integral / 2 + integral / 2;
167 integrals[5] = (integral + 2 * integral) / 3;
169 for (
unsigned int i = 1;
i < nmbInt; ++
i)
170 if (integrals[
i] == integral)
171 printSucc <<
"integrals[" <<
i <<
"] is identical" << endl;
173 printErr <<
"integrals[" <<
i <<
"] differs" << endl;
181 const unsigned int nmbEvents = integral.
nmbEvents();