21 #ifndef yap_DecayingParticle_h
22 #define yap_DecayingParticle_h
24 #include "fwd/AmplitudeComponent.h"
25 #include "fwd/BlattWeisskopf.h"
26 #include "fwd/DataAccessor.h"
27 #include "fwd/DecayChannel.h"
28 #include "fwd/DecayTree.h"
29 #include "fwd/FreeAmplitude.h"
30 #include "fwd/Model.h"
31 #include "fwd/ParticleCombination.h"
32 #include "fwd/PhaseSpaceFactor.h"
33 #include "fwd/QuantumNumbers.h"
34 #include "fwd/SpinAmplitude.h"
65 static std::shared_ptr<DecayingParticle>
create(std::string name,
const QuantumNumbers& q,
double radialSize, std::shared_ptr<PhaseSpaceFactorFactory> phsp_factory = DefaultPHSPFactory)
66 {
return std::shared_ptr<DecayingParticle>(
new DecayingParticle(name, q, radialSize, phsp_factory)); }
83 virtual std::shared_ptr<DecayChannel>
addChannel(std::shared_ptr<DecayChannel> c);
88 std::shared_ptr<DecayChannel>
addChannel(
const ParticleVector& daughters);
95 template <
typename ... Types>
96 std::shared_ptr<DecayChannel>
addChannel(std::shared_ptr<Particle> A, std::shared_ptr<Particle> B, Types ... other_daughters)
97 { ParticleVector V{A, B, other_daughters...};
return addChannel(V); }
118 { printDecayChainLevel(0); }
143 void printDecayChainLevel(
int level)
const;
176 std::string
to_string(
const DecayTreeVectorMap& m_dtv_map);
185 template <
typename Last,
typename ... Predicates>
193 template <
typename Last,
typename ... Predicates>
201 template <
typename Last,
typename ... UnaryPredicates>
207 template <
typename Last,
typename ... UnaryPredicates>
212 ParticleSet
particles(DecayingParticle& dp);
215 template <
typename Last,
typename ... UnaryPredicates>
221 template <
typename Last,
typename ... UnaryPredicates>
BlattWeisskopfMap BlattWeisskopfs_
map of Blatt-Weisskopf barrier factors, key = angular momentum
Definition: DecayingParticle.h:162
DecayTreeSet::value_type decay_tree(const DecayingParticle &dp, Last p, Predicates...P)
Definition: DecayingParticle.h:194
DecayChannelSet::value_type decay_channel(const DecayingParticle &dp, Last p, UnaryPredicates...P)
Definition: DecayingParticle.h:222
container::value_type lone_elt(container &C)
Definition: Filter.h:39
virtual std::shared_ptr< PhaseSpaceFactor > phaseSpaceFactor(const DecayChannel &dc, const SpinAmplitude &sa)
Definition: DecayingParticle.cxx:57
DecayTreeSet decay_trees(const DecayingParticle &dp)
Definition: DecayingParticle.cxx:368
DecayingParticle(std::string name, const QuantumNumbers &q, double radialSize, std::shared_ptr< PhaseSpaceFactorFactory > phsp_factory)
Definition: DecayingParticle.cxx:22
virtual std::shared_ptr< DecayChannel > addChannel(std::shared_ptr< DecayChannel > c)
Definition: DecayingParticle.cxx:74
const DecayChannelVector & channels() const
Definition: DecayingParticle.h:103
std::shared_ptr< RealParameter > RadialSize_
Radial size parameter [GeV^-1].
Definition: DecayingParticle.h:165
Class holding vectors of fixed and free amplitudes that define a decay tree.
Definition: DecayTree.h:49
friend Model
grant friend status to Model to call fixSolitaryFreeAmplitudes()
Definition: DecayingParticle.h:124
DecayChannelVector Channels_
vector of decay channel objects
Definition: DecayingParticle.h:159
const Model * model() const override
Definition: DecayingParticle.cxx:219
virtual void modifyDecayTree(DecayTree &dt)
Definition: DecayingParticle.cxx:318
ParticleSet particles(DecayingParticle &dp)
Definition: DecayingParticle.cxx:357
std::shared_ptr< DecayChannel > addChannel(std::shared_ptr< Particle > A, std::shared_ptr< Particle > B, Types...other_daughters)
Definition: DecayingParticle.h:96
friend DecayChannel
grant friend status to DecayChannel to call registerWithModel()
Definition: DecayingParticle.h:127
void printDecayChain() const
Print complete decay chain.
Definition: DecayingParticle.h:117
virtual void registerWithModel() override
register any necessary DataAccessor's with model
Definition: DecayingParticle.cxx:225
std::shared_ptr< PhaseSpaceFactorFactory > PhaseSpaceFactorFactory_
PhaseSpaceFactorFactory.
Definition: DecayingParticle.h:171
DecayChannelSet decay_channels(const DecayingParticle &dp, Last p, UnaryPredicates...P)
Definition: DecayingParticle.h:216
virtual void checkDecayChannel(const DecayChannel &c) const
Definition: DecayingParticle.cxx:65
const DecayTreeVectorMap & decayTrees() const
Definition: DecayingParticle.h:70
DecayTreeVectorMap DecayTrees_
Map of spin projection to DecayTreeVector.
Definition: DecayingParticle.h:168
Class implementing a PWA model.
Definition: Model.h:56
std::shared_ptr< RealParameter > radialSize()
Definition: DecayingParticle.h:107
const std::string & name() const
Get name (const)
Definition: Particle.h:72
FreeAmplitudeSet free_amplitudes(const DecayingParticle &dp)
Definition: DecayingParticle.cxx:377
static std::shared_ptr< DecayingParticle > create(std::string name, const QuantumNumbers &q, double radialSize, std::shared_ptr< PhaseSpaceFactorFactory > phsp_factory=DefaultPHSPFactory)
Definition: DecayingParticle.h:65
virtual bool consistent() const override
Check consistency of object.
Definition: DecayingParticle.cxx:30
FreeAmplitudeSet::value_type free_amplitude(const DecayingParticle &dp, Last p, UnaryPredicates...P)
Definition: DecayingParticle.h:208
void fixSolitaryFreeAmplitudes()
if only one decay channel is available, fix its free amplitude to the current value ...
Definition: DecayingParticle.cxx:263
std::set< std::shared_ptr< T > > filter(const std::set< std::shared_ptr< T > > &S, Last p, UnaryPredicates...P)
Definition: Filter.h:60
std::string to_string(const CachedValue::Status &S)
streaming operator for CachedValue::Status
Definition: CachedValue.cxx:27
Definition: DecayingParticle.h:51
Abstract Particle base class.
Definition: Particle.h:47
Quantum numbers of a Particle.
Definition: QuantumNumbers.h:35
virtual void pruneParticleCombinations() override
prune ParticleCombinations_ to only contain ParticleCombination's tracing back up the ISP ...
Definition: DecayingParticle.cxx:254
virtual void addParticleCombination(const std::shared_ptr< ParticleCombination > &c) override
add ParticleCombination to SymmetrizationIndices_ and BlattWeisskopfs_
Definition: DecayingParticle.cxx:235
const BlattWeisskopfMap & blattWeisskopfs() const
Definition: DecayingParticle.h:111
Class implementing a decay channel.
Definition: DecayChannel.h:40
Abstract base class implementing a spin amplitude.
Definition: SpinAmplitude.h:46
std::shared_ptr< PhaseSpaceFactorFactory > phaseSpaceFactorFactory()
Definition: DecayingParticle.h:153