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) return false;
00017 const lhef::HEPRUP &heprup = *runInfo->getHEPRUP();
00018
00019 setBeamA(heprup.IDBMUP.first, heprup.EBMUP.first,
00020 heprup.PDFGUP.first, heprup.PDFSUP.first);
00021 setBeamB(heprup.IDBMUP.second, heprup.EBMUP.second,
00022 heprup.PDFGUP.second, heprup.PDFSUP.second);
00023 setStrategy(heprup.IDWTUP);
00024
00025 for(int i = 0; i < heprup.NPRUP; i++)
00026 addProcess(heprup.LPRUP[i], heprup.XSECUP[i],
00027 heprup.XERRUP[i], heprup.XMAXUP[i]);
00028
00029
00030
00031
00032 return true;
00033 }
00034
00035
00036 bool LHAupLesHouches::setEvent(int inProcId)
00037 {
00038 if (!event) return false;
00039
00040 if ( event->getReadAttempts() > 0 ) return false;
00041
00042 const lhef::HEPEUP &hepeup = *event->getHEPEUP();
00043
00044 if ( !hepeup.NUP ) return false;
00045
00046 setProcess(hepeup.IDPRUP, hepeup.XWGTUP, hepeup.SCALUP,
00047 hepeup.AQEDUP, hepeup.AQCDUP);
00048
00049 for(int i = 0; i < hepeup.NUP; i++)
00050 addParticle(hepeup.IDUP[i], hepeup.ISTUP[i],
00051 hepeup.MOTHUP[i].first, hepeup.MOTHUP[i].second,
00052 hepeup.ICOLUP[i].first, hepeup.ICOLUP[i].second,
00053 hepeup.PUP[i][0], hepeup.PUP[i][1],
00054 hepeup.PUP[i][2], hepeup.PUP[i][3],
00055 hepeup.PUP[i][4], hepeup.VTIMUP[i],
00056 hepeup.SPINUP[i]);
00057
00058 const lhef::LHEEvent::PDF *pdf = event->getPDF();
00059 if (pdf) {
00060 this->setPdf(pdf->id.first, pdf->id.second,
00061 pdf->x.first, pdf->x.second,
00062 pdf->scalePDF,
00063 pdf->xPDF.first, pdf->xPDF.second, true);
00064 }
00065 else {
00066 this->setPdf(hepeup.IDUP[0], hepeup.IDUP[1],
00067 hepeup.PUP[0][3] / runInfo->getHEPRUP()->EBMUP.first,
00068 hepeup.PUP[1][3] / runInfo->getHEPRUP()->EBMUP.second,
00069 0., 0., 0., false);
00070 }
00071
00072
00073
00074
00075
00076 event->attempted();
00077
00078 return true;
00079 }