33 model_name=
"DTopi0pi0enu";
94 if(pid == -211) charm = 1;
96 double m2, q2, cosV, cosL, chi;
97 KinVGen(pi1,
pi2, e, nu, charm,
m2, q2, cosV, cosL, chi);
98 double prob = calPDF(
m2, q2, cosV, cosL, chi);
111 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
124 double sinx =
C.cross(V).dot(D);
125 double cosx =
C.dot(D);
126 chi = sinx>0? acos(cosx): -acos(cosx);
127 if(charm==-1) chi=-chi;
130double EvtDTopi0pi0enu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
135 ResonanceSBugg(m,
q, f10);
137 double I1 = 0.25*
abs2(F10);
138 double sinL = sqrt(1.-cosL*cosL);
139 double sinL2 = sinL*sinL;
140 double cos2L = 1.0 - 2.0*sinL2;
141 double I = I1 - I1*cos2L;
145void EvtDTopi0pi0enu::ResonanceSBugg(
double m,
double q,
EvtComplex& F10)
147 double pKPi = getPStar(Dp_mD, m,
q);
152 double sA = 0.41*mPi*mPi;
154 double mr2 = m0_S*m0_S;
165 Gamma1 = getrho(
m2,mPi)*getG1(
m2,mr)*(
m2-sA)/(mr2-sA);
166 Gamma2 = getrho(
m2,mKa)*0.6*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mKa*mKa));
167 Gamma3 = getrho(
m2,mEt)*0.2*getG1(
m2,mr)*(
m2/mr2)*
exp(-
alpha*fabs(
m2-4.0*mEt*mEt));
168 if (m > 4*mPi) Gamma4 = ciR*mr*g4pi*(1.0+
exp(7.082-2.845*mr2))/(1.0+
exp(7.082-2.845*
m2));
170 double AA = mr2-
m2-getG1(
m2,mr)*(
m2-sA)*getZ(
m2, mr2)/(mr2-sA);
171 EvtComplex amp = ciR/(ciR*AA-ciM*(Gamma1+Gamma2+Gamma3+Gamma4));
172 F10 = amp*pKPi*Dp_mD/(1.0-q2/mA2);
175double EvtDTopi0pi0enu::getPStar(
double m,
double m1,
double m2)
180 double x =
s + s1 - s2;
181 double t = 0.25*
x*
x/
s - s1;
192inline double EvtDTopi0pi0enu::getRho(
double m2,
double mX)
195 if ((1.0-4.0*mX*mX/
m2)>0)
196 rho = sqrt(1.0-4.0*mX*mX/
m2);
201inline EvtComplex EvtDTopi0pi0enu::getrho(
double m2,
double mX)
206 if ((1.0-4.0*mX*mX/
m2)>0)
207 rho = ciR*sqrt(1.0-4.0*mX*mX/
m2);
208 else rho = ciM*sqrt(4.0*mX*mX/
m2-1.0);
212inline double EvtDTopi0pi0enu::getG1(
double m2,
double Mr)
218 double gg1 = Mr*(b1+b2*
m2)*
exp(-(
m2-Mr2)/A);
222inline double EvtDTopi0pi0enu::getZ(
double m2,
double Mr2)
224 double zz = (getRho(
m2,mPi)*log((1.0-getRho(
m2,mPi))/(1.0+getRho(
m2,mPi)))
225 -getRho(Mr2,mPi)*log((1.0-getRho(Mr2,mPi))/(1.0+getRho(Mr2,mPi))))/Pi;
character *LEPTONflag integer iresonances real pi2
double abs2(const EvtComplex &c)
EvtComplex exp(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
****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
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C
void decay(EvtParticle *p)
void getName(std::string &name)
virtual ~EvtDTopi0pi0enu()
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
static int getStdHep(EvtId id)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
double dot(const EvtVector4R &v2) const
EvtVector4R cross(const EvtVector4R &v2)
void set(int i, double d)