1 #include <ecl/digitization/algorithms.h>
6 double Belle2::ECL::Sv123(
double t,
double t01,
double tb1,
double t02,
double tb2,
double td1,
double ts1)
10 double dks0, dks1, dksm,
11 dw0, dw1, dwp, dwm, das1, dac1, das0, dac0, dzna, dksm2, ds, dd,
12 dcs0, dsn0, dzn0, td, ts, dr,
13 dcs0s, dsn0s, dcs0d, dsn0d, dcs1s, dsn1s, dcs1d, dsn1d;
16 if (t < 0.)
return 0.;
18 dr = (ts1 - td1) / td1;
19 if (abs(dr) >= 0.0000001) {
31 dr = ((t01 - t02) * (t01 - t02) + (tb1 - tb2) * (tb1 - tb2)) / ((t01) * (t01) + (tb1) * (tb1));
35 if (dr < 0.0000000001) {
38 dks0 = dks1 * 1.00001;
40 dks0 = dks1 * 0.99999;
59 dzna = (dksm2 + dwm * dwm) * (dksm2 + dwp * dwp);
62 das0 = dw1 * (dksm2 + dwp * dwm);
63 dac0 = -2 * dksm * dw0 * dw1;
64 das1 = dw0 * (dksm2 - dwp * dwm);
73 dzn0 = dcs0 * dcs0 + dsn0 * dsn0;
75 dsn0s = (dsn0 * das0 - dcs0 * dac0) / dzn0;
76 dcs0s = (dcs0 * das0 + dsn0 * dac0) / dzn0;
80 dzn0 = dcs0 * dcs0 + dsn0 * dsn0;
82 dsn1s = (dsn0 * das1 - dcs0 * dac1) / dzn0;
83 dcs1s = (dcs0 * das1 + dsn0 * dac1) / dzn0;
88 dzn0 = dcs0 * dcs0 + dsn0 * dsn0;
90 dsn0d = (dsn0 * das0 - dcs0 * dac0) / dzn0;
91 dcs0d = (dcs0 * das0 + dsn0 * dac0) / dzn0;
95 dzn0 = dcs0 * dcs0 + dsn0 * dsn0;
97 dsn1d = (dsn0 * das1 - dcs0 * dac1) / dzn0;
98 dcs1d = (dcs0 * das1 + dsn0 * dac1) / dzn0;
105 sv123 = ((((dsn0s - dsn0d) * sin(dw0 * t)
106 + (dcs0s - dcs0d) * cos(dw0 * t)) * exp(-t * dks0)
107 - (dcs0s + dcs1s) * exp(-t * ds) + (dcs0d + dcs1d) * exp(-t * dd)
108 + ((dsn1s - dsn1d) * sin(dw1 * t)
109 + (dcs1s - dcs1d) * cos(dw1 * t)) * exp(-t * dks1)) / dzna / (ts - td));