YAP
|
Abstract base class implementing a spin amplitude. More...
#include <SpinAmplitude.h>
Public Types | |
using | AmplitudeSubmap = std::map< SpinProjectionVector, std::shared_ptr< ComplexCachedValue > > |
maps SpinProjectionVector to ComplexCachedValue | |
using | AmplitudeMap = std::map< int, AmplitudeSubmap > |
maps parent spin projectin to AmplitudeSubmap | |
Public Member Functions | |
virtual | operator std::string () const |
cast into string | |
virtual const std::complex < double > | calc (int two_M, const SpinProjectionVector &two_m, const DataPoint &d, const std::shared_ptr< ParticleCombination > &pc) const =0 |
virtual void | calculate (DataPoint &d, StatusManager &sm) const override |
virtual const std::complex < double > | amplitude (const DataPoint &d, const std::shared_ptr< ParticleCombination > &pc, int two_M, const SpinProjectionVector &two_m) const |
bool | equalTo (const SpinAmplitude &other) const |
check equivalence: only check spins and angular momenta | |
virtual bool | equals (const SpinAmplitude &other) const |
check equality: calls equalTo and checks symmetrizationIndices | |
virtual std::string | formalism () const =0 |
Getters | |
const unsigned | initialTwoJ () const |
const SpinVector & | finalTwoJ () const |
const unsigned | L () const |
const unsigned | twoS () const |
const std::set< int > | twoM () const |
const std::set < SpinProjectionVector > | twoM (int two_M) const |
![]() | |
StaticDataAccessor (Model &m, const ParticleCombinationEqualTo &equal) | |
const Model * | model () const override |
![]() | |
DataAccessor (const ParticleCombinationEqualTo &equal) | |
const ParticleCombinationEqualTo & | equal () const |
int | index () const |
unsigned | symmetrizationIndex (const std::shared_ptr< ParticleCombination > &c) const |
const ParticleCombinationMap < unsigned > & | symmetrizationIndices () const |
const unsigned | nSymmetrizationIndices () const |
void | printParticleCombinations () const |
print ParticleCombination map | |
const CachedValueSet & | CachedValues () const |
const unsigned | size () const |
const bool | requiresStorage () const |
bool | consistent () const |
Check consistency of object. | |
Protected Member Functions | |
SpinAmplitude (Model &m, unsigned two_J, const SpinVector &two_j, unsigned l, unsigned two_s, const ParticleCombinationEqualTo &equal) | |
void | addAmplitude (int two_M, const SpinProjectionVector &two_m, bool store_null=false) |
![]() | |
virtual void | registerWithModel () override |
register with Model | |
virtual void | addToStaticDataAccessors () |
add to model's StaticDataAccessors_ | |
StaticDataAccessorVector & | staticDataAccessors () |
access to the model's StaticDataAccessors_ | |
![]() | |
void | addCachedValue (std::shared_ptr< CachedValue > c) |
add CachedValue | |
virtual void | addParticleCombination (std::shared_ptr< ParticleCombination > pc) |
add ParticleCombination to SymmetrizationIndices_ | |
virtual void | pruneSymmetrizationIndices () |
prune SymmetrizationIndices_ to only contain ParticleCombination's tracing back up the ISP | |
void | setIndex (size_t i) |
set storage index used in DataPoint. Must be unique. | |
Private Attributes | |
unsigned | InitialTwoJ_ |
Initial-state spin * 2. | |
SpinVector | FinalTwoJ_ |
SpinVector of daughters. | |
unsigned | L_ |
orbital angular momentum | |
unsigned | TwoS_ |
twice the total spin angular momentum | |
AmplitudeMap | Amplitudes_ |
Cached complex spin amplitude. | |
Friends | |
class | DecayChannel |
grant friend access to DecayChannel to call addParticleCombination | |
bool | operator== (const SpinAmplitude &A, const SpinAmplitude &B) |
equality operator | |
Additional Inherited Members | |
![]() | |
friend | Model |
grant friend status to Model to access CachedValues_ | |
friend | CachedValue |
grant friend status to CachedValue to call addCachedValue | |
Abstract base class implementing a spin amplitude.
|
protected |
Constructor; declared protected to ensure SpinAmplitude's are only created by a SpinAmplitudeCache
m | Owning Model |
two_J | twice the spin of Initial-state |
two_j | SpinVector of daughters |
l | orbital angular momentum |
two_s | twice the total spin angular momentum |
equal | ParticleCombination equality struct for determining index assignments |
|
protected |
add spin amplitude for transition from state with initial projection to states with final projections.
two_M | twice the spin projection of the initial state |
two_m | SpinProjectionVector of daughters |
store_null | store a NULL CachedValue shared_pointer (set true for use from UnitSpinAmplitude) |
|
inlinevirtual |
d | DataPoint to retrieve value from |
pc | ParticleCombination to retrieve value for |
two_M | 2 * spin projection of parent |
two_m | SpinProjectionVector of daughters |
Reimplemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.
|
pure virtual |
Calculate spin amplitude for caching. Must be overrided in derived classes.
two_M | 2 * spin projection of parent |
two_m | SpinProjectionVector of daughters |
d | DataPoint to retrieve data from for calculation |
pc | ParticleCombination to calculate for |
Implemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.
|
overridevirtual |
Loops over particle combinations (pc) and all (M, vec{m}) combinations and call calc(M, {m}, d, pc) when necessary
d | DataPoint to calculate into |
sm | StatusManager to update |
Implements StaticDataAccessor.
Reimplemented in HelicitySpinAmplitude, and ZemachSpinAmplitude.
|
inline |
|
pure virtual |
Implemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.
|
inline |
|
inline |
const std::set< int > twoM | ( | ) | const |
const std::set< SpinProjectionVector > twoM | ( | int | two_M | ) | const |
|
inline |