ATLAS Offline Software
Public Member Functions | Private Attributes | List of all members
Pythia8::VetoedShower Class Reference
Inheritance diagram for Pythia8::VetoedShower:
Collaboration diagram for Pythia8::VetoedShower:

Public Member Functions

 VetoedShower ()
 
 ~VetoedShower ()
 
bool doVetoMPIStep (int, const Event &)
 doVetoMPIStep is called immediately after the MPI generation In this case it nver actually vetoes the MPI, but since it is called before the ISR veto check this is a convenient place to find the veto scale from the LHEF event More...
 
bool doVetoISREmission (int, const Event &e, int)
 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 &e, int, bool)
 This is similar to the ISR veto, with the exception that since the ordering is in a slightly different pT definition to Powheg the veto must always be checked, rather than stopping once an emission is allowed. 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 Attributes

double m_pTVeto
 
bool m_doneISR
 

Detailed Description

Definition at line 18 of file VetoedShower.cxx.

Constructor & Destructor Documentation

◆ VetoedShower()

Pythia8::VetoedShower::VetoedShower ( )
inline

Definition at line 22 of file VetoedShower.cxx.

22  : m_pTVeto(0.), m_doneISR(false){
23  std::cout<<std::endl;
24  std::cout<<"************************************************************************************************"<<std::endl;
25  std::cout<<"Pythia8::VetoedShower: *** WARNING: THIS USER HOOK IS NOT VALIDATED FOR QCD JET PRODUCTION!! ***"<<std::endl;
26  std::cout<<"************************************************************************************************"<<std::endl;
27  std::cout<<std::endl;
28  }

◆ ~VetoedShower()

Pythia8::VetoedShower::~VetoedShower ( )
inline

Definition at line 30 of file VetoedShower.cxx.

30 {}

Member Function Documentation

◆ canVetoFSREmission()

bool Pythia8::VetoedShower::canVetoFSREmission ( )
inline

Switch off veto of FSR.

Definition at line 143 of file VetoedShower.cxx.

143 {return true;}

◆ canVetoISREmission()

bool Pythia8::VetoedShower::canVetoISREmission ( )
inline

Switch on veto of ISR.

Definition at line 141 of file VetoedShower.cxx.

141 {return true;}

◆ canVetoMPIStep()

bool Pythia8::VetoedShower::canVetoMPIStep ( )
inline

Switch on calling of doVetoMPIStep.

Definition at line 137 of file VetoedShower.cxx.

137 {return true;}

◆ doVetoFSREmission()

bool Pythia8::VetoedShower::doVetoFSREmission ( int  ,
const Event e,
int  ,
bool   
)
inline

This is similar to the ISR veto, with the exception that since the ordering is in a slightly different pT definition to Powheg the veto must always be checked, rather than stopping once an emission is allowed.

Definition at line 99 of file VetoedShower.cxx.

99  {
100  // Note ignoring new iSys and isResonance params for now (addition required to fix compilation against >= 8.157
101 
102  int i = e.size() - 1;
103 
104  while(i != -1){
105  if (e[i].isFinal() && e[i].status() == 51) break;
106 
107  --i;
108 
109  if(i == 0){
110  e.list();
111  throw std::runtime_error("Pythia8::VetoedShower::doVetoFSREmission: Could not find FSR emission");
112  }
113  }
114 
115  // Make sure radiation from the hard system
116  int iMother = e[i].mother1();
117  int sysSize = partonSystemsPtr->sizeOut(0);
118  bool hardSys = false;
119 
120  for (int j = 0; j < sysSize; ++j){
121  int iOut = partonSystemsPtr->getOut(0, j);
122  if (iOut == iMother) {
123  hardSys = true;
124  break;
125  }
126  }
127 
128  if (!hardSys) return false;
129 
130  // Veto if above the POWHEG scale
131  if (e[i].pT() > m_pTVeto) return true;
132 
133  return false;
134  }

◆ doVetoISREmission()

bool Pythia8::VetoedShower::doVetoISREmission ( int  ,
const Event e,
int   
)
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.

Since the ISR is ordered in pT (with the same definition relative to the beam as Powheg), once we find an emission below the veto scale we know that all subsequent emissions will also be below the scale. Therefore m_doneISR gets set to true at that point and nothing more needs doing

Definition at line 59 of file VetoedShower.cxx.

59  {
60  // Note ignoring new iSys param for now (addition required to fix compilation against >= 8.157
61 
62  if(m_doneISR) return false;
63 
64  int i = e.size() - 1;
65 
66  while(i != -1){
67 
68  if(e[i].isFinal() && e[i].status() == 43) break;
69 
70  --i;
71 
72  if(i == 0){
73  e.list();
74  throw std::runtime_error("Pythia8::VetoedShower::doVetoISREmission: Could not find ISR emission");
75  }
76  }
77 
78  //check the leg is connected to the hard system
79  int iMother = e[i].mother1();
80  if(e[iMother].status() != -41)
81  throw std::runtime_error("Pythia8::VetoedShower::doVetoISREmission: Unexpected status code in ISR");
82 
83  iMother = e[iMother].daughter2();
84  if(iMother != partonSystemsPtr->getInA(0) &&
85  iMother != partonSystemsPtr->getInB(0)) return false;
86 
87  // Veto emission above the veto scale
88  if(e[i].pT() > m_pTVeto) return true;
89 
90  m_doneISR = true;
91  return false;
92  }

◆ doVetoMPIStep()

bool Pythia8::VetoedShower::doVetoMPIStep ( int  ,
const Event  
)
inline

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

Definition at line 38 of file VetoedShower.cxx.

38  {
39 
40  m_pTVeto = infoPtr->QFac();
41  m_doneISR = false;
42 
43 // std::cout<<" ******** veto scale = "<<m_pTVeto<<" *********"<<std::endl;
44 
45  return false;
46  }

◆ numberVetoMPIStep()

int Pythia8::VetoedShower::numberVetoMPIStep ( )
inline

Call doVetoMIStep once.

Definition at line 139 of file VetoedShower.cxx.

139 {return 1;}

Member Data Documentation

◆ m_doneISR

bool Pythia8::VetoedShower::m_doneISR
private

Definition at line 148 of file VetoedShower.cxx.

◆ m_pTVeto

double Pythia8::VetoedShower::m_pTVeto
private

Definition at line 147 of file VetoedShower.cxx.


The documentation for this class was generated from the following file:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
CalculateHighPtTerm.pT
pT
Definition: ICHEP2016/CalculateHighPtTerm.py:57
lumiFormat.i
int i
Definition: lumiFormat.py:85
Pythia8::VetoedShower::m_doneISR
bool m_doneISR
Definition: VetoedShower.cxx:148
merge.status
status
Definition: merge.py:17
Pythia8::VetoedShower::m_pTVeto
double m_pTVeto
Definition: VetoedShower.cxx:147