CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC2/src/SimDataFormats/GeneratorProducts/interface/LHECommonBlocks.h

Go to the documentation of this file.
00001 #ifndef SimDataFormats_GeneratorProducts_LHECommonBlocks_h
00002 #define SimDataFormats_GeneratorProducts_LHECommonBlocks_h
00003 
00004 #include "SimDataFormats/GeneratorProducts/interface/LesHouches.h"
00005 
00006 extern "C" {
00007         extern struct HEPRUP_ {
00008                 int idbmup[2];
00009                 double ebmup[2];
00010                 int pdfgup[2];
00011                 int pdfsup[2];
00012                 int idwtup;
00013                 int nprup;
00014                 double xsecup[100];
00015                 double xerrup[100];
00016                 double xmaxup[100];
00017                 int lprup[100];
00018         } heprup_;
00019 
00020         extern struct HEPEUP_ {
00021                 int nup;
00022                 int idprup;
00023                 double xwgtup;
00024                 double scalup;
00025                 double aqedup;
00026                 double aqcdup;
00027                 int idup[500];
00028                 int istup[500];
00029                 int mothup[500][2];
00030                 int icolup[500][2];
00031                 double pup[500][5];
00032                 double vtimup[500];
00033                 double spinup[500];
00034         } hepeup_;
00035 } // extern "C"
00036 
00037 namespace lhef {
00038 
00039 class CommonBlocks {
00040     public:
00041         static void fillHEPRUP(const HEPRUP *heprup)
00042         {
00043                 heprup_.idbmup[0] = heprup->IDBMUP.first;
00044                 heprup_.idbmup[1] = heprup->IDBMUP.second;
00045                 heprup_.ebmup[0] = heprup->EBMUP.first;
00046                 heprup_.ebmup[1] = heprup->EBMUP.second;
00047                 heprup_.pdfgup[0] = heprup->PDFGUP.first;
00048                 heprup_.pdfgup[1] = heprup->PDFGUP.second;
00049                 heprup_.pdfsup[0] = heprup->PDFSUP.first;
00050                 heprup_.pdfsup[1] = heprup->PDFSUP.second;
00051                 heprup_.idwtup = heprup->IDWTUP;
00052                 heprup_.nprup = heprup->NPRUP;
00053                 for(int i = 0; i < heprup->NPRUP; i++) {
00054                         heprup_.xsecup[i] = heprup->XSECUP[i];
00055                         heprup_.xerrup[i] = heprup->XERRUP[i];
00056                         heprup_.xmaxup[i] = heprup->XMAXUP[i];
00057                         heprup_.lprup[i] = heprup->LPRUP[i];
00058                 }
00059         }
00060 
00061         static void fillHEPEUP(const HEPEUP *hepeup)
00062         {
00063                 hepeup_.nup = hepeup->NUP;
00064                 hepeup_.idprup = hepeup->IDPRUP;
00065                 hepeup_.xwgtup = hepeup->XWGTUP;
00066                 hepeup_.scalup = hepeup->SCALUP;
00067                 hepeup_.aqedup = hepeup->AQEDUP;
00068                 hepeup_.aqcdup = hepeup->AQCDUP;
00069                 for(int i = 0; i < hepeup->NUP; i++) {
00070                         hepeup_.idup[i] = hepeup->IDUP[i];
00071                         hepeup_.istup[i] = hepeup->ISTUP[i];
00072                         hepeup_.mothup[i][0] = hepeup->MOTHUP[i].first;
00073                         hepeup_.mothup[i][1] = hepeup->MOTHUP[i].second;
00074                         hepeup_.icolup[i][0] = hepeup->ICOLUP[i].first;
00075                         hepeup_.icolup[i][1] = hepeup->ICOLUP[i].second;
00076                         for(unsigned int j = 0; j < 5; j++)
00077                                 hepeup_.pup[i][j] = hepeup->PUP[i][j];
00078                         hepeup_.vtimup[i] = hepeup->VTIMUP[i];
00079                         hepeup_.spinup[i] = hepeup->SPINUP[i];
00080                 }
00081         }
00082 
00083         static void readHEPRUP(HEPRUP *heprup)
00084         {
00085                 heprup->resize(heprup_.nprup);
00086                 heprup->IDBMUP.first = heprup_.idbmup[0];
00087                 heprup->IDBMUP.second = heprup_.idbmup[1];
00088                 heprup->EBMUP.first = heprup_.ebmup[0];
00089                 heprup->EBMUP.second = heprup_.ebmup[1];
00090                 heprup->PDFGUP.first = heprup_.pdfgup[0];
00091                 heprup->PDFGUP.second = heprup_.pdfgup[1];
00092                 heprup->PDFSUP.first = heprup_.pdfsup[0];
00093                 heprup->PDFSUP.second = heprup_.pdfsup[1];
00094                 heprup->IDWTUP = heprup_.idwtup;
00095                 for(int i = 0; i < heprup->NPRUP; i++) {
00096                         heprup->XSECUP[i] = heprup_.xsecup[i];
00097                         heprup->XERRUP[i] = heprup_.xerrup[i];
00098                         heprup->XMAXUP[i] = heprup_.xmaxup[i];
00099                         heprup->LPRUP[i] = heprup_.lprup[i];
00100                 }
00101         }
00102 
00103         static void readHEPEUP(HEPEUP *hepeup)
00104         {
00105                 hepeup->resize(hepeup_.nup);
00106                 hepeup->IDPRUP = hepeup_.idprup;
00107                 hepeup->XWGTUP = hepeup_.xwgtup;
00108                 hepeup->SCALUP = hepeup_.scalup;
00109                 hepeup->AQEDUP = hepeup_.aqedup;
00110                 hepeup->AQCDUP = hepeup_.aqcdup;
00111                 for(int i = 0; i < hepeup->NUP; i++) {
00112                         hepeup->IDUP[i] = hepeup_.idup[i];
00113                         hepeup->ISTUP[i] = hepeup_.istup[i];
00114                         hepeup->MOTHUP[i].first = hepeup_.mothup[i][0];
00115                         hepeup->MOTHUP[i].second = hepeup_.mothup[i][1];
00116                         hepeup->ICOLUP[i].first = hepeup_.icolup[i][0];
00117                         hepeup->ICOLUP[i].second = hepeup_.icolup[i][1];
00118                         for(unsigned int j = 0; j < 5; j++)
00119                                 hepeup->PUP[i][j] = hepeup_.pup[i][j];
00120                         hepeup->VTIMUP[i] = hepeup_.vtimup[i];
00121                         hepeup->SPINUP[i] = hepeup_.spinup[i];
00122                 }
00123         }
00124 
00125     private:
00126         CommonBlocks();
00127         ~CommonBlocks();
00128 };
00129 
00130 } // namespace lhef
00131 
00132 #endif // SimDataFormats_GeneratorProducts_LHECommonBlocks_h