CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
Pythia8::PowhegHooksBB4L Class Reference

#include <PowhegHooksBB4L.h>

Inheritance diagram for Pythia8::PowhegHooksBB4L:

Public Member Functions

bool canSetResonanceScale ()
 
bool canVetoFSREmission ()
 
bool canVetoPartonLevel ()
 
bool canVetoProcessLevel ()
 
bool doVetoFSR (bool condition, double scale, int iTopCharge)
 
bool doVetoFSREmission (int sizeOld, const Event &e, int iSys, bool inResonance)
 
void doVetoFSRInit ()
 
bool doVetoPartonLevel (const Event &e)
 
bool doVetoProcessLevel (Event &e)
 
double findresscale (const int iRes, const Event &event)
 
double getdechardness (int topcharge, const Event &e)
 
double gSplittingScale (Vec4 pt, Vec4 p1, Vec4 p2)
 
bool initAfterBeams ()
 
bool match_decay (int iparticle, const Event &e, const vector< int > &ids, vector< int > &positions, vector< Vec4 > &momenta, bool exitOnExtraLegs=true)
 
 PowhegHooksBB4L ()
 
double pTpythia (const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch)
 
double qSplittingScale (Vec4 pt, Vec4 p1, Vec4 p2)
 
bool retryPartonLevel ()
 
double scaleResonance (int iRes, const Event &e)
 
 ~PowhegHooksBB4L ()
 

Private Attributes

double atopresscale
 
bool debug
 
bool dryRunFSR
 
bool excludeFSRConflicting
 
unsigned long int nFSRvetoBB4l
 
bool onlyDistance1
 
double pTmin
 
bool pTpythiaVeto
 
double scaleResonanceVeto
 
double topresscale
 
bool vetoAtPL
 
double vetoDecScale
 
bool vetoDipoleFrame
 
bool vetoFSREmission
 
bool vetoPartonLevel
 
bool vetoQED
 
int vetoTopCharge
 
bool wouldVetoFsr
 

Detailed Description

Definition at line 18 of file PowhegHooksBB4L.h.

Constructor & Destructor Documentation

Pythia8::PowhegHooksBB4L::PowhegHooksBB4L ( )
inline

Definition at line 23 of file PowhegHooksBB4L.h.

23 : nFSRvetoBB4l(0) {}
unsigned long int nFSRvetoBB4l
Pythia8::PowhegHooksBB4L::~PowhegHooksBB4L ( )
inline

Definition at line 24 of file PowhegHooksBB4L.h.

References gather_cfg::cout, and nFSRvetoBB4l.

24  {
25  std::cout << "Number of FSR vetoed in BB4l = " << nFSRvetoBB4l << std::endl;
26  }
tuple cout
Definition: gather_cfg.py:121
unsigned long int nFSRvetoBB4l

Member Function Documentation

bool Pythia8::PowhegHooksBB4L::canSetResonanceScale ( )
inline

Definition at line 240 of file PowhegHooksBB4L.h.

References scaleResonanceVeto.

240 { return scaleResonanceVeto; }
bool Pythia8::PowhegHooksBB4L::canVetoFSREmission ( )
inline

Definition at line 123 of file PowhegHooksBB4L.h.

References vetoFSREmission.

123 { return vetoFSREmission; } // || vetoProduction; }
bool Pythia8::PowhegHooksBB4L::canVetoPartonLevel ( )
inline

Definition at line 87 of file PowhegHooksBB4L.h.

References vetoAtPL, and vetoPartonLevel.

bool Pythia8::PowhegHooksBB4L::canVetoProcessLevel ( )
inline

Definition at line 51 of file PowhegHooksBB4L.h.

51 { return true; }
bool Pythia8::PowhegHooksBB4L::doVetoFSR ( bool  condition,
double  scale,
int  iTopCharge 
)
inline

Definition at line 214 of file PowhegHooksBB4L.h.

References dryRunFSR, nFSRvetoBB4l, radtype_, pileupReCalc_HLTpaths::scale, vetoDecScale, vetoTopCharge, and wouldVetoFsr.

Referenced by doVetoFSREmission().

