9 const vector<EvtMNode*>& children,
const vector<EvtComplex>& elem ) {
17 vector<EvtSpinType::spintype>
type;
18 for (
int i = 0; i < children.size(); ++i )
22 const vector<int>& res = children[i]->getresonance();
23 for (
int j = 0; j < res.size(); ++j )
_resonance.push_back( res[j] );
24 children[i]->setparent(
this );
29 vector<int> index =
_amp.iterinit();
32 if ( !
_amp.allowed( index ) )
_amp( index ) = 0.0;
36 _amp( index ) = elem[i];
39 }
while (
_amp.iterate( index ) );
40 if ( elem.size() != i )
42 report(
ERROR,
"EvtGen" ) <<
"Wrong number of elements input in helicity amplitude."
47 if ( children.size() > 2 )
50 <<
"Helicity amplitude formalism can only handle two body resonances" << endl;
65 phi = atan2( d.
get( 1 ), d.
get( 2 ) );
66 theta = acos( d.
get( 3 ) / d.
d3mag() );
79 :
_parent->getparent()->get4vector( product );
85 vector<EvtSpinType::spintype> types( 3 );
93 if (
abs( index[1] - index[2] ) >
_twospin )
continue;
96 _amp( index[1], index[2] );
112 vector<EvtMNode*> children;
114 for (
int i = 0; i <
_children.size(); ++i )
Evt3Rank3C conj(const Evt3Rank3C &t2)
double EvtDecayAnglePhi(const EvtVector4R &z, const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
double EvtDecayAngle(const EvtVector4R &p, const EvtVector4R &q, const EvtVector4R &d)
EvtComplex wignerD(int j, int m1, int m2, double phi, double theta, double gamma)
ostream & report(Severity severity, const char *facility)
****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
static const double twoPi
EvtSpinAmp amplitude(const vector< EvtVector4R > &product) const
EvtMNode * duplicate() const
EvtMHelAmp(const EvtId &id, EvtMLineShape *, const vector< EvtMNode * > &, const vector< EvtComplex > &)
EvtVector4R get4vector(const vector< EvtVector4R > &product) const
EvtSpinType::spintype getspintype() const
vector< EvtMNode * > _children
EvtMLineShape * _lineshape
static EvtSpinType::spintype getSpinType(EvtId i)
bool iterateallowed(vector< int > &index) const
vector< int > iterallowedinit() const
void extcont(const EvtSpinAmp &, int, int)
static int getSpin2(spintype stype)