21 #ifndef yap_SpinAmplitudeCache_h
22 #define yap_SpinAmplitudeCache_h
50 bool equal(
const std::shared_ptr<SpinAmplitude>& A,
const std::shared_ptr<SpinAmplitude>& B)
const override
51 {
return (A.get() == B.get()) or A->equalTo(*B); }
60 weak_ptr_type find(
unsigned two_J,
const SpinVector& two_j,
unsigned L,
unsigned two_S)
const;
67 std::shared_ptr<SpinAmplitude>
spinAmplitude(
unsigned two_J,
const SpinVector& two_j,
unsigned L,
unsigned two_S);
86 std::shared_ptr<SpinAmplitude>
unit(
Model& m,
unsigned two_J,
const SpinVector& two_j,
unsigned L,
unsigned two_S)
const
87 {
return std::shared_ptr<SpinAmplitude>(
new UnitSpinAmplitude(m, two_J, two_j, L, two_S)); }
98 virtual std::shared_ptr<SpinAmplitude>
create(
Model& m,
unsigned two_J,
const SpinVector& two_j,
unsigned L,
unsigned two_S)
const = 0;
std::shared_ptr< SpinAmplitude > unit(Model &m, unsigned two_J, const SpinVector &two_j, unsigned L, unsigned two_S) const
Definition: SpinAmplitudeCache.h:86
Implements a spin amplitude that always returns Complex_1.
Definition: UnitSpinAmplitude.h:37
bool consistent() const
Check consistency of cache. Skips expired entries.
Definition: SpinAmplitudeCache.cxx:39
Template for a cache of weak_ptr's to objects.
Definition: WeakPtrCache.h:37
std::shared_ptr< SpinAmplitude > spinAmplitude(unsigned two_J, const SpinVector &two_j, unsigned L, unsigned two_S)
Definition: SpinAmplitudeCache.cxx:21
weak_ptr_type find(unsigned two_J, const SpinVector &two_j, unsigned L, unsigned two_S) const
Definition: SpinAmplitudeCache.cxx:8
virtual std::shared_ptr< SpinAmplitude > create(Model &m, unsigned two_J, const SpinVector &two_j, unsigned L, unsigned two_S) const =0
void setModel(Model &model)
set raw pointer to owning Model
Definition: SpinAmplitudeCache.cxx:49
std::weak_ptr< SpinAmplitude > weak_ptr_type
std::weak_ptr to T
Definition: WeakPtrCache.h:53
Caches SpinAmplitudes.
Definition: SpinAmplitudeCache.h:39
Class implementing a PWA model.
Definition: Model.h:56
SpinAmplitudeCache(Model *model=nullptr)
Definition: SpinAmplitudeCache.h:46
weak_ptr_type find(shared_ptr_type t) const
Definition: WeakPtrCache.h:93
bool equal(const std::shared_ptr< SpinAmplitude > &A, const std::shared_ptr< SpinAmplitude > &B) const override
Equality.
Definition: SpinAmplitudeCache.h:50
Model * Model_
raw pointer to Model this cache belongs to
Definition: SpinAmplitudeCache.h:101