47 {
48
49
57
58 static EvtISGW2FF ffmodel;
59
61
63 double m;
64
66
67 int i, j;
68
70
71 int bcurrent, wcurrent;
72 int nbcurrent = 0;
73 int nwcurrent = 0;
74
75 bcurrent = (int)
getArg( 0 );
76 wcurrent = (int)
getArg( 1 );
77
78 EvtVector4C jb[5], jw[5];
79 EvtTensor4C g, tds;
80
81 EvtVector4R p4b;
82 p4b.
set( p->
mass(), 0.0, 0.0, 0.0 );
83
85 double q2;
86
87 EvtComplex ep_meson_bb[5];
89 double fp, fm;
90 double hf, kf, bp, bm;
91 EvtVector4R pp, pm;
92 EvtVector4C ep_meson_b[5];
93
94 switch ( bcurrent )
95 {
96
97
98 case 1:
101 nbcurrent = 1;
104 jb[0] = EvtVector4C( fp * ( p4b + p4[0] ) - fm *
q );
105 break;
106
107 case 2:
110 nbcurrent = 3;
112
113 g.
setdiag( 1.0, -1.0, -1.0, -1.0 );
115 gf * EvtComplex( 0.0, 1.0 ) *
dual(
directProd( p4[0] + p4b, p4b - p4[0] ) ) -
120 break;
121
122 case 3:
125 nbcurrent = 3;
127
128 g.
setdiag( 1.0, -1.0, -1.0, -1.0 );
130 gf * EvtComplex( 0.0, 1.0 ) *
dual(
directProd( p4[0] + p4b, p4b - p4[0] ) ) -
135
136 break;
137
138 case 4:
141 nbcurrent = 5;
143 g.
setdiag( 1.0, -1.0, -1.0, -1.0 );
144
145 ep_meson_b[0] = ( ( p->
getDaug( 0 )->epsTensorParent( 0 ) ).cont2( p4b ) ).
conj();
146 ep_meson_b[1] = ( ( p->
getDaug( 0 )->epsTensorParent( 1 ) ).cont2( p4b ) ).
conj();
147 ep_meson_b[2] = ( ( p->
getDaug( 0 )->epsTensorParent( 2 ) ).cont2( p4b ) ).
conj();
148 ep_meson_b[3] = ( ( p->
getDaug( 0 )->epsTensorParent( 3 ) ).cont2( p4b ) ).
conj();
149 ep_meson_b[4] = ( ( p->
getDaug( 0 )->epsTensorParent( 4 ) ).cont2( p4b ) ).
conj();
150
151 pp = p4b + p4[0];
152 pm = p4b - p4[0];
153
154 ep_meson_bb[0] = ep_meson_b[0] * ( p4b );
155 ep_meson_bb[1] = ep_meson_b[1] * ( p4b );
156 ep_meson_bb[2] = ep_meson_b[2] * ( p4b );
157 ep_meson_bb[3] = ep_meson_b[3] * ( p4b );
158 ep_meson_bb[4] = ep_meson_b[4] * ( p4b );
159
160 jb[0] =
162 kf * ep_meson_b[0] - bp * ep_meson_bb[0] * pp - bm * ep_meson_bb[0] * pm;
163
164 jb[1] =
166 kf * ep_meson_b[1] - bp * ep_meson_bb[1] * pp - bm * ep_meson_bb[1] * pm;
167
168 jb[2] =
170 kf * ep_meson_b[2] - bp * ep_meson_bb[2] * pp - bm * ep_meson_bb[2] * pm;
171
172 jb[3] =
174 kf * ep_meson_b[3] - bp * ep_meson_bb[3] * pp - bm * ep_meson_bb[3] * pm;
175
176 jb[4] =
178 kf * ep_meson_b[4] - bp * ep_meson_bb[4] * pp - bm * ep_meson_bb[4] * pm;
179 break;
180
181 case 5:
184 double f, gf, ap, am;
185 nbcurrent = 3;
187 g.
setdiag( 1.0, -1.0, -1.0, -1.0 );
189 gf * EvtComplex( 0.0, 1.0 ) *
dual(
directProd( p4[0] + p4b, p4b - p4[0] ) ) -
194 break;
195
196 case 6:
199 nbcurrent = 1;
201 jb[0] = fp * ( p4b + p4[0] ) + fm *
q;
202 break;
203 default:
report(
ERROR,
"EvtGen" ) <<
"In EvtBHadronic, unknown hadronic current." << endl;
204 }
205
206 double norm;
207
208 switch ( wcurrent )
209 {
210
211 case 1:
212 case 3:
213 case 4:
214 nwcurrent = 1;
216 break;
217
218 case 2:
219 case 5:
220 case 6:
221 nwcurrent = 3;
222 norm = 1.0 / sqrt( p4[1].get( 0 ) * p4[1].get( 0 ) / p4[1].mass2() - 1.0 );
226 break;
227
228 default:
report(
ERROR,
"EvtGen" ) <<
"In EvtBHadronic, unknown W current." << endl;
229 }
230
231 if ( nbcurrent == 1 && nwcurrent == 1 )
232 {
234 return;
235 }
236
237 if ( nbcurrent == 1 )
238 {
239
240
241 for ( j = 0; j < nwcurrent; j++ )
242 {
243
244
245 vertex( j, jb[0] * jw[j] );
246 }
247
248 return;
249 }
250
251 if ( nwcurrent == 1 )
252 {
253 for ( j = 0; j < nbcurrent; j++ ) {
vertex( j, jb[j] * jw[0] ); }
254 return;
255 }
256
257 for ( j = 0; j < nbcurrent; j++ )
258 {
259 for ( i = 0; i < nwcurrent; i++ ) {
vertex( j, i, jb[j] * jw[i] ); }
260 }
261 return;
262}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
ostream & report(Severity severity, const char *facility)
EvtTensor4C dual(const EvtTensor4C &t2)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
void vertex(const EvtComplex &)
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f)
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f)
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf)
static double getMeanMass(EvtId i)
static EvtId getId(const std::string &name)
virtual EvtVector4C epsParent(int i) const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void setdiag(double t00, double t11, double t22, double t33)
EvtVector4C cont1(const EvtVector4C &v4) const
EvtVector4C cont2(const EvtVector4C &v4) const
void set(int i, double d)