CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/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) 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   //hadronisation->onInit().emit();
00030 
00031   //runInfo.reset();
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; // record already tried
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   //hadronisation->onBeforeHadronisation().emit();
00073 
00074   //event.reset();
00075 
00076   event->attempted();
00077 
00078   return true;
00079 }