Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
Namespaces | Functions
filters.h File Reference

Contains built-in filters (Lagrangian and diagram filters) for the mty::FeynOptions object. More...

#include "model.h"
#include "feynmanRule.h"
#include "feynmanDiagram.h"
#include <algorithm>

Go to the source code of this file.

Namespaces

 mty::filter
 Namespace containing built-in filters in MARTY.
 

Functions

template<class ParticleIterator >
auto mty::filter::disableParticles (ParticleIterator first, ParticleIterator last)
 Filter disabling a range of particles provided begin and end iterators for the given range. More...
 
auto mty::filter::disableParticles (std::vector< mty::Particle > const &particles)
 Filter disabling a range of particles in a std::vector. More...
 
auto mty::filter::disableParticles (std::initializer_list< mty::Particle > particles)
 Filter disabling a range of particles in an initializer_list. More...
 
auto mty::filter::disableParticles (std::initializer_list< std::string_view > names, mty::Model const &model= *Model::current)
 Filter disabling a range of particles from their names in an initializer_list. More...
 
auto mty::filter::disableParticle (mty::Particle const &particle)
 Filter disabling one particle. More...
 
auto mty::filter::disableParticle (std::string_view name, mty::Model const &model= *Model::current)
 Filter disabling one particle given its name. More...
 
template<class ParticleIterator >
auto mty::filter::disableParticleCombination (ParticleIterator first, ParticleIterator last)
 Filter disabling a particular combination of particles. More...
 
auto mty::filter::disableParticleCombination (std::vector< mty::Particle > const &particles)
 Filter disabling a particular combination of particles from a std::vector. More...
 
auto mty::filter::disableParticleCombination (std::initializer_list< mty::Particle > particles)
 Filter disabling a particular combination of particles from a std::initializer_list. More...
 
auto mty::filter::disableParticleCombination (std::initializer_list< std::string_view > names, mty::Model const &model= *Model::current)
 Filter disabling a particular combination of particle from their names. More...
 
template<class ParticleIterator >
auto mty::filter::forceParticleCombination (ParticleIterator first, ParticleIterator last)
 Filter forcing a particular combination of particles. More...
 
auto mty::filter::forceParticleCombination (std::vector< mty::Particle > const &particles)
 Filter forcing a particular combination of particles given in a std::vector. More...
 
auto mty::filter::forceParticleCombination (std::initializer_list< mty::Particle > particles)
 Filter forcing a particular combination of particles given in a std::initializer_list. More...
 
auto mty::filter::forceParticleCombination (std::initializer_list< std::string_view > names, mty::Model const &model= *Model::current)
 Filter forcing a particular combination of particles given their names. More...
 
auto mty::filter::forceParticle (mty::Particle const &particle)
 Filter forcing one particle in diagrams. More...
 
auto mty::filter::forceParticle (std::string_view name, mty::Model const &model= *Model::current)
 Filter forcing one particle in diagrams given its name. More...
 
template<class ParticleIterator >
auto mty::filter::forceParticles (ParticleIterator first, ParticleIterator last)
 Filter forcing particles in diagrams. More...
 
auto mty::filter::forceParticles (std::vector< mty::Particle > const &particles)
 Filter forcing particles in diagrams given in a std::vector. More...
 
auto mty::filter::forceParticles (std::initializer_list< mty::Particle > particles)
 Filter forcing particles in diagrams given in a std::initializer_list. More...
 
auto mty::filter::forceParticles (std::initializer_list< std::string_view > names, mty::Model const &model= *Model::current)
 Filter forcing particles in diagrams given their names. More...
 

Detailed Description

Contains built-in filters (Lagrangian and diagram filters) for the mty::FeynOptions object.

All (possibly template) functions in this file return functions. The return values of these functions can then be passed to the mty::FeynOptions::addFilter() and mty::FeynOptions::addFilters() member functions directly. Filters can be fully general, the built-in ones are simply useful particular cases to avoid writing always the same functions. Calculating an amplitude forcing the top quark and disabling the Z boson for example would look like

options.addFilters(
);
auto res = model.computeAmplitude(order, insertions, options);

with appropriate model, order and insertions. In case those built-in filters are not enough one can write a custom filter following the definition of mty::FeynOptions::LagrangianFilter and mty::FeynOptions::DiagramFilter, using the documentation of mty::InteractionTerm and mty::FeynmanDiagram objects. Writing the above filters by hand could look like (using C++ lambda functions):

Particle Z = model.getParticle("Z");
Particle t = model.getParticle("t");
options.addFilters(
[&](mty::InteractionTerm const &term) { // disable Z, mty::FeynOptions::LagrangianFilter
return !term.contains(Z); // keep if Z absent
},
[&](mty::FeynmanDiagram const &diagram) { // force t, mty::FeynOptions::DiagramFilter
return diagram.contains(t); // keep if t present
}
);
auto res = model.computeAmplitude(order, insertions, options);

In the example above, disabling the Z particle could also be a mty::FeynOptions::DiagramFilter but this would imply unnecessary calculations because vertices can be filtered before searching for any diagram containing it. However forcing the top quark must be a mty::FeynOptions::DiagramFilter because one cannot remove vertices that contain the top quark, the condition is that the whole diagram must contain at least one top quark.

Note
To enable the calculation without filtering but select specific contributions at the end, see mty::Amplitude::filterOut() instead.
See also
mty::InteractionTerm, mty::FeynmanDiagram, mty::FeynOptions, mty::FeynOptions::DiagramFilter, mty::FeynOptions::LagrangianFilter, mty::FeynOptions::addFilter(), mty::FeynOptions::addFilters().
Author
Grégoire Uhlrich
Version
1.3
Date
2021-05-05