39 return "HypNonLepton";
46 <<
" ERROR: EvtHypNonLepton generator expected 2 or 3 arguments but found: " 49 <<
" 1. Decay asymmetry parameter - alpha" << std::endl;
51 <<
" 2. Parameter phi - in degrees (not radians)" << std::endl;
53 <<
" 3. Note on every x-th decay" << std::endl;
59 <<
" ERROR: EvtHypNonLepton generator expected 2 daughters but found: " 67 <<
" ERROR: EvtHypNonLepton generator expected dirac parent particle, but found " 69 <<
" spin degrees of freedom" << std::endl;
74 <<
" ERROR: EvtHypNonLepton generator expected the first child to be dirac particle, but found " 76 <<
" spin degrees of freedom" << std::endl;
81 <<
" ERROR: EvtHypNonLepton generator expected the second child to be scalar particle, but found " 83 <<
" spin degrees of freedom" << std::endl;
97 double p_to_s, beta, delta, gamma;
103 if ( m1 + m2 >= M ) {
105 <<
" ERROR: EvtHypNonLepton found impossible decay: " << M
106 <<
" --> " << m1 <<
" + " << m2 <<
" GeV\n" 111 p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) *
112 sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) / 2. / M;
115 delta = -atan2( beta,
m_alpha );
117 p_to_s = sqrt( ( 1. - gamma ) / ( 1. + gamma ) );
119 m_B_to_A = p_to_s * ( m1 + sqrt( p * p + m1 * m1 ) ) / p *
125 double maxProb, m1, m2, M, p;
131 if ( m1 + m2 >= M ) {
133 <<
" ERROR: EvtHypNonLepton found impossible decay: " << M
134 <<
" --> " << m1 <<
" + " << m2 <<
" GeV\n" 139 p = sqrt( M * M - ( m1 + m2 ) * ( m1 + m2 ) ) *
140 sqrt( M * M - ( m1 - m2 ) * ( m1 - m2 ) ) / 2 / M;
142 ( sqrt( p * p + m1 * m1 ) + m1 +
144 ( sqrt( p * p + m1 * m1 ) - m1 ) );
149 <<
" EvtHypNonLepton set up maximum probability to " << maxProb
161 static long noTries = 0;
168 for ( i = 0; i < 4; i++ ) {
173 Matrix[i / 2][i % 2] -=
181 amp->
vertex( i / 2, i % 2, Matrix[i / 2][i % 2] );
187 <<
" EvtHypNonLepton already finished " << noTries
188 <<
" matrix element calculations" << std::endl;
void calcAmp(EvtAmp *amp, EvtParticle *parent)
virtual EvtDiracSpinor sp(int) const
double getArg(unsigned int j)
static EvtSpinType::spintype getSpinType(EvtId i)
EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual EvtDiracSpinor spParent(int) const
void setProbMax(double prbmx)
void vertex(const EvtComplex &)
EvtId getParentId() const
double initializePhaseSpace(unsigned int numdaughter, EvtId *daughters, bool forceResetMasses=false, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtDecayBase * clone() override
std::string getName() override
double abs(const EvtComplex &c)
static int getSpin2(spintype stype)
void decay(EvtParticle *p) override
EvtParticle * getDaug(int i)
static double getMass(EvtId i)
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void initProbMax() override
EvtId getDaug(int i) const