ATLAS Offline Software
Loading...
Searching...
No Matches
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
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.
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.
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 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 146 of file VetoedShower.cxx.

146{return true;}

◆ canVetoISREmission()

bool Pythia8::VetoedShower::canVetoISREmission ( )
inline

Switch on veto of ISR.

Definition at line 144 of file VetoedShower.cxx.

144{return true;}

◆ canVetoMPIStep()

bool Pythia8::VetoedShower::canVetoMPIStep ( )
inline

Switch on calling of doVetoMPIStep.

Definition at line 140 of file VetoedShower.cxx.

140{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 100 of file VetoedShower.cxx.

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

◆ 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 //coverity[NEGATIVE_RETURNS:FALSE]
80 int iMother = e[i].mother1();
81 if(e[iMother].status() != -41)
82 throw std::runtime_error("Pythia8::VetoedShower::doVetoISREmission: Unexpected status code in ISR");
83
84 iMother = e[iMother].daughter2();
85 if(iMother != partonSystemsPtr->getInA(0) &&
86 iMother != partonSystemsPtr->getInB(0)) return false;
87
88 // Veto emission above the veto scale
89 if(e[i].pT() > m_pTVeto) return true;
90
91 m_doneISR = true;
92 return false;
93 }

◆ 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 142 of file VetoedShower.cxx.

142{return 1;}

Member Data Documentation

◆ m_doneISR

bool Pythia8::VetoedShower::m_doneISR
private

Definition at line 151 of file VetoedShower.cxx.

◆ m_pTVeto

double Pythia8::VetoedShower::m_pTVeto
private

Definition at line 150 of file VetoedShower.cxx.


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