StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Tauola.h
1 #ifndef _Tauola_h_included_
2 #define _Tauola_h_included_
3 
17 #include <iostream>
18 #include "TauolaParticle.h"
19 #include "f_Init.h"
20 #include "f_Variables.h"
21 
22 namespace Tauolapp
23 {
24 
25 class TauolaEvent;
26 class TauolaParticle;
27 
28 class Tauola{
29 
30  public:
31 
32  static const int NS1=100,NS2=100,NS3=100,NCOS=21;
33 
35  static enum MomentumUnits { DEFAULT_MOMENTUM=-1, MEV, GEV } momentumUnit;
36  static enum LengthUnits { DEFAULT_LENGTH =-1, MM , CM } lengthUnit;
37 
39  static void setUnits(MomentumUnits m,LengthUnits l);
40 
42  static void setTauLifetime(double t);
43 
45  enum { All=0, ElectronMode, MuonMode, PionMode,
46  RhoMode, A1Mode, KMode, KStarMode };
47 
50  struct Particles
51  {
52  bool GAMMA,
53  Z0,
54  HIGGS,
55  HIGGS_H,
56  HIGGS_A,
57  HIGGS_PLUS,
58  HIGGS_MINUS,
59  W_PLUS,
60  W_MINUS;
61  void setAll(bool flag) { GAMMA=Z0=HIGGS=HIGGS_H=HIGGS_A=HIGGS_PLUS=HIGGS_MINUS=W_PLUS=W_MINUS=flag; }
62  };
63  static Particles spin_correlation;
64 
67  static void initialize();
68 
70  static void initialise();
71 
75  static void setNewCurrents(int mode);
76 
78  static void setRandomGenerator( double (*gen)() );
79 
81  static void setSeed( int ijklin, int ntotin, int ntot2n ) { rmarin_(&ijklin,&ntotin,&ntot2n); }
82 
83  static void setRedefineTauMinus( void (*fun)(TauolaParticle *) );
84  static void setRedefineTauPlus ( void (*fun)(TauolaParticle *) );
85 
89  static void decayOne(TauolaParticle *tau, bool undecay=false, double polx=0,double poly=0, double polz=0);
90 
92  static bool isUsingDecayOne();
93 
95  static bool isUsingDecayOneBoost();
96 
98  static void setBoostRoutine( void (*boost)(TauolaParticle*, TauolaParticle *) );
99 
101  static void decayOneBoost(TauolaParticle *mother, TauolaParticle *target);
102 
104  static const double* getDecayOnePolarization();
105 
107  static void setDecayingParticle(int pdg_id);
108 
110  static int getDecayingParticle();
111 
115  static void setSameParticleDecayMode(int firstDecayMode);
116 
120  static void setOppositeParticleDecayMode(int secondDecayMode);
121 
123  static void setRadiation(bool rad);
124 
126  static void setRadiationCutOff(double rad_cut_off);
127 
131  static void setInitializePhy(double iniphy);
132 
134  static void setInitialisePhy(double iniphy);
135 
137  static void setTauBr(int i, double value);
138 
139  static void setTaukle(double bra1, double brk0, double brk0b, double brks);
140 
141  static double getHiggsScalarPseudoscalarMixingAngle();
142 
144  static void setHiggsScalarPseudoscalarMixingAngle(double angle);
145 
147  static double getTauMass();
148 
150  static void setHiggsScalarPseudoscalarPDG(int pdg_id);
151 
153  static int getHiggsScalarPseudoscalarPDG();
154 
155  static int getHelPlus();
156 
157  static int getHelMinus();
158 
159  static double getEWwt();
160 
161  static double getEWwt0();
162 
163  static void setEWwt(double wt, double wt0);
164 
165  static void setHelicities(int Minus, int Plus);
166 
167  static void setEtaK0sPi(int eta, int k, int pi);
168 
169  static void getBornKinematics(int *incoming_pdg_id, int *outgoing_pdg_id, double *invariant_mass_squared,double *cosTheta);
170 
171  static void summary();
172 
173 public:
174 
175  static double table11A[NS1][NCOS][4][4],table1A[NS1][NCOS][4][4],table2A[NS1][NCOS][4][4];
176  static double wtable11A[NS1][NCOS],wtable1A[NS1][NCOS],wtable2A[NS1][NCOS];
177  static double w0table11A[NS1][NCOS],w0table1A[NS1][NCOS],w0table2A[NS1][NCOS];
178 
179  static double table11B[NS2][NCOS][4][4],table1B[NS2][NCOS][4][4],table2B[NS2][NCOS][4][4];
180  static double wtable11B[NS2][NCOS],wtable1B[NS2][NCOS],wtable2B[NS2][NCOS];
181  static double w0table11B[NS2][NCOS],w0table1B[NS2][NCOS],w0table2B[NS2][NCOS];
182 
183  static double table11C[NS3][NCOS][4][4],table1C[NS3][NCOS][4][4],table2C[NS3][NCOS][4][4];
184  static double wtable11C[NS3][NCOS],wtable1C[NS3][NCOS],wtable2C[NS3][NCOS];
185  static double w0table11C[NS3][NCOS],w0table1C[NS3][NCOS],w0table2C[NS3][NCOS];
186  static double sminA,smaxA,sminB,smaxB,sminC,smaxC;
187 
188  static int ion[3];
189 
190  // c*tau in milimeters, survival probablility P(t)=exp(-t/lifetime)
191  static double tau_lifetime;
192  static double momentum_conservation_threshold;
193 
194  //born kinematic variables
195  static int buf_incoming_pdg_id, buf_outgoing_pdg_id;
196  static double buf_invariant_mass_squared, buf_cosTheta;
197  static double buf_R[4][4]; //density matrix
198 
199  //pointer to random generator function
200  static double (*randomDouble)();
201 
202  static void (*redefineTauPlusProperties)(TauolaParticle *);
203  static void (*redefineTauMinusProperties)(TauolaParticle *);
204 
205  private:
206 
211  static double particleCharge(int idhep);
212 
214  static void fill_val(int beg, int end, double* array, double value);
215 
217  static double defaultRandomGenerator();
218  static void defaultRedPlus(TauolaParticle *);
219  static void defaultRedMinus(TauolaParticle *);
220 
222  static bool m_is_using_decay_one;
224  static double m_decay_one_polarization[3];
226  static void (*m_decay_one_boost_routine)(TauolaParticle*,TauolaParticle*);
227 
228  static int m_pdg_id;
229  static int m_firstDecayMode;
230  static int m_secondDecayMode;
231  static bool m_rad;
232  static double m_rad_cut_off;
233  static double m_iniphy;
234  static double m_higgs_scalar_pseudoscalar_mix;
235  static int m_higgs_scalar_pseudoscalar_pdg;
236  static double m_wtEW;
237  static double m_wtEW0;
238  static int m_helPlus;
239  static int m_helMinus;
240 };
241 
242 } // namespace Tauolapp
243 #endif
244 
static void setInitializePhy(double iniphy)
Definition: Tauola.cxx:614
static void setNewCurrents(int mode)
Definition: Tauola.cxx:87
static void setBoostRoutine(void(*boost)(TauolaParticle *, TauolaParticle *))
Definition: Tauola.cxx:574
static void setOppositeParticleDecayMode(int secondDecayMode)
Definition: Tauola.cxx:601
static void initialize()
Definition: Tauola.cxx:129
Abstract base class for containing the event information.
static void setHiggsScalarPseudoscalarPDG(int pdg_id)
Definition: Tauola.cxx:670
static int getHiggsScalarPseudoscalarPDG()
Definition: Tauola.cxx:659
static void setRadiationCutOff(double rad_cut_off)
Definition: Tauola.cxx:609
static const double * getDecayOnePolarization()
Definition: Tauola.cxx:584
Abstract base class for particle in the event. This class also handles boosting.
static bool isUsingDecayOneBoost()
Definition: Tauola.cxx:569
static void setRadiation(bool rad)
Definition: Tauola.cxx:605
static void initialise()
Definition: Tauola.cxx:553
static bool isUsingDecayOne()
Definition: Tauola.cxx:564
static void setRandomGenerator(double(*gen)())
Definition: Tauola.cxx:96
static void setTauBr(int i, double value)
Definition: Tauola.cxx:629
static void setInitialisePhy(double iniphy)
Definition: Tauola.cxx:618
static void decayOne(TauolaParticle *tau, bool undecay=false, double polx=0, double poly=0, double polz=0)
Definition: Tauola.cxx:513
static void setSameParticleDecayMode(int firstDecayMode)
Definition: Tauola.cxx:597
static void setUnits(MomentumUnits m, LengthUnits l)
Definition: Tauola.cxx:120
static int getDecayingParticle()
Definition: Tauola.cxx:593
static void setTauLifetime(double t)
Definition: Tauola.cxx:125
static void setSeed(int ijklin, int ntotin, int ntot2n)
Definition: Tauola.h:81
static void setDecayingParticle(int pdg_id)
Definition: Tauola.cxx:589
static void setHiggsScalarPseudoscalarMixingAngle(double angle)
Definition: Tauola.cxx:664
static double getTauMass()
Definition: Tauola.cxx:651
static void decayOneBoost(TauolaParticle *mother, TauolaParticle *target)
Definition: Tauola.cxx:579