diff --git a/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.cc b/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.cc index 28fa6249e..91b610056 100644 --- a/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.cc +++ b/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.cc @@ -52,9 +52,9 @@ void PiPiSWaveAMPK::setParametrization() -/////////////////////// Amplitude Calculation ////////////////////////// +//////////////////Calculate user variables (CPU only)//////////////////// -complex PiPiSWaveAMPK::calcAmplitude( GDouble** pKin ) const +void PiPiSWaveAMPK::calcUserVars( GDouble** pKin, GDouble* userVars ) const { TLorentzVector pion1_P4, pion2_P4, dipion_P4, temp_P4; @@ -109,17 +109,28 @@ complex PiPiSWaveAMPK::calcAmplitude( GDouble** pKin ) const //Now calculate the T_{11} matrix element using the T11 to M11 relation T11 = 1./(M11 - imag*rho11); + + userVars[uv_ampRe] = T11.real(); + userVars[uv_ampIm] = T11.imag(); + + return; - return T11; } +/////////////////////// Amplitude Calculation ////////////////////////// + +complex PiPiSWaveAMPK::calcAmplitude( GDouble** pKin, GDouble* userVars ) const +{ + return complex ( userVars[uv_ampRe], userVars[uv_ampIm] ); +} -//This function may be used instead of the separate amplitude ' breakupMomentumComplex' -template complex PiPiSWaveAMPK::breakupMom(mType m, GDouble mDec1, GDouble mDec2) const{ - complex result = PiPiSWaveAMPK::phaseSpaceFac(m, mDec1, mDec2)*m/GDouble(2.); - return result; +//This function may be used instead of 'breakupMomentumComplex' from breakupMomentum.cc +template complex PiPiSWaveAMPK::breakupMom(mType m, GDouble mDec1, GDouble mDec2) const +{ + complex sqrtval = std::sqrt((m*m-(mDec1+mDec2)*(mDec1+mDec2))*(m*m-(mDec1-mDec2)*(mDec1-mDec2))); + return sqrtval/GDouble(2.)/m; } diff --git a/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.h b/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.h index 3a813e276..0b384f926 100644 --- a/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.h +++ b/src/libraries/AMPTOOLS_AMPS/PiPiSWaveAMPK.h @@ -33,11 +33,17 @@ class PiPiSWaveAMPK : public UserAmplitude{ PiPiSWaveAMPK() : UserAmplitude () { } PiPiSWaveAMPK( const vector &args ); ~PiPiSWaveAMPK(){} - - string name() const { return "PiPiSWaveAMPK"; } + + enum UserVars { uv_ampRe = 0, uv_ampIm = 0, kNumUserVars }; + unsigned int numUserVars() const { return kNumUserVars; } + void calcUserVars( GDouble **pKin, GDouble *userVars ) const; + bool needsUserVarsOnly() const { return true; } + + string name() const { return "PiPiSWaveAMPK"; } void setParametrization(); - complex calcAmplitude( GDouble** pKin ) const; + complex calcAmplitude( GDouble **pKin, GDouble *userVars ) const; + #ifdef GPU_ACCELERATION void launchGPUKernel( dim3 dimGrid, dim3 dimBlock, GPU_AMP_PROTO ) const; @@ -60,9 +66,7 @@ class PiPiSWaveAMPK : public UserAmplitude{ const GDouble _kaonNeutralMass = 0.5*(ParticleMass(KLong) + ParticleMass(KShort)); //0.49761400; const GDouble _kaonMeanMass = 0.5*(_kaonChargedMass + _kaonNeutralMass); //0.5*(0.49367700 + 0.49761400); - - complex phaseSpaceFac( GDouble m, GDouble mDec1, GDouble mDec2 ) const; template complex breakupMom( mType m, GDouble mDec1, GDouble mDec2 ) const; diff --git a/src/programs/AmplitudeAnalysis/isops_plotter/isops_plotter.cc b/src/programs/AmplitudeAnalysis/isops_plotter/isops_plotter.cc index 2edc2b6d3..29ecb4a65 100644 --- a/src/programs/AmplitudeAnalysis/isops_plotter/isops_plotter.cc +++ b/src/programs/AmplitudeAnalysis/isops_plotter/isops_plotter.cc @@ -248,7 +248,7 @@ int main( int argc, char* argv[] ){ bool singleData = irefl == reflname.size() && iamp == amphistname.size(); bool singleFlatWave = (irefl == 0 && iamp > 0) || (irefl > 0 && iamp == 0); - // if (iplot == PlotGenerator::kGenMC) continue; // no acceptance correction + if ( iplot == PlotGenerator::kGenMC) continue; // no acceptance correction if ( iplot == PlotGenerator::kData && !singleData ) continue; // only plot data once if ( iplot == PlotGenerator::kBkgnd && !singleData ) continue; // only plot background once if ( iplot == PlotGenerator::kAccMC && singleFlatWave ) continue; // only plot Flat wave once