CMS 3D CMS Logo

EmissionVetoHook1.h
Go to the documentation of this file.
2 
3 class EmissionVetoHook1 : public Pythia8::UserHooks {
4 public:
5  // Constructor and destructor.
6  EmissionVetoHook1(int nFinalIn,
7  bool vetoOnIn,
8  int vetoCountIn,
9  int pThardModeIn,
10  int pTemtModeIn,
11  int emittedModeIn,
12  int pTdefModeIn,
13  bool MPIvetoOnIn,
14  int QEDvetoModeIn,
15  int nFinalModeIn,
16  int VerbosityIn)
17  : nFinalExt(nFinalIn),
18  vetoOn(vetoOnIn),
19  vetoCount(vetoCountIn),
20  pThardMode(pThardModeIn),
21  pTemtMode(pTemtModeIn),
22  emittedMode(emittedModeIn),
23  pTdefMode(pTdefModeIn),
24  MPIvetoOn(MPIvetoOnIn),
25  QEDvetoMode(QEDvetoModeIn),
26  nFinalMode(nFinalModeIn),
27  nISRveto(0),
28  nFSRveto(0),
29  Verbosity(VerbosityIn) {}
30  ~EmissionVetoHook1() override {
31  std::cout << "Number of ISR vetoed = " << nISRveto << std::endl;
32  std::cout << "Number of FSR vetoed = " << nFSRveto << std::endl;
33  }
34 
35  //--------------------------------------------------------------------------
36 
37  bool canVetoMPIStep() override { return true; }
38  int numberVetoMPIStep() override { return 1; }
39  bool doVetoMPIStep(int nMPI, const Pythia8::Event &e) override;
40 
41  bool canVetoISREmission() override { return vetoOn; }
42  bool doVetoISREmission(int, const Pythia8::Event &e, int iSys) override;
43 
44  bool canVetoFSREmission() override { return vetoOn; }
45  bool doVetoFSREmission(int, const Pythia8::Event &e, int iSys, bool) override;
46 
47  bool canVetoMPIEmission() override { return MPIvetoOn; }
48  bool doVetoMPIEmission(int, const Pythia8::Event &e) override;
49 
50  void fatalEmissionVeto(std::string message);
51 
52  double pTpythia(const Pythia8::Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch, bool FSR);
53 
54  double pTpowheg(const Pythia8::Event &e, int i, int j, bool FSR);
55 
56  double pTcalc(const Pythia8::Event &e, int i, int j, int k, int r, int xSRin);
57 
58  //--------------------------------------------------------------------------
59 
60 private:
62  int nFinal;
63  double pThard, pTMPI;
64  bool accepted, isEmt;
65  // The number of accepted emissions (in a row)
67  // Statistics on vetos
68  unsigned long int nISRveto, nFSRveto;
69  int Verbosity;
70 };
bool canVetoISREmission() override
bool doVetoFSREmission(int, const Pythia8::Event &e, int iSys, bool) override
bool doVetoISREmission(int, const Pythia8::Event &e, int iSys) override
unsigned long int nISRveto
int numberVetoMPIStep() override
double pTpowheg(const Pythia8::Event &e, int i, int j, bool FSR)
bool doVetoMPIStep(int nMPI, const Pythia8::Event &e) override
bool canVetoMPIEmission() override
bool canVetoFSREmission() override
unsigned long int nFSRveto
double pTcalc(const Pythia8::Event &e, int i, int j, int k, int r, int xSRin)
EmissionVetoHook1(int nFinalIn, bool vetoOnIn, int vetoCountIn, int pThardModeIn, int pTemtModeIn, int emittedModeIn, int pTdefModeIn, bool MPIvetoOnIn, int QEDvetoModeIn, int nFinalModeIn, int VerbosityIn)
double pTpythia(const Pythia8::Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch, bool FSR)
~EmissionVetoHook1() override
bool canVetoMPIStep() override
void fatalEmissionVeto(std::string message)
bool doVetoMPIEmission(int, const Pythia8::Event &e) override