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
00031
00032
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
00069
00070
00071 return true;
00072 }