Belle II Software  release-06-02-00
DecayTree.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 #pragma once
9 #include <vector>
10 
11 namespace Belle2 {
19  template<class T>
20  class DecayTree {
21  private:
25  std::vector< DecayTree<T>* > m_daughters;
26  public:
28  DecayTree();
30  explicit DecayTree(T* obj);
32  ~DecayTree();
34  std::vector< DecayTree<T>* > getDaughters();
36  T* getObj();
38  void setObj(T* obj);
40  void clear();
42  void append(DecayTree<T>* t);
43  };
44 
45  template <class T>
46  DecayTree<T>::DecayTree() : m_myObject(0), m_daughters() {};
47 
48  template <class T>
49  DecayTree<T>::DecayTree(T* obj) : m_myObject(obj), m_daughters() {};
50 
51  template <class T>
53  {
54  m_myObject = 0;
55  while (!m_daughters.empty()) {
56  delete m_daughters.back();
57  m_daughters.pop_back();
58  }
59  };
60 
61  template <class T>
62  std::vector< DecayTree<T>* > DecayTree<T>::getDaughters()
63  {
64  return m_daughters;
65  }
66 
67  template <class T>
69  {
70  return m_myObject;
71  }
72 
73  template <class T>
74  void DecayTree<T>::setObj(T* obj)
75  {
76  m_myObject = obj;
77  }
78 
79  template <class T>
81  {
82  delete m_myObject;
83  m_myObject = 0;
84  while (!m_daughters.empty()) {
85  m_daughters.back().clear();
86  m_daughters.pop_back();
87  }
88  }
89 
90  template <class T>
92  {
93  m_daughters.push_back(t);
94  }
96 } // namespace Belle2
This is a helper class for the MCDecayFinderModule.
Definition: DecayTree.h:20
T * m_myObject
The decaying object, e.g.
Definition: DecayTree.h:23
std::vector< DecayTree< T > * > m_daughters
Decay daughters of m_myObject.
Definition: DecayTree.h:25
T * getObj()
Return the decaying object itself, e.g.
Definition: DecayTree.h:68
DecayTree()
Default constructor.
Definition: DecayTree.h:46
std::vector< DecayTree< T > * > getDaughters()
Return list of decay daughters.
Definition: DecayTree.h:62
~DecayTree()
Destructor.
Definition: DecayTree.h:52
void clear()
Frees memory occupied by m_myObject and the daughter objects.
Definition: DecayTree.h:80
void setObj(T *obj)
Set the decaying object, e.g.
Definition: DecayTree.h:74
void append(DecayTree< T > *t)
Add a daughter, which is a DecayTree itself.
Definition: DecayTree.h:91
Abstract base class for different kinds of events.