30 const PhaseSpace* phaseSpacePtr,
33 if (sigmaProcessPtr->nFinal() != 1)
return 0.;
40 int idRes = sigmaProcessPtr->resonanceA();
41 double mRes = particleDataPtr->m0(idRes);
42 double wRes = particleDataPtr->mWidth(idRes);
43 double m2Res = mRes*mRes;
44 double gamMRat = wRes/mRes;
45 double sHat = phaseSpacePtr->sHat();
46 double weightBW = m2Res*m2Res + sHat*sHat*(1 + gamMRat*gamMRat) - 2.*sHat*m2Res;
47 double rH = sqrt(sHat);
66 bool isVetoed =
false;
68 for (
int i = 1; i <
process.size(); ++i) {
72 if (v.idAbs() != 34)
continue;
75 Particle& d_W =
process[v.daughter1()];
76 Particle& d_Z =
process[v.daughter2()];
77 if(d_W.idAbs() !=24 ){
83 Vec4 pv_W_orig = d_W.p();
84 Vec4 pv_Z_orig = d_Z.p();
85 double pTW = sqrt(
pow(pv_W.px(),2) +
pow(pv_W.py(),2));
86 double mW = sqrt(
pow(pv_W.e(),2) -
pow(pv_W.px(),2) -
pow(pv_W.py(),2) -
pow(pv_W.pz(),2));
87 double mZ = sqrt(
pow(pv_Z.e(),2) -
pow(pv_Z.px(),2) -
pow(pv_Z.py(),2) -
pow(pv_Z.pz(),2));
90 if((
pow(mWflat,2) -
pow(mW,2))/
pow(pTW,2) < 1.0){
91 apT = sqrt(1 - (
pow(mWflat,2) -
pow(mW,2))/
pow(pTW,2));
97 pv_W.px(apT*pv_W.px());
98 pv_W.py(apT*pv_W.py());
103 pv_Z.px(apT*pv_Z.px());
104 pv_Z.py(apT*pv_Z.py());
106 d_Z.m(sqrt(
pow(pv_Z.e(),2) -
pow(pv_Z.px(),2) -
pow(pv_Z.py(),2) -
pow(pv_Z.pz(),2)));
107 double mZref = d_Z.m();
118 Particle& d1_W =
process[d_W.daughter1()];
119 Particle& d2_W =
process[d_W.daughter2()];
122 Particle& d1_Z =
process[d_Z.daughter1()];
123 Particle& d2_Z =
process[d_Z.daughter2()];
145 void RescaleDaughters(Particle& d1_W,Particle& d2_W,Vec4 pv_W,Vec4 pv_W_orig,
double mW,
double mWflat){
147 Vec4 pd1_W = d1_W.p();
148 Vec4 pd2_W = d2_W.p();
150 pd1_W.bstback(pv_W_orig);
151 pd2_W.bstback(pv_W_orig);
153 double m1_W_orig = sqrt(
pow(pd1_W.e(),2) -
pow(pd1_W.px(),2) -
pow(pd1_W.py(),2) -
pow(pd1_W.pz(),2));
154 double m2_W_orig = sqrt(
pow(pd2_W.e(),2) -
pow(pd2_W.px(),2) -
pow(pd2_W.py(),2) -
pow(pd2_W.pz(),2));
155 double mWchild = sqrt(
pow(pd1_W.e()+pd2_W.e(),2)-
pow(pd1_W.px()+pd2_W.px(),2)-
pow(pd1_W.py()+pd2_W.py(),2)-
pow(pd1_W.pz()+pd2_W.pz(),2));
157 double r_W_orig = 1 - (
pow(m1_W_orig,2) +
pow(m2_W_orig,2))/
pow(mW,2);
158 double r_W_flat = 1 - (
pow(m1_W_orig,2) +
pow(m2_W_orig,2))/
pow(mWflat,2);
159 double mR_W = (mWflat*r_W_flat)/(mWchild*r_W_orig);
162 pd1_W.px(mR_W*pd1_W.px());
163 pd1_W.py(mR_W*pd1_W.py());
164 pd1_W.pz(mR_W*pd1_W.pz());
165 pd1_W.e(sqrt(
pow(pd1_W.px(),2)+
pow(pd1_W.py(),2)+
pow(pd1_W.pz(),2)+
pow(m1_W_orig,2)));
167 pd2_W.px(mR_W*pd2_W.px());
168 pd2_W.py(mR_W*pd2_W.py());
169 pd2_W.pz(mR_W*pd2_W.pz());
170 pd2_W.e(sqrt(
pow(pd2_W.px(),2)+
pow(pd2_W.py(),2)+
pow(pd2_W.pz(),2)+
pow(m2_W_orig,2)));
173 pd1_W.bst(pv_W); d1_W.p(pd1_W);
174 pd2_W.bst(pv_W); d2_W.p(pd2_W);
175 double m1_W = sqrt(
pow(pd1_W.e(),2) -
pow(pd1_W.px(),2) -
pow(pd1_W.py(),2) -
pow(pd1_W.pz(),2));
176 double m2_W = sqrt(
pow(pd2_W.e(),2) -
pow(pd2_W.px(),2) -
pow(pd2_W.py(),2) -
pow(pd2_W.pz(),2));