CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/GeneratorInterface/Pythia8Interface/plugins/EmissionVetoHook.h

Go to the documentation of this file.
00001 #include <Pythia.h>
00002 
00003 class EmissionVetoHook : public Pythia8::UserHooks {
00004 
00005 public:
00006 
00007   // Constructor and destructor.
00008   EmissionVetoHook(int argVerbosity, bool argCheckHard) : last(-1), nISRveto(0), nFSRveto(0),
00009     Verbosity(argVerbosity), CheckHard(argCheckHard), firstNoRad(true) { }
00010  ~EmissionVetoHook() {
00011     cout << "Number of ISR vetoed = " << nISRveto << endl;
00012     cout << "Number of FSR vetoed = " << nFSRveto << endl;
00013   }
00014 
00015   // Use VetoMPIStep to analyse the incoming LHEF event and
00016   // extract the veto scale
00017   bool canVetoMPIStep()    { return true; }
00018   int  numberVetoMPIStep() { return 1; }
00019   bool doVetoMPIStep(int, const Pythia8::Event &e);
00020 
00021   // For subsequent ISR/FSR emissions, find the pT of the shower
00022   // emission and veto as necessary
00023   bool canVetoISREmission() { return true; }
00024   bool doVetoISREmission(int, const Pythia8::Event &e, int);
00025 
00026   bool canVetoFSREmission() { return true; }
00027   bool doVetoFSREmission(int, const Pythia8::Event &e, int, bool=false);
00028 
00029   void fatalEmissionVeto(string message);
00030 
00031   // Functions to return information
00032   double getPTpowheg() { return pTpowheg; }
00033   double getPTshower() { return pTshower; }
00034   int    getNISRveto() { return nISRveto; }
00035   int    getNFSRveto() { return nFSRveto; }
00036   bool   getNoRad()    { return noRad;    }
00037 
00038 private:
00039       
00040   double pTveto, pTpowheg, pTshower;
00041   int    last, nISRveto, nFSRveto, Verbosity;
00042   bool   CheckHard, noRad, firstNoRad;
00043 };