diff --git a/EvtGenBase/EvtTensorParticle.hh b/EvtGenBase/EvtTensorParticle.hh --- a/EvtGenBase/EvtTensorParticle.hh +++ b/EvtGenBase/EvtTensorParticle.hh @@ -24,6 +24,8 @@ #include "EvtGenBase/EvtParticle.hh" #include "EvtGenBase/EvtTensor4C.hh" +#include + class EvtTensorParticle : public EvtParticle { public: EvtTensorParticle() = default; @@ -42,7 +44,7 @@ double gamma ) const override; private: - EvtTensor4C eps[5]; //eps1,eps2,eps3,eps4,eps5; + std::array eps; //eps1,eps2,eps3,eps4,eps5; EvtTensorParticle( const EvtTensorParticle& tensor ); EvtTensorParticle& operator=( const EvtTensorParticle& tensor ); diff --git a/EvtGenBase/EvtVectorParticle.hh b/EvtGenBase/EvtVectorParticle.hh --- a/EvtGenBase/EvtVectorParticle.hh +++ b/EvtGenBase/EvtVectorParticle.hh @@ -25,6 +25,9 @@ #include "EvtGenBase/EvtVector4C.hh" #include "EvtGenBase/EvtVector4R.hh" +#include +#include + class EvtId; class EvtVectorParticle : public EvtParticle { @@ -37,15 +40,22 @@ const EvtVector4C&, const EvtVector4C& ); EvtVector4C epsParent( int i ) const override { + assert( i >= 0 && i < _eps.size() ); + return boostTo( _eps[i], this->getP4() ); } - EvtVector4C eps( int i ) const override { return _eps[i]; } + EvtVector4C eps( int i ) const override + { + assert( i >= 0 && i < _eps.size() ); + + return _eps[i]; + } EvtSpinDensity rotateToHelicityBasis() const override; EvtSpinDensity rotateToHelicityBasis( double alpha, double beta, double gamma ) const override; private: - EvtVector4C _eps[3]; + std::array _eps; EvtVectorParticle( const EvtVectorParticle& vector ); EvtVectorParticle& operator=( const EvtVectorParticle& vector ); diff --git a/History.md b/History.md --- a/History.md +++ b/History.md @@ -12,6 +12,9 @@ ## R02-0X-00 19 Feb 2024 Fernando Abudinen +* D108: Bugfix protect polarisation vector for vector and tensor particles against wrong indices + +19 Feb 2024 Fernando Abudinen * D107: Implement const correctness for epsPhoton and epsParentPhoton 3 Feb 2024 John Back diff --git a/src/EvtGenBase/EvtTensorParticle.cpp b/src/EvtGenBase/EvtTensorParticle.cpp --- a/src/EvtGenBase/EvtTensorParticle.cpp +++ b/src/EvtGenBase/EvtTensorParticle.cpp @@ -27,6 +27,7 @@ #include "EvtGenBase/EvtVector4C.hh" #include "EvtGenBase/EvtVector4R.hh" +#include #include #include #include @@ -84,15 +85,15 @@ EvtTensor4C EvtTensorParticle::epsTensorParent( int i ) const { - EvtTensor4C temp = eps[i]; + assert( i >= 0 && i < eps.size() ); - temp.applyBoostTo( this->getP4() ); - return temp; + return boostTo( eps[i], this->getP4() ); } //epsParent EvtTensor4C EvtTensorParticle::epsTensor( int i ) const { + assert( i >= 0 && i < eps.size() ); return eps[i]; } //eps diff --git a/src/EvtGenModels/EvtBcToNPi.cpp b/src/EvtGenModels/EvtBcToNPi.cpp --- a/src/EvtGenModels/EvtBcToNPi.cpp +++ b/src/EvtGenModels/EvtBcToNPi.cpp @@ -301,7 +301,7 @@ 2 * I * FV * dual( EvtGenFunctions::directProd( p, k ) ); EvtVector4C Heps = H.cont2( hardCur ); - for ( int i = 0; i < 4; i++ ) { + for ( int i = 0; i < 3; i++ ) { EvtVector4C eps = root_particle->getDaug( 0 ) ->epsParent( i ) .conj(); // psi-meson polarization vector diff --git a/src/EvtGenModels/EvtBcVNpi.cpp b/src/EvtGenModels/EvtBcVNpi.cpp --- a/src/EvtGenModels/EvtBcVNpi.cpp +++ b/src/EvtGenModels/EvtBcVNpi.cpp @@ -183,7 +183,7 @@ H.addDirProd( ( a0f - a3f ) * 2.0 * ( m_meson / Q2 ) * p4b, p4b - p4meson ); EvtVector4C Heps = H.cont2( hardCur ); - for ( int i = 0; i < 4; i++ ) { + for ( int i = 0; i < 3; i++ ) { EvtVector4C eps = root_particle->getDaug( 0 ) ->epsParent( i ) .conj(); // psi-meson polarization vector