214  {
215  if(radtype_.radtype==2)
216  return false;
217  if (condition) {
218  if (!wouldVetoFsr) {
219  wouldVetoFsr = true;
221  vetoTopCharge = iTopCharge;
222  }
223  if (dryRunFSR) return false;
224  else {
225  nFSRvetoBB4l++;
226  return true;
227  }
228  }
229  else return false;
230  }
struct @553 radtype_
unsigned long int nFSRvetoBB4l
bool Pythia8::PowhegHooksBB4L::doVetoFSREmission ( int  sizeOld,
const Event e,
int  iSys,
bool  inResonance 
)
inline

Definition at line 124 of file PowhegHooksBB4L.h.

References funct::abs(), atopresscale, gather_cfg::cout, debug, doVetoFSR(), gSplittingScale(), onlyDistance1, AlCaHLTBitMon_ParallelJobs::p, RecoTauCleanerPlugins::pt, pTpythia(), pTpythiaVeto, qSplittingScale(), pileupReCalc_HLTpaths::scale, topresscale, vetoDipoleFrame, vetoFSREmission, vetoQED, and wouldVetoFsr.

124  {
126  //VETO INSIDE THE RESONANCE //
128  if (inResonance && vetoFSREmission) {
129  int iRecAft = e.size() - 1;
130  int iEmt = e.size() - 2;
131  int iRadAft = e.size() - 3;
132  int iRadBef = e[iEmt].mother1();
133 
134  // find the top resonance the radiator originates from
135  int iTop = e[iRadBef].mother1();
136  int distance = 1;
137  while (abs(e[iTop].id()) != 6 && iTop > 0) {
138  iTop = e[iTop].mother1();
139  distance ++;
140  }
141  if (iTop == 0) {
142  infoPtr->errorMsg("Warning in PowhegHooksBB4L::doVetoFSREmission: emission in resonance not from top quark, not vetoing");
143  return doVetoFSR(false,0,0);
144  //return false;
145  }
146  int iTopCharge = (e[iTop].id()>0)?1:-1;
147 
148  // calculate the scale of the emission
149  double scale;
150  //using pythia pT definition ...
151  if(pTpythiaVeto)
152  scale = pTpythia(e, iRadAft, iEmt, iRecAft);
153  //.. or using POWHEG pT definition
154  else{
155  Vec4 pr(e[iRadAft].p()), pe(e[iEmt].p()), pt(e[iTop].p()), prec(e[iRecAft].p()), psystem;
156  // The computation of the POWHEG pT can be done in the top rest frame or in the diple one.
157  // pdipole = pemt +prec +prad (after the emission)
158  // For the first emission off the top resonance pdipole = pw +pb (before the emission) = ptop
159  if(vetoDipoleFrame)
160  psystem = pr+pe+prec;
161  else
162  psystem = pt;
163 
164  // gluon splitting into two partons
165  if (e[iRadBef].id() == 21)
166  scale = gSplittingScale(psystem, pr, pe);
167  // quark emitting a gluon (or a photon)
168  else if (abs(e[iRadBef].id()) == 5 && ((e[iEmt].id() == 21) && ! vetoQED) )
169  scale = qSplittingScale(psystem, pr, pe);
170  // other stuff (which we should not veto)
171  else
172  scale = 0;
173  }
174 
175  if (iTopCharge > 0) {
176  if (onlyDistance1) {
177  if ( debug && (distance == 1) && scale > topresscale && ! wouldVetoFsr)
178  cout << e[iTop].id() << ": " << e[iRadBef].id() << " > " << e[iRadAft].id() << " + " << e[iEmt].id() << "; " << scale << endl;
179  return doVetoFSR((distance == 1) && scale > topresscale,scale,iTopCharge);
180  }
181  else {
182  if ( debug && scale > topresscale && ! wouldVetoFsr)
183  cout << e[iTop].id() << ": " << e[iRadBef].id() << " > " << e[iRadAft].id() << " + " << e[iEmt].id() << "; " << scale << endl;
184  return doVetoFSR(scale > topresscale,scale,iTopCharge);
185  }
186  }
187  else if (iTopCharge < 0){
188  if (onlyDistance1){
189  if ( debug && (distance == 1) && scale > atopresscale && ! wouldVetoFsr)
190  cout << e[iTop].id() << ": " << e[iRadBef].id() << " > " << e[iRadAft].id() << " + " << e[iEmt].id() << "; " << scale << endl;
191  return doVetoFSR((distance == 1) && scale > atopresscale,scale,iTopCharge);
192  }
193  else {
194  if ( debug && scale > topresscale && ! wouldVetoFsr)
195  cout << e[iTop].id() << ": " << e[iRadBef].id() << " > " << e[iRadAft].id() << " + " << e[iEmt].id() << "; " << scale << endl;
196  return doVetoFSR(scale > atopresscale,scale,iTopCharge);
197  }
198  }
199  else {
200  cout << "Bug in PohwgeHooksBB4l" << endl;
201  }
202  }
204  // VETO THE PRODUCTION PROCESS //
206  // covered by multiuserhook, i.e. need to turn on EV1
207  // else if(!inResonance && vetoProduction){
208  // return EmissionVetoHook1::doVetoFSREmission(sizeOld, e, iSys, inResonance);
209  // }
210 
211  return false;
212  }
ExtVec< T, 4 > Vec4
Definition: ExtVec.h:23
double pTpythia(const Event &e, int RadAfterBranch, int EmtAfterBranch, int RecAfterBranch)
double qSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
bool doVetoFSR(bool condition, double scale, int iTopCharge)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double gSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
tuple cout
Definition: gather_cfg.py:121
void Pythia8::PowhegHooksBB4L::doVetoFSRInit ( )
inline

