1#ifndef _Tauola_h_included_
2#define _Tauola_h_included_
18#include "TauolaParticle.h"
20#include "f_Variables.h"
32 static const int NS1=100,NS2=100,NS3=100,NCOS=21;
35 static enum MomentumUnits { DEFAULT_MOMENTUM=-1, MEV, GEV } momentumUnit;
36 static enum LengthUnits { DEFAULT_LENGTH =-1, MM , CM } lengthUnit;
45 enum { All=0, ElectronMode, MuonMode, PionMode,
46 RhoMode, A1Mode, KMode, KStarMode };
61 void setAll(
bool flag) { GAMMA=Z0=HIGGS=HIGGS_H=HIGGS_A=HIGGS_PLUS=HIGGS_MINUS=W_PLUS=W_MINUS=flag; }
81 static void setSeed(
int ijklin,
int ntotin,
int ntot2n ) { rmarin_(&ijklin,&ntotin,&ntot2n); }
142 static void setTaukle(
double bra1,
double brk0,
double brk0b,
double brks);
144 static double getHiggsScalarPseudoscalarMixingAngle();
158 static int getHelPlus();
160 static int getHelMinus();
162 static double getEWwt();
164 static double getEWwt0();
166 static void setEWwt(
double wt,
double wt0);
168 static void setHelicities(
int Minus,
int Plus);
170 static void setEtaK0sPi(
int eta,
int k,
int pi);
172 static void getBornKinematics(
int *incoming_pdg_id,
int *outgoing_pdg_id,
double *invariant_mass_squared,
double *cosTheta);
174 static void summary();
178 static double table11A[NS1][NCOS][4][4],table1A[NS1][NCOS][4][4],table2A[NS1][NCOS][4][4];
179 static double wtable11A[NS1][NCOS],wtable1A[NS1][NCOS],wtable2A[NS1][NCOS];
180 static double w0table11A[NS1][NCOS],w0table1A[NS1][NCOS],w0table2A[NS1][NCOS];
182 static double table11B[NS2][NCOS][4][4],table1B[NS2][NCOS][4][4],table2B[NS2][NCOS][4][4];
183 static double wtable11B[NS2][NCOS],wtable1B[NS2][NCOS],wtable2B[NS2][NCOS];
184 static double w0table11B[NS2][NCOS],w0table1B[NS2][NCOS],w0table2B[NS2][NCOS];
186 static double table11C[NS3][NCOS][4][4],table1C[NS3][NCOS][4][4],table2C[NS3][NCOS][4][4];
187 static double wtable11C[NS3][NCOS],wtable1C[NS3][NCOS],wtable2C[NS3][NCOS];
188 static double w0table11C[NS3][NCOS],w0table1C[NS3][NCOS],w0table2C[NS3][NCOS];
189 static double sminA,smaxA,sminB,smaxB,sminC,smaxC;
194 static double tau_lifetime;
195 static double momentum_conservation_threshold;
198 static int buf_incoming_pdg_id, buf_outgoing_pdg_id;
199 static double buf_invariant_mass_squared, buf_cosTheta;
200 static double buf_R[4][4];
203 static double (*randomDouble)();
217 static void fill_val(
int beg,
int end,
double* array,
double value);
231 static bool m_is_initialized;
233 static int m_firstDecayMode;
234 static int m_secondDecayMode;
236 static double m_rad_cut_off;
237 static double m_iniphy;
238 static double m_higgs_scalar_pseudoscalar_mix;
239 static int m_higgs_scalar_pseudoscalar_pdg;
240 static double m_wtEW;
241 static double m_wtEW0;
242 static int m_helPlus;
243 static int m_helMinus;
static void setOppositeParticleDecayMode(int secondDecayMode)
static void setSameParticleDecayMode(int firstDecayMode)
static void setHiggsScalarPseudoscalarMixingAngle(double angle)
static bool getIsTauolaIni()
static bool isUsingDecayOne()
static void setNewCurrents(int mode)
static double particleCharge(int idhep)
static const double * getDecayOnePolarization()
static void setRadiationCutOff(double rad_cut_off)
static void setTauBr(int i, double value)
static void setRadiation(bool rad)
static void setUnits(MomentumUnits m, LengthUnits l)
static double m_decay_one_polarization[3]
static void setInitialisePhy(double iniphy)
static void fill_val(int beg, int end, double *array, double value)
static void setInitializePhy(double iniphy)
static int getHiggsScalarPseudoscalarPDG()
static void setRandomGenerator(double(*gen)())
static bool m_is_using_decay_one
static bool isUsingDecayOneBoost()
static void decayOneBoost(TauolaParticle *mother, TauolaParticle *target)
static void setDecayingParticle(int pdg_id)
static void setBoostRoutine(void(*boost)(TauolaParticle *, TauolaParticle *))
static double defaultRandomGenerator()
static void setTauLifetime(double t)
static void decayOne(TauolaParticle *tau, bool undecay=false, double polx=0, double poly=0, double polz=0)
static void setHiggsScalarPseudoscalarPDG(int pdg_id)
static void(* m_decay_one_boost_routine)(TauolaParticle *, TauolaParticle *)
static void setSeed(int ijklin, int ntotin, int ntot2n)
static double getTauMass()
static int getDecayingParticle()