57 for ( i = 0; i < ( getNDaug() - 1 ); i++ ) {
61 bool validndaug =
false;
63 if ( getNDaug() == 4 ) {
69 _gammaRho = getArg( 2 );
70 _mRhopr = getArg( 3 );
71 _gammaRhopr = getArg( 4 );
73 _gammaA1 = getArg( 6 );
75 if ( getNDaug() == 3 ) {
81 _gammaRho = getArg( 2 );
82 _mRhopr = getArg( 3 );
83 _gammaRhopr = getArg( 4 );
85 if ( getNDaug() == 2 ) {
93 <<
"Have not yet implemented this final state in TAUHADNUKS model" 97 for (
id = 0;
id < ( getNDaug() - 1 );
id++ )
99 <<
"Daug " <<
id <<
" " <<
EvtPDL::name( getDaug(
id ) ).c_str()
106 if ( getNDaug() == 2 )
108 if ( getNDaug() == 3 )
109 setProbMax( 2500.0 );
110 if ( getNDaug() == 4 )
111 setProbMax( 30000.0 );
118 EvtIdSet thePis(
"pi+",
"pi-",
"pi0" );
124 nut = p->
getDaug( getNDaug() - 1 );
130 if ( p->
getId() == TAUM ) {
139 bool foundHadCurr =
false;
140 if ( getNDaug() == 2 ) {
144 if ( getNDaug() == 3 ) {
149 double m1 = q1.
mass();
150 double m2 = q2.
mass();
152 hadCurr = Fpi( ( q1 + q2 ).mass2(), m1, m2 ) * ( q1 - q2 );
157 if ( getNDaug() == 4 ) {
163 int diffPi( 0 ), samePi1( 0 ), samePi2( 0 );
164 if ( getDaug( 0 ) == getDaug( 1 ) ) {
169 if ( getDaug( 0 ) == getDaug( 2 ) ) {
174 if ( getDaug( 1 ) == getDaug( 2 ) ) {
184 double m1 = q1.
mass();
185 double m2 = q2.
mass();
186 double m3 = q3.
mass();
189 double Q2 = Q.
mass2();
190 double _mA12 = _mA1 * _mA1;
192 double _gammaA1X = _gammaA1 * gFunc( Q2, samePi1 ) /
193 gFunc( _mA12, samePi1 );
195 EvtComplex denBW_A1( _mA12 - Q2, -1. * _mA1 * _gammaA1X );
199 ( ( ( q1 - q3 ) - ( Q * ( Q * ( q1 - q3 ) ) / Q2 ) ) *
200 Fpi( ( q1 + q3 ).mass2(), m1, m3 ) +
201 ( ( q2 - q3 ) - ( Q * ( Q * ( q2 - q3 ) ) / Q2 ) ) *
202 Fpi( ( q2 + q3 ).mass2(), m2, m3 ) );
208 if ( !foundHadCurr ) {
210 <<
"Have not yet implemented this final state in TAUHADNUKS model" 214 for (
id = 0;
id < ( getNDaug() - 1 );
id++ )
216 <<
"Daug " <<
id <<
" " <<
EvtPDL::name( getDaug(
id ) ).c_str()
220 vertex( 0, tau1 * hadCurr );
221 vertex( 1, tau2 * hadCurr );
229 double mpi2 = pow( mpi, 2. );
230 if ( Q2 < pow( _mRho + mpi, 2. ) ) {
231 double arg = Q2 - 9. * mpi2;
232 return 4.1 * pow(
arg, 3. ) * ( 1. - 3.3 *
arg + 5.8 * pow(
arg, 2. ) );
234 return Q2 * ( 1.623 + 10.38 / Q2 - 9.32 / pow( Q2, 2. ) +
235 0.65 / pow( Q2, 3. ) );
240 EvtComplex BW_rho = BW( s, _mRho, _gammaRho, xm1, xm2 );
241 EvtComplex BW_rhopr = BW( s, _mRhopr, _gammaRhopr, xm1, xm2 );
243 return ( BW_rho + _beta * BW_rhopr ) / ( 1. + _beta );
249 double m2 = pow( m, 2. );
251 if ( s > pow( xm1 + xm2, 2. ) ) {
252 double qs = sqrt( fabs( ( s - pow( xm1 + xm2, 2. ) ) *
253 ( s - pow( xm1 - xm2, 2. ) ) ) ) /
255 double qm = sqrt( fabs( ( m2 - pow( xm1 + xm2, 2. ) ) *
256 ( m2 - pow( xm1 - xm2, 2. ) ) ) ) /
259 gamma *= m2 / s * pow( qs / qm, 3. );
263 EvtComplex denBW( m2 - s, -1. * sqrt( s ) * gamma );
static std::string name(EvtId i)
void decay(EvtParticle *p) override
virtual EvtDiracSpinor sp(int) const
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
EvtDecayBase * clone() override
EvtComplex BW(double s, double m, double gamma, double xm1, double xm2)
static double getMeanMass(EvtId i)
EvtComplex Fpi(double s, double xm1, double xm2)
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
void initProbMax() override
static EvtId getId(const std::string &name)
const EvtVector4R & getP4() const
virtual EvtDiracSpinor spParentNeutrino() const
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
double gFunc(double m2, int dupD)
EvtParticle * getDaug(int i)
int contains(const EvtId id)
double arg(const EvtComplex &c)
std::string getName() override