67 !std::is_same_v<mty::Particle, std::decay_t<T>>
101 return CSL_0 == expression;
143 std::vector<mty::Particle>
const &getParticles(
192 return contains(particle, External);
205 return contains(particle, Mediator);
218 return contains(particle, Loop);
232 return isMediator(particle) || isInLoop(particle);
240 return getNLoops() == 0;
248 return !isTreeLevel();
254 int getNLoops()
const;
276 bool isTopology(
int topology)
const;
296 template<
typename T,
typename = isNotParticle_t<T>>
302 model->getParticle(std::forward<T>(part)),
329 template<
typename T,
typename = isNotParticle_t<T>>
331 return isExternal(model->getParticle(std::forward<T>(particle)));
355 template<
typename T,
typename = isNotParticle_t<T>>
357 return isMediator(model->getParticle(std::forward<T>(particle)));
381 template<
typename T,
typename = isNotParticle_t<T>>
383 return isInLoop(model->getParticle(std::forward<T>(particle)));
407 template<
typename T,
typename = isNotParticle_t<T>>
409 return isInternal(model->getParticle(std::forward<T>(particle)));
449 std::vector<mty::Particle> &getParticles(
482 template<
typename T,
typename = isNotParticle_t<T>>
489 model->getParticle(std::forward<T>(part)),
494 void loadParticlesFromVertices(
495 std::vector<mty::wick::Vertex>
const &vertices
501 void updateParticleData();
506 void updateParticleData(std::vector<mty::wick::Vertex>
const &vertices);
512 void mergeParticles();
bool isMediator(T &&particle) const
Tells if a particle is a mediator particle in the diagram.
Definition: feynmanDiagram.h:356
std::vector< mty::Particle > allParticles
List of all particles in the process.
Definition: feynmanDiagram.h:545
bool contains(T &&part, DiagramParticleType type=Any) const
Tells if one particle is contained in the diagram for a given type.
Definition: feynmanDiagram.h:297
Contains utilities to handle topologies for Feynman diagrams.
This class inherits from std::shared_ptr<QuantumFieldParent> and should be used instead of direct Qua...
Definition: quantumField.h:1409
Namespace of MARTY.
Definition: 2HDM.h:31
Contains the mty::Model class. It contains all objects in the theory. In particular QuantumField obje...
std::vector< mty::Particle > mediatorParticles
List of mediator particles in the process.
Definition: feynmanDiagram.h:561
std::vector< mty::Particle > externalParticles
List of external particles in the process.
Definition: feynmanDiagram.h:550
int cycleLength
Length of the cycle (momentum integral) if the calculation is at one-loop.
Definition: feynmanDiagram.h:535
bool isInLoop(T &&particle) const
Tells if a particle is a looped particle in the diagram.
Definition: feynmanDiagram.h:382
csl::Expr expression
Expression result of the calculation.
Definition: feynmanDiagram.h:524
void addParticle(T &&part, DiagramParticleType type)
Template overload for non-mty::Particle objects.
Definition: feynmanDiagram.h:483
bool isExternal(mty::Particle const &particle) const
Tells if a particle is an external particle in the diagram.
Definition: feynmanDiagram.h:191
int nLoops
Number of loops in the diagram.
Definition: feynmanDiagram.h:540
bool isInternal(mty::Particle const &particle) const
Tells if a particle is an internal particle in the diagram.
Definition: feynmanDiagram.h:231
Model const * model
Pointer to the model in which the calculation has been done.
Definition: feynmanDiagram.h:519
bool isExternal(T &&particle) const
Tells if a particle is an external particle in the diagram.
Definition: feynmanDiagram.h:330
csl::Expr const & getExpression() const
Returns the diagrams's expression as a const reference.
Definition: feynmanDiagram.h:109
bool isInternal(T &&particle) const
Tells if a particle is an internal particle in the diagram.
Definition: feynmanDiagram.h:408
bool isMediator(mty::Particle const &particle) const
Tells if a particle is a mediator particle in the diagram.
Definition: feynmanDiagram.h:204
Class containing a Feynman diagram, symbolic expression and graph included.
Definition: feynmanDiagram.h:50
bool isInLoop(mty::Particle const &particle) const
Tells if a particle is a looped particle in the diagram.
Definition: feynmanDiagram.h:217
bool isZero() const
Tells if the diagram vanishes.
Definition: feynmanDiagram.h:100
diagram_t const & getDiagram() const
Returns the diagram's graph as a const reference.
Definition: feynmanDiagram.h:130
diagram_t diagram
Graph to forward to GRAFED to display it on screen.
Definition: feynmanDiagram.h:529
diagram_t & getDiagram()
Returns the diagram's graph as a reference.
Definition: feynmanDiagram.h:123
Contains all objects in the theory. In particular QuantumField objects, Gauge, Flavor, Particle...
Definition: model.h:68
Any topologies i.e. combination of all 5 possible topologies.
Definition: topology.h:59
bool isTreeLevel() const
Definition: feynmanDiagram.h:239
Definition: feynmanDiagram.h:75
typename std::enable_if_t< !std::is_same_v< mty::Particle, std::decay_t< T > > > isNotParticle_t
Helper type definition ensuring that the type T is not a mty::Particle.
Definition: feynmanDiagram.h:68
bool isLoop() const
Definition: feynmanDiagram.h:247
std::vector< mty::Particle > loopParticles
List of particles in loops in the process.
Definition: feynmanDiagram.h:568
csl::Expr & getExpression()
Returns the diagrams's expression as a reference.
Definition: feynmanDiagram.h:116
Definition: feynmanDiagram.h:77
DiagramParticleType
Possible types of particles in a diagram.
Definition: feynmanDiagram.h:73
Definition: feynmanDiagram.h:76