23 part->setTreePointer(
this);
27 prodVtx->setTreePointer(
this);
28 decVtx->setTreePointer(
this);
33 throw VertexException(
"KinematicTree::finalStateParticles; tree is empty or not consistent");
36 std::vector<RefCountedKinematicParticle> rs;
39 std::cout <<
"top particle has no daughters, empty vector returned" << std::endl;
43 bool next_right =
true;
64 throw VertexException(
"KinematicTree::FinalStateParticles; error occured while getting back");
93 throw VertexException(
"KinematicTree::currentDecayVertex; tree is empty!");
103 std::pair<bool, RefCountedKinematicParticle> res;
110 throw VertexException(
"KinematicTree::motherParticle; tree is incorrect!");
115 throw VertexException(
"KinematicTree::motherParticle; tree is incorrect!");
116 }
while (*(
treeWalker->current().second) != *cr);
118 res = std::pair<bool, RefCountedKinematicParticle>(
true, pr);
122 return std::pair<bool, RefCountedKinematicParticle>(
false, fk);
128 throw VertexException(
"KinematicTree::daughterParticles; tree is empty!");
129 std::vector<RefCountedKinematicParticle> sResult;
133 sResult.push_back(
treeWalker->current().second);
138 sResult.push_back(
treeWalker->current().second);
145 throw VertexException(
"KinematicTree::daughterParticles; error occured while getting back");
151 throw VertexException(
"KinematicTree::movePointerToTheTop; tree is empty!");
159 throw VertexException(
"KinematicTree::movePointerToTheTop; non consistent tree?");
164 throw VertexException(
"KinematicTree::currentProductionVertex; tree is empty!");
182 if (initial ==
treeWalker->current().second) {
194 throw VertexException(
"KinematicTree::Navigation failed, tree invalid?");
207 throw VertexException(
"KinematicTree::movePointerToTheTop; non consistent tree?");
214 throw VertexException(
"KinematicTree::currentParticle; tree is empty!");
220 throw VertexException(
"KinematicTree::movePointerToTheMother; tree is empty!");
222 bool cr =
treeWalker->current().first->vertexIsValid();
228 throw VertexException(
"KinematicTree::movePointerToTheFirstChild; tree is empty!");
234 throw VertexException(
"KinematicTree::movePointerToTheNextChild; tree is empty!");
241 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
252 bool next_right =
false;
263 }
while (up && !found);
281 }
while (next && !found);
288 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
307 }
while (up && !fnd);
316 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
335 }
while (up && !fnd);
353 }
while (next && !res);
372 previous_decay = current_decay;
395 throw VertexException(
"KinematicTree::addTree; Current tree does not contain the vertex passed");
void replaceCurrentParticle(RefCountedKinematicParticle newPart) const
RefCountedKinematicVertex currentDecayVertex() const
bool movePointerToTheFirstChild() const
bool movePointerToTheNextChild() const
bool leftBranchVertexSearch(RefCountedKinematicVertex vtx) const
std::pair< bool, RefCountedKinematicParticle > motherParticle() const
bool leftFinalParticle() const
void leftBranchAdd(KinematicTree *otherTree, RefCountedKinematicVertex vtx)
RefCountedKinematicParticle topParticle() const
math::GraphWalker< RefCountedKinematicVertex, RefCountedKinematicParticle > * treeWalker
RefCountedKinematicVertex currentProductionVertex() const
~KinematicTree() override
bool leftBranchSearch(RefCountedKinematicParticle part) const
bool findParticle(const RefCountedKinematicParticle part) const
bool movePointerToTheMother() const
bool findDecayVertex(const RefCountedKinematicVertex vert) const
std::vector< RefCountedKinematicParticle > finalStateParticles() const
math::Graph< RefCountedKinematicVertex, RefCountedKinematicParticle > treeGraph
void replaceCurrentVertex(RefCountedKinematicVertex newVert) const
void movePointerToTheTop() const
bool isConsistent() const
std::vector< RefCountedKinematicParticle > daughterParticles() const
RefCountedKinematicParticle currentParticle() const
void addParticle(RefCountedKinematicVertex prodVtx, RefCountedKinematicVertex decVtx, RefCountedKinematicParticle part)
void addTree(RefCountedKinematicVertex vtx, KinematicTree *tr)