21 #ifndef yap_UnitSpinAmplitude_h
22 #define yap_UnitSpinAmplitude_h
24 #include "ClebschGordan.h"
42 const std::complex<double>
calc(
int two_M,
const SpinProjectionVector& two_m,
43 const DataPoint& d,
const std::shared_ptr<ParticleCombination>& pc)
const override
51 virtual const std::complex<double>
amplitude(
const DataPoint& d,
const std::shared_ptr<ParticleCombination>& pc,
52 int two_M,
const SpinProjectionVector& two_m)
const override
57 {
return "unit-valued"; }
73 if (two_j.size() > 2 and (two_J != 0 or l != 0 or two_s != 0 or std::any_of(two_j.begin(), two_j.end(), [](
unsigned j){
return j != 0;})))
74 throw exceptions::Exception(
"More than 2 daughters, but not all spins are 0",
"UnitSpinAmplitude::UnitSpinAmplitude");
79 if (two_m.size() > 2) {
83 if (ClebschGordan::nonzeroCoupling(two_j[0], two_m[0], two_j[1], two_m[1], l, two_s, two_J))
const SpinProjectionVector projections(unsigned two_j)
Definition: Spin.h:77
Implements a spin amplitude that always returns Complex_1.
Definition: UnitSpinAmplitude.h:37
virtual std::string formalism() const override
Definition: UnitSpinAmplitude.h:56
Class for holding data and cached values per data point for fast calculation.
Definition: DataPoint.h:35
constexpr bool equal_always(const std::shared_ptr< const ParticleCombination > &A, const std::shared_ptr< const ParticleCombination > &B)
compare shared_ptr's to ParticleCombination, returning true always
Definition: ParticleCombination.h:113
Base class for handling YAP exceptions.
Definition: Exceptions.h:39
Caches SpinAmplitudes.
Definition: SpinAmplitudeCache.h:39
Class implementing a PWA model.
Definition: Model.h:56
UnitSpinAmplitude(Model &m, unsigned two_J, const SpinVector &two_j, unsigned l, unsigned two_s)
Definition: UnitSpinAmplitude.h:69
Definition: Exceptions.h:72
virtual const std::complex< double > amplitude(const DataPoint &d, const std::shared_ptr< ParticleCombination > &pc, int two_M, const SpinProjectionVector &two_m) const override
Definition: UnitSpinAmplitude.h:51
void addAmplitude(int two_M, const SpinProjectionVector &two_m, bool store_null=false)
Definition: SpinAmplitude.cxx:86
constexpr auto Complex_1
complex one
Definition: Constants.h:38
const std::complex< double > calc(int two_M, const SpinProjectionVector &two_m, const DataPoint &d, const std::shared_ptr< ParticleCombination > &pc) const override
Definition: UnitSpinAmplitude.h:42
Abstract base class implementing a spin amplitude.
Definition: SpinAmplitude.h:46