Changeset View
Changeset View
Standalone View
Standalone View
src/EvtGenBase/EvtAmp.cpp
Show All 29 Lines | |||||
#include <assert.h> | #include <assert.h> | ||||
#include <iostream> | #include <iostream> | ||||
#include <math.h> | #include <math.h> | ||||
using std::endl; | using std::endl; | ||||
EvtAmp::EvtAmp() | EvtAmp::EvtAmp() | ||||
{ | { | ||||
_ndaug = 0; | m_ndaug = 0; | ||||
_pstates = 0; | m_pstates = 0; | ||||
_nontrivial = 0; | m_nontrivial = 0; | ||||
} | } | ||||
EvtAmp::EvtAmp( const EvtAmp& amp ) | EvtAmp::EvtAmp( const EvtAmp& amp ) | ||||
{ | { | ||||
int i; | int i; | ||||
_ndaug = amp._ndaug; | m_ndaug = amp.m_ndaug; | ||||
_pstates = amp._pstates; | m_pstates = amp.m_pstates; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
dstates[i] = amp.dstates[i]; | dstates[i] = amp.dstates[i]; | ||||
_dnontrivial[i] = amp._dnontrivial[i]; | m_dnontrivial[i] = amp.m_dnontrivial[i]; | ||||
} | } | ||||
_nontrivial = amp._nontrivial; | m_nontrivial = amp.m_nontrivial; | ||||
int namp = 1; | int namp = 1; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
_nstate[i] = amp._nstate[i]; | m_nstate[i] = amp.m_nstate[i]; | ||||
namp *= _nstate[i]; | namp *= m_nstate[i]; | ||||
} | } | ||||
for ( i = 0; i < namp; i++ ) { | for ( i = 0; i < namp; i++ ) { | ||||
assert( i < 125 ); | assert( i < 125 ); | ||||
_amp[i] = amp._amp[i]; | m_amp[i] = amp.m_amp[i]; | ||||
} | } | ||||
} | } | ||||
void EvtAmp::init( EvtId p, int ndaugs, EvtId* daug ) | void EvtAmp::init( EvtId p, int ndaugs, EvtId* daug ) | ||||
{ | { | ||||
setNDaug( ndaugs ); | setNDaug( ndaugs ); | ||||
int ichild; | int ichild; | ||||
int daug_states[100], parstates; | int daug_states[100], parstates; | ||||
for ( ichild = 0; ichild < ndaugs; ichild++ ) { | for ( ichild = 0; ichild < ndaugs; ichild++ ) { | ||||
daug_states[ichild] = EvtSpinType::getSpinStates( | daug_states[ichild] = EvtSpinType::getSpinStates( | ||||
EvtPDL::getSpinType( daug[ichild] ) ); | EvtPDL::getSpinType( daug[ichild] ) ); | ||||
} | } | ||||
parstates = EvtSpinType::getSpinStates( EvtPDL::getSpinType( p ) ); | parstates = EvtSpinType::getSpinStates( EvtPDL::getSpinType( p ) ); | ||||
setNState( parstates, daug_states ); | setNState( parstates, daug_states ); | ||||
} | } | ||||
void EvtAmp::setNDaug( int n ) | void EvtAmp::setNDaug( int n ) | ||||
{ | { | ||||
_ndaug = n; | m_ndaug = n; | ||||
} | } | ||||
void EvtAmp::setNState( int parent_states, int* daug_states ) | void EvtAmp::setNState( int parent_states, int* daug_states ) | ||||
{ | { | ||||
_nontrivial = 0; | m_nontrivial = 0; | ||||
_pstates = parent_states; | m_pstates = parent_states; | ||||
if ( _pstates > 1 ) { | if ( m_pstates > 1 ) { | ||||
_nstate[_nontrivial] = _pstates; | m_nstate[m_nontrivial] = m_pstates; | ||||
_nontrivial++; | m_nontrivial++; | ||||
} | } | ||||
int i; | int i; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
dstates[i] = daug_states[i]; | dstates[i] = daug_states[i]; | ||||
_dnontrivial[i] = -1; | m_dnontrivial[i] = -1; | ||||
if ( daug_states[i] > 1 ) { | if ( daug_states[i] > 1 ) { | ||||
_nstate[_nontrivial] = daug_states[i]; | m_nstate[m_nontrivial] = daug_states[i]; | ||||
_dnontrivial[i] = _nontrivial; | m_dnontrivial[i] = m_nontrivial; | ||||
_nontrivial++; | m_nontrivial++; | ||||
} | } | ||||
} | } | ||||
if ( _nontrivial > 5 ) { | if ( m_nontrivial > 5 ) { | ||||
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | ||||
<< "Too many nontrivial states in EvtAmp!" << endl; | << "Too many nontrivial states in EvtAmp!" << endl; | ||||
} | } | ||||
} | } | ||||
void EvtAmp::setAmp( int* ind, const EvtComplex& a ) | void EvtAmp::setAmp( int* ind, const EvtComplex& a ) | ||||
{ | { | ||||
int nstatepad = 1; | int nstatepad = 1; | ||||
int position = ind[0]; | int position = ind[0]; | ||||
for ( int i = 1; i < _nontrivial; i++ ) { | for ( int i = 1; i < m_nontrivial; i++ ) { | ||||
nstatepad *= _nstate[i - 1]; | nstatepad *= m_nstate[i - 1]; | ||||
position += nstatepad * ind[i]; | position += nstatepad * ind[i]; | ||||
} | } | ||||
assert( position < 125 ); | assert( position < 125 ); | ||||
_amp[position] = a; | m_amp[position] = a; | ||||
} | } | ||||
const EvtComplex& EvtAmp::getAmp( int* ind ) const | const EvtComplex& EvtAmp::getAmp( int* ind ) const | ||||
{ | { | ||||
int nstatepad = 1; | int nstatepad = 1; | ||||
int position = ind[0]; | int position = ind[0]; | ||||
for ( int i = 1; i < _nontrivial; i++ ) { | for ( int i = 1; i < m_nontrivial; i++ ) { | ||||
nstatepad *= _nstate[i - 1]; | nstatepad *= m_nstate[i - 1]; | ||||
position += nstatepad * ind[i]; | position += nstatepad * ind[i]; | ||||
} | } | ||||
return _amp[position]; | return m_amp[position]; | ||||
} | } | ||||
EvtSpinDensity EvtAmp::getSpinDensity() | EvtSpinDensity EvtAmp::getSpinDensity() | ||||
{ | { | ||||
EvtSpinDensity rho; | EvtSpinDensity rho; | ||||
rho.setDim( _pstates ); | rho.setDim( m_pstates ); | ||||
EvtComplex temp; | EvtComplex temp; | ||||
int i, j, n; | int i, j, n; | ||||
if ( _pstates == 1 ) { | if ( m_pstates == 1 ) { | ||||
if ( _nontrivial == 0 ) { | if ( m_nontrivial == 0 ) { | ||||
rho.set( 0, 0, _amp[0] * conj( _amp[0] ) ); | rho.set( 0, 0, m_amp[0] * conj( m_amp[0] ) ); | ||||
return rho; | return rho; | ||||
} | } | ||||
n = 1; | n = 1; | ||||
temp = EvtComplex( 0.0 ); | temp = EvtComplex( 0.0 ); | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
n *= _nstate[i]; | n *= m_nstate[i]; | ||||
} | } | ||||
for ( i = 0; i < n; i++ ) { | for ( i = 0; i < n; i++ ) { | ||||
temp += _amp[i] * conj( _amp[i] ); | temp += m_amp[i] * conj( m_amp[i] ); | ||||
} | } | ||||
rho.set( 0, 0, temp ); | rho.set( 0, 0, temp ); | ||||
; | ; | ||||
return rho; | return rho; | ||||
} | } | ||||
else { | else { | ||||
for ( i = 0; i < _pstates; i++ ) { | for ( i = 0; i < m_pstates; i++ ) { | ||||
for ( j = 0; j < _pstates; j++ ) { | for ( j = 0; j < m_pstates; j++ ) { | ||||
temp = EvtComplex( 0.0 ); | temp = EvtComplex( 0.0 ); | ||||
int kk; | int kk; | ||||
int allloop = 1; | int allloop = 1; | ||||
for ( kk = 0; kk < _ndaug; kk++ ) { | for ( kk = 0; kk < m_ndaug; kk++ ) { | ||||
allloop *= dstates[kk]; | allloop *= dstates[kk]; | ||||
} | } | ||||
for ( kk = 0; kk < allloop; kk++ ) { | for ( kk = 0; kk < allloop; kk++ ) { | ||||
temp += _amp[_pstates * kk + i] * | temp += m_amp[m_pstates * kk + i] * | ||||
conj( _amp[_pstates * kk + j] ); | conj( m_amp[m_pstates * kk + j] ); | ||||
} | } | ||||
// if (_nontrivial>3){ | // if (m_nontrivial>3){ | ||||
//EvtGenReport(EVTGEN_ERROR,"EvtGen") << "Can't handle so many states in EvtAmp!"<<endl; | //EvtGenReport(EVTGEN_ERROR,"EvtGen") << "Can't handle so many states in EvtAmp!"<<endl; | ||||
//} | //} | ||||
rho.set( i, j, temp ); | rho.set( i, j, temp ); | ||||
} | } | ||||
} | } | ||||
return rho; | return rho; | ||||
} | } | ||||
} | } | ||||
EvtSpinDensity EvtAmp::getBackwardSpinDensity( EvtSpinDensity* rho_list ) | EvtSpinDensity EvtAmp::getBackwardSpinDensity( EvtSpinDensity* rho_list ) | ||||
{ | { | ||||
EvtSpinDensity rho; | EvtSpinDensity rho; | ||||
rho.setDim( _pstates ); | rho.setDim( m_pstates ); | ||||
if ( _pstates == 1 ) { | if ( m_pstates == 1 ) { | ||||
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | ||||
return rho; | return rho; | ||||
} | } | ||||
int k; | int k; | ||||
EvtAmp ampprime; | EvtAmp ampprime; | ||||
ampprime = ( *this ); | ampprime = ( *this ); | ||||
for ( k = 0; k < _ndaug; k++ ) { | for ( k = 0; k < m_ndaug; k++ ) { | ||||
if ( dstates[k] != 1 ) { | if ( dstates[k] != 1 ) { | ||||
ampprime = ampprime.contract( _dnontrivial[k], rho_list[k + 1] ); | ampprime = ampprime.contract( m_dnontrivial[k], rho_list[k + 1] ); | ||||
} | } | ||||
} | } | ||||
return ampprime.contract( 0, ( *this ) ); | return ampprime.contract( 0, ( *this ) ); | ||||
} | } | ||||
EvtSpinDensity EvtAmp::getForwardSpinDensity( EvtSpinDensity* rho_list, int i ) | EvtSpinDensity EvtAmp::getForwardSpinDensity( EvtSpinDensity* rho_list, int i ) | ||||
{ | { | ||||
EvtSpinDensity rho; | EvtSpinDensity rho; | ||||
rho.setDim( dstates[i] ); | rho.setDim( dstates[i] ); | ||||
int k; | int k; | ||||
if ( dstates[i] == 1 ) { | if ( dstates[i] == 1 ) { | ||||
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | ||||
return rho; | return rho; | ||||
} | } | ||||
EvtAmp ampprime; | EvtAmp ampprime; | ||||
ampprime = ( *this ); | ampprime = ( *this ); | ||||
if ( _pstates != 1 ) { | if ( m_pstates != 1 ) { | ||||
ampprime = ampprime.contract( 0, rho_list[0] ); | ampprime = ampprime.contract( 0, rho_list[0] ); | ||||
} | } | ||||
for ( k = 0; k < i; k++ ) { | for ( k = 0; k < i; k++ ) { | ||||
if ( dstates[k] != 1 ) { | if ( dstates[k] != 1 ) { | ||||
ampprime = ampprime.contract( _dnontrivial[k], rho_list[k + 1] ); | ampprime = ampprime.contract( m_dnontrivial[k], rho_list[k + 1] ); | ||||
} | } | ||||
} | } | ||||
return ampprime.contract( _dnontrivial[i], ( *this ) ); | return ampprime.contract( m_dnontrivial[i], ( *this ) ); | ||||
} | } | ||||
EvtAmp EvtAmp::contract( int k, const EvtSpinDensity& rho ) | EvtAmp EvtAmp::contract( int k, const EvtSpinDensity& rho ) | ||||
{ | { | ||||
EvtAmp temp; | EvtAmp temp; | ||||
int i, j; | int i, j; | ||||
temp._ndaug = _ndaug; | temp.m_ndaug = m_ndaug; | ||||
temp._pstates = _pstates; | temp.m_pstates = m_pstates; | ||||
temp._nontrivial = _nontrivial; | temp.m_nontrivial = m_nontrivial; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
temp.dstates[i] = dstates[i]; | temp.dstates[i] = dstates[i]; | ||||
temp._dnontrivial[i] = _dnontrivial[i]; | temp.m_dnontrivial[i] = m_dnontrivial[i]; | ||||
} | } | ||||
if ( _nontrivial == 0 ) { | if ( m_nontrivial == 0 ) { | ||||
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | ||||
<< "Should not be here EvtAmp!" << endl; | << "Should not be here EvtAmp!" << endl; | ||||
} | } | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
temp._nstate[i] = _nstate[i]; | temp.m_nstate[i] = m_nstate[i]; | ||||
} | } | ||||
EvtComplex c; | EvtComplex c; | ||||
int index[10]; | int index[10]; | ||||
for ( i = 0; i < 10; i++ ) { | for ( i = 0; i < 10; i++ ) { | ||||
index[i] = 0; | index[i] = 0; | ||||
} | } | ||||
int allloop = 1; | int allloop = 1; | ||||
int indflag, ii; | int indflag, ii; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
allloop *= _nstate[i]; | allloop *= m_nstate[i]; | ||||
} | } | ||||
for ( i = 0; i < allloop; i++ ) { | for ( i = 0; i < allloop; i++ ) { | ||||
c = EvtComplex( 0.0 ); | c = EvtComplex( 0.0 ); | ||||
int tempint = index[k]; | int tempint = index[k]; | ||||
for ( j = 0; j < _nstate[k]; j++ ) { | for ( j = 0; j < m_nstate[k]; j++ ) { | ||||
index[k] = j; | index[k] = j; | ||||
c += rho.get( j, tempint ) * getAmp( index ); | c += rho.get( j, tempint ) * getAmp( index ); | ||||
} | } | ||||
index[k] = tempint; | index[k] = tempint; | ||||
temp.setAmp( index, c ); | temp.setAmp( index, c ); | ||||
indflag = 0; | indflag = 0; | ||||
for ( ii = 0; ii < _nontrivial; ii++ ) { | for ( ii = 0; ii < m_nontrivial; ii++ ) { | ||||
if ( indflag == 0 ) { | if ( indflag == 0 ) { | ||||
if ( index[ii] == ( _nstate[ii] - 1 ) ) { | if ( index[ii] == ( m_nstate[ii] - 1 ) ) { | ||||
index[ii] = 0; | index[ii] = 0; | ||||
} else { | } else { | ||||
indflag = 1; | indflag = 1; | ||||
index[ii] += 1; | index[ii] += 1; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return temp; | return temp; | ||||
} | } | ||||
EvtSpinDensity EvtAmp::contract( int k, const EvtAmp& amp2 ) | EvtSpinDensity EvtAmp::contract( int k, const EvtAmp& amp2 ) | ||||
{ | { | ||||
int i, j, l; | int i, j, l; | ||||
EvtComplex temp; | EvtComplex temp; | ||||
EvtSpinDensity rho; | EvtSpinDensity rho; | ||||
rho.setDim( _nstate[k] ); | rho.setDim( m_nstate[k] ); | ||||
int allloop = 1; | int allloop = 1; | ||||
int indflag, ii; | int indflag, ii; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
allloop *= _nstate[i]; | allloop *= m_nstate[i]; | ||||
} | } | ||||
int index[10]; | int index[10]; | ||||
int index1[10]; | int index1[10]; | ||||
// int l; | // int l; | ||||
for ( i = 0; i < _nstate[k]; i++ ) { | for ( i = 0; i < m_nstate[k]; i++ ) { | ||||
for ( j = 0; j < _nstate[k]; j++ ) { | for ( j = 0; j < m_nstate[k]; j++ ) { | ||||
if ( _nontrivial == 0 ) { | if ( m_nontrivial == 0 ) { | ||||
EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | EvtGenReport( EVTGEN_ERROR, "EvtGen" ) | ||||
<< "Should not be here1 EvtAmp!" << endl; | << "Should not be here1 EvtAmp!" << endl; | ||||
rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | rho.set( 0, 0, EvtComplex( 1.0, 0.0 ) ); | ||||
return rho; | return rho; | ||||
} | } | ||||
for ( ii = 0; ii < 10; ii++ ) { | for ( ii = 0; ii < 10; ii++ ) { | ||||
index[ii] = 0; | index[ii] = 0; | ||||
index1[ii] = 0; | index1[ii] = 0; | ||||
} | } | ||||
index[k] = i; | index[k] = i; | ||||
index1[k] = j; | index1[k] = j; | ||||
temp = EvtComplex( 0.0 ); | temp = EvtComplex( 0.0 ); | ||||
for ( l = 0; l < int( allloop / _nstate[k] ); l++ ) { | for ( l = 0; l < int( allloop / m_nstate[k] ); l++ ) { | ||||
temp += getAmp( index ) * conj( amp2.getAmp( index1 ) ); | temp += getAmp( index ) * conj( amp2.getAmp( index1 ) ); | ||||
indflag = 0; | indflag = 0; | ||||
for ( ii = 0; ii < _nontrivial; ii++ ) { | for ( ii = 0; ii < m_nontrivial; ii++ ) { | ||||
if ( ii != k ) { | if ( ii != k ) { | ||||
if ( indflag == 0 ) { | if ( indflag == 0 ) { | ||||
if ( index[ii] == ( _nstate[ii] - 1 ) ) { | if ( index[ii] == ( m_nstate[ii] - 1 ) ) { | ||||
index[ii] = 0; | index[ii] = 0; | ||||
index1[ii] = 0; | index1[ii] = 0; | ||||
} else { | } else { | ||||
indflag = 1; | indflag = 1; | ||||
index[ii] += 1; | index[ii] += 1; | ||||
index1[ii] += 1; | index1[ii] += 1; | ||||
} | } | ||||
} | } | ||||
Show All 19 Lines | |||||
void EvtAmp::dump() | void EvtAmp::dump() | ||||
{ | { | ||||
int i, list[10]; | int i, list[10]; | ||||
for ( i = 0; i < 10; i++ ) { | for ( i = 0; i < 10; i++ ) { | ||||
list[i] = 0; | list[i] = 0; | ||||
} | } | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | ||||
<< "Number of daugthers:" << _ndaug << endl; | << "Number of daugthers:" << m_ndaug << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | ||||
<< "Number of states of the parent:" << _pstates << endl; | << "Number of states of the parent:" << m_pstates << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Number of states on daughters:"; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Number of states on daughters:"; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << dstates[i] << " "; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << dstates[i] << " "; | ||||
} | } | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Nontrivial index of daughters:"; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Nontrivial index of daughters:"; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << _dnontrivial[i] << " "; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << m_dnontrivial[i] << " "; | ||||
} | } | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | ||||
<< "number of nontrivial states:" << _nontrivial << endl; | << "number of nontrivial states:" << m_nontrivial << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | ||||
<< "Nontrivial particles number of states:"; | << "Nontrivial particles number of states:"; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << _nstate[i] << " "; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << m_nstate[i] << " "; | ||||
} | } | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Amplitudes:" << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << "Amplitudes:" << endl; | ||||
if ( _nontrivial == 0 ) { | if ( m_nontrivial == 0 ) { | ||||
list[0] = 0; | list[0] = 0; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << endl; | ||||
} | } | ||||
int allloop[10]; | int allloop[10]; | ||||
for ( i = 0; i < 10; i++ ) { | for ( i = 0; i < 10; i++ ) { | ||||
allloop[i] = 0; | allloop[i] = 0; | ||||
} | } | ||||
allloop[0] = 1; | allloop[0] = 1; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
if ( i == 0 ) { | if ( i == 0 ) { | ||||
allloop[i] *= _nstate[i]; | allloop[i] *= m_nstate[i]; | ||||
} else { | } else { | ||||
allloop[i] = allloop[i - 1] * _nstate[i]; | allloop[i] = allloop[i - 1] * m_nstate[i]; | ||||
} | } | ||||
} | } | ||||
int index = 0; | int index = 0; | ||||
for ( i = 0; i < allloop[_nontrivial - 1]; i++ ) { | for ( i = 0; i < allloop[m_nontrivial - 1]; i++ ) { | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << " "; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << getAmp( list ) << " "; | ||||
if ( i == allloop[index] - 1 ) { | if ( i == allloop[index] - 1 ) { | ||||
index++; | index++; | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) << endl; | ||||
} | } | ||||
} | } | ||||
EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | EvtGenReport( EVTGEN_DEBUG, "EvtGen" ) | ||||
Show All 35 Lines | |||||
{ | { | ||||
setAmp( i1, c ); | setAmp( i1, c ); | ||||
} | } | ||||
EvtAmp& EvtAmp::operator=( const EvtAmp& amp ) | EvtAmp& EvtAmp::operator=( const EvtAmp& amp ) | ||||
{ | { | ||||
int i; | int i; | ||||
_ndaug = amp._ndaug; | m_ndaug = amp.m_ndaug; | ||||
_pstates = amp._pstates; | m_pstates = amp.m_pstates; | ||||
for ( i = 0; i < _ndaug; i++ ) { | for ( i = 0; i < m_ndaug; i++ ) { | ||||
dstates[i] = amp.dstates[i]; | dstates[i] = amp.dstates[i]; | ||||
_dnontrivial[i] = amp._dnontrivial[i]; | m_dnontrivial[i] = amp.m_dnontrivial[i]; | ||||
} | } | ||||
_nontrivial = amp._nontrivial; | m_nontrivial = amp.m_nontrivial; | ||||
int namp = 1; | int namp = 1; | ||||
for ( i = 0; i < _nontrivial; i++ ) { | for ( i = 0; i < m_nontrivial; i++ ) { | ||||
_nstate[i] = amp._nstate[i]; | m_nstate[i] = amp.m_nstate[i]; | ||||
namp *= _nstate[i]; | namp *= m_nstate[i]; | ||||
} | } | ||||
for ( i = 0; i < namp; i++ ) { | for ( i = 0; i < namp; i++ ) { | ||||
assert( i < 125 ); | assert( i < 125 ); | ||||
_amp[i] = amp._amp[i]; | m_amp[i] = amp.m_amp[i]; | ||||
} | } | ||||
return *this; | return *this; | ||||
} | } |