00001 #ifndef PHOKHARA__H
00002 #define PHOKHARA__H
00003
00004 #include "cfortran/cfortran.h"
00005 #include <string.h>
00006
00007
00008 typedef struct { double r, i; } COMPLEX16;
00009
00010
00011 typedef struct {
00012 double pi,gev2nbarn,gev2pbarn,alpha,me,mmu,mpi,mpi0,Sp,mp;
00013 double ebeam,ver_s,rmass[10],momenta[4][15];
00014 COMPLEX16 cvac_s;
00015 double mnt,mKp,mKn;
00016 COMPLEX16 cvac_s_pi, cvac_s_phi;
00017 double mlamb;
00018 } CTES_DEF;
00019
00020 #define CTES COMMON_BLOCK(CTES_DEF, ctes)
00021 COMMON_BLOCK_DEF(CTES_DEF, CTES);
00022
00023
00024 typedef struct
00025 {
00026 double Emin,gmin,phot1cut,phot2cut,pi1cut,pi2cut;
00027 double piphcut,accecut,q2min,w,q2_max_c,q2_min_c;
00028 } CUTS_DEF;
00029
00030 #define CUTS COMMON_BLOCK(CUTS_DEF, cuts)
00031 COMMON_BLOCK_DEF(CUTS_DEF, CUTS);
00032
00033
00034 typedef struct
00035 {
00036 double m_phi0_Kp,g_phi0_Kp,m_phi1_Kp,g_phi1_Kp;
00037 double m_om0_Kp,g_om0_Kp,m_om1_Kp,g_om1_Kp,m_om2_Kp,g_om2_Kp;
00038 double m_rho0_Kp,g_rho0_Kp,m_rho1_Kp,g_rho1_Kp,m_rho2_Kp,g_rho2_Kp;
00039 } MASS_GAMM_KP_DEF;
00040
00041 #define MASS_GAMM_KP COMMON_BLOCK(MASS_GAMM_KP_DEF, mass_gamm_Kp)
00042 COMMON_BLOCK_DEF(MASS_GAMM_KP_DEF, MASS_GAMM_KP);
00043
00044
00045 typedef struct
00046 {
00047 double m_rho0_pion,g_rho0_pion,m_rho1_pion;
00048 double g_rho1_pion,m_rho2_pion,g_rho2_pion,m_rho3_pion,g_rho3_pion;
00049 double m_om0_pion,g_om0_pion;
00050 } MASS_GAMM_PION_DEF;
00051
00052 #define MASS_GAMM_PION COMMON_BLOCK(MASS_GAMM_PION_DEF, mass_gamm_pion)
00053 COMMON_BLOCK_DEF(MASS_GAMM_PION_DEF, MASS_GAMM_PION);
00054
00055
00056 typedef struct
00057 {
00058 double alpha_lamb, ratio_lamb;
00059 } LAMBDA_PAR_DEF;
00060
00061 #define LAMBDA_PAR COMMON_BLOCK(LAMBDA_PAR_DEF, lambda_par)
00062 COMMON_BLOCK_DEF(LAMBDA_PAR_DEF, LAMBDA_PAR);
00063
00064
00065 typedef struct{char val[20];} titledef;
00066
00067 typedef struct
00068 {
00069 DOUBLE_PRECISION xlow[20], xup[20];
00070 int bins[20];
00071 titledef title[20];
00072 } HISTO_DEF;
00073
00074 #define HISTO COMMON_BLOCK(HISTO_DEF, histo)
00075 COMMON_BLOCK_DEF(HISTO_DEF, HISTO);
00076
00077
00078 typedef struct
00079 {
00080 DOUBLE_PRECISION Mmax[2], gross[2], klein[2], tr[2], count[2];
00081 int iprint;
00082 } MAXIMA_DEF;
00083
00084 #define MAXIMA COMMON_BLOCK(MAXIMA_DEF, maxima)
00085 COMMON_BLOCK_DEF(MAXIMA_DEF, MAXIMA);
00086
00087
00088 typedef struct
00089 {
00090 int nlo, pion, fsr, fsrnlo, ivac, FF_pion, f0_model, FF_kaon, narr_res;
00091 } FLAGS_DEF;
00092
00093 #define FLAGS COMMON_BLOCK(FLAGS_DEF, flags)
00094 COMMON_BLOCK_DEF(FLAGS_DEF, FLAGS);
00095
00096 PROTOCCALLSFSUB2(RLXDINIT,rlxdinit,INT,INT)
00097 #define RLXDINIT(LUXURY,SEED) CCALLSFSUB2(RLXDINIT,rlxdinit,INT,INT,LUXURY,SEED)
00098
00099 PROTOCCALLSFSUB1(RLXDRESETF,rlxdresetf,INTV)
00100 #define RLXDRESETF(SEED) CCALLSFSUB1(RLXDRESETF,rlxdresetf,INTV, SEED)
00101
00102 PROTOCCALLSFSUB0(INPUT,input)
00103 #define INPUT() CCALLSFSUB0(INPUT,input)
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 PROTOCCALLSFSUB2(RANLXDF,ranlxdf,DOUBLEV,INT)
00118 #define RANLXDF(AR, VAL) CCALLSFSUB2(RANLXDF,ranlxdf,DOUBLEV, INT, AR, VAL)
00119
00120 PROTOCCALLSFSUB7(GEN_1PH,gen_1ph,INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE)
00121 #define GEN_1PH(I,QQMIN,QQMAX,COS1MIN,COS1MAX,COS3MIN,COS3MAX) CCALLSFSUB7(GEN_1PH,gen_1ph,INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE,I,QQMIN,QQMAX,COS1MIN,COS1MAX,COS3MIN,COS3MAX)
00122
00123 PROTOCCALLSFSUB8(GEN_2PH,gen_2ph,INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE)
00124 #define GEN_2PH(I,QQMIN,COS1MIN,COS1MAX,COS2MIN,COS2MAX,COS3MIN,COS3MAX) CCALLSFSUB8(GEN_2PH,gen_2ph,INT, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE, PDOUBLE,I,QQMIN,COS1MIN,COS1MAX,COS2MIN,COS2MAX,COS3MIN,COS3MAX)
00125
00126 #endif