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;
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);
372 previous_decay = current_decay;
395 throw VertexException(
"KinematicTree::addTree; Current tree does not contain the vertex passed");
std::vector< RefCountedKinematicParticle > finalStateParticles() const
RefCountedKinematicParticle topParticle() const
void replaceCurrentVertex(RefCountedKinematicVertex newVert) const
bool findDecayVertex(const RefCountedKinematicVertex vert) const
std::pair< bool, RefCountedKinematicParticle > motherParticle() const
void leftBranchAdd(KinematicTree *otherTree, RefCountedKinematicVertex vtx)
def replace(string, replacements)
math::GraphWalker< RefCountedKinematicVertex, RefCountedKinematicParticle > * treeWalker
~KinematicTree() override
void replaceCurrentParticle(RefCountedKinematicParticle newPart) const
bool movePointerToTheFirstChild() const
bool isConsistent() const
void movePointerToTheTop() const
bool movePointerToTheNextChild() const
math::Graph< RefCountedKinematicVertex, RefCountedKinematicParticle > treeGraph
RefCountedKinematicParticle currentParticle() const
RefCountedKinematicVertex currentDecayVertex() const
RefCountedKinematicVertex currentProductionVertex() const
bool findParticle(const RefCountedKinematicParticle part) const
void addParticle(RefCountedKinematicVertex prodVtx, RefCountedKinematicVertex decVtx, RefCountedKinematicParticle part)
bool leftFinalParticle() const
bool leftBranchVertexSearch(RefCountedKinematicVertex vtx) const
bool movePointerToTheMother() const
void addTree(RefCountedKinematicVertex vtx, KinematicTree *tr)
std::vector< RefCountedKinematicParticle > daughterParticles() const
bool leftBranchSearch(RefCountedKinematicParticle part) const