22#include "EvtGenBase/EvtPatches.hh"
26#include "EvtGenBase/EvtParticle.hh"
27#include "EvtGenBase/EvtPDL.hh"
28#include "EvtGenBase/EvtGenKine.hh"
29#include "EvtGenModels/EvtTauHadnu.hh"
30#include "EvtGenBase/EvtDiracSpinor.hh"
31#include "EvtGenBase/EvtReport.hh"
32#include "EvtGenBase/EvtVector4C.hh"
33#include "EvtGenBase/EvtIdSet.hh"
40 model_name=
"TAUHADNU";
65 bool validndaug=
false;
96 report(
ERROR,
"EvtGen") <<
"Have not yet implemented this final state in TAUHADNU model" << endl;
99 for (
id=0;
id<(
getNDaug()-1);
id++ )
129 if (p->
getId()==TAUM) {
139 bool foundHadCurr=
false;
147 if ( thePis.contains(
getDaug(0)) &&
148 thePis.contains(
getDaug(1)) ) {
153 hadCurr = Fpi(q1,q2)*(q1-q2);
160 if ( thePis.contains(
getDaug(0)) &&
162 thePis.contains(
getDaug(2)) ) {
167 int diffPi(0),samePi1(0),samePi2(0);
177 double qMass2=Q.
mass2();
179 double GA1=_gammaA1*pi3G(Q.
mass2(),samePi1)/pi3G(_mA1*_mA1,samePi1);
184 hadCurr = BA1*( (q1-q3) - (Q*(Q*(q1-q3))/qMass2)*Fpi(q2,q3) +
185 (q2-q3) - (Q*(Q*(q2-q3))/qMass2)*Fpi(q1,q3) );
195 if ( !foundHadCurr ) {
196 report(
ERROR,
"EvtGen") <<
"Have not yet implemented this final state in TAUHADNU model" << endl;
199 for (
id=0;
id<(
getNDaug()-1);
id++ )
213double EvtTauHadnu::pi3G(
double m2,
int dupD) {
215 if ( m2 > (_mRho+
mPi) ) {
216 return m2*(1.623 + 10.38/m2 - 9.32/(m2*m2) + 0.65/(m2*m2*m2));
220 return 4.1*pow(t1,3.0)*(1.0 - 3.3*t1+5.8*t1*t1);
234 double dRho= _mRho*_mRho - m1*m1 - m2*m2;
235 double pPiRho = (1.0/_mRho)*sqrt((dRho*dRho)/4.0 - m1*m1*m2*m2);
237 double dRhopr= _mRhopr*_mRhopr - m1*m1 - m2*m2;
238 double pPiRhopr = (1.0/_mRhopr)*sqrt((dRhopr*dRhopr)/4.0 - m1*m1*m2*m2);
240 double dQ= mQ2 - m1*m1 - m2*m2;
241 double pPiQ = (1.0/sqrt(mQ2))*sqrt((dQ*dQ)/4.0 - m1*m1*m2*m2);
244 double gammaRho = _gammaRho*_mRho/sqrt(mQ2)*pow((pPiQ/pPiRho),3);
245 EvtComplex BRhoDem(_mRho*_mRho - mQ2,-1.0*_mRho*gammaRho);
248 double gammaRhopr = _gammaRhopr*_mRhopr/sqrt(mQ2)*pow((pPiQ/pPiRhopr),3);
249 EvtComplex BRhoprDem(_mRhopr*_mRhopr - mQ2,-1.0*_mRho*gammaRhopr);
250 EvtComplex BRhopr= _mRhopr*_mRhopr / BRhoprDem;
252 return (BRho + _beta*BRhopr)/(1+_beta);
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & report(Severity severity, const char *facility)
void vertex(const EvtComplex &)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
static double getMeanMass(EvtId i)
static std::string name(EvtId i)
static EvtId getId(const std::string &name)
virtual EvtDiracSpinor spParentNeutrino() const
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
virtual EvtDiracSpinor sp(int) const
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void getName(std::string &name)
void decay(EvtParticle *p)