PYTHIA  8.314
DireSplittingsEW.h
1 // DireSplittingsEW.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2025 Stefan Prestel, Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Header file for the Dire electroweak splitings.
7 
8 #ifndef Pythia8_DireSplittingsEW_H
9 #define Pythia8_DireSplittingsEW_H
10 
11 #define DIRE_SPLITTINGSEW_VERSION "2.002"
12 
13 #include "Pythia8/Basics.h"
14 #include "Pythia8/BeamParticle.h"
15 #include "Pythia8/ParticleData.h"
16 #include "Pythia8/PythiaStdlib.h"
17 #include "Pythia8/Settings.h"
18 
19 #include "Pythia8/DireSplittingsQCD.h"
20 
21 namespace Pythia8 {
22 
23 //==========================================================================
24 
26 
27 public:
28 
29  // Constructor and destructor.
30  DireSplittingEW(string idIn, int softRS, Settings* settings,
31  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
32  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
33  DireSplittingQCD(idIn, softRS, settings, particleData, rndm, beamA, beamB,
34  coupSM,info, direInfo) {init();}
35  virtual ~DireSplittingEW() {}
36 
37  void init();
38 
39  // Z0 and W+- properties needed for gamma/Z0 mixing and weak showers.
40  double mZ, gammaZ, thetaW, mW, gammaW, aem0, enhance;
41  bool doQEDshowerByQ, doQEDshowerByL;
42 
43  AlphaEM alphaEM;
44 
45  // Function to calculate the correct running coupling/2*Pi value, including
46  // renormalisation scale variations + threshold matching.
47  double aem2Pi ( double pT2);
48 
49  bool useFastFunctions() { return true; }
50 
51  virtual vector <int> radAndEmt(int idDaughter, int)
52  { return createvector<int>(motherID(idDaughter))(sisterID(idDaughter)); }
53  virtual int nEmissions() { return 1; }
54  virtual bool isPartial() { return true; }
55 
56  virtual bool canUseForBranching() { return true; }
57 
58  virtual int couplingType (int, int) { return 2; }
59  virtual double coupling (double = 0., double = 0., double = 0., double = -1.,
60  pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
61  return (aem0 / (2.*M_PI));
62  }
63  virtual double couplingScale2 (double = 0., double = 0., double = 0.,
64  pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>()) {
65  return -1.;
66  }
67 
68 };
69 
70 //==========================================================================
71 
73 
74 public:
75 
76  Dire_fsr_ew_Q2QZ(string idIn, int softRS, Settings* settings,
77  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
78  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
79  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
80  coupSM, info, direInfo){}
81 
82  bool canRadiate ( const Event&, pair<int,int>,
83  unordered_map<string,bool> = unordered_map<string,bool>(),
84  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
85  bool canRadiate ( const Event&, int, int,
86  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
87  {return false;}
88 
89  int kinMap ();
90 
91  // Return id of mother after splitting.
92  int motherID(int idDaughter);
93 
94  // Return id of emission.
95  int sisterID(int idDaughter);
96 
97  // Return id of recombined radiator (before splitting!)
98  int radBefID(int idRadAfter, int idEmtAfter);
99 
100  // Return colours of recombined radiator (before splitting!)
101  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
102  int colEmtAfter, int acolEmtAfter);
103 
104  double gaugeFactor ( int=0, int=0);
105  double symmetryFactor ( int=0, int=0);
106 
107  // Pick z for new splitting.
108  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
109 
110  // New overestimates, z-integrated versions.
111  double overestimateInt(double zMinAbs,double zMaxAbs,
112  double pT2Old, double m2dip, int order = -1);
113 
114  // Return kernel for new splitting.
115  double overestimateDiff(double z, double m2dip, int order = -1);
116 
117  // Functions to calculate the kernel from SplitInfo information.
118  bool calc(const Event& state = Event(), int order = -1);
119 
120 };
121 
123 
124 public:
125 
126  Dire_fsr_ew_Q2ZQ(string idIn, int softRS, Settings* settings,
127  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
128  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
129  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
130  coupSM, info, direInfo){}
131 
132  bool canRadiate ( const Event&, pair<int,int>,
133  unordered_map<string,bool> = unordered_map<string,bool>(),
134  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
135  bool canRadiate ( const Event&, int, int,
136  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
137  {return false;}
138 
139  int kinMap ();
140 
141  // Return id of mother after splitting.
142  int motherID(int idDaughter);
143 
144  // Return id of emission.
145  int sisterID(int idDaughter);
146 
147  // Return id of recombined radiator (before splitting!)
148  int radBefID(int idRadAfter, int idEmtAfter);
149 
150  // Return colours of recombined radiator (before splitting!)
151  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
152  int colEmtAfter, int acolEmtAfter);
153 
154  double gaugeFactor ( int=0, int=0);
155  double symmetryFactor ( int=0, int=0);
156 
157  // Pick z for new splitting.
158  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
159 
160  // New overestimates, z-integrated versions.
161  double overestimateInt(double zMinAbs,double zMaxAbs,
162  double pT2Old, double m2dip, int order = -1);
163 
164  // Return kernel for new splitting.
165  double overestimateDiff(double z, double m2dip, int order = -1);
166 
167  // Functions to calculate the kernel from SplitInfo information.
168  bool calc(const Event& state = Event(), int order = -1);
169 
170 };
171 
173 
174 public:
175 
176  Dire_fsr_ew_Z2QQ1(string idIn, int softRS, Settings* settings,
177  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
178  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
179  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
180  coupSM, info, direInfo){}
181 
182  bool canRadiate ( const Event&, pair<int,int>,
183  unordered_map<string,bool> = unordered_map<string,bool>(),
184  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
185  bool canRadiate ( const Event&, int, int,
186  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
187  {return false;}
188 
189  int kinMap ();
190 
191  // Return id of mother after splitting.
192  int motherID(int idDaughter);
193 
194  // Return id of emission.
195  int sisterID(int idDaughter);
196 
197  // Return id of recombined radiator (before splitting!)
198  int radBefID(int idRadAfter, int idEmtAfter);
199 
200  // Return colours of recombined radiator (before splitting!)
201  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
202  int colEmtAfter, int acolEmtAfter);
203 
204  double gaugeFactor ( int=0, int=0);
205  double symmetryFactor ( int=0, int=0);
206 
207  // Pick z for new splitting.
208  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
209 
210  // New overestimates, z-integrated versions.
211  double overestimateInt(double zMinAbs,double zMaxAbs,
212  double pT2Old, double m2dip, int order = -1);
213 
214  // Return kernel for new splitting.
215  double overestimateDiff(double z, double m2dip, int order = -1);
216 
217  // Functions to calculate the kernel from SplitInfo information.
218  bool calc(const Event& state = Event(), int order = -1);
219 
220 };
221 
223 
224 public:
225 
226  Dire_fsr_ew_Z2QQ2(string idIn, int softRS, Settings* settings,
227  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
228  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
229  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
230  coupSM, info, direInfo){}
231 
232  bool canRadiate ( const Event&, pair<int,int>,
233  unordered_map<string,bool> = unordered_map<string,bool>(),
234  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
235  bool canRadiate ( const Event&, int, int,
236  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
237  {return false;}
238 
239  int kinMap ();
240 
241  // Return id of mother after splitting.
242  int motherID(int idDaughter);
243 
244  // Return id of emission.
245  int sisterID(int idDaughter);
246 
247  // Return id of recombined radiator (before splitting!)
248  int radBefID(int idRadAfter, int idEmtAfter);
249 
250  // Return colours of recombined radiator (before splitting!)
251  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
252  int colEmtAfter, int acolEmtAfter);
253 
254  double gaugeFactor ( int=0, int=0);
255  double symmetryFactor ( int=0, int=0);
256 
257  // Pick z for new splitting.
258  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
259 
260  // New overestimates, z-integrated versions.
261  double overestimateInt(double zMinAbs,double zMaxAbs,
262  double pT2Old, double m2dip, int order = -1);
263 
264  // Return kernel for new splitting.
265  double overestimateDiff(double z, double m2dip, int order = -1);
266 
267  // Functions to calculate the kernel from SplitInfo information.
268  bool calc(const Event& state = Event(), int order = -1);
269 
270 };
271 
273 
274 public:
275 
276  Dire_fsr_ew_W2QQ1(string idIn, int softRS, Settings* settings,
277  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
278  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
279  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
280  coupSM, info, direInfo){}
281 
282  bool canRadiate ( const Event&, pair<int,int>,
283  unordered_map<string,bool> = unordered_map<string,bool>(),
284  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
285  bool canRadiate ( const Event&, int, int,
286  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
287  {return false;}
288 
289  int kinMap ();
290 
291  // Return id of mother after splitting.
292  int motherID(int idDaughter);
293 
294  // Return id of emission.
295  int sisterID(int idDaughter);
296 
297  // Return id of recombined radiator (before splitting!)
298  int radBefID(int idRadAfter, int idEmtAfter);
299 
300  // Return colours of recombined radiator (before splitting!)
301  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
302  int colEmtAfter, int acolEmtAfter);
303 
304  double gaugeFactor ( int=0, int=0);
305  double symmetryFactor ( int=0, int=0);
306 
307  // Pick z for new splitting.
308  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
309 
310  // New overestimates, z-integrated versions.
311  double overestimateInt(double zMinAbs,double zMaxAbs,
312  double pT2Old, double m2dip, int order = -1);
313 
314  // Return kernel for new splitting.
315  double overestimateDiff(double z, double m2dip, int order = -1);
316 
317  // Functions to calculate the kernel from SplitInfo information.
318  bool calc(const Event& state = Event(), int order = -1);
319 
320 };
321 
323 
324 public:
325 
326  Dire_fsr_ew_W2QQ2(string idIn, int softRS, Settings* settings,
327  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
328  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
329  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
330  coupSM, info, direInfo){}
331 
332  bool canRadiate ( const Event&, pair<int,int>,
333  unordered_map<string,bool> = unordered_map<string,bool>(),
334  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
335  bool canRadiate ( const Event&, int, int,
336  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
337  {return false;}
338 
339  int kinMap ();
340 
341  // Return id of mother after splitting.
342  int motherID(int idDaughter);
343 
344  // Return id of emission.
345  int sisterID(int idDaughter);
346 
347  // Return id of recombined radiator (before splitting!)
348  int radBefID(int idRadAfter, int idEmtAfter);
349 
350  // Return colours of recombined radiator (before splitting!)
351  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
352  int colEmtAfter, int acolEmtAfter);
353 
354  double gaugeFactor ( int=0, int=0);
355  double symmetryFactor ( int=0, int=0);
356 
357  // Pick z for new splitting.
358  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
359 
360  // New overestimates, z-integrated versions.
361  double overestimateInt(double zMinAbs,double zMaxAbs,
362  double pT2Old, double m2dip, int order = -1);
363 
364  // Return kernel for new splitting.
365  double overestimateDiff(double z, double m2dip, int order = -1);
366 
367  // Functions to calculate the kernel from SplitInfo information.
368  bool calc(const Event& state = Event(), int order = -1);
369 
370 };
371 
372 //==========================================================================
373 
375 
376 public:
377 
378  Dire_fsr_ew_H2WW(string idIn, int softRS, Settings* settings,
379  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
380  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
381  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
382  coupSM, info, direInfo){}
383 
384  bool canRadiate ( const Event&, pair<int,int>,
385  unordered_map<string,bool> = unordered_map<string,bool>(),
386  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
387  bool canRadiate ( const Event&, int, int,
388  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
389  {return false;}
390 
391  int kinMap ();
392 
393  // Return id of mother after splitting.
394  int motherID(int idDaughter);
395 
396  // Return id of emission.
397  int sisterID(int idDaughter);
398 
399  // Return id of recombined radiator (before splitting!)
400  int radBefID(int idRadAfter, int idEmtAfter);
401 
402  // Return colours of recombined radiator (before splitting!)
403  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
404  int colEmtAfter, int acolEmtAfter);
405 
406  double gaugeFactor ( int=0, int=0);
407  double symmetryFactor ( int=0, int=0);
408 
409  // Pick z for new splitting.
410  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
411 
412  // New overestimates, z-integrated versions.
413  double overestimateInt(double zMinAbs,double zMaxAbs,
414  double pT2Old, double m2dip, int order = -1);
415 
416  // Return kernel for new splitting.
417  double overestimateDiff(double z, double m2dip, int order = -1);
418 
419  // Functions to calculate the kernel from SplitInfo information.
420  bool calc(const Event& state = Event(), int order = -1);
421 
422 };
423 
424 //==========================================================================
425 
427 
428 public:
429 
430  Dire_fsr_ew_H2AA(string idIn, int softRS, Settings* settings,
431  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
432  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
433  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
434  coupSM, info, direInfo) {
435  widthToAA = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
436  particleDataPtr->m0(25), 22, 22);
437  widthTot = settings->parm("MEM:WidthH");
438  }
439 
440  bool canRadiate ( const Event&, pair<int,int>,
441  unordered_map<string,bool> = unordered_map<string,bool>(),
442  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
443  bool canRadiate ( const Event&, int iRadBef, int iRecBef,
444  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
445  bool isPartial() { return false; }
446 
447  bool isSymmetric( const Particle* rad, const Particle* emt) {
448  if (rad->id() == 22 && emt->id() == 22) return true;
449  return false;
450  }
451 
452  int couplingType (int, int);
453  double coupling (double = 0., double = 0., double = 0., double = -1.,
454  pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
455 
456  int kinMap ();
457 
458  // Return id of mother after splitting.
459  int motherID(int idDaughter);
460 
461  // Return id of emission.
462  int sisterID(int idDaughter);
463 
464  // Return id of recombined radiator (before splitting!)
465  int radBefID(int idRadAfter, int idEmtAfter);
466 
467  vector <int> recPositions( const Event& state, int iRad, int iEmt);
468 
469  // Return colours of recombined radiator (before splitting!)
470  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
471  int colEmtAfter, int acolEmtAfter);
472 
473  double gaugeFactor ( int=0, int=0);
474  double symmetryFactor ( int=0, int=0);
475 
476  // Pick z for new splitting.
477  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
478 
479  // New overestimates, z-integrated versions.
480  double overestimateInt(double zMinAbs,double zMaxAbs,
481  double pT2Old, double m2dip, int order = -1);
482 
483  // Return kernel for new splitting.
484  double overestimateDiff(double z, double m2dip, int order = -1);
485 
486  // Functions to calculate the kernel from SplitInfo information.
487  bool calc(const Event& state = Event(), int order = -1);
488 
489  double widthToAA, widthTot;
490 
491 };
492 
493 //==========================================================================
494 
496 
497 public:
498 
499  Dire_fsr_ew_H2GG(string idIn, int softRS, Settings* settings,
500  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
501  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
502  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
503  coupSM, info, direInfo) {
504  widthToGG = particleDataPtr->particleDataEntryPtr(25)->resWidthChan(
505  particleDataPtr->m0(25), 21, 21);
506  widthTot = settings->parm("MEM:WidthH");
507  }
508 
509  bool canRadiate ( const Event&, pair<int,int>,
510  unordered_map<string,bool> = unordered_map<string,bool>(),
511  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
512  bool canRadiate ( const Event&, int iRadBef, int iRecBef,
513  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
514  bool isPartial() { return false; }
515 
516  bool isSymmetric( const Particle* rad, const Particle* emt) {
517  if (rad->id() == 21 && emt->id() == 21) return true;
518  return false;
519  }
520 
521  int couplingType (int, int);
522  double coupling (double = 0., double = 0., double = 0., double = -1.,
523  pair<int,bool> = pair<int,bool>(), pair<int,bool> = pair<int,bool>());
524 
525  int kinMap ();
526 
527  // Return id of mother after splitting.
528  int motherID(int idDaughter);
529 
530  // Return id of emission.
531  int sisterID(int idDaughter);
532 
533  // Return id of recombined radiator (before splitting!)
534  int radBefID(int idRadAfter, int idEmtAfter);
535 
536  vector <int> recPositions( const Event& state, int iRad, int iEmt);
537 
538  // Return colours of recombined radiator (before splitting!)
539  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
540  int colEmtAfter, int acolEmtAfter);
541 
542  double gaugeFactor ( int=0, int=0);
543  double symmetryFactor ( int=0, int=0);
544 
545  // Pick z for new splitting.
546  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
547 
548  // New overestimates, z-integrated versions.
549  double overestimateInt(double zMinAbs,double zMaxAbs,
550  double pT2Old, double m2dip, int order = -1);
551 
552  // Return kernel for new splitting.
553  double overestimateDiff(double z, double m2dip, int order = -1);
554 
555  // Functions to calculate the kernel from SplitInfo information.
556  bool calc(const Event& state = Event(), int order = -1);
557 
558  double widthToGG, widthTot;
559 
560 };
561 
562 //==========================================================================
563 
565 
566 public:
567 
568  Dire_fsr_ew_W2WA(string idIn, int softRS, Settings* settings,
569  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
570  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
571  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
572  coupSM, info, direInfo){}
573 
574  bool canRadiate ( const Event&, pair<int,int>,
575  unordered_map<string,bool> = unordered_map<string,bool>(),
576  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
577  bool canRadiate ( const Event&, int iRadBef, int iRecBef,
578  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
579 
580  int kinMap ();
581 
582  // Return id of mother after splitting.
583  int motherID(int idDaughter);
584 
585  // Return id of emission.
586  int sisterID(int idDaughter);
587 
588  // Return id of recombined radiator (before splitting!)
589  int radBefID(int idRadAfter, int idEmtAfter);
590 
591  vector <int> recPositions( const Event& state, int iRad, int iEmt);
592 
593  // Return colours of recombined radiator (before splitting!)
594  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
595  int colEmtAfter, int acolEmtAfter);
596 
597  vector<pair<int,int> > radAndEmtCols(int iRad, int, Event state) {
598  vector< pair<int,int> > ret;
599  if (state[iRad].idAbs() != 24) return ret;
600  ret = createvector<pair<int,int> >(make_pair(0, 0))(make_pair(0, 0));
601  return ret;
602  }
603 
604  double gaugeFactor ( int=0, int=0);
605  double symmetryFactor ( int=0, int=0);
606 
607  // Pick z for new splitting.
608  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
609 
610  // New overestimates, z-integrated versions.
611  double overestimateInt(double zMinAbs,double zMaxAbs,
612  double pT2Old, double m2dip, int order = -1);
613 
614  // Return kernel for new splitting.
615  double overestimateDiff(double z, double m2dip, int order = -1);
616 
617  // Functions to calculate the kernel from SplitInfo information.
618  bool calc(const Event& state = Event(), int order = -1);
619 
620 };
621 
622 //==========================================================================
623 
625 
626 public:
627 
628  Dire_isr_ew_Q2QZ(string idIn, int softRS, Settings* settings,
629  ParticleData* particleData, Rndm* rndm, BeamParticlePtr beamA,
630  BeamParticlePtr beamB, CoupSM* coupSM, Info* info, DireInfo* direInfo) :
631  DireSplittingEW(idIn, softRS, settings, particleData, rndm, beamA, beamB,
632  coupSM, info, direInfo){}
633 
634  bool canRadiate ( const Event&, pair<int,int>,
635  unordered_map<string,bool> = unordered_map<string,bool>(),
636  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr);
637  bool canRadiate ( const Event&, int, int,
638  Settings* = nullptr, PartonSystems* = nullptr, BeamParticlePtr = nullptr)
639  {return false;}
640 
641  int kinMap ();
642 
643  // Return id of mother after splitting.
644  int motherID(int idDaughter);
645 
646  // Return id of emission.
647  int sisterID(int idDaughter);
648 
649  // Return id of recombined radiator (before splitting!)
650  int radBefID(int idRadAfter, int idEmtAfter);
651 
652  // Return colours of recombined radiator (before splitting!)
653  pair<int,int> radBefCols(int colRadAfter, int acolRadAfter,
654  int colEmtAfter, int acolEmtAfter);
655 
656  double gaugeFactor ( int=0, int=0);
657  double symmetryFactor ( int=0, int=0);
658 
659  // Pick z for new splitting.
660  double zSplit(double zMinAbs, double zMaxAbs, double m2dip);
661 
662  // New overestimates, z-integrated versions.
663  double overestimateInt(double zMinAbs,double zMaxAbs,
664  double pT2Old, double m2dip, int order = -1);
665 
666  // Return kernel for new splitting.
667  double overestimateDiff(double z, double m2dip, int order = -1);
668 
669  // Functions to calculate the kernel from SplitInfo information.
670  bool calc(const Event& state = Event(), int order = -1);
671 
672 };
673 
674 } // end namespace Pythia8
675 
676 #endif // Pythia8_DireSplittingLibrary_H
Definition: DireSplittingsEW.h:72
virtual vector< int > recPositions(const Event &, int, int)
Definition: DireSplittings.h:146
virtual double symmetryFactor(int, int)
Return symmetry factor for splitting.
Definition: DireSplittings.h:160
Definition: Info.h:45
Definition: DireSplittingsEW.h:564
The Event class holds all info on the generated event.
Definition: Event.h:408
Definition: DireSplittingsEW.h:172
Definition: DireSplittingsEW.h:272
Definition: DireSplittingsQCD.h:27
virtual double gaugeFactor(int, int)
Return color factor for splitting.
Definition: DireSplittings.h:157
void id(int idIn)
Member functions for input.
Definition: Event.h:88
virtual double overestimateInt(double, double, double, double, int=-1)
New overestimates, z-integrated versions.
Definition: DireSplittings.h:189
Definition: DireSplittingsEW.h:624
Definition: DireBasics.h:374
void init()
The SplittingEW class.
Definition: DireSplittingsEW.cc:22
Definition: StandardModel.h:106
DireSplittingEW(string idIn, int softRS, Settings *settings, ParticleData *particleData, Rndm *rndm, BeamParticlePtr beamA, BeamParticlePtr beamB, CoupSM *coupSM, Info *info, DireInfo *direInfo)
Constructor and destructor.
Definition: DireSplittingsEW.h:30
Definition: DireSplittingsEW.h:222
virtual double coupling(double=0., double=0., double=0., double=-1., pair< int, bool >=pair< int, bool >(), pair< int, bool >=pair< int, bool >())
Definition: DireSplittingsEW.h:59
Definition: DireSplittingsEW.h:322
Definition: Basics.h:388
Definition: DireSplittingsEW.h:374
virtual bool calc(const Event &=Event(), int=-1)
Functions to calculate the kernel from SplitInfo information.
Definition: DireSplittings.h:203
double mZ
Z0 and W+- properties needed for gamma/Z0 mixing and weak showers.
Definition: DireSplittingsEW.h:40
virtual int kinMap()
Definition: DireSplittings.h:123
Definition: DireSplittingsEW.h:122
virtual int couplingType(int, int)
Definition: DireSplittingsEW.h:58
virtual vector< int > radAndEmt(int idDaughter, int)
Definition: DireSplittingsEW.h:51
Definition: StandardModel.h:135
Definition: Event.h:32
virtual double overestimateDiff(double, double, int=-1)
Return kernel for new splitting.
Definition: DireSplittings.h:193
The PartonSystems class describes the whole set of subcollisions.
Definition: PartonSystems.h:42
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
Definition: DireSplittingsEW.h:495
Definition: DireSplittingsEW.h:25
virtual int radBefID(int, int)
Return id of recombined radiator (before splitting!)
Definition: DireSplittings.h:150
This class holds a map of all ParticleDataEntries.
Definition: ParticleData.h:422
virtual pair< int, int > radBefCols(int, int, int, int)
Return colours of recombined radiator (before splitting!)
Definition: DireSplittings.h:153
Definition: DireBasics.h:82
virtual int sisterID(int)
Return id of emission.
Definition: DireSplittings.h:129
Definition: Settings.h:196
Definition: DireSplittingsEW.h:426
virtual double zSplit(double, double, double)
Pick z for new splitting.
Definition: DireSplittings.h:186
double aem2Pi(double pT2)
Definition: DireSplittingsEW.cc:53
virtual int motherID(int)
Return id of mother after splitting.
Definition: DireSplittings.h:126