33 model_name=
"D0Toa0enu";
53 double m_Kaon = 0.493677;
54 m2_Kaon = m_Kaon*m_Kaon;
55 double m_K0 = 0.497614;
57 double m_eta = 0.547853;
59 double m_Pion = 0.13957;
60 m2_Pion = m_Pion*m_Pion;
61 double m_Pi0 = 0.1349766;
79 flatte_g2 = 0.341*0.892;
118 if(pid==11||pid==13) charm =-1;
120 double m2, q2, cosV, cosL, chi;
121 KinVGen(pi1,
pi2, e, nu, charm,
m2, q2, cosV, cosL, chi);
122 double prob = calPDF(
m2, q2, cosV, cosL, chi);
134 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
147 double sinx =
C.cross(V).dot(D);
148 double cosx =
C.dot(D);
149 chi = sinx>0? acos(cosx): -acos(cosx);
150 if(charm==-1) chi=-chi;
153double EvtD0Toa0enu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
155 if (mode==0) F10 = a0pFlatte(
m2, q2);
156 else if (mode==1) F10 = a0nFlatte(
m2, q2);
157 double I1 = 0.25*
abs2(F10);
158 double sinL = sqrt(1.-cosL*cosL);
159 double sinL2 = sinL*sinL;
160 double cos2L = 1.0 - 2.0*sinL2;
161 double I = I1 - I1*cos2L;
165EvtComplex EvtD0Toa0enu::a0nFlatte(
double m2,
double q2) {
166 double PetaPi = getPStar(m2_D,
m2, q2);
169 EvtComplex amp = ciR/(ciR*(m2_a0-
m2)-ciM*(flatte_g1*rhopieta+flatte_g2*rhokk));
170 EvtComplex F10 = amp*PetaPi*m_D/(1.0-q2/m2AD);
174EvtComplex EvtD0Toa0enu::a0pFlatte(
double m2,
double q2) {
175 double PetaPi = getPStar(m2_D0,
m2, q2);
178 EvtComplex amp = ciR/(ciR*(m2_a0-
m2)-ciM*(flatte_g1*rhopieta+flatte_g2*rhokk));
179 EvtComplex F10 = amp*PetaPi*m_D0/(1.0-q2/m2AD0);
183EvtComplex EvtD0Toa0enu::Flatte_rhoab(
double sa,
double sb,
double sc) {
185 double x = sa + sb - sc;
186 double q = 0.25*
x*
x/sa-sb;
188 rho = 2.0*sqrt(
q/sa)*ciR;
190 rho = 2.0*sqrt(-
q/sa)*ciM;
195double EvtD0Toa0enu::getPStar(
double sa,
double sb,
double sc) {
196 double x = sa + sb - sc;
197 double q = 0.25*
x*
x/sa-sb;
character *LEPTONflag integer iresonances real pi2
double abs2(const EvtComplex &c)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_eta
****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 getName(std::string &name)
void decay(EvtParticle *p)
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)