Definition at line 232 of file PowhegHooksBB4L.h.

References vetoDecScale, vetoTopCharge, and wouldVetoFsr.

Referenced by doVetoProcessLevel().

232  {
233  wouldVetoFsr = false;
234  vetoDecScale = -1;
235  vetoTopCharge = 0;
236  }
bool Pythia8::PowhegHooksBB4L::doVetoPartonLevel ( const Event e)
inline

Definition at line 88 of file PowhegHooksBB4L.h.

References atopresscale, gather_cfg::cout, debug, dryRunFSR, getdechardness(), radtype_, pileupReCalc_HLTpaths::scale, topresscale, vetoAtPL, vetoDecScale, vetoPartonLevel, vetoTopCharge, and wouldVetoFsr.

88  {
89  if(radtype_.radtype==2)
90  return false;
91  if (debug){
92  if (dryRunFSR && wouldVetoFsr) {
93  double scale = getdechardness(vetoTopCharge, e);
94  cout << "FSRdecScale = " << vetoDecScale << ", PLdecScale = " << scale << ", ratio = " << vetoDecScale/scale << endl;
95  }
96  }
97  if (vetoPartonLevel) {
98  double topdecscale = getdechardness(1, e);
99  double atopdecscale = getdechardness(-1, e);
100  if ((topdecscale > topresscale) || (atopdecscale > atopresscale)) {
101  //if(dryRunFSR && ! wouldVetoFsr) mydatacontainer_.excludeEvent = excludeFSRConflicting?1:0;
102  return true;
103  }
104  else
105  //if(dryRunFSR && wouldVetoFsr) mydatacontainer_.excludeEvent = excludeFSRConflicting?1:0;
106  return false;
107  }
108  if (vetoAtPL) {
109  if (dryRunFSR && wouldVetoFsr) return true;
110  else return false;
111  }
112  return false;
113  }
struct @553 radtype_
double getdechardness(int topcharge, const Event &e)
tuple cout
Definition: gather_cfg.py:121
bool Pythia8::PowhegHooksBB4L::doVetoProcessLevel ( Event e)
inline

Definition at line 52 of file PowhegHooksBB4L.h.

References atopresscale, doVetoFSRInit(), findresscale(), i, radtype_, contentValuesCheck::ss, groupFilesInBlocks::temp, and topresscale.

52  {
53 
54  // extract the radtype from the event comment
55  stringstream ss;
56  // use eventattribute as comments not filled when using edm input
57  //ss << infoPtr->getEventComments();
58  ss << infoPtr->getEventAttribute("#rwgt");
59  string temp;
60  ss >> temp >> radtype_.radtype;
61  assert (temp == "#rwgt");
62 
63  // find last top and the last anti-top in the record
64  int i_top = -1, i_atop = -1;
65  for (int i = 0; i < e.size(); i++) {
66  if (e[i].id() == 6) i_top = i;
67  if (e[i].id() == -6) i_atop = i;
68  }
69  if (i_top != -1)
70  topresscale = findresscale(i_top, e);
71  else
72  topresscale = 1e30;
73  if (i_top != -1)
74  atopresscale = findresscale(i_atop, e);
75  else
76  atopresscale = 1e30;
77  // initialize stuff
78  doVetoFSRInit();
79  // do not veto, ever
80  return false;
81  }
int i
Definition: DBlmapReader.cc:9
struct @553 radtype_
double findresscale(const int iRes, const Event &event)
double Pythia8::PowhegHooksBB4L::findresscale ( const int  iRes,
const Event event 
)
inline

Definition at line 267 of file PowhegHooksBB4L.h.

References funct::abs(), i, AlCaHLTBitMon_ParallelJobs::p, pTmin, pileupReCalc_HLTpaths::scale, and mathSSE::sqrt().

Referenced by doVetoProcessLevel().

267  {
268  double scale = 0.;
269 
270  int nDau = event[iRes].daughterList().size();
271 
272  if (nDau == 0) {
273  // No resonance found, set scale to high value
274  // Pythia will shower any MC generated resonance unrestricted
275  scale = 1e30;
276  }
277  else if (nDau < 3) {
278  // No radiating resonance found
279  scale = pTmin;
280  }
281  else if (abs(event[iRes].id()) == 6) {
282  // Find top daughters
283  int idw = -1, idb = -1, idg = -1;
284 
285  for (int i = 0; i < nDau; i++) {
286  int iDau = event[iRes].daughterList()[i];
287  if (abs(event[iDau].id()) == 24) idw = iDau;
288  if (abs(event[iDau].id()) == 5) idb = iDau;
289  if (abs(event[iDau].id()) == 21) idg = iDau;
290  }
291 
292  // Get daughter 4-vectors in resonance frame
293  Vec4 pw(event[idw].p());
294  pw.bstback(event[iRes].p());
295 
296  Vec4 pb(event[idb].p());
297  pb.bstback(event[iRes].p());
298 
299  Vec4 pg(event[idg].p());
300  pg.bstback(event[iRes].p());
301 
302  // Calculate scale
303  scale = sqrt(2*pg*pb*pg.e()/pb.e());
304  }
305  else {
306  scale = 1e30;
307  }
308 
309  return scale;
310  }
int i
Definition: DBlmapReader.cc:9
ExtVec< T, 4 > Vec4
Definition: ExtVec.h:23
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double Pythia8::PowhegHooksBB4L::getdechardness ( int  topcharge,
const Event e 
)
inline

Definition at line 401 of file PowhegHooksBB4L.h.

References gather_cfg::cout, cmsRelvalreport::exit, gSplittingScale(), h, i, match_decay(), bookConverter::max, AlCaHLTBitMon_ParallelJobs::p, and qSplittingScale().

Referenced by doVetoPartonLevel().

401  {
402  int tid = 6*topcharge, wid = 24*topcharge, bid = 5*topcharge, gid = 21, wildcard = 0;
403  // find last top in the record
404  int i_top = -1;
405  Vec4 p_top, p_b, p_g, p_g1, p_g2;
406  for (int i = 0; i < e.size(); i++)
407  if (e[i].id() == tid) {
408  i_top = i;
409  p_top = e[i].p();
410  }
411  if (i_top == -1) return -1.0;
412 
413  // summary of cases
414  // 1.) t > W b
415  // a.) b > 3 ... error
416  // b.) b > b g ... h = sqrt(2*p_g*p_b*p_g.e()/p_b.e())
417  // c.) b > other ... h = -1
418  // return h
419  // 2.) t > W b g
420  // a.) b > 3 ... error
421  // b.) b > b g ... h1 = sqrt(2*p_g*p_b*p_g.e()/p_b.e())
422  // c.) b > other ... h1 = -1
423  // i.) g > 3 ... error
424  // ii.) g > 2 ... h2 = sqrt(2*p_g1*p_g2*p_g1.e()*p_g2.e()/(pow(p_g1.e(),2)+pow(p_g2.e(),2))) );
425  // iii.) g > other ... h2 = -1
426  // return max(h1,h2)
427  // 3.) else ... error
428 
429  vector<Vec4> momenta;
430  vector<int> positions;
431 
432  // 1.) t > b W
433  if ( match_decay(i_top, e, vector<int> {wid, bid}, positions, momenta, false) ) {
434  double h;
435  int i_b = positions[1];
436  // a.+b.) b > 3 or b > b g
437  if ( match_decay(i_b, e, vector<int> {bid, gid}, positions, momenta) )
438  h = qSplittingScale(e[i_top].p(), momenta[0], momenta[1]);
439  // c.) b > other
440  else
441  h = -1;
442  return h;
443  }
444  // 2.) t > b W g
445  else if ( match_decay(i_top, e, vector<int> {wid, bid, gid}, positions, momenta, false) ) {
446  double h1, h2;
447  int i_b = positions[1], i_g = positions[2];
448  // a.+b.) b > 3 or b > b g
449  if ( match_decay(i_b, e, vector<int> {bid, gid}, positions, momenta) )
450  h1 = qSplittingScale(e[i_top].p(), momenta[0], momenta[1]);
451  // c.) b > other
452  else
453  h1 = -1;
454  // i.+ii.) g > 3 or g > 2
455  if ( match_decay(i_g, e, vector<int> {wildcard, wildcard}, positions, momenta) )
456  h2 = gSplittingScale(e[i_top].p(), momenta[0], momenta[1]);
457  // c.) b > other
458  else
459  h2 = -1;
460  return max(h1, h2);
461  }
462  // 3.) else
463  else {
464  cout << "getdechardness" << endl;
465  cout << "top at position " << i_top << endl;
466  cout << "with " << e[i_top].daughterList().size() << " daughters " << endl;
467  for (unsigned i = 0; i < e[i_top].daughterList().size(); i++) {
468  int di = e[i_top].daughterList()[i];
469  cout << "with daughter " << di << ": " << e[di].id() << endl;
470  }
471  exit(-1);
472  }
473  }
int i
Definition: DBlmapReader.cc:9
ExtVec< T, 4 > Vec4
Definition: ExtVec.h:23
double qSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
double gSplittingScale(Vec4 pt, Vec4 p1, Vec4 p2)
tuple cout
Definition: gather_cfg.py:121
bool match_decay(int iparticle, const Event &e, const vector< int > &ids, vector< int > &positions, vector< Vec4 > &momenta, bool exitOnExtraLegs=true)
double Pythia8::PowhegHooksBB4L::gSplittingScale ( Vec4  pt,
Vec4  p1,
Vec4  p2 
)
inline

Definition at line 349 of file PowhegHooksBB4L.h.

References funct::pow(), and mathSSE::sqrt().

Referenced by doVetoFSREmission(), and getdechardness().

349  {
350  p1.bstback(pt);
351  p2.bstback(pt);
352  return sqrt( 2*p1*p2*p1.e()*p2.e()/(pow(p1.e()+p2.e(),2)) );
353  }
T sqrt(T t)
Definition: SSEVec.h:48
double p2[4]
Definition: TauolaWrapper.h:90
double p1[4]
Definition: TauolaWrapper.h:89
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
bool Pythia8::PowhegHooksBB4L::initAfterBeams ( )
inline

Definition at line 29 of file PowhegHooksBB4L.h.

References debug, dryRunFSR, excludeFSRConflicting, onlyDistance1, pTmin, pTpythiaVeto, scaleResonanceVeto, vetoAtPL, vetoDipoleFrame, vetoFSREmission, vetoPartonLevel, and vetoQED.

29  {
30  // settings of this class
31  vetoFSREmission = settingsPtr->flag("POWHEG:bb4l:FSREmission:veto");
32  onlyDistance1 = settingsPtr->flag("POWHEG:bb4l:FSREmission:onlyDistance1");
33  dryRunFSR = settingsPtr->flag("POWHEG:bb4l:FSREmission:dryRun");
34  vetoAtPL = settingsPtr->flag("POWHEG:bb4l:FSREmission:vetoAtPL");
35  vetoQED = settingsPtr->flag("POWHEG:bb4l:FSREmission:vetoQED");
36  vetoPartonLevel = settingsPtr->flag("POWHEG:bb4l:PartonLevel:veto");
37  excludeFSRConflicting = settingsPtr->flag("POWHEG:bb4l:PartonLevel:excludeFSRConflicting");
38  debug = settingsPtr->flag("POWHEG:bb4l:DEBUG");
39  scaleResonanceVeto = settingsPtr->flag("POWHEG:bb4l:ScaleResonance:veto");
40  vetoDipoleFrame = settingsPtr->flag("POWHEG:bb4l:FSREmission:vetoDipoleFrame");
41  pTpythiaVeto = settingsPtr->flag("POWHEG:bb4l:FSREmission:pTpythiaVeto");
42  //vetoProduction = (settingsPtr->mode("POWHEG:veto")==1);
43  pTmin = settingsPtr->parm("POWHEG:bb4l:pTminVeto");
44  return true;
45  }
bool Pythia8::PowhegHooksBB4L::match_decay ( int  iparticle,
const Event e,
const vector< int > &  ids,
vector< int > &  positions,
vector< Vec4 > &  momenta,
bool  exitOnExtraLegs = true 
)
inline

Definition at line 316 of file PowhegHooksBB4L.h.

References gather_cfg::cout, cmsRelvalreport::exit, i, AlCaHLTBitMon_ParallelJobs::p, and findQualityFiles::size.

Referenced by getdechardness().

316  {
317  // compare sizes
318  if (e[iparticle].daughterList().size() != ids.size()) {
319  if (exitOnExtraLegs && e[iparticle].daughterList().size() > ids.size()) {
320  cout << "extra leg" << endl;
321  exit(-1);
322  }
323  return false;
324  }
325  // compare content
326  for (unsigned i = 0; i < e[iparticle].daughterList().size(); i++) {
327  int di = e[iparticle].daughterList()[i];
328  if (ids[i] != 0 && e[di].id() != ids[i])
329  return false;
330  }
331  // reset the positions and momenta vectors (because they may be reused)
332  positions.clear();
333  momenta.clear();
334  // construct the array of momenta
335  for (unsigned i = 0; i < e[iparticle].daughterList().size(); i++) {
336  int di = e[iparticle].daughterList()[i];
337  positions.push_back(di);
338  momenta.push_back(e[di].p());
339  }
340  return true;
341  }
int i
Definition: DBlmapReader.cc:9
tuple cout
Definition: gather_cfg.py:121
tuple size
Write out results.
double Pythia8::PowhegHooksBB4L::pTpythia ( const Event e,
int  RadAfterBranch,
int  EmtAfterBranch,
int  RecAfterBranch 
)
inline

Definition at line 359 of file PowhegHooksBB4L.h.

References funct::abs(), gather_cfg::cout, mathSSE::sqrt(), and detailsBasic3DVector::z.

Referenced by doVetoFSREmission().

361  {
362 
363  // Convenient shorthands for later
364  Vec4 radVec = e[RadAfterBranch].p();
365  Vec4 emtVec = e[EmtAfterBranch].p();
366  Vec4 recVec = e[RecAfterBranch].p();
367  int radID = e[RadAfterBranch].id();
368 
369  // Calculate virtuality of splitting
370  Vec4 Q(radVec + emtVec);
371  double Qsq = Q.m2Calc();
372 
373 
374  // Mass term of radiator
375  double m2Rad = (abs(radID) >= 4 && abs(radID) < 7) ?
376  pow2(particleDataPtr->m0(radID)) : 0.;
377 
378  // z values for FSR
379  double z, pTnow;
380  // Construct 2 -> 3 variables
381  Vec4 sum = radVec + recVec + emtVec;
382  double m2Dip = sum.m2Calc();
383 
384  double x1 = 2. * (sum * radVec) / m2Dip;
385  double x3 = 2. * (sum * emtVec) / m2Dip;
386  z = x1 / (x1 + x3);
387  pTnow = z * (1. - z);
388 
389 
390  // Virtuality
391  pTnow *= (Qsq - m2Rad);
392 
393  if (pTnow < 0.) {
394  cout << "Warning: pTpythia was negative" << endl;
395  return -1.;
396  }
397  else
398  return(sqrt(pTnow));
399  }
ExtVec< T, 4 > Vec4
Definition: ExtVec.h:23
float float float z
T sqrt(T t)
Definition: SSEVec.h:48
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
tuple cout
Definition: gather_cfg.py:121
double Pythia8::PowhegHooksBB4L::qSplittingScale ( Vec4  pt,
Vec4  p1,
Vec4  p2 
)
inline

Definition at line 343 of file PowhegHooksBB4L.h.

References mathSSE::sqrt().

Referenced by doVetoFSREmission(), and getdechardness().

343  {
344  p1.bstback(pt);
345  p2.bstback(pt);
346  return sqrt( 2*p1*p2*p2.e()/p1.e() );
347  }
T sqrt(T t)
Definition: SSEVec.h:48
double p2[4]
Definition: TauolaWrapper.h:90
double p1[4]
Definition: TauolaWrapper.h:89
bool Pythia8::PowhegHooksBB4L::retryPartonLevel ( )
inline

Definition at line 86 of file PowhegHooksBB4L.h.

References vetoAtPL, and vetoPartonLevel.

double Pythia8::PowhegHooksBB4L::scaleResonance ( int  iRes,
const Event e 
)
inline

Definition at line 245 of file PowhegHooksBB4L.h.

References atopresscale, funct::pow(), radtype_, mathSSE::sqrt(), and topresscale.

245  {
246  if (e[iRes].id() == 6){
247  if(radtype_.radtype == 2)
248  return sqrt(e[iRes].m2Calc());
249  else
250  return topresscale;
251  }
252  else if (e[iRes].id() == -6){
253  if(radtype_.radtype == 2)
254  return sqrt(e[iRes].m2Calc());
255  else
256  return atopresscale;
257  }
258  else
259  return pow(10.0,30.);
260  }
struct @553 radtype_
T sqrt(T t)
Definition: SSEVec.h:48
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40

Member Data Documentation

double Pythia8::PowhegHooksBB4L::atopresscale
private
bool Pythia8::PowhegHooksBB4L::debug
private
bool Pythia8::PowhegHooksBB4L::dryRunFSR
private

Definition at line 487 of file PowhegHooksBB4L.h.

Referenced by doVetoFSR(), doVetoPartonLevel(), and initAfterBeams().

bool Pythia8::PowhegHooksBB4L::excludeFSRConflicting
private

Definition at line 489 of file PowhegHooksBB4L.h.

Referenced by initAfterBeams().

unsigned long int Pythia8::PowhegHooksBB4L::nFSRvetoBB4l
private

Definition at line 504 of file PowhegHooksBB4L.h.

Referenced by doVetoFSR(), and ~PowhegHooksBB4L().

bool Pythia8::PowhegHooksBB4L::onlyDistance1
private

Definition at line 487 of file PowhegHooksBB4L.h.

Referenced by doVetoFSREmission(), and initAfterBeams().

double Pythia8::PowhegHooksBB4L::pTmin
private

Definition at line 502 of file PowhegHooksBB4L.h.

Referenced by findresscale(), and initAfterBeams().

bool Pythia8::PowhegHooksBB4L::pTpythiaVeto
private

Definition at line 500 of file PowhegHooksBB4L.h.

Referenced by doVetoFSREmission(), and initAfterBeams().

double Pythia8::PowhegHooksBB4L::scaleResonanceVeto
private

Definition at line 491 of file PowhegHooksBB4L.h.

Referenced by canSetResonanceScale(), and initAfterBeams().

double Pythia8::PowhegHooksBB4L::topresscale
private
bool Pythia8::PowhegHooksBB4L::vetoAtPL
private
double Pythia8::PowhegHooksBB4L::vetoDecScale
private

Definition at line 497 of file PowhegHooksBB4L.h.

Referenced by doVetoFSR(), doVetoFSRInit(), and doVetoPartonLevel().

bool Pythia8::PowhegHooksBB4L::vetoDipoleFrame
private

Definition at line 499 of file PowhegHooksBB4L.h.

Referenced by doVetoFSREmission(), and initAfterBeams().

bool Pythia8::PowhegHooksBB4L::vetoFSREmission
private

Definition at line 487 of file PowhegHooksBB4L.h.

Referenced by canVetoFSREmission(), doVetoFSREmission(), and initAfterBeams().

bool Pythia8::PowhegHooksBB4L::vetoPartonLevel
private
bool Pythia8::PowhegHooksBB4L::vetoQED
private

Definition at line 487 of file PowhegHooksBB4L.h.

Referenced by doVetoFSREmission(), and initAfterBeams().

int Pythia8::PowhegHooksBB4L::vetoTopCharge
private

Definition at line 498 of file PowhegHooksBB4L.h.

Referenced by doVetoFSR(), doVetoFSRInit(), and doVetoPartonLevel().

bool Pythia8::PowhegHooksBB4L::wouldVetoFsr
private

Definition at line 487 of file PowhegHooksBB4L.h.

Referenced by doVetoFSR(), doVetoFSREmission(), doVetoFSRInit(), and doVetoPartonLevel().