CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/GeneratorInterface/Pythia8Interface/src/LHAupLesHouches.cc

Go to the documentation of this file.
00001 #include <algorithm>
00002 #include <iostream>
00003 #include <iterator>
00004 #include <sstream>
00005 #include <string>
00006 #include <memory>
00007 #include <assert.h>
00008 
00009 #include "GeneratorInterface/Pythia8Interface/interface/LHAupLesHouches.h"
00010 
00011 using namespace Pythia8;
00012 
00013 
00014 bool LHAupLesHouches::setInit()
00015 {
00016         if (!runInfo)
00017                 return false;
00018         const lhef::HEPRUP &heprup = *runInfo->getHEPRUP();
00019 
00020         setBeamA(heprup.IDBMUP.first, heprup.EBMUP.first,
00021                  heprup.PDFGUP.first, heprup.PDFSUP.first);
00022         setBeamB(heprup.IDBMUP.second, heprup.EBMUP.second,
00023                  heprup.PDFGUP.second, heprup.PDFSUP.second);
00024         setStrategy(heprup.IDWTUP);
00025 
00026         for(int i = 0; i < heprup.NPRUP; i++)
00027                 addProcess(heprup.LPRUP[i], heprup.XSECUP[i],
00028                            heprup.XERRUP[i], heprup.XMAXUP[i]);
00029 
00030 //      hadronisation->onInit().emit();
00031 
00032 //      runInfo.reset();
00033         return true;
00034 }
00035 
00036 bool LHAupLesHouches::setEvent(int inProcId)
00037 {
00038         if (!event)
00039                 return false;
00040         const lhef::HEPEUP &hepeup = *event->getHEPEUP();
00041 
00042         setProcess(hepeup.IDPRUP, hepeup.XWGTUP, hepeup.SCALUP,
00043                    hepeup.AQEDUP, hepeup.AQCDUP);
00044 
00045         for(int i = 0; i < hepeup.NUP; i++)
00046                 addParticle(hepeup.IDUP[i], hepeup.ISTUP[i],
00047                             hepeup.MOTHUP[i].first, hepeup.MOTHUP[i].second,
00048                             hepeup.ICOLUP[i].first, hepeup.ICOLUP[i].second,
00049                             hepeup.PUP[i][0], hepeup.PUP[i][1],
00050                             hepeup.PUP[i][2], hepeup.PUP[i][3],
00051                             hepeup.PUP[i][4], hepeup.VTIMUP[i],
00052                             hepeup.SPINUP[i]);
00053 
00054         const lhef::LHEEvent::PDF *pdf = event->getPDF();
00055         if (pdf) {
00056           this->setPdf(pdf->id.first, pdf->id.second,
00057                        pdf->x.first, pdf->x.second,
00058                        pdf->scalePDF,
00059                        pdf->xPDF.first, pdf->xPDF.second, true);
00060         }
00061         else {
00062           this->setPdf(hepeup.IDUP[0], hepeup.IDUP[1],
00063                        hepeup.PUP[0][3] / runInfo->getHEPRUP()->EBMUP.first,
00064                        hepeup.PUP[1][3] / runInfo->getHEPRUP()->EBMUP.second,
00065                        0., 0., 0., false);
00066         }
00067 
00068 //      hadronisation->onBeforeHadronisation().emit();
00069 
00070 //      event.reset();
00071         return true;
00072 }