-------------------------------------------------- $Id: /trunk/readme.txt 48 2006-09-28T08:08:37.818871Z guasch $ Last changed by $Author: guasch $ on $Date: 2006-09-28T08:08:37.818871Z $ -------------------------------------------------- History: * version 0.9.1 (28th September 2006): .- Fixes to compile with GNU fortran (g77 and gfortran) * version 0.9, (8th March 2001): .- first public version -------------------------------------------------- Program to compute the weak corrections to e+e- -> H+H- in the 2HDM and the MSSM The program is implemented as a FORTRAN function. Jaume Guasch, jaume . guasch _at_ gmail . com, 2001-03-07 Based on programs by Arnd Kraft. The results obtained from this program are published in: Jaume Guasch, Arnd Kraft, W. Hollik, Radiative corrections to pair production of charged Higgs bosons in $e ^{+}e^{-}$ collisions Nucl. Phys. B596 (2001) 66-80 (which you should cite when using results generated by this program) Another (somewhat shorter) version is Jaume Guasch, Wolfgang Hollik, Arnd Kraft, Radiative corrections to pair production of charged Higgs bosons at TESLA, KA-TP-19-1999, LC-TH-1999-006, hep-ph/9911452 If you can read german, you may also be interested in: Arnd Kraft, Ph. D. Thesis, Produktion geladener Higgs-Bosonen in Erweiterungen des Standardmodells Universitaet Karlsruhe 1999, available at: http://www-itp.physik.uni-karlsruhe.de/prep/phd/PSFiles/phd-2-1999.ps.gz COMPILING THE LIBRARY AND THE PROGRAM ===================================== In order to use it, you must create the following libraries: (1) libfunc.a libeeHpHm.a libgen.a libbcaold.a You also need the LAPACK and BLAS libraries. MAKEFILES --------- We have included three Makefiles, for different systems: Makefile_Alpha: for an Alpha Compiler Makefile_g77 : for the g77 GNU Fortran Compiler Makefile_gfortran: for the gfortran GNU Fortran Compiler Copy the makefile that suits most your system to "Makefile", and edit it to set/correct compiling flags, and the location and name of the LAPACK and BLAS libraries. E.g.: $ cp Makefile_g77 Makefie $ emacs Makefile Then, you can construct the libraries (1) by typing: $ make libs in the source directory then you must compile your program using these libraries: f77 program.F eeHpHm_setup_defaults.F -o program.exe -LDIRECTORY -lfunc -leeHpHm -lgen -lbcaold -llapack -lblas where: program.F is your source program program.exe is the name of your executable program DIRECTORY is the directory where the libraries (1) are located eeHpHm_setup_defaults.F contains a subroutine to set up the default parameters. The files "common.h" "typedef.h", "constants.h" and "proces.h" must be available (in the same directory, or in a directory referenced by the "-I" flag) in order to compile. to make the example programs: make all USING THE LIBRARY IN YOUR PROGRAMS ================================== Included in there is a very simple program (test1.F) as an example on how to use the library. First of all you want to setup the model, this is done by the call to the subroutine: subroutine eehphm_setup_model(integer lmodel, integer lsusy, integer lerr) * lmodel determines the model: * lmodel=-1 : MSSM * lmodel=0: SM * lmodel=1: 2HDM II * lmodel=2: 2HDM I * (is not a typo, is that way) * lsusy determines if the SUSY relation is used for the Higgs sector * of the THDM. (0=no, 1=yes, 2=only for the mass relations) * (only \lambda_5 is free) * -1: Free masses and angles, but set \lambda_5=\lambda_6 * (automatic in SUSY). See e.g. S.Bejar, J.Guasch, J.Sola, * hep-ph/0011091 (page 5) for a discussion. * lerr: Channel to write error messages (lsusy=-1 is my preferred choice. This case was neither discused in our work hep-ph/9911452, nor in Arnd Kraft's PhD Thesis. In general the Higgs bosons masses splittings must be smaller than with lsusy=0, in order to obtain perturbative couplings.) Then, you must setup the model parameters, using: subroutine eehphm_parset(character*(*) a) * a is a character string that determines the default values for ALL the parameters of the Model. This subroutine is in the file eehphm_setup_defaults.F, and MUST be edited and compiled by the user of the library (see below) Finally you must setup the energy of the process: subroutine eehphm_setup_S(double precision S) where S is is the Squared Center of Mass Energy (in GeV). It is *very important* to follow the sequence: eehphm_setup_model() eehphm_parset() ... other settings of parameters ... Otherwise you would not end up with your parameters. Then you want to compute the cross-section. There are two functions to achieve that: double precision function eehphm_int(integer FBT,integer order) it returns the integrated cross-section (in fb) according to: FBT: 0: Total Cross-section 1: Forward Cross-section 2: Backward Cross-section order: 0: Tree-level 1: 1-loop 2: 1-loop corrections= (Loop-Tree)/Tree and double precision function eehphm_dif(double precision theta,integer order) where: theta: Scattering angle between e- and H- and "order" as before. It returns the differential cross-section, d\sigma/(d\phi d\cos(\theta)), also in fb. SETTING THE PARAMETERS ====================== Of course, you would like to check the parameters, and change them whenever you like. There are several functions that deal with the management of parameters: subroutine switches_out(integer pout) subroutine parout(integer pout) subroutine varout(integer pout) these two subroutines write to the channel "pout" the set of flags used (rather technical and obscure), and the parameters used (very useful!) in the computation, and the value of the derived variables respectivelly. The best way to setup the default parameters is making your own entry in the subroutine eehphm_parset, which is included in the file "eeHpHm_setup_defaults.F" compile this file in your program, and make a call to it. Aside from that, there are a series of "interface subroutines" that allow to change one single parameter at a time (see below for a complete listing). You can have access to the value of the parameters including the file "common.h" in your function (you would need also "constants.h", "typedefs.h" and "proces.h" to be available), see "common.h" for an explanation of all the parameters. DO NOT change any value directly in your program, since you will end up with incorrect set of parameters. E.g. if you change "mv(2)"=W-mass, the Goldstone bosons masses, Fadeev-Popov Ghosts masses, Weinberg angle ... will have inconsistent values. The provided subroutines take care of all of that. ERRORS ====== Each parameter subroutine has as a last argument integer ierr this gives an error message. A negative (<0) error message means that REALLY there is some problem (negative masses, incorrect call to the subroutine -e.g. to change the mass of a 4th generation fermion-, etc.). In this case the subroutine returns to the main program when the error ocurred AND THE PARAMETERS ARE NOT SET CORRECTLY. You should check a) A bug in the main program made an incorrect call to the subroutine. Fix the bug. (ierr=-1) b) A choice of parameters makes a computed mass to take a negative value. Change the value of the parameter, and call the subroutine again. (ierr < -1) A positive (>0) error message means that there exist a warning on the parameters you try to set. However the parameters are all set to the corresponding values, and you the main program should be able to continue. However you should check: a) ierr=100: You try to set SUSY parameters in non-SUSY model b) ierr=1 : Some couplings have a value which is non-perturbative c) ierr=101: Both of the above (NOTE: There exist the possibility to check for other things, such as \delta\Rho. This is NOT implemented for the moment, because I wanted to release as soon as possible. When it is implemented it will not change any interface, it will return a positive error number, and maybe a "check" subroutine will be available to the main program). EXAMPLES ======== Five simple program examples are given to illustrate and check the libraries. They are test1.F: simple test program fig3.F: Writes to channels 30, 31, 32, 33 the set of points for the Fig.3 of hep-ph/9911452 (30, 31 -> Sqrt{S}=500GeV; 32, 33 -> Sqrt{S}=800 GeV) fig3_lamb.F: As fig3.F, but with lsusy=-1 (\lambda_5=\lambda_6). Writes to channels: 35, 36, 37, 38 fig4.F: Writes to channels 40, 41, the set of points for the Fig.4 of hep-ph/9911452 fig5.F: Writes to channels 51, 52, 53, 55, 56, 57 the set of points for the Fig.5 of hep-ph/9911452 fig6a.F: Writes to channels 61, 62, 63, 64 the set of points for the Fig.6a of hep-ph/9911452 Just type make all to build them. They are conveniently commented. ------------------------------------------------------------------------ List of parameter subroutines: ----------------------------- subroutine eehphm_setup_model(integer lmodel,integer lsusy, integer lerr)) * lmodel determines the model: * lmodel=-1 : MSSM * lmodel=0: SM * lmodel=1: 2HDM II * lmodel=2: 2HDM I * (is not a typo, is that way) * lsusy determines if the SUSY relation is used for the Higgs sector * of the THDM. (0=no, 1=yes, 2=only for the mass and \alpha angle relations) * (only \lambda_5 is free) * -1: Free masses and angles, but set \lambda_5=\lambda_6 * (automatic in SUSY). See e.g. S.Bejar, J.Guasch, J.Sola, * hep-ph/0011091 (page 5) for a discussion. * lerr: Channel to write error messages subroutine eehhpm_setup_pol(double precision pole,double precision polp) * Define the electron and positron polarisation. * pole=1 corresponds to right-handed electrons. * Please use only 0,+1,-1, since I (JG) don't know which consequences * would follow otherwise. subroutine eehhpm_setup_mhplus(double precision mhplus, integer ierr) c Defines the charged Higgs mass (in GeV) subroutine eehhpm_setup_mA0(double precision mA0_i, integer ierr) c Defines the CP-odd Higgs mass (in GeV) c (for non-SUSY-models) subroutine eehhpm_setup_mh0(double precision mh0_i, integer ierr) c Defines the CP-even light Higgs mass (in GeV) c (for non-SUSY-models) subroutine eehhpm_setup_mhh(double precision mhh_i, integer ierr) c Defines the CP-even heavy Higgs mass (in GeV) c (for non-SUSY-models) subroutine eehhpm_setup_tb(double precision tb_i, integer ierr) c Setup tan(beta) subroutine eehhpm_setup_hial(double precision hial_i, integer ierr) c Setup the "alpha" angle in the CP-even Higgs sector c (for non-SUSY-models) subroutine eehhpm_setup_vector(double precision mass,integer boson_nr, integer ierr) c Setup the masses of the vector bosons (in GeV): c boson_nr: * 00 \gamma * 01 Z^0 * 02 W^- subroutine eehhpm_setup_fermion(double precision mass,integer gen,integer fermion_nr, integer ierr) c Setup the masses of the SM fermions (in GeV): c gen=Generation (1,2,3) c fermion_nr: * 1 \nu * 2 e * 3 u * 4 d subroutine eehhpm_setup_msq(double precision mass,integer gen, integer ierr) c Setup the masses of the Left squark matrices c gen=SFermion Generation=1,2,3 subroutine eehhpm_setup_msl(double precision mass,integer gen, integer ierr) c Setup the masses of the Left slepton matrices c gen=SFermion Generation=1,2,3 subroutine eehhpm_setup_msu(double precision mass,integer gen, integer ierr) c Setup the masses of the Right up squark matrices c gen=SFermion Generation=1,2,3 subroutine eehhpm_setup_msd(double precision mass,integer gen, integer ierr) c Setup the masses of the Right down squark matrices c gen=SFermion Generation=1,2,3 subroutine eehhpm_setup_mse(double precision mass,integer gen, integer ierr) c Setup the masses of the Right slepton matrices c gen=SFermion Generation=1,2,3 subroutine eehhpm_setup_Af(double precision Af_in,integer gen,integer ferm, integer ierr) c Setup the masses of the Soft-SUSY-breaking trilinear coupling c gen=SFermion Generation=1,2,3 c ferm=1 sneutrino c ferm=2 selectron c ferm=3 sup c ferm=4 sdown subroutine eehhpm_setup_mu(double precision mu_in, integer ierr) c Setup the higgsino mass parameter \mu (in GeV) subroutine eehhpm_setup_m1(double precision m1_in, integer ierr) c Setup the U(1) gaugino mass parameter m1 (in GeV) subroutine eehhpm_setup_m2(double precision m2_in, integer ierr) c Setup the SU(2) gaugino mass parameter m2 (in GeV) subroutine eehhpm_setup_lam5(double precision lam5_in, integer ierr) c Setup the additional \lambda_5 coupling in non-SUSY-models ------------------------------------------------------------------------ FILE LISTING: ============= test1.F: simple test program fig3.F: Writes to channels 30, 31, 32, 33 the set of points for the Fig.3 of hep-ph/9911452 (30, 31 -> Sqrt{S}=500GeV; 32, 33 -> Sqrt{S}=800 GeV) fig3_lamb.F: As fig3.F, but with lsusy=-1 (\lambda_5=\lambda_6). Writes to channels: 35, 36, 37, 38 fig4.F: Writes to channels 40, 41, the set of points for the Fig.4 of hep-ph/9911452 fig5.F: Writes to channels 51, 52, 53, 55, 56, 57 the set of points for the Fig.5 of hep-ph/9911452 fig6a.F: Writes to channels 61, 62, 63, 64 the set of points for the Fig.6a of hep-ph/9911452 Interface functions: eeHpHm_function_differential.F: Function to compute the corrections to the differential cross-section e+e- -> H+H- eeHpHm_function_integral.F: Function to compute the corrections to the integrated cross-section e+e- -> H+H- eeHpHm_function_util.F: Function to compute the corrections to the differential cross-section e+e- -> H+H- eeHpHm_function_interfaces.F: This subroutine provides functions to change the internal value of the model parameters eeHpHm_setup_defaults.F: This file contains a subroutine, meant to be modified by the user, and to be compiled with the user program (NOT the library), that sets up the default parameters of the Models. The actual computation is done by: common.h: This file contains all the needed COMMON blocks constants.h: This file defines several constants for the preprocessor, such as number of generations, etc. particle.h: Define the name for the particles proces.h: Define some proces specific quantities. typedef.h: Define the types of the variables param.F: The subroutines in this files set the default values for the switches and the input parameters like masses and mixing angles. gen.h: Variables needed in the generic results. genargs.h: External momenta, internal masses and couplings are passed by vectors. feynman.F: The subroutine(s) in this file sets all the variables containing Feynman rules for the various vertices. The function pertur checks whether the couplings are still perturbative. dgenff.F: Generic diagrams for derivatives of fermion self-energies dgenss.F: Generic diagrams for derivatives of scalar self-energies. dgensv.F: Generic diagrams for derivatives of scalar/vector-boson mixing. dgenvv.F: Generic diagrams for derivatives of vector-boson self-energies. dseff.F: Derivative of self-energies for fermions. dsess.F: Self-energies for scalars. dsevv.F: Self-energies for vector-bosons. genff.F: Generic diagrams for fermion self-energies. gensff.F: Generic diagrams for vector-boson/fermion/anti-fermion vertex. genss.F: Generic diagrams for scalar self-energies. genssff.F: Generic diagrams for fermion/fermion/scalar/scalar box genssv.F: Generic diagrams for vector-boson/scalar/scalar vertex gensv.F: Generic diagrams for scalar/vector-boson mixing genvff.F: Generic diagrams for vector-boson/fermion/anti-fermion vertex genvv.F: Generic diagrams for vector-boson self-energies seff.F: Self-energies for fermions sess.F: Self-energies for scalars sevv.F: Self-energies for vector-bosons vervHpHm.F: One loop corrections to the H^+H^-\gamma and H^+H^-Z vertex vervee.F: One loop corrections to the ee\gamma and eeZ vertex box.F : One loop corrections to the e^+e^- -> H^+H^ box. (ARND KRAFT) renorm.F: The subroutine(s) in this file set renormalization constants. In addition, the following files make internal computations: utils.F: Several needed utilities bca.F bca.h d.F : invariant 2 and 3 point functions, reduction of 4 point functions (ANSGAR DENNER, ARND KRAFT) int.h: Define some common blocks that are needed for the integration subroutines in bca.f and bcanew.f. Makefile_Alpha Makefile_g77 Makefile_gfortran: Compilation makefiles for three different compilers ------------------------------------------------------------------------- Concerning the QED corrections: I did not include the QED corrections. The bulk of the QED corrections is given by the Initial State Radiation (ISR), for which you can use your standard LEP tools. They rest of the QED corrections are important to analize the asymmetries, which is not very interesting until a charged Higgs boson is finally discovered. The main problem with the QED corrections is that a Monte-Carlo (VEGAS) program is used to compute the three-body phase space for the hard photon processes, which I find inefficient for including into another Monte-Carlo code. I see no easy solution to that. I can write a routine only with soft photons (with or without ISR), but I don't know how useful would be that to you. Please let me know whether the QED corrections would be useful to you, and in which form. ------------------------------------------------------------------------- $Id: /trunk/readme.txt 48 2006-09-28T08:08:37.818871Z guasch $ -------------------------------------------------------------------------