YAP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Protected Member Functions | Private Attributes | Friends | List of all members
SpinAmplitude Class Referenceabstract

Abstract base class implementing a spin amplitude. More...

#include <SpinAmplitude.h>

Inheritance diagram for SpinAmplitude:
StaticDataAccessor DataAccessor HelicitySpinAmplitude UnitSpinAmplitude ZemachSpinAmplitude

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
 
- Public Member Functions inherited from StaticDataAccessor
 StaticDataAccessor (Model &m, const ParticleCombinationEqualTo &equal)
 
const Modelmodel () const override
 
- Public Member Functions inherited from DataAccessor
 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)
 
- Protected Member Functions inherited from StaticDataAccessor
virtual void registerWithModel () override
 register with Model
 
virtual void addToStaticDataAccessors ()
 add to model's StaticDataAccessors_
 
StaticDataAccessorVector & staticDataAccessors ()
 access to the model's StaticDataAccessors_
 
- Protected Member Functions inherited from DataAccessor
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

- Public Attributes inherited from DataAccessor
friend Model
 grant friend status to Model to access CachedValues_
 
friend CachedValue
 grant friend status to CachedValue to call addCachedValue
 

Detailed Description

Abstract base class implementing a spin amplitude.

Author
Johannes Rauch, Daniel Greenwald

Constructor & Destructor Documentation

SpinAmplitude ( Model m,
unsigned  two_J,
const SpinVector &  two_j,
unsigned  l,
unsigned  two_s,
const ParticleCombinationEqualTo &  equal 
)
protected

Constructor; declared protected to ensure SpinAmplitude's are only created by a SpinAmplitudeCache

Parameters
mOwning Model
two_Jtwice the spin of Initial-state
two_jSpinVector of daughters
lorbital angular momentum
two_stwice the total spin angular momentum
equalParticleCombination equality struct for determining index assignments

Member Function Documentation

void addAmplitude ( int  two_M,
const SpinProjectionVector &  two_m,
bool  store_null = false 
)
protected

add spin amplitude for transition from state with initial projection to states with final projections.

Parameters
two_Mtwice the spin projection of the initial state
two_mSpinProjectionVector of daughters
store_nullstore a NULL CachedValue shared_pointer (set true for use from UnitSpinAmplitude)
virtual const std::complex<double> amplitude ( const DataPoint d,
const std::shared_ptr< ParticleCombination > &  pc,
int  two_M,
const SpinProjectionVector &  two_m 
) const
inlinevirtual
Returns
precalculated complex amplitude
Parameters
dDataPoint to retrieve value from
pcParticleCombination to retrieve value for
two_M2 * spin projection of parent
two_mSpinProjectionVector of daughters

Reimplemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.

virtual const std::complex<double> calc ( int  two_M,
const SpinProjectionVector &  two_m,
const DataPoint d,
const std::shared_ptr< ParticleCombination > &  pc 
) const
pure virtual

Calculate spin amplitude for caching. Must be overrided in derived classes.

Parameters
two_M2 * spin projection of parent
two_mSpinProjectionVector of daughters
dDataPoint to retrieve data from for calculation
pcParticleCombination to calculate for

Implemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.

void calculate ( DataPoint d,
StatusManager sm 
) const
overridevirtual

Loops over particle combinations (pc) and all (M, vec{m}) combinations and call calc(M, {m}, d, pc) when necessary

Parameters
dDataPoint to calculate into
smStatusManager to update

Implements StaticDataAccessor.

Reimplemented in HelicitySpinAmplitude, and ZemachSpinAmplitude.

const SpinVector& finalTwoJ ( ) const
inline
Returns
SpinVector of daughters (const)
virtual std::string formalism ( ) const
pure virtual
Returns
a string naming the formalism used for the SpinAmplitude calculation

Implemented in HelicitySpinAmplitude, ZemachSpinAmplitude, and UnitSpinAmplitude.

const unsigned initialTwoJ ( ) const
inline
Returns
initial spin * 2 (const)
const unsigned L ( ) const
inline
Returns
orbital angular momentum
const std::set< int > twoM ( ) const
Returns
set of (twice the) spin projections of initial state
const std::set< SpinProjectionVector > twoM ( int  two_M) const
Returns
set of daughter spin projections for given initial state spin projection
const unsigned twoS ( ) const
inline
Returns
total spin angular momentum */

The documentation for this class was generated from the following files: