|
| PowhegBB4Ldlsl () |
|
| ~PowhegBB4Ldlsl () override |
|
virtual bool | initAfterBeams () override |
|
virtual bool | canVetoProcessLevel () override |
|
virtual bool | doVetoProcessLevel (Event &e) override |
|
virtual bool | canVetoFSREmission () override |
|
virtual bool | doVetoFSREmission (int sizeOld, const Event &e, int iSys, bool inResonance) override |
|
bool | doVetoFSR (bool condition) |
|
virtual bool | canSetResonanceScale () override |
|
virtual double | scaleResonance (int iRes, const Event &e) override |
|
double | findresscale (const int iRes, const Event &event) |
|
bool | match_decay (int iparticle, const Event &e, const vector< int > &ids, vector< int > &positions, vector< Vec4 > &momenta, bool exitOnExtraLegs=true) |
|
double | qSplittingScale (Vec4 pt, Vec4 p1, Vec4 p2) |
|
double | gSplittingScale (Vec4 pt, Vec4 p1, Vec4 p2) |
|
double | pTpythia (const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch) |
|
int | getNInResonanceFSRVeto () |
|
Definition at line 133 of file PowhegHooksBB4Ldlsl.cxx.
◆ PowhegBB4Ldlsl()
Pythia8::PowhegBB4Ldlsl::PowhegBB4Ldlsl |
( |
| ) |
|
|
inline |
Definition at line 137 of file PowhegHooksBB4Ldlsl.cxx.
138 :
m_debug(
"Powheg:bb4l:DEBUG",
false),
144 m_pTmin(
"Powheg:bb4l:pTminVeto", 0.5),
150 std::cout <<
"**********************************************************" << std::endl;
151 std::cout <<
"* *" << std::endl;
152 std::cout <<
"* Applying Powheg BB4L UserHook (PowhegBB4Ldlsl)! *" << std::endl;
153 std::cout <<
"* Must run on dedicated Powheg LHE input file *" << std::endl;
154 std::cout <<
"* (on your own responsibility) *" << std::endl;
155 std::cout <<
"* *" << std::endl;
156 std::cout <<
"**********************************************************" << std::endl;
◆ ~PowhegBB4Ldlsl()
Pythia8::PowhegBB4Ldlsl::~PowhegBB4Ldlsl |
( |
| ) |
|
|
inlineoverride |
◆ canSetResonanceScale()
virtual bool Pythia8::PowhegBB4Ldlsl::canSetResonanceScale |
( |
| ) |
|
|
inlineoverridevirtual |
◆ canVetoFSREmission()
virtual bool Pythia8::PowhegBB4Ldlsl::canVetoFSREmission |
( |
| ) |
|
|
inlineoverridevirtual |
◆ canVetoProcessLevel()
virtual bool Pythia8::PowhegBB4Ldlsl::canVetoProcessLevel |
( |
| ) |
|
|
inlineoverridevirtual |
◆ doVetoFSR()
bool Pythia8::PowhegBB4Ldlsl::doVetoFSR |
( |
bool |
condition | ) |
|
|
inline |
◆ doVetoFSREmission()
virtual bool Pythia8::PowhegBB4Ldlsl::doVetoFSREmission |
( |
int |
sizeOld, |
|
|
const Event & |
e, |
|
|
int |
iSys, |
|
|
bool |
inResonance |
|
) |
| |
|
inlineoverridevirtual |
Definition at line 215 of file PowhegHooksBB4Ldlsl.cxx.
221 int iRecAft =
e.size() - 1;
222 int iEmt =
e.size() - 2;
223 int iRadAft =
e.size() - 3;
224 int iRadBef =
e[iEmt].mother1();
227 int iRes =
e[iRadBef].mother1();
228 while ( iRes > 0 && (abs(
e[iRes].
id()) !=6 && abs(
e[iRes].
id()) != 24) ) {
229 iRes =
e[iRes].mother1();
232 #if PYTHIA_VERSION_INTEGER >= 8310
233 loggerPtr->ERROR_MSG(
"Warning in PowhegHooksBB4L::doVetoFSREmission: emission in resonance not from the top quark or from the W boson, not vetoing");
235 infoPtr->errorMsg(
"Warning in PowhegHooksBB4L::doVetoFSREmission: emission in resonance not from the top quark or from the W boson, not vetoing");
239 int iResId =
e[iRes].id();
248 Vec4
pr(
e[iRadAft].
p()),
pe(
e[iEmt].
p()), pres(
e[iRes].
p()),
prec(
e[iRecAft].
p()), psystem;
258 if (
e[iRadBef].
id() == 21)
261 else if (abs(
e[iRadBef].
id()) <= 5 && ((
e[iEmt].
id() == 21) && !
m_vetoQED(settingsPtr)) )
272 cout << iResId <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << endl;
275 else if (iResId == -6){
277 cout << iResId <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << endl;
280 else if (iResId == 24) {
282 cout << iResId <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << endl;
285 else if (iResId == -24){
287 cout << iResId <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << endl;
291 #if PYTHIA_VERSION_INTEGER >= 8310
292 loggerPtr->ERROR_MSG(
"Error in PowhegHooksBB4L::doVetoFSREmission: unimplemented case");
294 infoPtr->errorMsg(
"Error in PowhegHooksBB4L::doVetoFSREmission: unimplemented case");
301 return PowhegHooks::doVetoFSREmission(sizeOld,
e, iSys, inResonance);
◆ doVetoProcessLevel()
virtual bool Pythia8::PowhegBB4Ldlsl::doVetoProcessLevel |
( |
Event & |
e | ) |
|
|
inlineoverridevirtual |
Definition at line 174 of file PowhegHooksBB4Ldlsl.cxx.
178 ss << infoPtr->getEventComments();
181 assert (
temp ==
"#rwgt");
185 if (
radtype_.radtype==2)
return false;
187 int i_top = -1, i_atop = -1, i_wp = -1, i_wm = -1;
188 for (
int i = 0;
i <
e.size();
i++) {
189 if (
e[
i].
id() == 6) i_top =
i;
190 if (
e[
i].
id() == -6) i_atop =
i;
191 if (
e[
i].
id() == 24) i_wp =
i;
192 if (
e[
i].
id() == -24) i_wm =
i;
◆ findresscale()
double Pythia8::PowhegBB4Ldlsl::findresscale |
( |
const int |
iRes, |
|
|
const Event & |
event |
|
) |
| |
|
inline |
Definition at line 347 of file PowhegHooksBB4Ldlsl.cxx.
350 if (iRes < 0)
return 1e30;
353 int nDau =
event[iRes].daughterList().size();
366 else if (abs(
event[iRes].
id()) == 6) {
368 int idw = -1,
idb = -1, idg = -1;
369 for (
int i = 0;
i < nDau;
i++) {
370 int iDau =
event[iRes].daughterList()[
i];
371 if (abs(
event[iDau].
id()) == 24) idw = iDau;
372 if (abs(
event[iDau].
id()) == 5)
idb = iDau;
373 if (abs(
event[iDau].
id()) == 21) idg = iDau;
378 pw.bstback(
event[iRes].
p());
388 else if (abs(
event[iRes].
id()) == 24) {
390 int idq = -1, ida = -1, idg = -1;
391 for (
int i = 0;
i < nDau;
i++) {
392 int iDau =
event[iRes].daughterList()[
i];
393 if (
event[iDau].
id() == 21) idg = iDau;
394 else if (
event[iDau].
id() > 0) idq = iDau;
395 else if (
event[iDau].
id() < 0) ida = iDau;
397 if (idq<0 or ida <0){
398 throw std::out_of_range(
"idq or ida out of range in PowhegHooksBB4Ldlsl.cxx");
402 pq.bstback(
event[iRes].
p());
404 pa.bstback(
event[iRes].
p());
409 Vec4 pw = pq + pa +
pg;
411 double csi = 2*
pg.e()/sqrt(q2);
412 double yq = 1 -
pg*pq/(
pg.e()*pq.e());
413 double ya = 1 -
pg*pa/(
pg.e()*pa.e());
415 return sqrt(
min(1-yq,1-ya)*
pow2(csi)*q2/2);
◆ getNInResonanceFSRVeto()
int Pythia8::PowhegBB4Ldlsl::getNInResonanceFSRVeto |
( |
| ) |
|
|
inline |
◆ gSplittingScale()
double Pythia8::PowhegBB4Ldlsl::gSplittingScale |
( |
Vec4 |
pt, |
|
|
Vec4 |
p1, |
|
|
Vec4 |
p2 |
|
) |
| |
|
inline |
◆ initAfterBeams()
virtual bool Pythia8::PowhegBB4Ldlsl::initAfterBeams |
( |
| ) |
|
|
inlineoverridevirtual |
◆ match_decay()
bool Pythia8::PowhegBB4Ldlsl::match_decay |
( |
int |
iparticle, |
|
|
const Event & |
e, |
|
|
const vector< int > & |
ids, |
|
|
vector< int > & |
positions, |
|
|
vector< Vec4 > & |
momenta, |
|
|
bool |
exitOnExtraLegs = true |
|
) |
| |
|
inline |
Definition at line 426 of file PowhegHooksBB4Ldlsl.cxx.
428 if (
e[iparticle].daughterList().
size() !=
ids.size()) {
429 if (exitOnExtraLegs &&
e[iparticle].daughterList().
size() >
ids.size()) {
430 cout <<
"extra leg" << endl;
436 for (
long unsigned int i = 0;
i <
e[iparticle].daughterList().
size();
i++) {
437 int di =
e[iparticle].daughterList()[
i];
445 for (
long unsigned int i = 0;
i <
e[iparticle].daughterList().
size();
i++) {
446 int di =
e[iparticle].daughterList()[
i];
447 positions.push_back(di);
448 momenta.push_back(
e[di].
p());
◆ pTpythia()
double Pythia8::PowhegBB4Ldlsl::pTpythia |
( |
const Event & |
e, |
|
|
int |
RadAfterBranch, |
|
|
int |
EmtAfterBranch, |
|
|
int |
RecAfterBranch |
|
) |
| |
|
inline |
Definition at line 469 of file PowhegHooksBB4Ldlsl.cxx.
474 Vec4 radVec =
e[RadAfterBranch].p();
475 Vec4 emtVec =
e[EmtAfterBranch].p();
476 Vec4 recVec =
e[RecAfterBranch].p();
477 int radID =
e[RadAfterBranch].id();
480 Vec4 Q(radVec + emtVec);
481 double Qsq = Q.m2Calc();
484 double m2Rad = (abs(radID) >= 4 && abs(radID) < 7) ?
485 pow2(particleDataPtr->m0(radID)) : 0.;
490 Vec4
sum = radVec + recVec + emtVec;
491 double m2Dip =
sum.m2Calc();
493 double x1 = 2. * (
sum * radVec) / m2Dip;
494 double x3 = 2. * (
sum * emtVec) / m2Dip;
496 pTnow =
z * (1. -
z);
500 pTnow *= (Qsq - m2Rad);
503 cout <<
"Warning: pTpythia was negative" << endl;
◆ qSplittingScale()
double Pythia8::PowhegBB4Ldlsl::qSplittingScale |
( |
Vec4 |
pt, |
|
|
Vec4 |
p1, |
|
|
Vec4 |
p2 |
|
) |
| |
|
inline |
◆ scaleResonance()
virtual double Pythia8::PowhegBB4Ldlsl::scaleResonance |
( |
int |
iRes, |
|
|
const Event & |
e |
|
) |
| |
|
inlineoverridevirtual |
Definition at line 327 of file PowhegHooksBB4Ldlsl.cxx.
329 return sqrt(
e[iRes].m2Calc());
331 if (
e[iRes].
id() == 6)
333 else if (
e[iRes].
id() == -6)
335 else if (
e[iRes].
id() == 24)
337 else if (
e[iRes].
id() == -24)
◆ m_atopresscale
double Pythia8::PowhegBB4Ldlsl::m_atopresscale |
|
private |
◆ m_debug
◆ m_nInResonanceFSRveto
unsigned long int Pythia8::PowhegBB4Ldlsl::m_nInResonanceFSRveto |
|
private |
◆ m_pTmin
◆ m_pTpythiaVeto
◆ m_scaleResonanceVeto
◆ m_topresscale
double Pythia8::PowhegBB4Ldlsl::m_topresscale |
|
private |
◆ m_vetoDipoleFrame
◆ m_vetoFSREmission
◆ m_vetoProduction
◆ m_vetoQED
◆ m_wmresscale
double Pythia8::PowhegBB4Ldlsl::m_wmresscale |
|
private |
◆ m_wpresscale
double Pythia8::PowhegBB4Ldlsl::m_wpresscale |
|
private |
The documentation for this class was generated from the following file: