AmpGen 2.1
Loading...
Searching...
No Matches
Wigner.h
Go to the documentation of this file.
1#ifndef AMPGEN_WIGNER_H
2#define AMPGEN_WIGNER_H
3#include "AmpGen/Expression.h"
4#include "AmpGen/Tensor.h"
5#include "AmpGen/Particle.h"
6#include "AmpGen/Transform.h"
7
8namespace AmpGen {
9 class Particle;
10 using TransformCache = std::map<std::string, TransformSequence>;
11
12 namespace Helicity {
13 struct Flags {
14 bool movingHead = {true};
15 bool alignFrames = {true};
16 };
17 }
18 Expression wigner_d(const Expression &cb, const double &j, const double &m, const double &n);
19 Expression wigner_D(const std::pair<Expression, Expression> &P, const double &J, const double &lA, const double &lB, DebugSymbols *db);
24 double CG(const double &j1, const double &m1, const double &j2, const double &m2, const double &J, const double &M);
25
32 TransformSequence wickTransform(const Tensor &P, const Particle &p, const int &ve = 1, DebugSymbols *db = nullptr);
33
34 Expression helicityAmplitude(const Particle &particle, const TransformSequence &parentFrame, const double &Mz, DebugSymbols *db,
35 const Helicity::Flags &flags = Helicity::Flags(), const int sgn = 1, std::shared_ptr<TransformCache> cacheptr = nullptr);
36 Tensor basisSpinor(const int &polState, const int &id);
37 Tensor basisVector(const int &polState);
38
39 struct LS {
40 double factor = {1};
41 double cg1 = {0};
42 double cg2 = {0};
43 double p = {0};
44 double m1 = {0};
45 double m2 = {0};
46 };
47
48 std::vector<LS> calculate_recoupling_constants(const double &J, const double &M, const double &L, const double &S, const double &j1, const double &j2);
49}
50
51#endif
Wrapper class for shared_ptrs to virtual expressions for use in conjunction with operators to build e...
Definition Expression.h:135
Describes a particle, its decay process and subsequent decay products, which are also Particles.
Definition Particle.h:103
double CG(const double &j1, const double &m1, const double &j2, const double &m2, const double &J, const double &M)
Calculates the Clebsch-Gordan coefficient for (j1 m1 j2 m2 | J M), the expansion coefficients in.
TransformSequence wickTransform(const Tensor &P, const Particle &p, const int &ve=1, DebugSymbols *db=nullptr)
Generates a wick transform sequence that aligns tensor P (four-vector) to the +/- ve z-axis,...
double m2
Definition Wigner.h:45
std::map< std::string, TransformSequence > TransformCache
Definition Wigner.h:10
Tensor basisVector(const int &polState)
Expression wigner_d(const Expression &cb, const double &j, const double &m, const double &n)
double factor
Definition Wigner.h:40
Expression wigner_D(const std::pair< Expression, Expression > &P, const double &J, const double &lA, const double &lB, DebugSymbols *db)
std::vector< DebugSymbol > DebugSymbols
Definition Expression.h:111
double m1
Definition Wigner.h:44
double cg1
Definition Wigner.h:41
Tensor basisSpinor(const int &polState, const int &id)
double cg2
Definition Wigner.h:42
double p
Definition Wigner.h:43
Expression helicityAmplitude(const Particle &particle, const TransformSequence &parentFrame, const double &Mz, DebugSymbols *db, const Helicity::Flags &flags=Helicity::Flags(), const int sgn=1, std::shared_ptr< TransformCache > cacheptr=nullptr)
std::vector< LS > calculate_recoupling_constants(const double &J, const double &M, const double &L, const double &S, const double &j1, const double &j2)