30 part->setTreePointer(
this);
34 prodVtx->setTreePointer(
this);
35 decVtx->setTreePointer(
this);
42 throw VertexException(
"KinematicTree::finalStateParticles; tree is empty or not consistent");
45 std::vector<RefCountedKinematicParticle> rs;
49 std::cout<<
"top particle has no daughters, empty vector returned"<<std::endl;
53 bool next_right =
true;
76 if(!back)
throw VertexException(
"KinematicTree::FinalStateParticles; error occured while getting back");
120 std::pair<bool,RefCountedKinematicParticle> res;
126 if(!fc)
throw VertexException(
"KinematicTree::motherParticle; tree is incorrect!");
131 if(!nx)
throw VertexException(
"KinematicTree::motherParticle; tree is incorrect!");
132 }
while(*(
treeWalker->current().second) != *cr);
134 res = std::pair<bool,RefCountedKinematicParticle>(
true,pr);
138 return std::pair<bool,RefCountedKinematicParticle>(
false,fk);
145 std::vector<RefCountedKinematicParticle> sResult;
150 sResult.push_back(
treeWalker->current().second);
155 if(sibling) sResult.push_back(
treeWalker->current().second);
161 if(!back)
throw VertexException(
"KinematicTree::daughterParticles; error occured while getting back");
175 if(!move)
throw VertexException(
"KinematicTree::movePointerToTheTop; non consistent tree?");
207 if(
treeWalker->current().second == initial) next =
false;
211 }
else{
throw VertexException(
"KinematicTree::Navigation failed, tree invalid?");}
225 if(!move)
throw VertexException(
"KinematicTree::movePointerToTheTop; non consistent tree?");
240 bool cr =
treeWalker->current().first->vertexIsValid();
261 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
273 bool next_right =
false;
285 }
while(up && !found);
308 }
while(next && !found);
317 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
349 throw VertexException(
"KinematicTree::findParticle; tree is empty or not consistent");
391 }
while(next && !res);
413 previous_decay = current_decay;
422 if(!replace)
throw VertexException(
"KinematicTree::Particle To Replace not found");
429 if(! replace)
throw VertexException(
"KinematicTree::Vertex To Replace not found");
437 if(!fnd)
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
RefCountedKinematicVertex currentProductionVertex() const
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
graphwalker< RefCountedKinematicVertex, RefCountedKinematicParticle > * treeWalker
void replaceCurrentVertex(RefCountedKinematicVertex newVert) const
void movePointerToTheTop() const
graph< RefCountedKinematicVertex, RefCountedKinematicParticle > treeGraph
bool isConsistent() const
std::vector< RefCountedKinematicParticle > daughterParticles() const
ReferenceCountingPointer< KinematicVertex > RefCountedKinematicVertex
RefCountedKinematicParticle currentParticle() const
void addParticle(RefCountedKinematicVertex prodVtx, RefCountedKinematicVertex decVtx, RefCountedKinematicParticle part)
void addTree(RefCountedKinematicVertex vtx, KinematicTree *tr)
const double par[8 *NPar][4]