32 model_name=
"DToa0enu";
51 double m_Kaon = 0.493677;
52 m2_Kaon = m_Kaon*m_Kaon;
53 double m_K0 = 0.497614;
55 double m_eta = 0.547853;
57 double m_Pion = 0.13957;
58 m2_Pion = m_Pion*m_Pion;
59 double m_Pi0 = 0.1349766;
77 flatte_g2 = 0.341*0.892;
116 if(pid==11||pid==13) charm =-1;
118 double m2, q2, cosV, cosL, chi;
119 KinVGen(pi1,
pi2, e, nu, charm,
m2, q2, cosV, cosL, chi);
120 double prob = calPDF(
m2, q2, cosV, cosL, chi);
132 boost.
set(vp4_KPi.
get(0), -vp4_KPi.
get(1), -vp4_KPi.
get(2), -vp4_KPi.
get(3));
145 double sinx =
C.cross(V).dot(D);
146 double cosx =
C.dot(D);
147 chi = sinx>0? acos(cosx): -acos(cosx);
148 if(charm==-1) chi=-chi;
151double EvtDToa0enu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi) {
153 if (mode==0) F10 = a0pFlatte(
m2, q2);
154 else if (mode==1) F10 = a0nFlatte(
m2, q2);
155 double I1 = 0.25*
abs2(F10);
156 double sinL = sqrt(1.-cosL*cosL);
157 double sinL2 = sinL*sinL;
158 double cos2L = 1.0 - 2.0*sinL2;
159 double I = I1 - I1*cos2L;
163EvtComplex EvtDToa0enu::a0nFlatte(
double m2,
double q2) {
164 double PetaPi = getPStar(m2_D,
m2, q2);
167 EvtComplex amp = ciR/(ciR*(m2_a0-
m2)-ciM*(flatte_g1*rhopieta+flatte_g2*rhokk));
168 EvtComplex F10 = amp*PetaPi*m_D/(1.0-q2/m2AD);
172EvtComplex EvtDToa0enu::a0pFlatte(
double m2,
double q2) {
173 double PetaPi = getPStar(m2_D0,
m2, q2);
176 EvtComplex amp = ciR/(ciR*(m2_a0-
m2)-ciM*(flatte_g1*rhopieta+flatte_g2*rhokk));
177 EvtComplex F10 = amp*PetaPi*m_D0/(1.0-q2/m2AD0);
181EvtComplex EvtDToa0enu::Flatte_rhoab(
double sa,
double sb,
double sc) {
183 double x = sa + sb - sc;
184 double q = 0.25*
x*
x/sa-sb;
186 rho = 2.0*sqrt(
q/sa)*ciR;
188 rho = 2.0*sqrt(-
q/sa)*ciM;
193double EvtDToa0enu::getPStar(
double sa,
double sb,
double sc) {
194 double x = sa + sb - sc;
195 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)