Belle II Software  release-05-01-25
DecayTree.h
1 /**************************************************************************
2 * BASF2 (Belle Analysis Framework 2) *
3 * Copyright(C) 2010 - Belle II Collaboration *
4 * *
5 * Author: The Belle II Collaboration *
6 * Contributors: Christian Oswald *
7 * *
8 * This software is provided "as is" without any warranty. *
9 **************************************************************************/
10 #pragma once
11 #include <vector>
12 
13 namespace Belle2 {
21  template<class T>
22  class DecayTree {
23  private:
25  T* m_myObject;
27  std::vector< DecayTree<T>* > m_daughters;
28  public:
32  explicit DecayTree(T* obj);
34  ~DecayTree();
36  std::vector< DecayTree<T>* > getDaughters();
38  T* getObj();
40  void setObj(T* obj);
42  void clear();
44  void append(DecayTree<T>* t);
45  };
46 
47  template <class T>
48  DecayTree<T>::DecayTree() : m_myObject(0), m_daughters() {};
49 
50  template <class T>
51  DecayTree<T>::DecayTree(T* obj) : m_myObject(obj), m_daughters() {};
52 
53  template <class T>
55  {
56  m_myObject = 0;
57  while (!m_daughters.empty()) {
58  delete m_daughters.back();
59  m_daughters.pop_back();
60  }
61  };
62 
63  template <class T>
64  std::vector< DecayTree<T>* > DecayTree<T>::getDaughters()
65  {
66  return m_daughters;
67  }
68 
69  template <class T>
71  {
72  return m_myObject;
73  }
74 
75  template <class T>
76  void DecayTree<T>::setObj(T* obj)
77  {
78  m_myObject = obj;
79  }
80 
81  template <class T>
82  void DecayTree<T>::clear()
83  {
84  delete m_myObject;
85  m_myObject = 0;
86  while (!m_daughters.empty()) {
87  m_daughters.back().clear();
88  m_daughters.pop_back();
89  }
90  }
91 
92  template <class T>
94  {
95  m_daughters.push_back(t);
96  }
98 } // namespace Belle2
Belle2::DecayTree::getDaughters
std::vector< DecayTree< T > * > getDaughters()
Return list of decay daughters.
Definition: DecayTree.h:72
Belle2::DecayTree::~DecayTree
~DecayTree()
Destructor.
Definition: DecayTree.h:62
Belle2::DecayTree
This is a helper class for the MCDecayFinderModule.
Definition: DecayTree.h:30
Belle2::DecayTree::getObj
T * getObj()
Return the decaying object itself, e.g.
Definition: DecayTree.h:78
Belle2::DecayTree::DecayTree
DecayTree()
Default constructor.
Definition: DecayTree.h:56
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::DecayTree::m_daughters
std::vector< DecayTree< T > * > m_daughters
Decay daughters of m_myObject.
Definition: DecayTree.h:35
Belle2::DecayTree::clear
void clear()
Frees memory occupied by m_myObject and the daughter objects.
Definition: DecayTree.h:90
Belle2::DecayTree::append
void append(DecayTree< T > *t)
Add a daughter, which is a DecayTree itself.
Definition: DecayTree.h:101
Belle2::DecayTree::setObj
void setObj(T *obj)
Set the decaying object, e.g.
Definition: DecayTree.h:84
Belle2::DecayTree::m_myObject
T * m_myObject
The decaying object, e.g.
Definition: DecayTree.h:33