ATLAS Offline Software
Loading...
Searching...
No Matches
Pythia8::QCDVetoedShower Class Reference

This UserHook should be used when showering QCD jets generated with PoWHEG-box. More...

Inheritance diagram for Pythia8::QCDVetoedShower:
Collaboration diagram for Pythia8::QCDVetoedShower:

Public Member Functions

 QCDVetoedShower ()
 ~QCDVetoedShower ()
bool doVetoMPIStep (int nMPI, const Event &evt)
 doVetoMPIStep is called immediately after the MPI generation In this case it never actually vetoes the MPI, but since it is called before the ISR veto check this is a convenient place to find the PoWHEG scale from the LHEF event
bool doVetoISREmission (int, const Event &evt, int iSys)
 This is called after the generation of each new ISR emission Can use it to test if the last generated emission is above the veto scale.
bool doVetoFSREmission (int, const Event &evt, int iSys, bool)
 This is similar to the ISR veto.
bool canVetoMPIStep ()
 Switch on calling of doVetoMPIStep.
int numberVetoMPIStep ()
 Call doVetoMIStep once.
bool canVetoISREmission ()
 Switch on veto of ISR.
bool canVetoFSREmission ()
 Switch off veto of FSR.

Private Member Functions

bool checkEmission (size_t emission, const Event &evt)

Private Attributes

double m_powhegScale
std::vector< size_t > m_powhegLegs

Detailed Description

This UserHook should be used when showering QCD jets generated with PoWHEG-box.

The following settings must be activated in Pythia:

SpaceShower:pTMaxMatch = 2 TimeShower:pTMaxMatch = 2

These set the limit for emission from both initial and final state radiation to the kinematic (beam) energy. The veto hook then vetos any emission that would be above the appropriate scale.

In QCD, emissions could come from any PoWHEG leg, therefore each candidate Pythia emission has its pT determined relative to each PoWHEG leg, including the beams. If any of these pTs is larger than the PoWHEG veto scale then that proposed emission is rejected.

this differs from colourless resonance production, which requires a different scheme and therefore this hook...

        ...SHOULD NOT BE USED FOR W/Z OR OTHER COLOURLESS RESONANCE PRODUCTION!!

Definition at line 36 of file QCDVetoedShower.cxx.

Constructor & Destructor Documentation

◆ QCDVetoedShower()

Pythia8::QCDVetoedShower::QCDVetoedShower ( )
inline

Definition at line 40 of file QCDVetoedShower.cxx.

40 : m_powhegScale(0.){
41
42 std::cout<<"*******************************************************************"<<std::endl;
43 std::cout<<"* *"<<std::endl;
44 std::cout<<"* Using vetoed shower for PoWHEG QCD production! *"<<std::endl;
45 std::cout<<"* *"<<std::endl;
46 std::cout<<"*******************************************************************"<<std::endl;
47
48 }

◆ ~QCDVetoedShower()

Pythia8::QCDVetoedShower::~QCDVetoedShower ( )
inline

Definition at line 50 of file QCDVetoedShower.cxx.

50{}

Member Function Documentation

◆ canVetoFSREmission()

bool Pythia8::QCDVetoedShower::canVetoFSREmission ( )
inline

Switch off veto of FSR.

Definition at line 115 of file QCDVetoedShower.cxx.

115{return true;}

◆ canVetoISREmission()

bool Pythia8::QCDVetoedShower::canVetoISREmission ( )
inline

Switch on veto of ISR.

Definition at line 113 of file QCDVetoedShower.cxx.

113{return true;}

◆ canVetoMPIStep()

bool Pythia8::QCDVetoedShower::canVetoMPIStep ( )
inline

Switch on calling of doVetoMPIStep.

Definition at line 109 of file QCDVetoedShower.cxx.

109{return true;}

◆ checkEmission()

bool Pythia8::QCDVetoedShower::checkEmission ( size_t emission,
const Event & evt )
inlineprivate

Definition at line 119 of file QCDVetoedShower.cxx.

119 {
120 // Veto if above the POWHEG scale
121 if (evt[emission].pT() > m_powhegScale) return true;
122
123 // determine pT relative to each outgoing PoWHEG leg and veto if above veto scale
124
125 for(std::vector<size_t>::const_iterator legIndex = m_powhegLegs.begin();
126 legIndex != m_powhegLegs.end(); ++legIndex){
127
128 if(Pythia8_UserHooks::pTLeg(emission, *legIndex, evt) > m_powhegScale)return true;
129 }
130 return false;
131 }
std::vector< size_t > m_powhegLegs
double pTLeg(const Pythia8::Particle &leg, const Pythia8::Particle &comparison)

◆ doVetoFSREmission()

bool Pythia8::QCDVetoedShower::doVetoFSREmission ( int ,
const Event & evt,
int iSys,
bool  )
inline

This is similar to the ISR veto.

Definition at line 98 of file QCDVetoedShower.cxx.

98 {
99
100 // only veto emissions from the hard system
101 if(iSys != 0) return false;
102
103 size_t emission = Pythia8_UserHooks::findLastFSREmission(evt);
104
105 return checkEmission(emission, evt);
106 }
bool checkEmission(size_t emission, const Event &evt)
size_t findLastFSREmission(const Pythia8::Event &evt)

◆ doVetoISREmission()

bool Pythia8::QCDVetoedShower::doVetoISREmission ( int ,
const Event & evt,
int iSys )
inline

This is called after the generation of each new ISR emission Can use it to test if the last generated emission is above the veto scale.

Definition at line 83 of file QCDVetoedShower.cxx.

83 {
84
85 // only veto emissions from the hard system
86 if(iSys != 0) return false;
87
88 size_t emission = Pythia8_UserHooks::findLastISREmission(evt);
89
90 return checkEmission(emission, evt);
91
92 }
size_t findLastISREmission(const Pythia8::Event &evt)

◆ doVetoMPIStep()

bool Pythia8::QCDVetoedShower::doVetoMPIStep ( int nMPI,
const Event & evt )
inline

doVetoMPIStep is called immediately after the MPI generation In this case it never actually vetoes the MPI, but since it is called before the ISR veto check this is a convenient place to find the PoWHEG scale from the LHEF event

Definition at line 58 of file QCDVetoedShower.cxx.

58 {
59
60 // Only do anything on the first call.
61 if(nMPI > 1) return false;
62
63 m_powhegScale = infoPtr->QRen();
64
65 m_powhegLegs.clear();
66 // start the loop at 1, since entry 0 represents the event as a whole
67 for(int ii=1; ii != evt.size(); ++ii){
68 // here Event::isFinal refers to whether the particle can still decay/radiate, or whether it is an internal leg
69 if(evt[ii].isFinal()){
70 m_powhegLegs.push_back(ii);
71 }
72 }
73
74 return false;
75 }

◆ numberVetoMPIStep()

int Pythia8::QCDVetoedShower::numberVetoMPIStep ( )
inline

Call doVetoMIStep once.

Definition at line 111 of file QCDVetoedShower.cxx.

111{return 1;}

Member Data Documentation

◆ m_powhegLegs

std::vector<size_t> Pythia8::QCDVetoedShower::m_powhegLegs
private

Definition at line 135 of file QCDVetoedShower.cxx.

◆ m_powhegScale

double Pythia8::QCDVetoedShower::m_powhegScale
private

Definition at line 133 of file QCDVetoedShower.cxx.


The documentation for this class was generated from the following file: