C++InterfacetoTauola
TauSpinner/include/TauSpinner/EWtables.h
1 #include <complex>
2 using std::complex;
3 
4 extern "C" {
5  /** */
6  // void initwk_(int *IDE, int *IDF, double *SVAR);
7 
8  /** passes initialization to fortran, possibly to be re-written to C rather soon */
9  void initwkswdelt_(int *mode, int *ID, int *finID, double *SS, double *SWeff, double *DeltSQ,double *DeltV, double * Gmu, double *alfinv, double *AMZi, double *GAMMZi, int *keyGSW, double *ReGSW1, double *ImGSW1, double *ReGSW2, double *ImGSW2, double *ReGSW3, double *ImGSW3,double * ReGSW4, double *ImGSW4, double *ReGSW6, double *ImGSW6 );
10 
11  /**
12 C THIS ROUTINE PROVIDES effective BORN CROSS SECTION i.e. with EW. form factors.
13 C IT HAS THE SAME STRUCTURE AS FUNTIS AND FUNTIH, THUS CAN BE USED AS SIMPLER
14 C above comment undeline link with conventions stretching from KOLAZ times.
15 C EXAMPLE OF THE METHOD APPLIED THERE
16 C INPUT PARAMETERS ARE: SVAR -- transfer
17 C COSTHE -- cosine of angle between tau+ and 1st beam
18 C TA,TB -- helicity states of tau+ tau-
19 C */
20  double t_bornew_(int *MODE, int *KEYGSW, double *SVAR, double *COSTHE, double *TA, double *TB);
21  double t_gammnew_(int *MODE, double *SVAR, double *COSTHE, double *TA, double *TB);
22 
23 }
24 
25 namespace TauSpinner {
26 
27 /** routine initializes parameters and form-factors for t_bornnew_
28  checking first it is necessary
29  */
30 int initEWff(int ID,double S,double cost,int key);
31 
32 /** reads in tables with electroweak formfactors
33  to be executed from main program of the user */
34 int initTables(char* mumu, char* downdown, char* upup);
35 
36 //int testit(); // obsolete prepared to be removed, or to be left
37  // commented out for ``panic tests''.
38 
39 
40  /** provides electroweak form-factor for input of (int FLAV, int NO, double s, double costhe) */
41 complex<double> EWFACT(int FLAV, int NO, double s, double costhe);
42 
43  /** provides info flag if tables were initialized */
44 int CheckinitTables();
45 
46 /** returns QCD factor as interpolated from electroweak table for s.
47  Also for given FLAV and NO, may be called from user main program */
48 double QCDFACT(int FLAV, int NO, double s);
49 
50 /** returns Z mass as stored in header of electroweak table for FLAV
51  may be called from user main program */
52 double Amz(int FLAV);
53 
54 /** returns Z widtd as stored in header of electroweak table for FLAV
55  may be called from user main program */
56 double Gamz(int FLAV);
57 
58 /** returns sin^2theta_W^eff as stored in header of electroweak table for FLAV
59  may be called from user main program */
60 double sin2W(int FLAV);
61 
62 /**
63  Calculates Born cross-section summed over final taus spins.
64  Input parameters:
65  incoming flavour ID
66  invariant mass^2 SS
67  scattering angle costhe
68  effective weingber SWeff
69  anomalous contributions DeltSQ, DeltV
70  Fermi coupling Gmu
71  alphaqed^-1 alfinv
72  elecroweak init. switch non standard keyGSW
73  may be called from user main program
74  */
75 double sigbornswdelt(int mode, int ID, double SS, double costhe, double SWeff, double DeltSQ, double DeltV, double Gmu, double alfinv, double AMZ0, double GAM0, int keyGSW);
76 
77 /**
78  As sigbornswdelt, but subtracts negative spin contrib (for A_pol) calculation
79  */
80 double AsNbornswdelt(int mode, int ID, double SS, double costhe, double SWeff, double DeltSQ, double DeltV, double Gmu, double alfinv, double AMZ0, double GAM0, int keyGSW);
81 
82 /** Routine to pass user initialized parameters to be used by electroweak Born.
83  Internally called, but may be available for user tests as well
84  (this may be not the best thing to do)
85  takes parameters from the local storage,
86  change m_status to 1 (which means that parameters
87  were taken for internal use) */
88 void ExtraEWparamsGet( double *AMZi, double *GAM, double *SWeff, double *alfinv, double *DeltSQ, double *DeltV, double *Gmu,int *keyGSW);
89 
90 /** Routine to pass user initialized keyGSW to be used by electroweak Born.
91  Internally called, but may be available for user tests as well
92  (this may be not the best thing to do)
93  takes parameter from the local storage. */
94 void keyGSWGet( int *keyGSW);
95 
96 
97 /** Routine for user initialization of electroweak Born.
98  Reads inparameters to the local storage
99  change m_status to 0 (that means parameters, need to be
100  passed to internal storage) */
101 void ExtraEWparamsSet( double AMZi, double GAM, double SWeff, double alfinv, double DeltSQ, double DeltV, double Gmu,int keyGSW);
102 
103 
104 /** returns m_status of user initialization of electroweak Born.
105  may be safely used by main program */
106 int ExtraEWparams();
107 
108 }
double Amz(int FLAV)
Definition: EWtables.cxx:424
void ExtraEWparamsSet(double AMZi, double GAM, double SWeff, double alfinv, double DeltSQ, double DeltV, double Gmu, int keyGSW)
Definition: EWtables.cxx:555
int ExtraEWparams()
Definition: EWtables.cxx:568
complex< double > EWFACT(int FLAV, int NO, double s, double costhe)
Definition: EWtables.cxx:355
double Gamz(int FLAV)
Definition: EWtables.cxx:438
double sigbornswdelt(int mode, int ID, double SS, double costhe, double SWeff, double DeltSQ, double DeltV, double Gmu, double alfinv, double AMZ0, double GAM0, int keyGSW)
Definition: EWtables.cxx:759
int initTables(char *mumu, char *downdown, char *upup)
Definition: EWtables.cxx:50
int initEWff(int ID, double S, double cost, int key)
Definition: EWtables.cxx:574
double AsNbornswdelt(int mode, int ID, double SS, double costhe, double SWeff, double DeltSQ, double DeltV, double Gmu, double alfinv, double AMZ0, double GAM0, int keyGSW)
Definition: EWtables.cxx:799
void ExtraEWparamsGet(double *AMZi, double *GAM, double *SWeff, double *alfinv, double *DeltSQ, double *DeltV, double *Gmu, int *keyGSW)
Definition: EWtables.cxx:526
void keyGSWGet(int *keyGSW)
Definition: EWtables.cxx:542
int CheckinitTables()
Definition: EWtables.cxx:45
double QCDFACT(int FLAV, int NO, double s)
Definition: EWtables.cxx:466
double sin2W(int FLAV)
Definition: EWtables.cxx:452