CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_2_SLHC4_patch1/src/GeneratorInterface/Pythia8Interface/interface/EmissionVetoHook1.h

Go to the documentation of this file.
00001 #include "Pythia.h"
00002 
00003 class EmissionVetoHook1 : public Pythia8::UserHooks {
00004 
00005 public:  
00006 
00007   // Constructor and destructor.
00008   EmissionVetoHook1(int nFinalIn, bool vetoOnIn, int vetoCountIn,
00009                     int pThardModeIn, int pTemtModeIn, int emittedModeIn,
00010                     int pTdefModeIn, bool MPIvetoOnIn, int VerbosityIn) :
00011                     nFinalExt(nFinalIn),
00012                     vetoOn(vetoOnIn), vetoCount(vetoCountIn),
00013                     pThardMode(pThardModeIn), pTemtMode(pTemtModeIn),
00014                     emittedMode(emittedModeIn), pTdefMode(pTdefModeIn),
00015                     MPIvetoOn(MPIvetoOnIn), nISRveto(0), nFSRveto(0),
00016                     Verbosity(VerbosityIn) {}
00017  ~EmissionVetoHook1() {
00018     cout << "Number of ISR vetoed = " << nISRveto << endl;
00019     cout << "Number of FSR vetoed = " << nFSRveto << endl;
00020   }
00021 
00022 //--------------------------------------------------------------------------
00023 
00024   bool canVetoMPIStep()    { return true; }
00025   int  numberVetoMPIStep() { return 1; }
00026   bool doVetoMPIStep(int nMPI, const Pythia8::Event &e);
00027 
00028   bool canVetoISREmission() { return vetoOn; }
00029   bool doVetoISREmission(int, const Pythia8::Event &e, int iSys);
00030 
00031   bool canVetoFSREmission() { return vetoOn; }
00032   bool doVetoFSREmission(int, const Pythia8::Event &e, int iSys, bool);
00033 
00034   bool canVetoMPIEmission() { return MPIvetoOn; }
00035   bool doVetoMPIEmission(int, const Pythia8::Event &e);
00036 
00037   void fatalEmissionVeto(string message);  
00038 
00039   double pTpythia(const Pythia8::Event &e, int RadAfterBranch,
00040                   int EmtAfterBranch, int RecAfterBranch, bool FSR);
00041 
00042   double pTpowheg(const Pythia8::Event &e, int i, int j, bool FSR);
00043 
00044   double pTcalc(const Pythia8::Event &e, int i, int j, int k, int r, int xSRin);
00045 
00046 //--------------------------------------------------------------------------
00047 
00048 private:
00049   int    nFinalExt, vetoOn, vetoCount, pThardMode, pTemtMode,
00050          emittedMode, pTdefMode, MPIvetoOn;
00051   int    nFinal;
00052   double pThard, pTMPI;
00053   bool   accepted;
00054   // The number of accepted emissions (in a row)
00055   int nAcceptSeq;
00056   // Statistics on vetos
00057   unsigned long int nISRveto, nFSRveto;
00058   int Verbosity;
00059 };