48 double m_Kaon = 0.493677;
49 m2_Kaon = m_Kaon * m_Kaon;
50 double m_K0 = 0.497614;
52 double m_eta = 0.547853;
54 double m_Pion = 0.13957;
55 m2_Pion = m_Pion * m_Pion;
56 double m_Pi0 = 0.1349766;
57 m2_Pi0 = m_Pi0 * m_Pi0;
74 flatte_g2 = 0.341 * 0.892;
112 if ( pid == 11 || pid == 13 ) charm = -1;
114 double m2, q2, cosV, cosL, chi;
115 KinVGen( pi1,
pi2, e, nu, charm,
m2, q2, cosV, cosL, chi );
116 double prob = calPDF(
m2, q2, cosV, cosL, chi );
122 EvtVector4R vp4_Nu,
int charm,
double&
m2,
double& q2,
double& cosV,
123 double& cosL,
double& chi ) {
130 boost.
set( vp4_KPi.
get( 0 ), -vp4_KPi.
get( 1 ), -vp4_KPi.
get( 2 ), -vp4_KPi.
get( 3 ) );
132 cosV = vp4_Kp.
dot( vp4_KPi ) / ( vp4_Kp.
d3mag() * vp4_KPi.
d3mag() );
134 boost.
set( vp4_W.
get( 0 ), -vp4_W.
get( 1 ), -vp4_W.
get( 2 ), -vp4_W.
get( 3 ) );
136 cosL = vp4_Lepp.
dot( vp4_W ) / ( vp4_Lepp.
d3mag() * vp4_W.
d3mag() );
143 double sinx =
C.cross( V ).dot( D );
144 double cosx =
C.dot( D );
145 chi = sinx > 0 ? acos( cosx ) : -acos( cosx );
146 if ( charm == -1 ) chi = -chi;
149double EvtDToa0enu::calPDF(
double m2,
double q2,
double cosV,
double cosL,
double chi ) {
150 EvtComplex F10( 0.0, 0.0 );
151 if ( mode == 0 ) F10 = a0pFlatte(
m2, q2 );
152 else if ( mode == 1 ) F10 = a0nFlatte(
m2, q2 );
153 double I1 = 0.25 *
abs2( F10 );
154 double sinL = sqrt( 1. - cosL * cosL );
155 double sinL2 = sinL * sinL;
156 double cos2L = 1.0 - 2.0 * sinL2;
157 double I = I1 - I1 * cos2L;
161EvtComplex EvtDToa0enu::a0nFlatte(
double m2,
double q2 ) {
162 double PetaPi = getPStar( m2_D,
m2, q2 );
163 EvtComplex rhokk = Flatte_rhoab(
m2, m2_Kaon, m2_Kaon );
164 EvtComplex rhopieta = Flatte_rhoab(
m2, m2_Pi0, m2_eta );
166 ciR / ( ciR * ( m2_a0 -
m2 ) - ciM * ( flatte_g1 * rhopieta + flatte_g2 * rhokk ) );
167 EvtComplex F10 = amp * PetaPi * m_D / ( 1.0 - q2 / m2AD );
171EvtComplex EvtDToa0enu::a0pFlatte(
double m2,
double q2 ) {
172 double PetaPi = getPStar( m2_D0,
m2, q2 );
173 EvtComplex rhokk = Flatte_rhoab(
m2, m2_K0, m2_Kaon );
174 EvtComplex rhopieta = Flatte_rhoab(
m2, m2_Pion, m2_eta );
176 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 ) {
182 EvtComplex rho( 0.0, 0.0 );
183 double x = sa + sb - sc;
184 double q = 0.25 *
x *
x / sa - sb;
185 if (
q > 0 ) { rho = 2.0 * sqrt(
q / sa ) * ciR; }
186 else { rho = 2.0 * sqrt( -
q / sa ) * ciM; }
190double EvtDToa0enu::getPStar(
double sa,
double sb,
double sc ) {
191 double x = sa + sb - sc;
192 double q = 0.25 *
x *
x / sa - sb;
194 if (
q > 0.0 ) { p = sqrt(
q ); }
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)