00001 #include "Pythia.h"
00002
00003 class EmissionVetoHook1 : public Pythia8::UserHooks {
00004
00005 public:
00006
00007
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
00055 int nAcceptSeq;
00056
00057 unsigned long int nISRveto, nFSRveto;
00058 int Verbosity;
00059 };