Changeset View
Changeset View
Standalone View
Standalone View
src/EvtGenBase/EvtDalitzPoint.cpp
Show All 22 Lines | |||||
#include "EvtGenBase/EvtPatches.hh" | #include "EvtGenBase/EvtPatches.hh" | ||||
#include <assert.h> | #include <assert.h> | ||||
#include <math.h> | #include <math.h> | ||||
#include <stdio.h> | #include <stdio.h> | ||||
using namespace EvtCyclic3; | using namespace EvtCyclic3; | ||||
EvtDalitzPoint::EvtDalitzPoint() : | EvtDalitzPoint::EvtDalitzPoint() : | ||||
_mA( -1. ), _mB( -1. ), _mC( -1. ), _qAB( -1. ), _qBC( -1. ), _qCA( -1. ) | m_mA( -1. ), m_mB( -1. ), m_mC( -1. ), m_qAB( -1. ), m_qBC( -1. ), m_qCA( -1. ) | ||||
{ | { | ||||
} | } | ||||
EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC, double qAB, | EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC, double qAB, | ||||
double qBC, double qCA ) : | double qBC, double qCA ) : | ||||
_mA( mA ), _mB( mB ), _mC( mC ), _qAB( qAB ), _qBC( qBC ), _qCA( qCA ) | m_mA( mA ), m_mB( mB ), m_mC( mC ), m_qAB( qAB ), m_qBC( qBC ), m_qCA( qCA ) | ||||
{ | { | ||||
} | } | ||||
// Constructor from Zemach coordinates | // Constructor from Zemach coordinates | ||||
EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC, | EvtDalitzPoint::EvtDalitzPoint( double mA, double mB, double mC, | ||||
EvtCyclic3::Pair i, double qres, double qhel, | EvtCyclic3::Pair i, double qres, double qhel, | ||||
double qsum ) : | double qsum ) : | ||||
_mA( mA ), _mB( mB ), _mC( mC ) | m_mA( mA ), m_mB( mB ), m_mC( mC ) | ||||
{ | { | ||||
double qi = qres + qsum / 3.; | double qi = qres + qsum / 3.; | ||||
double qj = -qres / 2. + qhel + qsum / 3.; | double qj = -qres / 2. + qhel + qsum / 3.; | ||||
double qk = -qres / 2. - qhel + qsum / 3.; | double qk = -qres / 2. - qhel + qsum / 3.; | ||||
if ( i == AB ) { | if ( i == AB ) { | ||||
_qAB = qi; | m_qAB = qi; | ||||
_qBC = qj; | m_qBC = qj; | ||||
_qCA = qk; | m_qCA = qk; | ||||
} else if ( i == BC ) { | } else if ( i == BC ) { | ||||
_qAB = qk; | m_qAB = qk; | ||||
_qBC = qi; | m_qBC = qi; | ||||
_qCA = qj; | m_qCA = qj; | ||||
} else if ( i == CA ) { | } else if ( i == CA ) { | ||||
_qAB = qj; | m_qAB = qj; | ||||
_qBC = qk; | m_qBC = qk; | ||||
_qCA = qi; | m_qCA = qi; | ||||
} | } | ||||
} | } | ||||
EvtDalitzPoint::EvtDalitzPoint( const EvtDalitzPlot& dp, | EvtDalitzPoint::EvtDalitzPoint( const EvtDalitzPlot& dp, | ||||
const EvtDalitzCoord& x ) : | const EvtDalitzCoord& x ) : | ||||
_mA( dp.m( A ) ), _mB( dp.m( B ) ), _mC( dp.m( C ) ) | m_mA( dp.m( A ) ), m_mB( dp.m( B ) ), m_mC( dp.m( C ) ) | ||||
{ | { | ||||
if ( x.pair1() == AB ) | if ( x.pair1() == AB ) | ||||
_qAB = x.q1(); | m_qAB = x.q1(); | ||||
else if ( x.pair2() == AB ) | else if ( x.pair2() == AB ) | ||||
_qAB = x.q2(); | m_qAB = x.q2(); | ||||
else | else | ||||
_qAB = dp.sum() - x.q1() - x.q2(); | m_qAB = dp.sum() - x.q1() - x.q2(); | ||||
if ( x.pair1() == BC ) | if ( x.pair1() == BC ) | ||||
_qBC = x.q1(); | m_qBC = x.q1(); | ||||
else if ( x.pair2() == BC ) | else if ( x.pair2() == BC ) | ||||
_qBC = x.q2(); | m_qBC = x.q2(); | ||||
else | else | ||||
_qBC = dp.sum() - x.q1() - x.q2(); | m_qBC = dp.sum() - x.q1() - x.q2(); | ||||
if ( x.pair1() == CA ) | if ( x.pair1() == CA ) | ||||
_qCA = x.q1(); | m_qCA = x.q1(); | ||||
else if ( x.pair2() == CA ) | else if ( x.pair2() == CA ) | ||||
_qCA = x.q2(); | m_qCA = x.q2(); | ||||
else | else | ||||
_qCA = dp.sum() - x.q1() - x.q2(); | m_qCA = dp.sum() - x.q1() - x.q2(); | ||||
} | } | ||||
double EvtDalitzPoint::q( EvtCyclic3::Pair i ) const | double EvtDalitzPoint::q( EvtCyclic3::Pair i ) const | ||||
{ | { | ||||
double ret = _qAB; | double ret = m_qAB; | ||||
if ( BC == i ) | if ( BC == i ) | ||||
ret = _qBC; | ret = m_qBC; | ||||
else if ( CA == i ) | else if ( CA == i ) | ||||
ret = _qCA; | ret = m_qCA; | ||||
return ret; | return ret; | ||||
} | } | ||||
double EvtDalitzPoint::m( EvtCyclic3::Index i ) const | double EvtDalitzPoint::m( EvtCyclic3::Index i ) const | ||||
{ | { | ||||
double ret = _mA; | double ret = m_mA; | ||||
if ( B == i ) | if ( B == i ) | ||||
ret = _mB; | ret = m_mB; | ||||
else if ( C == i ) | else if ( C == i ) | ||||
ret = _mC; | ret = m_mC; | ||||
return ret; | return ret; | ||||
} | } | ||||
// Zemach variables | // Zemach variables | ||||
double EvtDalitzPoint::qres( EvtCyclic3::Pair i ) const | double EvtDalitzPoint::qres( EvtCyclic3::Pair i ) const | ||||
{ | { | ||||
return ( 2. * q( i ) - q( EvtCyclic3::prev( i ) ) - | return ( 2. * q( i ) - q( EvtCyclic3::prev( i ) ) - | ||||
q( EvtCyclic3::next( i ) ) ) / | q( EvtCyclic3::next( i ) ) ) / | ||||
3.; | 3.; | ||||
} | } | ||||
double EvtDalitzPoint::qhel( EvtCyclic3::Pair i ) const | double EvtDalitzPoint::qhel( EvtCyclic3::Pair i ) const | ||||
{ | { | ||||
Pair j = next( i ); | Pair j = next( i ); | ||||
Pair k = prev( i ); | Pair k = prev( i ); | ||||
return ( q( j ) - q( k ) ) / 2.; | return ( q( j ) - q( k ) ) / 2.; | ||||
} | } | ||||
double EvtDalitzPoint::qsum() const | double EvtDalitzPoint::qsum() const | ||||
{ | { | ||||
return _qAB + _qBC + _qCA; | return m_qAB + m_qBC + m_qCA; | ||||
} | } | ||||
double EvtDalitzPoint::qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const | double EvtDalitzPoint::qMin( EvtCyclic3::Pair i, EvtCyclic3::Pair j ) const | ||||
{ | { | ||||
EvtDalitzPlot dp = getDalitzPlot(); | EvtDalitzPlot dp = getDalitzPlot(); | ||||
return dp.qMin( i, j, q( j ) ); | return dp.qMin( i, j, q( j ) ); | ||||
} | } | ||||
Show All 33 Lines | |||||
EvtDalitzCoord EvtDalitzPoint::getDalitzPoint( EvtCyclic3::Pair i, | EvtDalitzCoord EvtDalitzPoint::getDalitzPoint( EvtCyclic3::Pair i, | ||||
EvtCyclic3::Pair j ) const | EvtCyclic3::Pair j ) const | ||||
{ | { | ||||
return EvtDalitzCoord( i, q( i ), j, q( j ) ); | return EvtDalitzCoord( i, q( i ), j, q( j ) ); | ||||
} | } | ||||
EvtDalitzPlot EvtDalitzPoint::getDalitzPlot() const | EvtDalitzPlot EvtDalitzPoint::getDalitzPlot() const | ||||
{ | { | ||||
return EvtDalitzPlot( _mA, _mB, _mC, bigM() ); | return EvtDalitzPlot( m_mA, m_mB, m_mC, bigM() ); | ||||
} | } | ||||
bool EvtDalitzPoint::isValid() const | bool EvtDalitzPoint::isValid() const | ||||
{ | { | ||||
// Check masses | // Check masses | ||||
double M = bigM(); | double M = bigM(); | ||||
if ( _mA < 0 || _mB < 0 || _mC < 0 || M <= 0 ) | if ( m_mA < 0 || m_mB < 0 || m_mC < 0 || M <= 0 ) | ||||
return false; | return false; | ||||
if ( M < _mA + _mB + _mC ) | if ( M < m_mA + m_mB + m_mC ) | ||||
return false; | return false; | ||||
// Check that first coordinate is within absolute limits | // Check that first coordinate is within absolute limits | ||||
bool inside = false; | bool inside = false; | ||||
EvtDalitzPlot dp = getDalitzPlot(); | EvtDalitzPlot dp = getDalitzPlot(); | ||||
if ( dp.qAbsMin( AB ) <= _qAB && _qAB <= dp.qAbsMax( AB ) ) | if ( dp.qAbsMin( AB ) <= m_qAB && m_qAB <= dp.qAbsMax( AB ) ) | ||||
if ( qMin( BC, AB ) <= _qBC && _qBC <= qMax( BC, AB ) ) | if ( qMin( BC, AB ) <= m_qBC && m_qBC <= qMax( BC, AB ) ) | ||||
inside = true; | inside = true; | ||||
return inside; | return inside; | ||||
} | } | ||||
double EvtDalitzPoint::bigM() const | double EvtDalitzPoint::bigM() const | ||||
{ | { | ||||
return sqrt( _qAB + _qBC + _qCA - _mA * _mA - _mB * _mB - _mC * _mC ); | return sqrt( m_qAB + m_qBC + m_qCA - m_mA * m_mA - m_mB * m_mB - m_mC * m_mC ); | ||||
} | } | ||||
void EvtDalitzPoint::print() const | void EvtDalitzPoint::print() const | ||||
{ | { | ||||
getDalitzPlot().print(); | getDalitzPlot().print(); | ||||
printf( "%f %f %f\n", _qAB, _qBC, _qCA ); | printf( "%f %f %f\n", m_qAB, m_qBC, m_qCA ); | ||||
} | } |