10 const char *name,
const char *title,
25 aPhi(
"aPhi",
"aPhi", this, (RooAbsReal&)*(_accepParams.aPhi)),
26 bPhi(
"bPhi",
"bPhi", this, (RooAbsReal&)*(_accepParams.bPhi)),
27 cPhi(
"cPhi",
"cPhi", this, (RooAbsReal&)*(_accepParams.cPhi)),
28 dPhi(
"dPhi",
"dPhi", this, (RooAbsReal&)*(_accepParams.dPhi)),
29 ePhi(
"ePhi",
"ePhi", this, (RooAbsReal&)*(_accepParams.ePhi)),
30 aPhi1(
"aPhi1",
"aPhi1", this, (RooAbsReal&)*(_accepParams.aPhi1)),
31 bPhi1(
"bPhi1",
"bPhi1", this, (RooAbsReal&)*(_accepParams.bPhi1)),
32 cPhi1(
"cPhi1",
"cPhi1", this, (RooAbsReal&)*(_accepParams.cPhi1)),
33 dPhi1(
"dPhi1",
"dPhi1", this, (RooAbsReal&)*(_accepParams.dPhi1)),
34 ePhi1(
"ePhi1",
"ePhi1", this, (RooAbsReal&)*(_accepParams.ePhi1)),
35 aH1(
"aH1",
"aH1", this, (RooAbsReal&)*(_accepParams.aH1)),
36 bH1(
"bH1",
"bH1", this, (RooAbsReal&)*(_accepParams.bH1)),
37 cH1(
"cH1",
"cH1", this, (RooAbsReal&)*(_accepParams.cH1)),
38 dH1(
"dH1",
"dH1", this, (RooAbsReal&)*(_accepParams.dH1)),
39 eH1(
"eH1",
"eH1", this, (RooAbsReal&)*(_accepParams.eH1)),
40 aH2(
"aH2",
"aH2", this, (RooAbsReal&)*(_accepParams.aH2)),
41 bH2(
"bH2",
"bH2", this, (RooAbsReal&)*(_accepParams.bH2)),
42 cH2(
"cH2",
"cH2", this, (RooAbsReal&)*(_accepParams.cH2)),
43 dH2(
"dH2",
"dH2", this, (RooAbsReal&)*(_accepParams.dH2)),
44 eH2(
"eH2",
"eH2", this, (RooAbsReal&)*(_accepParams.eH2)),
45 aHs(
"aHs",
"aHs", this, (RooAbsReal&)*(_accepParams.aHs)),
46 bHs(
"bHs",
"bHs", this, (RooAbsReal&)*(_accepParams.bHs)),
47 cHs(
"cHs",
"cHs", this, (RooAbsReal&)*(_accepParams.cHs)),
48 dHs(
"dHs",
"dHs", this, (RooAbsReal&)*(_accepParams.dHs)),
49 eHs(
"eHs",
"eHs", this, (RooAbsReal&)*(_accepParams.eHs)),
50 aM1(
"aM1",
"aM1", this, (RooAbsReal&)*(_accepParams.aM1)),
51 bM1(
"bM1",
"bM1", this, (RooAbsReal&)*(_accepParams.bM1)),
52 cM1(
"cM1",
"cM1", this, (RooAbsReal&)*(_accepParams.cM1)),
53 dM1(
"dM1",
"dM1", this, (RooAbsReal&)*(_accepParams.dM1)),
54 aM2(
"aM2",
"aM2", this, (RooAbsReal&)*(_accepParams.aM2)),
55 bM2(
"bM2",
"bM2", this, (RooAbsReal&)*(_accepParams.bM2)),
56 cM2(
"cM2",
"cM2", this, (RooAbsReal&)*(_accepParams.cM2)),
57 dM2(
"dM2",
"dM2", this, (RooAbsReal&)*(_accepParams.dM2)),
65 aPhi(
"aPhi", this, other.aPhi),
66 bPhi(
"bPhi", this, other.bPhi),
67 cPhi(
"cPhi", this, other.cPhi),
68 dPhi(
"dPhi", this, other.dPhi),
69 ePhi(
"ePhi", this, other.ePhi),
70 aPhi1(
"aPhi1", this, other.aPhi1),
71 bPhi1(
"bPhi1", this, other.bPhi1),
72 cPhi1(
"cPhi1", this, other.cPhi1),
73 dPhi1(
"dPhi1", this, other.dPhi1),
74 ePhi1(
"ePhi1", this, other.ePhi1),
75 aH1(
"aH1", this, other.aH1),
76 bH1(
"bH1", this, other.bH1),
77 cH1(
"cH1", this, other.cH1),
78 dH1(
"dH1", this, other.dH1),
79 eH1(
"eH1", this, other.eH1),
80 aH2(
"aH2", this, other.aH2),
81 bH2(
"bH2", this, other.bH2),
82 cH2(
"cH2", this, other.cH2),
83 dH2(
"dH2", this, other.dH2),
84 eH2(
"eH2", this, other.eH2),
85 aHs(
"aHs", this, other.aHs),
86 bHs(
"bHs", this, other.bHs),
87 cHs(
"cHs", this, other.cHs),
88 dHs(
"dHs", this, other.dHs),
89 eHs(
"eHs", this, other.eHs),
90 aM1(
"aM1", this, other.aM1),
91 bM1(
"bM1", this, other.bM1),
92 cM1(
"cM1", this, other.cM1),
93 dM1(
"dM1", this, other.dM1),
94 aM2(
"aM2", this, other.aM2),
95 bM2(
"bM2", this, other.bM2),
96 cM2(
"cM2", this, other.cM2),
97 dM2(
"dM2", this, other.dM2),
98 ZZ4fOrdering(other.ZZ4fOrdering)
102 Double_t& A00term, Double_t& Appterm, Double_t& Ammterm,
103 Double_t& A00ppterm, Double_t& A00mmterm, Double_t& Appmmterm,
105 int VGammaVpmode1,
int VGammaVpmode2
107 const Double_t Pi = TMath::Pi();
109 Double_t R1Val, R2Val;
111 if (VGammaVpmode1==2 || VGammaVpmode2==2){
112 Double_t RVp1Val=0, RVp2Val=0;
114 if (VGammaVpmode1==2) R1Val=RVp1Val;
115 if (VGammaVpmode2==2) R1Val=RVp2Val;
118 Double_t A00Re, A00Im, AppRe, AppIm, AmmRe, AmmIm;
119 calculateAmplitudes(A00Re, A00Im, AppRe, AppIm, AmmRe, AmmIm, VGammaVpmode1, VGammaVpmode2);
121 Double_t A00 = A00Im*A00Im + A00Re*A00Re;
122 Double_t App = AppIm*AppIm + AppRe*AppRe;
123 Double_t Amm = AmmIm*AmmIm + AmmRe*AmmRe;
125 Double_t phi00=atan2(A00Im, A00Re);
126 Double_t phipp=atan2(AppIm, AppRe)-phi00;
127 Double_t phimm=atan2(AmmIm, AmmRe)-phi00;
129 Double_t A00_prefactor = 1.;
130 Double_t Amm_pp_prefactor = 1.;
131 Double_t A00mm_prefactor = 2.;
132 Double_t A00pp_prefactor = 2.;
133 Double_t Ammpp_prefactor = 2.;
135 A00term = A00*A00_prefactor;
136 Appterm = App*Amm_pp_prefactor;
137 Ammterm = Amm*Amm_pp_prefactor;
138 A00ppterm = sqrt(A00*App)*A00pp_prefactor;
139 A00mmterm = sqrt(A00*Amm)*A00mm_prefactor;
140 Appmmterm = sqrt(Amm*App)*Ammpp_prefactor;
143 Double_t A00_h1int = 4.*
aH1/3. + 4.*
bH1/15. + 4.*
cH1/35. + 4.*
dH1/63. + 4.*
eH1/99.;
144 Double_t Ammpp_h1int = 8.*
aH1/3. + 16.*
bH1/15. + 24.*
cH1/35. + 32.*
dH1/63. + 40.*
eH1/99.;
145 Double_t A0m_h1int = (128.*
aH1 + 32.*
bH1 + 16.*
cH1 + 10.*
dH1 + 7.*
eH1)*Pi/256.*R1Val;
146 Double_t A0p_h1int = (128.*
aH1 + 32.*
bH1 + 16.*
cH1 + 10.*
dH1 + 7.*
eH1)*Pi/256.*R1Val;
147 Double_t Amp_h1int = 4.*
aH1/3. + 4.*
bH1/15. + 4.*
cH1/35. + 4.*
dH1/63. + 4.*
eH1/99.;
149 if (A00term!=0) A00term *= A00_h1int;
150 if (Appterm!=0) Appterm *= Ammpp_h1int;
151 if (Ammterm!=0) Ammterm *= Ammpp_h1int;
152 if (A00ppterm!=0) A00ppterm *= A0p_h1int;
153 if (A00mmterm!=0) A00mmterm *= A0m_h1int;
154 if (Appmmterm!=0) Appmmterm *= Amp_h1int;
159 if (A00term!=0) A00term *= (1. - pow(
h1, 2))*common_fac;
160 if (Appterm!=0) Appterm *= (1. + pow(
h1, 2) - 2.*
h1*R1Val)*common_fac;
161 if (Ammterm!=0) Ammterm *= (1. + pow(
h1, 2) + 2.*
h1*R1Val)*common_fac;
162 if (A00ppterm!=0) A00ppterm *= sqrt(1. - pow(
h1, 2))*(R1Val -
h1)*common_fac;
163 if (A00mmterm!=0) A00mmterm *= sqrt(1. - pow(
h1, 2))*(R1Val +
h1)*common_fac;
164 if (Appmmterm!=0) Appmmterm *= (1. - pow(
h1, 2))*common_fac;
168 Double_t A00_h2int = 4.*
aH2/3. + 4.*
bH2/15. + 4.*
cH2/35. + 4.*
dH2/63. + 4.*
eH2/99.;
169 Double_t Ammpp_h2int = 8.*
aH2/3. + 16.*
bH2/15. + 24.*
cH2/35. + 32.*
dH2/63. + 40.*
eH2/99.;
170 Double_t A0m_h2int = (128.*
aH2 + 32.*
bH2 + 16.*
cH2 + 10.*
dH2 + 7.*
eH2)*Pi/256.*R2Val;
171 Double_t A0p_h2int = (128.*
aH2 + 32.*
bH2 + 16.*
cH2 + 10.*
dH2 + 7.*
eH2)*Pi/256.*R2Val;
172 Double_t Amp_h2int = 4.*
aH2/3. + 4.*
bH2/15. + 4.*
cH2/35. + 4.*
dH2/63. + 4.*
eH2/99.;
174 if (A00term!=0) A00term *= A00_h2int;
175 if (Appterm!=0) Appterm *= Ammpp_h2int;
176 if (Ammterm!=0) Ammterm *= Ammpp_h2int;
177 if (A00ppterm!=0) A00ppterm *= A0p_h2int;
178 if (A00mmterm!=0) A00mmterm *= A0m_h2int;
179 if (Appmmterm!=0) Appmmterm *= Amp_h2int;
184 if (A00term!=0) A00term *= (1. - pow(
h2, 2))*common_fac;
185 if (Appterm!=0) Appterm *= (1. + pow(
h2, 2) - 2.*
h2*R2Val)*common_fac;
186 if (Ammterm!=0) Ammterm *= (1. + pow(
h2, 2) + 2.*
h2*R2Val)*common_fac;
187 if (A00ppterm!=0) A00ppterm *= sqrt(1. - pow(
h2, 2))*(R2Val -
h2)*common_fac;
188 if (A00mmterm!=0) A00mmterm *= sqrt(1. - pow(
h2, 2))*(R2Val +
h2)*common_fac;
189 if (Appmmterm!=0) Appmmterm *= (1. - pow(
h2, 2))*common_fac;
193 Double_t A_hsint = 2.*
aHs + 2.*
bHs/3. + 2.*
cHs/5. + 2.*
dHs/7. + 2.*
eHs/9.;
195 if (A00term!=0) A00term *= A_hsint;
196 if (Appterm!=0) Appterm *= A_hsint;
197 if (Ammterm!=0) Ammterm *= A_hsint;
198 if (A00ppterm!=0) A00ppterm *= A_hsint;
199 if (A00mmterm!=0) A00mmterm *= A_hsint;
200 if (Appmmterm!=0) Appmmterm *= A_hsint;
205 if (A00term!=0) A00term *= common_fac;
206 if (Appterm!=0) Appterm *= common_fac;
207 if (Ammterm!=0) Ammterm *= common_fac;
208 if (A00ppterm!=0) A00ppterm *= common_fac;
209 if (A00mmterm!=0) A00mmterm *= common_fac;
210 if (Appmmterm!=0) Appmmterm *= common_fac;
214 Double_t A00mmpp_phiint = 2.*
aPhi*Pi;
215 Double_t A0p_phiint =
bPhi*Pi*cos(phipp);
216 Double_t A0m_phiint =
bPhi*Pi*cos(phimm);
217 Double_t Amp_phiint =
cPhi*Pi*cos(phimm - phipp);
219 if (A00term!=0) A00term *= A00mmpp_phiint;
220 if (Appterm!=0) Appterm *= A00mmpp_phiint;
221 if (Ammterm!=0) Ammterm *= A00mmpp_phiint;
222 if (A00ppterm!=0) A00ppterm *= A0p_phiint;
223 if (A00mmterm!=0) A00mmterm *= A0m_phiint;
224 if (Appmmterm!=0) Appmmterm *= Amp_phiint;
229 if (A00term!=0) A00term *= common_fac;
230 if (Appterm!=0) Appterm *= common_fac;
231 if (Ammterm!=0) Ammterm *= common_fac;
232 if (A00ppterm!=0) A00ppterm *= cos(
Phi + phipp)*common_fac;
233 if (A00mmterm!=0) A00mmterm *= cos(
Phi - phimm)*common_fac;
234 if (Appmmterm!=0) Appmmterm *= cos(2*
Phi - phimm + phipp)*common_fac;
238 Double_t A_phi1int = 2.*
aPhi1*Pi;
240 if (A00term!=0) A00term *= A_phi1int;
241 if (Appterm!=0) Appterm *= A_phi1int;
242 if (Ammterm!=0) Ammterm *= A_phi1int;
243 if (A00ppterm!=0) A00ppterm *= A_phi1int;
244 if (A00mmterm!=0) A00mmterm *= A_phi1int;
245 if (Appmmterm!=0) Appmmterm *= A_phi1int;
250 if (A00term!=0) A00term *= common_fac;
251 if (Appterm!=0) Appterm *= common_fac;
252 if (Ammterm!=0) Ammterm *= common_fac;
253 if (A00ppterm!=0) A00ppterm *= common_fac;
254 if (A00mmterm!=0) A00mmterm *= common_fac;
255 if (Appmmterm!=0) Appmmterm *= common_fac;
259 MELAout <<
"RooSpinZero_7DComplex_withAccep_HVV::evaluatePolarizationTerms( " << code <<
" , " << VGammaVpmode1 <<
" , " << VGammaVpmode2 <<
" ):" << endl;
260 MELAout <<
"\t- |A00|**2 = " << A00term << endl;
261 MELAout <<
"\t- |A++|**2 = " << Appterm << endl;
262 MELAout <<
"\t- |A--|**2 = " << Ammterm << endl;
263 MELAout <<
"\t- |A00||A++| = " << A00ppterm << endl;
264 MELAout <<
"\t- |A00||A--| = " << A00mmterm << endl;
265 MELAout <<
"\t- |A++||A--| = " << Appmmterm << endl;
272 bool isZZ = (mV >= 90.);
273 Double_t epsilon=1e-15;
291 Double_t betaValSq = (1.-(pow(m1_-m2_, 2)/pow(
m12, 2)))*(1.-(pow(m1_+m2_, 2)/pow(
m12, 2)));
292 if (betaValSq<=0.)
return epsilon;
293 Double_t betaVal = sqrt(betaValSq);
295 Double_t term1Coeff = 1;
296 Double_t term2Coeff = 1;
301 for (
int VGammaVpmode1=0; VGammaVpmode1<=2; VGammaVpmode1++){
302 for (
int VGammaVpmode2=0; VGammaVpmode2<=2; VGammaVpmode2++){
309 (VGammaVpmode1==1 && VGammaVpmode2==2) || (VGammaVpmode1==2 && VGammaVpmode2==1)
313 Double_t val_A00=0, val_App=0, val_Amm=0, val_A0p=0, val_A0m=0, val_Amp=0;
315 value += val_A00 + val_App + val_Amm + val_A0p + val_A0m + val_Amp;
318 value *= betaVal*term1Coeff*term2Coeff
319 *(1+
aM1*m1_+
bM1*m1_*m1_+
cM1*m1_*m1_*m1_+
dM1*m1_*m1_*m1_*m1_)
320 *(1+
aM2*m2_+
bM2*m2_*m2_+
cM2*m2_*m2_*m2_+
dM2*m2_*m2_*m2_*m2_);
324 <<
"h1=" <<
h1 <<
'\t'
325 <<
"h2=" <<
h2 <<
'\t'
326 <<
"hs=" <<
hs <<
'\t'
327 <<
"Phi1=" <<
Phi1 <<
'\t'
328 <<
"Phi=" <<
Phi <<
'\t'
329 <<
"m1=" <<
m1 <<
'\t'
330 <<
"m2=" <<
m2 <<
'\t'
331 <<
"m12=" <<
m12 <<
'\t'
333 MELAout <<
"Possible sources:\n"
334 <<
"betaVal=" << betaVal <<
'\t'
335 <<
"term1Coeff=" << term1Coeff <<
'\t'
336 <<
"term2Coeff=" << term2Coeff
355 bool isZZ = (mV >= 90.);
356 Double_t epsilon=1e-10;
366 Double_t betaValSq = (1.-(pow(m1_-m2_, 2)/pow(
m12, 2)))*(1.-(pow(m1_+m2_, 2)/pow(
m12, 2)));
367 if (betaValSq<=0.)
return epsilon;
368 Double_t betaVal = sqrt(betaValSq);
370 Double_t term1Coeff = 1;
371 Double_t term2Coeff = 1;
376 for (
int VGammaVpmode1=0; VGammaVpmode1<=2; VGammaVpmode1++){
377 for (
int VGammaVpmode2=0; VGammaVpmode2<=2; VGammaVpmode2++){
385 (VGammaVpmode1==1 && VGammaVpmode2==1)
393 Double_t val_A00=0, val_App=0, val_Amm=0, val_A0p=0, val_A0m=0, val_Amp=0;
395 value += val_A00 + val_App + val_Amm + val_A0p + val_A0m + val_Amp;
398 value *= betaVal*term1Coeff*term2Coeff
399 *(1+
aM1*m1_+
bM1*m1_*m1_+
cM1*m1_*m1_*m1_+
dM1*m1_*m1_*m1_*m1_)
400 *(1+
aM2*m2_+
bM2*m2_*m2_+
cM2*m2_*m2_*m2_+
dM2*m2_*m2_*m2_*m2_);
404 <<
"h1=" <<
h1 <<
'\t'
405 <<
"h2=" <<
h2 <<
'\t'
406 <<
"hs=" <<
hs <<
'\t'
407 <<
"Phi1=" <<
Phi1 <<
'\t'
408 <<
"Phi=" <<
Phi <<
'\t'
409 <<
"m1=" <<
m1 <<
'\t'
410 <<
"m2=" <<
m2 <<
'\t'
411 <<
"m12=" <<
m12 <<
'\t'
413 MELAout <<
"Possible sources:\n"
414 <<
"betaVal=" << betaVal <<
'\t'
415 <<
"term1Coeff=" << term1Coeff <<
'\t'
416 <<
"term2Coeff=" << term2Coeff