|
ATLAS Offline Software
|
|
| PowhegBB4Ltms () |
|
| ~PowhegBB4Ltms () override |
|
virtual bool | initAfterBeams () override |
|
virtual bool | canVetoProcessLevel () override |
|
virtual bool | doVetoProcessLevel (Event &e) override |
|
virtual bool | retryPartonLevel () override |
|
virtual bool | canVetoPartonLevel () override |
|
virtual bool | doVetoPartonLevel (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) |
|
double | getdechardness (int topcharge, const Event &e) |
|
virtual bool | canSetResonanceScale () override |
|
virtual double | scaleResonance (int iRes, const Event &e) override |
|
virtual bool | canVetoFSREmission () override |
|
virtual bool | doVetoFSREmission (int sizeOld, const Event &e, int iSys, bool inResonance) override |
|
bool | doVetoFSR (bool condition, double scale, int iTopCharge) |
|
void | doVetoFSRInit () |
|
Definition at line 46 of file PowhegBB4Ltms.cxx.
◆ PowhegBB4Ltms()
Pythia8::PowhegBB4Ltms::PowhegBB4Ltms |
( |
| ) |
|
|
inline |
Definition at line 50 of file PowhegBB4Ltms.cxx.
51 :
m_debug(
"Powheg:bb4l:DEBUG",
false),
61 m_pTmin(
"Powheg:bb4l:pTminVeto", 0.5),
68 std::cout <<
"**********************************************************" << std::endl;
69 std::cout <<
"* *" << std::endl;
70 std::cout <<
"* Applying Powheg BB4L UserHook! *" << std::endl;
71 std::cout <<
"* Must run on dedicated Powheg LHE input file *" << std::endl;
72 std::cout <<
"* (on your own responsibility) *" << std::endl;
73 std::cout <<
"* *" << std::endl;
74 std::cout <<
"**********************************************************" << std::endl;
◆ ~PowhegBB4Ltms()
Pythia8::PowhegBB4Ltms::~PowhegBB4Ltms |
( |
| ) |
|
|
inlineoverride |
◆ canSetResonanceScale()
virtual bool Pythia8::PowhegBB4Ltms::canSetResonanceScale |
( |
| ) |
|
|
inlineoverridevirtual |
◆ canVetoFSREmission()
virtual bool Pythia8::PowhegBB4Ltms::canVetoFSREmission |
( |
| ) |
|
|
inlineoverridevirtual |
◆ canVetoPartonLevel()
virtual bool Pythia8::PowhegBB4Ltms::canVetoPartonLevel |
( |
| ) |
|
|
inlineoverridevirtual |
◆ canVetoProcessLevel()
virtual bool Pythia8::PowhegBB4Ltms::canVetoProcessLevel |
( |
| ) |
|
|
inlineoverridevirtual |
◆ doVetoFSR()
bool Pythia8::PowhegBB4Ltms::doVetoFSR |
( |
bool |
condition, |
|
|
double |
scale, |
|
|
int |
iTopCharge |
|
) |
| |
|
inline |
◆ doVetoFSREmission()
virtual bool Pythia8::PowhegBB4Ltms::doVetoFSREmission |
( |
int |
sizeOld, |
|
|
const Event & |
e, |
|
|
int |
iSys, |
|
|
bool |
inResonance |
|
) |
| |
|
inlineoverridevirtual |
Definition at line 424 of file PowhegBB4Ltms.cxx.
431 int iRecAft =
e.size() - 1;
432 int iEmt =
e.size() - 2;
433 int iRadAft =
e.size() - 3;
434 int iRadBef =
e[iEmt].mother1();
437 int iTop =
e[iRadBef].mother1();
439 while (std::abs(
e[iTop].
id()) != 6 && iTop > 0) {
440 iTop =
e[iTop].mother1();
444 #if PYTHIA_VERSION_INTEGER >= 8310
445 loggerPtr->ERROR_MSG(
"Warning in PowhegHooksBB4L::doVetoFSREmission: emission in resonance not from top quark, not vetoing");
447 infoPtr->errorMsg(
"Warning in PowhegHooksBB4L::doVetoFSREmission: emission in resonance not from top quark, not vetoing");
451 int iTopCharge = (
e[iTop].id()>0)?1:-1;
459 Vec4
pr(
e[iRadAft].
p()),
pe(
e[iEmt].
p()),
pt(
e[iTop].
p()),
prec(
e[iRecAft].
p()), psystem;
469 if (
e[iRadBef].
id() == 21)
472 else if (std::abs(
e[iRadBef].
id()) == 5 && ((
e[iEmt].
id() == 21) && !
m_vetoQED(settingsPtr)) )
480 if (iTopCharge > 0) {
483 std::cout <<
e[iTop].id() <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << std::endl;
488 std::cout <<
e[iTop].id() <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << std::endl;
492 else if (iTopCharge < 0){
495 std::cout <<
e[iTop].id() <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << std::endl;
500 std::cout <<
e[iTop].id() <<
": " <<
e[iRadBef].id() <<
" > " <<
e[iRadAft].id() <<
" + " <<
e[iEmt].id() <<
"; " <<
scale << std::endl;
505 std::cout <<
"Bug in PohwgeHooksBB4l" << std::endl;
513 return PowhegHooks::doVetoFSREmission(sizeOld,
e, iSys, inResonance);
◆ doVetoFSRInit()
void Pythia8::PowhegBB4Ltms::doVetoFSRInit |
( |
| ) |
|
|
inline |
◆ doVetoPartonLevel()
virtual bool Pythia8::PowhegBB4Ltms::doVetoPartonLevel |
( |
const Event & |
e | ) |
|
|
inlineoverridevirtual |
◆ doVetoProcessLevel()
virtual bool Pythia8::PowhegBB4Ltms::doVetoProcessLevel |
( |
Event & |
e | ) |
|
|
inlineoverridevirtual |
Definition at line 94 of file PowhegBB4Ltms.cxx.
115 ss << infoPtr->getEventComments();
118 assert (
temp ==
"#rwgt");
121 int i_top = -1, i_atop = -1;
122 for (
int i = 0;
i <
e.size();
i++) {
123 if (
e[
i].
id() == 6) i_top =
i;
124 if (
e[
i].
id() == -6) i_atop =
i;
◆ findresscale()
double Pythia8::PowhegBB4Ltms::findresscale |
( |
const int |
iRes, |
|
|
const Event & |
event |
|
) |
| |
|
inline |
Definition at line 175 of file PowhegBB4Ltms.cxx.
178 int nDau =
event[iRes].daughterList().size();
189 else if (std::abs(
event[iRes].
id()) == 6) {
191 int idw = -1,
idb = -1, idg = -1;
193 for (
int i = 0;
i < nDau;
i++) {
194 int iDau =
event[iRes].daughterList()[
i];
195 if (std::abs(
event[iDau].
id()) == 24) idw = iDau;
196 if (std::abs(
event[iDau].
id()) == 5)
idb = iDau;
197 if (std::abs(
event[iDau].
id()) == 21) idg = iDau;
202 pw.bstback(
event[iRes].
p());
◆ getdechardness()
double Pythia8::PowhegBB4Ltms::getdechardness |
( |
int |
topcharge, |
|
|
const Event & |
e |
|
) |
| |
|
inline |
Definition at line 314 of file PowhegBB4Ltms.cxx.
315 int tid = 6*topcharge, wid = 24*topcharge, bid = 5*topcharge,
gid = 21,
wildcard = 0;
318 Vec4 p_top, p_b, p_g, p_g1, p_g2;
319 for (
int i = 0;
i <
e.size();
i++)
320 if (
e[
i].
id() == tid) {
324 if (i_top == -1)
return -1.0;
342 vector<Vec4> momenta;
343 vector<int> positions;
346 if (
match_decay(i_top,
e, vector<int> {wid, bid}, positions, momenta,
false) ) {
348 int i_b = positions[1];
358 else if (
match_decay(i_top,
e, vector<int> {wid, bid,
gid}, positions, momenta,
false) ) {
360 int i_b = positions[1], i_g = positions[2];
377 std::cout <<
"getdechardness" << std::endl;
378 std::cout <<
"top at position " << i_top << std::endl;
379 std::cout <<
"with " <<
e[i_top].daughterList().size() <<
" daughters " << std::endl;
380 for (
unsigned int i = 0;
i <
e[i_top].daughterList().
size();
i++) {
381 int di =
e[i_top].daughterList()[
i];
382 std::cout <<
"with daughter " << di <<
": " <<
e[di].id() << std::endl;
◆ gSplittingScale()
double Pythia8::PowhegBB4Ltms::gSplittingScale |
( |
Vec4 |
pt, |
|
|
Vec4 |
p1, |
|
|
Vec4 |
p2 |
|
) |
| |
|
inline |
◆ initAfterBeams()
virtual bool Pythia8::PowhegBB4Ltms::initAfterBeams |
( |
| ) |
|
|
inlineoverridevirtual |
◆ match_decay()
bool Pythia8::PowhegBB4Ltms::match_decay |
( |
int |
iparticle, |
|
|
const Event & |
e, |
|
|
const vector< int > & |
ids, |
|
|
vector< int > & |
positions, |
|
|
vector< Vec4 > & |
momenta, |
|
|
bool |
exitOnExtraLegs = true |
|
) |
| |
|
inline |
Definition at line 225 of file PowhegBB4Ltms.cxx.
228 if (
e[iparticle].daughterList().
size() !=
ids.size()) {
229 if (exitOnExtraLegs &&
e[iparticle].daughterList().
size() >
ids.size()) {
230 std::cout <<
"extra leg" << std::endl;
237 for (
unsigned int i = 0;
i <
e[iparticle].daughterList().
size();
i++) {
238 int di =
e[iparticle].daughterList()[
i];
246 for (
unsigned int i = 0;
i <
e[iparticle].daughterList().
size();
i++) {
247 int di =
e[iparticle].daughterList()[
i];
248 positions.push_back(di);
249 momenta.push_back(
e[di].
p());
◆ pTpythia()
double Pythia8::PowhegBB4Ltms::pTpythia |
( |
const Event & |
e, |
|
|
int |
RadAfterBranch, |
|
|
int |
EmtAfterBranch, |
|
|
int |
RecAfterBranch |
|
) |
| |
|
inline |
Definition at line 269 of file PowhegBB4Ltms.cxx.
274 Vec4 radVec =
e[RadAfterBranch].p();
275 Vec4 emtVec =
e[EmtAfterBranch].p();
276 Vec4 recVec =
e[RecAfterBranch].p();
277 int radID =
e[RadAfterBranch].id();
280 Vec4 Q(radVec + emtVec);
281 double Qsq = Q.m2Calc();
285 double m2Rad = (std::abs(radID) >= 4 && std::abs(radID) < 7) ?
286 pow2(particleDataPtr->m0(radID)) : 0.;
291 Vec4
sum = radVec + recVec + emtVec;
292 double m2Dip =
sum.m2Calc();
293 double x1 = 2. * (
sum * radVec) / m2Dip;
294 double x3 = 2. * (
sum * emtVec) / m2Dip;
296 pTnow =
z * (1. -
z);
299 pTnow *= (Qsq - m2Rad);
302 #if PYTHIA_VERSION_INTEGER >= 8310
303 loggerPtr->ERROR_MSG(
"Warning: pTpythia was negative");
305 infoPtr->errorMsg(
"Warning: pTpythia was negative");
310 return(std::sqrt(pTnow));
◆ qSplittingScale()
double Pythia8::PowhegBB4Ltms::qSplittingScale |
( |
Vec4 |
pt, |
|
|
Vec4 |
p1, |
|
|
Vec4 |
p2 |
|
) |
| |
|
inline |
◆ retryPartonLevel()
virtual bool Pythia8::PowhegBB4Ltms::retryPartonLevel |
( |
| ) |
|
|
inlineoverridevirtual |
◆ scaleResonance()
virtual double Pythia8::PowhegBB4Ltms::scaleResonance |
( |
int |
iRes, |
|
|
const Event & |
e |
|
) |
| |
|
inlineoverridevirtual |
Definition at line 397 of file PowhegBB4Ltms.cxx.
398 if (
e[iRes].
id() == 6){
400 return std::sqrt(
e[iRes].m2Calc());
404 else if (
e[iRes].
id() == -6){
406 return std::sqrt(
e[iRes].m2Calc());
◆ m_atopresscale
double Pythia8::PowhegBB4Ltms::m_atopresscale |
|
private |
◆ m_debug
◆ m_dryRunFSR
◆ m_nFSRvetoBB4l
unsigned long int Pythia8::PowhegBB4Ltms::m_nFSRvetoBB4l |
|
private |
◆ m_onlyDistance1
◆ m_pTmin
◆ m_pTpythiaVeto
◆ m_scaleResonanceVeto
◆ m_topresscale
double Pythia8::PowhegBB4Ltms::m_topresscale |
|
private |
◆ m_vetoAtPL
◆ m_vetoDecScale
double Pythia8::PowhegBB4Ltms::m_vetoDecScale |
|
private |
◆ m_vetoDipoleFrame
◆ m_vetoFSREmission
◆ m_vetoPartonLevel
◆ m_vetoProduction
◆ m_vetoQED
◆ m_vetoTopCharge
int Pythia8::PowhegBB4Ltms::m_vetoTopCharge |
|
private |
◆ m_wouldVetoFsr
bool Pythia8::PowhegBB4Ltms::m_wouldVetoFsr |
|
private |
The documentation for this class was generated from the following file:
Pythia8_UserHooks::UserSetting< bool > m_dryRunFSR
unsigned long int m_nFSRvetoBB4l
double qSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
Pythia8_UserHooks::UserSetting< double > m_scaleResonanceVeto
double pTpythia(const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch)
Pythia8_UserHooks::UserSetting< int > m_vetoPartonLevel
double findresscale(const int iRes, const Event &event)
Pythia8_UserHooks::UserSetting< bool > m_onlyDistance1
Pythia8_UserHooks::UserSetting< int > m_vetoProduction
POOL::TEvent event(POOL::TEvent::kClassAccess)
constexpr int pow2(int x)
Pythia8_UserHooks::UserSetting< bool > m_debug
double gSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
Pythia8_UserHooks::UserSetting< bool > m_vetoQED
Pythia8_UserHooks::UserSetting< double > m_pTmin
Pythia8_UserHooks::UserSetting< bool > m_vetoFSREmission
Pythia8_UserHooks::UserSetting< int > m_pTpythiaVeto
Pythia8_UserHooks::UserSetting< bool > m_vetoAtPL
bool match_decay(int iparticle, const Event &e, const vector< int > &ids, vector< int > &positions, vector< Vec4 > &momenta, bool exitOnExtraLegs=true)
double getdechardness(int topcharge, const Event &e)
bool doVetoFSR(bool condition, double scale, int iTopCharge)
Pythia8_UserHooks::UserSetting< int > m_vetoDipoleFrame
float distance(const Amg::Vector3D &p1, const Amg::Vector3D &p2)
calculates the distance between two point in 3D space