CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_6/src/GeneratorInterface/ExternalDecays/interface/TauolaWrapper.h

Go to the documentation of this file.
00001 #ifndef gen_ExternalDecays_TauolaWrapper_h
00002 #define gen_ExternalDecays_TauolaWrapper_h
00003 
00004 /********** TauolaWrapper
00005  *
00006  * Wrapper to Fortran functions in TAUOLA tau decay library
00007  *
00008  * Christian Veelken
00009  *  04/17/07
00010  *
00011  * Modified to contain access to individual decays (COMMON TAUBRA), and
00012  * force polarization like in case of particle gun taus (SUBROUTINE DEXAY
00013  * and COMMON MOMDEC)
00014  * 23.2.2009/S.Lehti
00015  *
00016  * Modified to remove everything related to pythia6 or pretauola;
00017  * all pythia6-related functionalities and/or ties are moving back
00018  * to Pythia6Interface;
00019  * the concept will ensure transparent use of Tauola with ANY
00020  * multi-purpose generator
00021  * J.V.Yarba, Feb.26, 2009
00022  *
00023  ***************************************/
00024 
00025 //
00026 //-------------------------------------------------------------------------------
00027 //
00028 
00029 // main function(s) of TAUOLA/pretauola tau decay library
00030 
00031 extern "C" {
00032   void tauola_(int*, int*);
00033   void tauola_srs_(int*,int*);
00034   void taurep_(int*);
00035   void ranmar_(float*,int*);
00036   void rmarin_(int*, int*, int*);
00037 }
00038 #define tauola tauola_ 
00039 
00040 void inline call_tauola (int mode, int polarization) { tauola(&mode, &polarization); }
00041 
00042 extern "C" {
00043   extern void dexay_(int*, float[4]);
00044 }
00045 #define dexay dexay_
00046 
00047 void inline call_dexay (int mode, float polarization[4]) { dexay(&mode, polarization); }
00048 
00049 //
00050 //-------------------------------------------------------------------------------
00051 //
00052 
00053 // common block with steering parameters for CMS specific Fortran interface to TAUOLA
00054 
00055 extern "C" {
00056   extern struct {
00057     int pjak1;
00058     int pjak2;
00059     int mdtau;
00060   } ki_taumod_;
00061 }
00062 #define ki_taumod ki_taumod_
00063 
00064 extern "C" {
00065    extern struct {
00066      int jak1;
00067      int jak2;
00068      int itdkrc; 
00069      int ifphot; 
00070      int ifhadm; 
00071      int ifhadp; 
00072    } libra_ ;
00073 } 
00074 #define libra libra_
00075 
00076 extern "C" {
00077   extern struct {
00078     float gamprt[30];
00079     int   jlist[30];
00080     int   nchan;
00081   } taubra_;
00082 }
00083 #define taubra taubra_
00084 
00085 extern "C" {
00086   extern struct {
00087     double q1[4];
00088     double q2[4];
00089     double p1[4];
00090     double p2[4];
00091     double p3[4];
00092     double p4[4];
00093   } momdec_;
00094 }
00095 #define momdec momdec_
00096 
00097 extern "C" {
00098    extern struct {
00099       int np1;
00100       int np2; 
00101     } taupos_;
00102 }
00103 #define taupos taupos_
00104 
00105 #endif