AmpGen 2.1
Loading...
Searching...
No Matches
RecursivePhaseSpace.h
Go to the documentation of this file.
1#ifndef AMPGEN_RECURSIVEPHASESPACE_H
2#define AMPGEN_RECURSIVEPHASESPACE_H
3
4#include <memory.h>
5#include <stddef.h>
6#include <algorithm>
7#include <memory>
8#include <ostream>
9#include <string>
10#include <vector>
11#include <utility>
12
13#include "AmpGen/EventType.h"
14#include "AmpGen/PhaseSpace.h"
15
16#include <TRandom3.h>
17
18class TRandom;
19
20namespace AmpGen {
21 class Particle;
22 class Event;
33 private:
34 struct Node {
35 std::string name = {""};
36 int sink = {-1};
37 std::shared_ptr<RecursivePhaseSpace> decayProds = {nullptr};
38 explicit Node(const std::string &_name) : name(_name) {};
39 };
40
41 public:
42 explicit RecursivePhaseSpace(const EventType &type);
43 RecursivePhaseSpace(const Particle &decayChain, const EventType &type, TRandom *rndm = gRandom);
44 std::vector<Node *> getFinalStates();
45
46 void print(const size_t &offset = 0) const;
47 void setRandom(TRandom *rand);
49 size_t size() const;
51 void debug(const Event & /*event*/) {};
52
53 private:
54 PhaseSpace m_phsp;
55 unsigned m_totalSize = {0};
56 std::string m_name = {""};
57 EventType m_eventType;
58 std::vector<Node> m_nodes;
59 };
60} // namespace AmpGen
61
62#endif
Encapsulates the final state particles of a single event.
Definition Event.h:19
Deals with final state configuration of events, specifically dealing with the ordering of particles i...
Definition EventType.h:22
Describes a particle, its decay process and subsequent decay products, which are also Particles.
Definition Particle.h:103
Phase-space generator taken from the ROOT routine, from Rene Brun and Valerio Filippini,...
Definition PhaseSpace.h:22
RecursivePhaseSpace(const EventType &type)
void print(const size_t &offset=0) const
EventType eventType() const
std::vector< Node * > getFinalStates()
RecursivePhaseSpace(const Particle &decayChain, const EventType &type, TRandom *rndm=gRandom)
void setRandom(TRandom *rand)