ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
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 More...
 
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. More...
 
bool doVetoFSREmission (int, const Event &evt, int iSys, bool)
 This is similar to the ISR veto. More...
 
bool canVetoMPIStep ()
 Switch on calling of doVetoMPIStep. More...
 
int numberVetoMPIStep ()
 Call doVetoMIStep once. More...
 
bool canVetoISREmission ()
 Switch on veto of ISR. More...
 
bool canVetoFSREmission ()
 Switch off veto of FSR. More...
 

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  }

◆ 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  }

◆ 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 
89 
90  return checkEmission(emission, evt);
91 
92  }

◆ 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:
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
Pythia8::QCDVetoedShower::checkEmission
bool checkEmission(size_t emission, const Event &evt)
Definition: QCDVetoedShower.cxx:119
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
Pythia8_UserHooks::pTLeg
double pTLeg(const Pythia8::Particle &leg, const Pythia8::Particle &comparison)
Definition: UserHooksUtils.h:50
Pythia8_UserHooks::findLastISREmission
size_t findLastISREmission(const Pythia8::Event &evt)
Definition: UserHooksUtils.h:80
Pythia8::QCDVetoedShower::m_powhegLegs
std::vector< size_t > m_powhegLegs
Definition: QCDVetoedShower.cxx:135
Pythia8::QCDVetoedShower::m_powhegScale
double m_powhegScale
Definition: QCDVetoedShower.cxx:133
Pythia8_UserHooks::findLastFSREmission
size_t findLastFSREmission(const Pythia8::Event &evt)
Definition: UserHooksUtils.h:89