PYTHIA  8.317
SigmaEW.h
1 // SigmaEW.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2026 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 electroweak process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
8 
9 #ifndef Pythia8_SigmaEW_H
10 #define Pythia8_SigmaEW_H
11 
12 #include "Pythia8/PythiaComplex.h"
13 #include "Pythia8/SigmaProcess.h"
14 
15 namespace Pythia8 {
16 
17 
18 //==========================================================================
19 
20 // A derived class for q g -> q gamma (q = u, d, s, c, b).
21 // Use massless approximation also for Q since no alternative.
22 
24 
25 public:
26 
27  // Constructor.
28  Sigma2qg2qgamma() : sigUS(), sigma0() {}
29 
30  // Calculate flavour-independent parts of cross section.
31  virtual void sigmaKin();
32 
33  // Evaluate d(sigmaHat)/d(tHat).
34  virtual double sigmaHat();
35 
36  // Select flavour, colour and anticolour.
37  virtual void setIdColAcol();
38 
39  // Info on the subprocess.
40  virtual string name() const {return "q g -> q gamma (udscb)";}
41  virtual int code() const {return 201;}
42  virtual string inFlux() const {return "qg";}
43 
44 private:
45 
46  // Values stored for later use.
47  double sigUS, sigma0;
48 
49 };
50 
51 //==========================================================================
52 
53 // A derived class for q qbar -> g gamma.
54 
56 
57 public:
58 
59  // Constructor.
60  Sigma2qqbar2ggamma() : sigma0() {}
61 
62  // Calculate flavour-independent parts of cross section.
63  virtual void sigmaKin();
64 
65  // Evaluate d(sigmaHat)/d(tHat).
66  virtual double sigmaHat();
67 
68  // Select flavour, colour and anticolour.
69  virtual void setIdColAcol();
70 
71  // Info on the subprocess.
72  virtual string name() const {return "q qbar -> g gamma";}
73  virtual int code() const {return 202;}
74  virtual string inFlux() const {return "qqbarSame";}
75 
76 private:
77 
78  // Values stored for later use.
79  double sigma0;
80 
81 };
82 
83 //==========================================================================
84 
85 // A derived class for g g -> g gamma.
86 
88 
89 public:
90 
91  // Constructor.
92  Sigma2gg2ggamma() : chargeSum(), sigma() {}
93 
94  // Initialize process.
95  virtual void initProc();
96 
97  // Calculate flavour-independent parts of cross section.
98  virtual void sigmaKin();
99 
100  // Evaluate d(sigmaHat)/d(tHat).
101  virtual double sigmaHat() {return sigma;}
102 
103  // Select flavour, colour and anticolour.
104  virtual void setIdColAcol();
105 
106  // Info on the subprocess.
107  virtual string name() const {return "g g -> g gamma";}
108  virtual int code() const {return 203;}
109  virtual string inFlux() const {return "gg";}
110 
111 private:
112 
113  // Values stored for later use.
114  double chargeSum, sigma;
115 
116 };
117 
118 //==========================================================================
119 
120 // A derived class for f fbar -> gamma gamma.
121 
123 
124 public:
125 
126  // Constructor.
127  Sigma2ffbar2gammagamma() : sigTU(), sigma0() {}
128 
129  // Calculate flavour-independent parts of cross section.
130  virtual void sigmaKin();
131 
132  // Evaluate d(sigmaHat)/d(tHat).
133  virtual double sigmaHat();
134 
135  // Select flavour, colour and anticolour.
136  virtual void setIdColAcol();
137 
138  // Info on the subprocess.
139  virtual string name() const {return "f fbar -> gamma gamma";}
140  virtual int code() const {return 204;}
141  virtual string inFlux() const {return "ffbarSame";}
142 
143 private:
144 
145  // Values stored for later use.
146  double sigTU, sigma0;
147 
148 };
149 
150 //==========================================================================
151 
152 // A derived class for g g -> gamma gamma.
153 
155 
156 public:
157 
158  // Constructor.
159  Sigma2gg2gammagamma() : charge2Sum(), sigma() {}
160 
161  // Initialize process.
162  virtual void initProc();
163 
164  // Calculate flavour-independent parts of cross section.
165  virtual void sigmaKin();
166 
167  // Evaluate d(sigmaHat)/d(tHat).
168  virtual double sigmaHat() {return sigma;}
169 
170  // Select flavour, colour and anticolour.
171  virtual void setIdColAcol();
172 
173  // Info on the subprocess.
174  virtual string name() const {return "g g -> gamma gamma";}
175  virtual int code() const {return 205;}
176  virtual string inFlux() const {return "gg";}
177 
178 private:
179 
180  double charge2Sum, sigma;
181 
182 };
183 
184 //==========================================================================
185 
186 // A derived class for f f' -> f f' via t-channel gamma*/Z0 exchange.
187 
189 
190 public:
191 
192  // Constructor.
193  Sigma2ff2fftgmZ() : gmZmode(), mZ(), mZS(), thetaWRat(), sigmagmgm(),
194  sigmagmZ(), sigmaZZ() {}
195 
196  // Initialize process.
197  virtual void initProc();
198 
199  // Calculate flavour-independent parts of cross section.
200  virtual void sigmaKin();
201 
202  // Evaluate sigmaHat(sHat).
203  virtual double sigmaHat();
204 
205  // This process has an inclusive NLO correction.
206  virtual bool hasNLO() const {return true;}
207  virtual double weightNLO();
208  double factRVDIS( int idLepton, double x, double y, double Q2,
209  BeamParticle* beamHadPtr);
210 
211  // Select flavour, colour and anticolour.
212  virtual void setIdColAcol();
213 
214  // Info on the subprocess.
215  virtual string name() const {return "f f' -> f f' (t-channel gamma*/Z0)";}
216  virtual int code() const {return 211;}
217  virtual string inFlux() const {return "ff";}
218 
219 private:
220 
221  // Z parameters for propagator.
222  int gmZmode;
223  double mZ, mZS, thetaWRat, sigmagmgm, sigmagmZ, sigmaZZ;
224 
225 };
226 
227 //==========================================================================
228 
229 // A derived class for f_1 f_2 -> f_3 f_4 via t-channel W+- exchange.
230 
231 class Sigma2ff2fftW : public Sigma2Process {
232 
233 public:
234 
235  // Constructor.
236  Sigma2ff2fftW() : mW(), mWS(), thetaWRat(), sigma0() {}
237 
238  // Initialize process.
239  virtual void initProc();
240 
241  // Calculate flavour-independent parts of cross section.
242  virtual void sigmaKin();
243 
244  // Evaluate sigmaHat(sHat).
245  virtual double sigmaHat();
246 
247  // Select flavour, colour and anticolour.
248  virtual void setIdColAcol();
249 
250  // Info on the subprocess.
251  virtual string name() const {return "f_1 f_2 -> f_3 f_4 (t-channel W+-)";}
252  virtual int code() const {return 212;}
253  virtual string inFlux() const {return "ff";}
254 
255 private:
256 
257  // W parameters for propagator.
258  double mW, mWS, thetaWRat, sigma0;
259 
260 };
261 
262 //==========================================================================
263 
264 // A derived class for q q' -> Q q" via t-channel W+- exchange.
265 // Related to Sigma2ff2fftW class, but with massive matrix elements.
266 
267 class Sigma2qq2QqtW : public Sigma2Process {
268 
269 public:
270 
271  // Constructor.
272  Sigma2qq2QqtW(int idIn, int codeIn) : idNew(idIn), codeSave(codeIn), mW(),
273  mWS(), thetaWRat(), sigma0(), openFracPos(), openFracNeg() {}
274 
275  // Initialize process.
276  virtual void initProc();
277 
278  // Calculate flavour-independent parts of cross section.
279  virtual void sigmaKin();
280 
281  // Evaluate sigmaHat(sHat).
282  virtual double sigmaHat();
283 
284  // Select flavour, colour and anticolour.
285  virtual void setIdColAcol();
286 
287  // Evaluate weight for W decay angles in top decay (else inactive).
288  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
289 
290  // Info on the subprocess.
291  virtual string name() const {return nameSave;}
292  virtual int code() const {return codeSave;}
293  virtual string inFlux() const {return "ff";}
294  virtual int id3Mass() const {return idNew;}
295 
296 private:
297 
298  // Values stored for process type. W parameters for propagator.
299  int idNew, codeSave;
300  string nameSave;
301  double mW, mWS, thetaWRat, sigma0, openFracPos, openFracNeg;
302 
303 };
304 
305 //==========================================================================
306 
307 // A derived class for f fbar -> gamma*/Z0.
308 
310 
311 public:
312 
313  // Constructor.
314  Sigma1ffbar2gmZ() : gmZmode(), mRes(), GammaRes(), m2Res(), GamMRat(),
315  thetaWRat(), gamSum(), intSum(), resSum(), gamProp(), intProp(),
316  resProp(), particlePtr() {}
317 
318  // Initialize process.
319  virtual void initProc();
320 
321  // Calculate flavour-independent parts of cross section.
322  virtual void sigmaKin();
323 
324  // Evaluate sigmaHat(sHat).
325  virtual double sigmaHat();
326 
327  // Select flavour, colour and anticolour.
328  virtual void setIdColAcol();
329 
330  // Evaluate weight for Z decay angle.
331  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
332 
333  // Info on the subprocess.
334  virtual string name() const {return "f fbar -> gamma*/Z0";}
335  virtual int code() const {return 221;}
336  virtual string inFlux() const {return "ffbarSame";}
337  virtual int resonanceA() const {return 23;}
338 
339 private:
340 
341  // Parameters set at initialization or for each new event.
342  int gmZmode;
343  double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
344  gamSum, intSum, resSum, gamProp, intProp, resProp;
345 
346  // Pointer to properties of the particle species, to access decay channels.
347  ParticleDataEntryPtr particlePtr;
348 
349 };
350 
351 //==========================================================================
352 
353 // A derived class for f fbar' -> W+-.
354 
355 class Sigma1ffbar2W : public Sigma1Process {
356 
357 public:
358 
359  // Constructor.
360  Sigma1ffbar2W() : mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(),
361  sigma0Pos(), sigma0Neg(), particlePtr() {}
362 
363  // Initialize process.
364  virtual void initProc();
365 
366  // Calculate flavour-independent parts of cross section.
367  virtual void sigmaKin();
368 
369  // Evaluate sigmaHat(sHat).
370  virtual double sigmaHat();
371 
372  // Select flavour, colour and anticolour.
373  virtual void setIdColAcol();
374 
375  // Evaluate weight for W decay angle.
376  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
377 
378  // Info on the subprocess.
379  virtual string name() const {return "f fbar' -> W+-";}
380  virtual int code() const {return 222;}
381  virtual string inFlux() const {return "ffbarChg";}
382  virtual int resonanceA() const {return 24;}
383 
384 private:
385 
386  // Parameters set at initialization.
387  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
388 
389  // Pointer to properties of the particle species, to access decay channels.
390  ParticleDataEntryPtr particlePtr;
391 
392 };
393 
394 //==========================================================================
395 
396 // A derived class for f fbar -> gamma* -> f' fbar', summed over light f'.
397 // Allows pT-ordered evolution for multiparton interactions.
398 
400 
401 public:
402 
403  // Constructor.
404  Sigma2ffbar2ffbarsgm() : idNew(), sigma0() {}
405 
406  // Calculate flavour-independent parts of cross section.
407  virtual void sigmaKin();
408 
409  // Evaluate sigmaHat(sHat).
410  virtual double sigmaHat();
411 
412  // Select flavour, colour and anticolour.
413  virtual void setIdColAcol();
414 
415  // Info on the subprocess.
416  virtual string name() const {
417  return "f fbar -> f' fbar' (s-channel gamma*)";}
418  virtual int code() const {return 223;}
419  virtual string inFlux() const {return "ffbarSame";}
420  virtual bool isSChannel() const {return true;}
421 
422 private:
423 
424  // Values stored for later use.
425  int idNew;
426  double sigma0;
427 
428 };
429 
430 //==========================================================================
431 
432 // A derived class for f fbar -> gamma*/Z0 -> f' fbar', summed over light f.
433 
435 
436 public:
437 
438  // Constructor.
439  Sigma2ffbar2ffbarsgmZ() : gmZmode(), mRes(), GammaRes(), m2Res(),
440  GamMRat(), thetaWRat(), colQ(), gamSumT(), gamSumL(), intSumT(),
441  intSumL(), intSumA(), resSumT(), resSumL(), resSumA(), gamProp(),
442  intProp(), resProp(), cThe(), particlePtr() {}
443 
444  // Initialize process.
445  virtual void initProc();
446 
447  // Calculate flavour-independent parts of cross section.
448  virtual void sigmaKin();
449 
450  // Evaluate sigmaHat(sHat).
451  virtual double sigmaHat();
452 
453  // Select flavour, colour and anticolour.
454  virtual void setIdColAcol();
455 
456  // Info on the subprocess.
457  virtual string name() const {
458  return "f fbar -> f' fbar' (s-channel gamma*/Z0)";}
459  virtual int code() const {return 224;}
460  virtual string inFlux() const {return "ffbarSame";}
461  virtual bool isSChannel() const {return true;}
462  virtual int idSChannel() const {return 23;}
463  virtual int resonanceA() const {return 23;}
464 
465 private:
466 
467  // Parameters set at initialization or for each new event.
468  int gmZmode;
469  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, colQ,
470  gamSumT, gamSumL, intSumT, intSumL, intSumA, resSumT, resSumL,
471  resSumA, gamProp, intProp, resProp, cThe;
472  vector<int> idVec;
473  vector<double> gamT, gamL, intT, intL, intA, resT, resL, resA, sigTLA;
474 
475  // Pointer to properties of the particle species, to access decay channels.
476  ParticleDataEntryPtr particlePtr;
477 
478 };
479 
480 //==========================================================================
481 
482 // A derived class for f_1 fbar_2 -> W+- -> f_3 fbar_4, summed over light f.
483 
485 
486 public:
487 
488  // Constructor.
489  Sigma2ffbar2ffbarsW() : id3New(), id4New(), mRes(), GammaRes(), m2Res(),
490  GamMRat(), thetaWRat(), sigma0(), particlePtr() {}
491 
492  // Initialize process.
493  virtual void initProc();
494 
495  // Calculate flavour-independent parts of cross section.
496  virtual void sigmaKin();
497 
498  // Evaluate sigmaHat(sHat).
499  virtual double sigmaHat();
500 
501  // Select flavour, colour and anticolour.
502  virtual void setIdColAcol();
503 
504  // Info on the subprocess.
505  virtual string name() const {
506  return "f_1 fbar_2 -> f_3 fbar_4 (s-channel W+-)";}
507  virtual int code() const {return 225;}
508  virtual string inFlux() const {return "ffbarChg";}
509  virtual bool isSChannel() const {return true;}
510  virtual int idSChannel() const {return 24;}
511  virtual int resonanceA() const {return 24;}
512 
513 private:
514 
515  // Parameters set at initialization or stored for later use.
516  int id3New, id4New;
517  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0;
518 
519  // Pointer to properties of the particle species, to access decay channels.
520  ParticleDataEntryPtr particlePtr;
521 
522 };
523 
524 //==========================================================================
525 
526 // A derived class for f fbar -> gamma*/Z0 -> F Fbar, for one heavy F.
527 // Allows pT cuts as for other 2 -> 2 processes.
528 
530 
531 public:
532 
533  // Constructor.
534  Sigma2ffbar2FFbarsgmZ(int idIn, int codeIn) : idNew(idIn),
535  codeSave(codeIn), gmZmode(), isPhysical(), ef(), vf(), af(), mRes(),
536  GammaRes(), m2Res(), GamMRat(), thetaWRat(), mr(), betaf(), cosThe(),
537  gamProp(), intProp(), resProp(), openFracPair() {}
538 
539  // Initialize process.
540  virtual void initProc();
541 
542  // Calculate flavour-independent parts of cross section.
543  virtual void sigmaKin();
544 
545  // Evaluate sigmaHat(sHat).
546  virtual double sigmaHat();
547 
548  // Select flavour, colour and anticolour.
549  virtual void setIdColAcol();
550 
551  // Evaluate weight for W decay angles in top decay (else inactive).
552  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
553 
554  // Info on the subprocess.
555  virtual string name() const {return nameSave;}
556  virtual int code() const {return codeSave;}
557  virtual string inFlux() const {return "ffbarSame";}
558  virtual bool isSChannel() const {return true;}
559  virtual int id3Mass() const {return idNew;}
560  virtual int id4Mass() const {return idNew;}
561  virtual int resonanceA() const {return 23;}
562 
563 private:
564 
565  // Values stored for process type. Z parameters for propagator.
566  int idNew, codeSave, gmZmode;
567  string nameSave;
568  bool isPhysical;
569  double ef, vf, af, mRes, GammaRes, m2Res, GamMRat, thetaWRat,
570  mr, betaf, cosThe, gamProp, intProp, resProp, openFracPair;
571 
572 };
573 
574 //==========================================================================
575 
576 // A derived class for f fbar' -> W+- -> F fbar", for one or two heavy F.
577 // Allows pT cuts as for other 2 -> 2 processes.
578 
580 
581 public:
582 
583  // Constructor.
584  Sigma2ffbar2FfbarsW(int idIn, int idIn2, int codeIn) : idNew(idIn),
585  idNew2(idIn2), codeSave(codeIn), idPartner(), isPhysical(), V2New(),
586  mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(), sigma0(),
587  openFracPos(), openFracNeg() {}
588 
589  // Initialize process.
590  virtual void initProc();
591 
592  // Calculate flavour-independent parts of cross section.
593  virtual void sigmaKin();
594 
595  // Evaluate sigmaHat(sHat).
596  virtual double sigmaHat();
597 
598  // Select flavour, colour and anticolour.
599  virtual void setIdColAcol();
600 
601  // Evaluate weight for W decay angles in top decay (else inactive).
602  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
603 
604  // Info on the subprocess.
605  virtual string name() const {return nameSave;}
606  virtual int code() const {return codeSave;}
607  virtual string inFlux() const {return "ffbarChg";}
608  virtual bool isSChannel() const {return true;}
609  virtual int id3Mass() const {return idNew;}
610  virtual int id4Mass() const {return idPartner;}
611  virtual int resonanceA() const {return 24;}
612 
613 private:
614 
615  // Values stored for process type. W parameters for propagator.
616  int idNew, idNew2, codeSave, idPartner;
617  string nameSave;
618  bool isPhysical;
619  double V2New, mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
620  openFracPos, openFracNeg;
621 
622 };
623 
624 //==========================================================================
625 
626 // An intermediate class for f fbar -> gamma*/Z0/W+- gamma*/Z0/W-+.
627 
629 
630 public:
631 
632  // Constructor.
634 
635 protected:
636 
637  // Internal products.
638  Vec4 pRot[7];
639  complex hA[7][7];
640  complex hC[7][7];
641 
642  // Calculate and store internal products.
643  void setupProd( Event& process, int i1, int i2, int i3, int i4,
644  int i5, int i6);
645 
646  // Evaluate the F function of Gunion and Kunszt.
647  complex fGK(int i1, int i2, int i3, int i4, int i5, int i6);
648 
649  // Evaluate the Xi function of Gunion and Kunszt.
650  double xiGK( double tHnow, double uHnow);
651 
652  // Evaluate the Xj function of Gunion and Kunszt.
653  double xjGK( double tHnow, double uHnow);
654 
655 private:
656 
657 };
658 
659 //==========================================================================
660 
661 // A derived class for f fbar -> gamma*/Z0 gamma*/Z0.
662 
664 
665 public:
666 
667  // Constructor.
668  Sigma2ffbar2gmZgmZ() : gmZmode(), i1(), i2(), i3(), i4(), i5(), i6(),
669  mRes(), GammaRes(), m2Res(), GamMRat(), thetaWRat(), sigma0(), gamSum3(),
670  intSum3(), resSum3(), gamProp3(), intProp3(), resProp3(), gamSum4(),
671  intSum4(), resSum4(), gamProp4(), intProp4(), resProp4(), c3LL(), c3LR(),
672  c3RL(), c3RR(), c4LL(), c4LR(), c4RL(), c4RR(), flavWt(),
673  particlePtr() {}
674 
675  // Initialize process.
676  virtual void initProc();
677 
678  // Calculate flavour-independent parts of cross section.
679  virtual void sigmaKin();
680 
681  // Evaluate d(sigmaHat)/d(tHat).
682  virtual double sigmaHat();
683 
684  // Select flavour, colour and anticolour.
685  virtual void setIdColAcol();
686 
687  // Evaluate weight for simultaneous flavour choices.
688  virtual double weightDecayFlav( Event& process);
689 
690  // Evaluate weight for decay angles of the two gamma*/Z0.
691  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
692 
693  // Info on the subprocess.
694  virtual string name() const {return "f fbar -> gamma*/Z0 gamma*/Z0";}
695  virtual int code() const {return 231;}
696  virtual string inFlux() const {return "ffbarSame";}
697  virtual int id3Mass() const {return 23;}
698  virtual int id4Mass() const {return 23;}
699 
700 private:
701 
702  // Parameters set at initialization or for each new event.
703  int gmZmode, i1, i2, i3, i4, i5, i6;
704  double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
705  gamSum3, intSum3, resSum3, gamProp3, intProp3, resProp3,
706  gamSum4, intSum4, resSum4, gamProp4, intProp4, resProp4,
707  c3LL, c3LR, c3RL, c3RR, c4LL, c4LR, c4RL, c4RR, flavWt;
708 
709  // Pointer to properties of the particle species, to access decay channels.
710  ParticleDataEntryPtr particlePtr;
711 
712 };
713 
714 //==========================================================================
715 
716 // A derived class for f fbar' -> Z0 W+-. (Here pure Z0, unfortunately.)
717 
719 
720 public:
721 
722  // Constructor.
723  Sigma2ffbar2ZW() : mW(), widW(), mWS(), mwWS(), sin2thetaW(), cos2thetaW(),
724  thetaWRat(), cotT(), thetaWpt(), thetaWmm(), lun(), lde(), sigma0(),
725  openFracPos(), openFracNeg() {}
726 
727  // Initialize process.
728  virtual void initProc();
729 
730  // Calculate flavour-independent parts of cross section.
731  virtual void sigmaKin();
732 
733  // Evaluate d(sigmaHat)/d(tHat).
734  virtual double sigmaHat();
735 
736  // Select flavour, colour and anticolour.
737  virtual void setIdColAcol();
738 
739  // Evaluate weight for Z0 and W+- decay angles.
740  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
741 
742  // Info on the subprocess.
743  virtual string name() const {return "f fbar' -> Z0 W+- (no gamma*!)";}
744  virtual int code() const {return 232;}
745  virtual string inFlux() const {return "ffbarChg";}
746  virtual int id3Mass() const {return 23;}
747  virtual int id4Mass() const {return 24;}
748  virtual int resonanceA() const {return 24;}
749 
750 private:
751 
752  // Store W+- mass and width, and couplings.
753  double mW, widW, mWS, mwWS, sin2thetaW, cos2thetaW, thetaWRat, cotT,
754  thetaWpt, thetaWmm, lun, lde, sigma0, openFracPos, openFracNeg;
755 
756 };
757 
758 //==========================================================================
759 
760 // A derived class for f fbar -> W+ W-.
761 
763 
764 public:
765 
766  // Constructor.
767  Sigma2ffbar2WW() : mZ(), widZ(), mZS(), mwZS(), thetaWRat(), sigma0(),
768  cgg(), cgZ(), cZZ(), cfg(), cfZ(), cff(), gSS(), gTT(), gST(), gUU(),
769  gSU(), openFracPair() {}
770 
771  // Initialize process.
772  virtual void initProc();
773 
774  // Calculate flavour-independent parts of cross section.
775  virtual void sigmaKin();
776 
777  // Evaluate d(sigmaHat)/d(tHat).
778  virtual double sigmaHat();
779 
780  // Select flavour, colour and anticolour.
781  virtual void setIdColAcol();
782 
783  // Evaluate weight for W+ and W- decay angles.
784  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
785 
786  // Info on the subprocess.
787  virtual string name() const {return "f fbar -> W+ W-";}
788  virtual int code() const {return 233;}
789  virtual string inFlux() const {return "ffbarSame";}
790  virtual int id3Mass() const {return 24;}
791  virtual int id4Mass() const {return -24;}
792  virtual int resonanceA() const {return 23;}
793 
794 private:
795 
796  // Store Z0 mass and width.
797  double mZ, widZ, mZS, mwZS, thetaWRat, sigma0, cgg, cgZ, cZZ, cfg,
798  cfZ, cff, gSS, gTT, gST, gUU, gSU, openFracPair;
799 
800 };
801 
802 //==========================================================================
803 
804 // An intermediate class for f fbar -> gamma*/Z0 g/gamma and permutations.
805 
807 
808 public:
809 
810  // Constructor.
811  Sigma2ffbargmZggm() : gmZmode(), mRes(), GammaRes(), m2Res(), GamMRat(),
812  thetaWRat(), gamSum(), intSum(), resSum(), gamProp(), intProp(), resProp(),
813  particlePtr() {}
814 
815  // Initialize process.
816  virtual void initProc();
817 
818  // Evaluate weight for gamma&/Z0 decay angle.
819  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
820 
821 protected:
822 
823  // Parameters set at initialization or for each new event.
824  int gmZmode;
825  double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
826  gamSum, intSum, resSum, gamProp, intProp, resProp;
827 
828  // Evaluate current sum of flavour couplings times phase space.
829  void flavSum();
830 
831  // Evaluate current propagator terms of cross section.
832  void propTerm();
833 
834 private:
835 
836  // Pointer to properties of the particle species, to access decay channels.
837  ParticleDataEntryPtr particlePtr;
838 
839 };
840 
841 //==========================================================================
842 
843 // A derived class for q qbar -> gamma*/Z0 g.
844 
846 
847 public:
848 
849  // Constructor.
850  Sigma2qqbar2gmZg() : sigma0() {}
851 
852  // Calculate flavour-independent parts of cross section.
853  virtual void sigmaKin();
854 
855  // Evaluate d(sigmaHat)/d(tHat).
856  virtual double sigmaHat();
857 
858  // Select flavour, colour and anticolour.
859  virtual void setIdColAcol();
860 
861  // Info on the subprocess.
862  virtual string name() const {return "q qbar -> gamma*/Z0 g";}
863  virtual int code() const {return 241;}
864  virtual string inFlux() const {return "qqbarSame";}
865  virtual int id3Mass() const {return 23;}
866 
867 private:
868 
869  // Values stored for later use.
870  double sigma0;
871 
872 };
873 
874 //==========================================================================
875 
876 // A derived class for q g -> gamma*/Z0 q.
877 
879 
880 public:
881 
882  // Constructor.
883  Sigma2qg2gmZq() : sigma0() {}
884 
885  // Calculate flavour-independent parts of cross section.
886  virtual void sigmaKin();
887 
888  // Evaluate d(sigmaHat)/d(tHat).
889  virtual double sigmaHat();
890 
891  // Select flavour, colour and anticolour.
892  virtual void setIdColAcol();
893 
894  // Info on the subprocess.
895  virtual string name() const {return "q g-> gamma*/Z0 q";}
896  virtual int code() const {return 242;}
897  virtual string inFlux() const {return "qg";}
898  virtual int id3Mass() const {return 23;}
899 
900 private:
901 
902  // Values stored for later use.
903  double sigma0;
904 
905 };
906 
907 //==========================================================================
908 
909 // A derived class for f fbar' -> gamma*/Z0 gamma.
910 
912 
913 public:
914 
915  // Constructor.
916  Sigma2ffbar2gmZgm() : sigma0() {}
917 
918  // Calculate flavour-independent parts of cross section.
919  virtual void sigmaKin();
920 
921  // Evaluate d(sigmaHat)/d(tHat).
922  virtual double sigmaHat();
923 
924  // Select flavour, colour and anticolour.
925  virtual void setIdColAcol();
926 
927  // Info on the subprocess.
928  virtual string name() const {return "f fbar -> gamma*/Z0 gamma";}
929  virtual int code() const {return 243;}
930  virtual string inFlux() const {return "ffbarSame";}
931  virtual int id3Mass() const {return 23;}
932 
933 private:
934 
935  // Values stored for later use.
936  double sigma0;
937 
938 };
939 
940 //==========================================================================
941 
942 // A derived class for f gamma -> gamma*/Z0 f.
943 
945 
946 public:
947 
948  // Constructor.
949  Sigma2fgm2gmZf() : sigma0() {}
950 
951  // Calculate flavour-independent parts of cross section.
952  virtual void sigmaKin();
953 
954  // Evaluate d(sigmaHat)/d(tHat).
955  virtual double sigmaHat();
956 
957  // Select flavour, colour and anticolour.
958  virtual void setIdColAcol();
959 
960  // Info on the subprocess.
961  virtual string name() const {return "f gamma -> gamma*/Z0 f";}
962  virtual int code() const {return 244;}
963  virtual string inFlux() const {return "fgm";}
964  virtual int id3Mass() const {return 23;}
965 
966 private:
967 
968  // Values stored for later use.
969  double sigma0;
970 
971 };
972 
973 //==========================================================================
974 
975 // An intermediate class for f fbar -> W+- g/gamma and permutations.
976 
978 
979 public:
980 
981  // Constructor.
983 
984  // Evaluate weight for gamma&/Z0 decay angle.
985  virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
986 
987 private:
988 
989 };
990 
991 //==========================================================================
992 
993 // A derived class for q qbar' -> W+- g.
994 
996 
997 public:
998 
999  // Constructor.
1000  Sigma2qqbar2Wg() : sigma0(), openFracPos(), openFracNeg() {}
1001 
1002  // Initialize process.
1003  virtual void initProc();
1004 
1005  // Calculate flavour-independent parts of cross section.
1006  virtual void sigmaKin();
1007 
1008  // Evaluate d(sigmaHat)/d(tHat).
1009  virtual double sigmaHat();
1010 
1011  // Select flavour, colour and anticolour.
1012  virtual void setIdColAcol();
1013 
1014  // Info on the subprocess.
1015  virtual string name() const {return "q qbar' -> W+- g";}
1016  virtual int code() const {return 251;}
1017  virtual string inFlux() const {return "ffbarChg";}
1018  virtual int id3Mass() const {return 24;}
1019 
1020 private:
1021 
1022  // Values stored for later use.
1023  double sigma0, openFracPos, openFracNeg;
1024 
1025 };
1026 
1027 //==========================================================================
1028 
1029 // A derived class for q g -> W+- q'.
1030 
1032 
1033 public:
1034 
1035  // Constructor.
1036  Sigma2qg2Wq() : sigma0(), openFracPos(), openFracNeg() {}
1037 
1038  // Initialize process.
1039  virtual void initProc();
1040 
1041  // Calculate flavour-independent parts of cross section.
1042  virtual void sigmaKin();
1043 
1044  // Evaluate d(sigmaHat)/d(tHat).
1045  virtual double sigmaHat();
1046 
1047  // Select flavour, colour and anticolour.
1048  virtual void setIdColAcol();
1049 
1050  // Info on the subprocess.
1051  virtual string name() const {return "q g-> W+- q'";}
1052  virtual int code() const {return 252;}
1053  virtual string inFlux() const {return "qg";}
1054  virtual int id3Mass() const {return 24;}
1055 
1056 private:
1057 
1058  // Values stored for later use.
1059  double sigma0, openFracPos, openFracNeg;
1060 
1061 };
1062 
1063 //==========================================================================
1064 
1065 // A derived class for f fbar' -> W+- gamma.
1066 
1068 
1069 public:
1070 
1071  // Constructor.
1072  Sigma2ffbar2Wgm() : sigma0(), openFracPos(), openFracNeg() {}
1073 
1074  // Initialize process.
1075  virtual void initProc();
1076 
1077  // Calculate flavour-independent parts of cross section.
1078  virtual void sigmaKin();
1079 
1080  // Evaluate d(sigmaHat)/d(tHat).
1081  virtual double sigmaHat();
1082 
1083  // Select flavour, colour and anticolour.
1084  virtual void setIdColAcol();
1085 
1086  // Info on the subprocess.
1087  virtual string name() const {return "f fbar' -> W+- gamma";}
1088  virtual int code() const {return 253;}
1089  virtual string inFlux() const {return "ffbarChg";}
1090  virtual int id3Mass() const {return 24;}
1091 
1092 private:
1093 
1094  // Values stored for later use.
1095  double sigma0, openFracPos, openFracNeg;
1096 
1097 };
1098 
1099 //==========================================================================
1100 
1101 // A derived class for f gamma -> W+- f'.
1102 
1104 
1105 public:
1106 
1107  // Constructor.
1108  Sigma2fgm2Wf() : sigma0(), openFracPos(), openFracNeg() {}
1109 
1110  // Initialize process.
1111  virtual void initProc();
1112 
1113  // Calculate flavour-independent parts of cross section.
1114  virtual void sigmaKin();
1115 
1116  // Evaluate d(sigmaHat)/d(tHat).
1117  virtual double sigmaHat();
1118 
1119  // Select flavour, colour and anticolour.
1120  virtual void setIdColAcol();
1121 
1122  // Info on the subprocess.
1123  virtual string name() const {return "f gamma -> W+- f'";}
1124  virtual int code() const {return 254;}
1125  virtual string inFlux() const {return "fgm";}
1126  virtual int id3Mass() const {return 24;}
1127 
1128 private:
1129 
1130  // Values stored for later use.
1131  double sigma0, openFracPos, openFracNeg;
1132 
1133 };
1134 //==========================================================================
1135 
1136 // A derived class for gamma gamma -> f fbar.
1137 
1139 
1140 public:
1141 
1142  // Constructor.
1143  Sigma2gmgm2ffbar(int idIn, int codeIn) : idNew(idIn), codeSave(codeIn),
1144  idMass(), idNow(), ef4(), s34Avg(), sigTU(), sigma(), openFracPair() {}
1145 
1146  // Initialize process.
1147  virtual void initProc();
1148 
1149  // Calculate flavour-independent parts of cross section.
1150  virtual void sigmaKin();
1151 
1152  // Evaluate d(sigmaHat)/d(tHat).
1153  virtual double sigmaHat() {return sigma;}
1154 
1155  // Select flavour, colour and anticolour.
1156  virtual void setIdColAcol();
1157 
1158  // Info on the subprocess.
1159  virtual string name() const {return nameSave;}
1160  virtual int code() const {return codeSave;}
1161  virtual string inFlux() const {return "gmgm";}
1162  virtual int id3Mass() const {return idMass;}
1163  virtual int id4Mass() const {return idMass;}
1164 
1165 private:
1166 
1167  // Member variables.
1168  int idNew, codeSave, idMass, idNow;
1169  string nameSave;
1170  double ef4, s34Avg, sigTU, sigma, openFracPair;
1171 
1172 };
1173 
1174 //==========================================================================
1175 
1176 // A derived class for g gamma -> q qbar (q = u, d, s, c, b).
1177 
1179 
1180 public:
1181 
1182  // Constructor.
1183  Sigma2ggm2qqbar(int idIn, int codeIn, string inFluxIn = "ggm")
1184  : idNew(idIn), codeSave(codeIn), idMass(), idNow(), inFluxSave(inFluxIn),
1185  ef2(), s34Avg(), sigTU(), sigma(), openFracPair() {}
1186 
1187  // Initialize process.
1188  virtual void initProc();
1189 
1190  // Calculate flavour-independent parts of cross section.
1191  virtual void sigmaKin();
1192 
1193  // Evaluate d(sigmaHat)/d(tHat).
1194  virtual double sigmaHat() {return sigma;}
1195 
1196  // Select flavour, colour and anticolour.
1197  virtual void setIdColAcol();
1198 
1199  // Info on the subprocess.
1200  virtual string name() const {return nameSave;}
1201  virtual int code() const {return codeSave;}
1202  virtual string inFlux() const {return inFluxSave;}
1203  virtual int id3Mass() const {return idMass;}
1204  virtual int id4Mass() const {return idMass;}
1205 
1206 private:
1207 
1208  // Member variables.
1209  int idNew, codeSave, idMass, idNow;
1210  string nameSave, inFluxSave;
1211  double ef2, s34Avg, sigTU, sigma, openFracPair;
1212 
1213 };
1214 
1215 //==========================================================================
1216 
1217 // A derived class for q gamma -> q g (q = u, d, s, c, b).
1218 // Use massless approximation also for Q since no alternative.
1219 
1220 class Sigma2qgm2qg : public Sigma2Process {
1221 
1222 public:
1223 
1224  // Constructor.
1225  Sigma2qgm2qg(int codeIn, string inFluxIn = "qgm")
1226  : codeSave(codeIn), sigUS(), sigma0(), inFluxSave(inFluxIn) {}
1227 
1228  // Initialize process according to in flux.
1229  virtual void initProc();
1230 
1231  // Calculate flavour-independent parts of cross section.
1232  virtual void sigmaKin();
1233 
1234  // Evaluate d(sigmaHat)/d(tHat).
1235  virtual double sigmaHat();
1236 
1237  // Select flavour, colour and anticolour.
1238  virtual void setIdColAcol();
1239 
1240  // Info on the subprocess.
1241  virtual string name() const {return nameSave;}
1242  virtual int code() const {return codeSave;}
1243  virtual string inFlux() const {return inFluxSave;}
1244 
1245 private:
1246 
1247  // Values stored for later use.
1248  int codeSave;
1249  double sigUS, sigma0;
1250  string nameSave, inFluxSave;
1251 
1252 };
1253 
1254 //==========================================================================
1255 
1256 // A derived class for q gamma -> q gamma (q = u, d, s, c, b).
1257 // Use massless approximation also for Q since no alternative.
1258 
1260 
1261 public:
1262 
1263  // Constructor.
1264  Sigma2qgm2qgm(int codeIn, string inFluxIn = "qgm")
1265  : codeSave(codeIn), sigUS(), sigma0(), inFluxSave(inFluxIn) {}
1266 
1267  // Initialize process.
1268  virtual void initProc();
1269 
1270  // Calculate flavour-independent parts of cross section.
1271  virtual void sigmaKin();
1272 
1273  // Evaluate d(sigmaHat)/d(tHat).
1274  virtual double sigmaHat();
1275 
1276  // Select flavour, colour and anticolour.
1277  virtual void setIdColAcol();
1278 
1279  // Info on the subprocess.
1280  virtual string name() const {return nameSave;}
1281  virtual int code() const {return codeSave;}
1282  virtual string inFlux() const {return inFluxSave;}
1283 
1284 private:
1285 
1286  // Values stored for later use.
1287  int codeSave;
1288  double sigUS, sigma0;
1289  string nameSave, inFluxSave;
1290 
1291 };
1292 
1293 //==========================================================================
1294 
1295 } // end namespace Pythia8
1296 
1297 #endif // Pythia8_SigmaEW_H
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:928
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:508
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1017
Sigma2qg2Wq()
Constructor.
Definition: SigmaEW.h:1036
Sigma2ffbar2FfbarsW(int idIn, int idIn2, int codeIn)
Constructor.
Definition: SigmaEW.h:584
int gmZmode
Parameters set at initialization or for each new event.
Definition: SigmaEW.h:824
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1243
std::complex< double > complex
Convenient typedef for double precision complex numbers.
Definition: PythiaComplex.h:17
virtual int id3Mass() const
Definition: SigmaEW.h:1203
Sigma2qq2QqtW(int idIn, int codeIn)
Constructor.
Definition: SigmaEW.h:272
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:74
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:382
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:961
An intermediate class for f fbar -> gamma*/Z0 g/gamma and permutations.
Definition: SigmaEW.h:806
virtual bool isSChannel() const
2 -> 2 and 2 -> 3 processes only through s-channel exchange.
Definition: SigmaEW.h:461
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:215
virtual int id3Mass() const
Definition: SigmaEW.h:697
Definition: SigmaProcess.h:445
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:694
virtual int id3Mass() const
Definition: SigmaEW.h:931
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1089
The Event class holds all info on the generated event.
Definition: Event.h:408
Sigma1ffbar2W()
Constructor.
Definition: SigmaEW.h:360
Sigma2ggm2qqbar(int idIn, int codeIn, string inFluxIn="ggm")
Constructor.
Definition: SigmaEW.h:1183
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1125
Definition: BeamParticle.h:133
A derived class for f fbar -> gamma*/Z0 gamma*/Z0.
Definition: SigmaEW.h:663
A derived class for q g -> W+- q&#39;.
Definition: SigmaEW.h:1031
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:787
virtual bool isSChannel() const
2 -> 2 and 2 -> 3 processes only through s-channel exchange.
Definition: SigmaEW.h:420
Definition: SigmaEW.h:579
A derived class for f fbar -> gamma*/Z0 -> f&#39; fbar&#39;, summed over light f.
Definition: SigmaEW.h:434
virtual double weightDecay(Event &, int, int)
Definition: SigmaProcess.h:172
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:463
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:505
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:139
A derived class for f fbar -> gamma gamma.
Definition: SigmaEW.h:122
Sigma2ffbar2ffbarsW()
Constructor.
Definition: SigmaEW.h:489
virtual bool isSChannel() const
2 -> 2 and 2 -> 3 processes only through s-channel exchange.
Definition: SigmaEW.h:608
Sigma2qqbar2Wg()
Constructor.
Definition: SigmaEW.h:1000
virtual double sigmaHat()
Evaluate d(sigmaHat)/d(tHat).
Definition: SigmaEW.cc:36
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:696
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:789
Sigma2qg2gmZq()
Constructor.
Definition: SigmaEW.h:883
Sigma2ffbar2gmZgmZ()
Constructor.
Definition: SigmaEW.h:668
Definition: SigmaEW.h:267
A derived class for f fbar&#39; -> W+- gamma.
Definition: SigmaEW.h:1067
Sigma1ffbar2gmZ()
Constructor.
Definition: SigmaEW.h:314
Sigma2gg2ggamma()
Constructor.
Definition: SigmaEW.h:92
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:291
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1015
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:605
virtual int idSChannel() const
NOAM: Insert an intermediate resonance in 2 -> 1 -> 2 (or 3) listings.
Definition: SigmaEW.h:462
virtual int id3Mass() const
Definition: SigmaEW.h:1054
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1241
A derived class for q qbar -> gamma*/Z0 g.
Definition: SigmaEW.h:845
Sigma2ffbar2Wgm()
Constructor.
Definition: SigmaEW.h:1072
A derived class for f gamma -> W+- f&#39;.
Definition: SigmaEW.h:1103
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:176
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1053
Definition: SigmaEW.h:1259
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:217
virtual int id3Mass() const
Definition: SigmaEW.h:1090
virtual int idSChannel() const
NOAM: Insert an intermediate resonance in 2 -> 1 -> 2 (or 3) listings.
Definition: SigmaEW.h:510
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:42
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:897
A derived class for gamma gamma -> f fbar.
Definition: SigmaEW.h:1138
A derived class for f fbar&#39; -> Z0 W+-. (Here pure Z0, unfortunately.)
Definition: SigmaEW.h:718
virtual int id3Mass() const
Definition: SigmaEW.h:746
virtual double sigmaHat()
Evaluate d(sigmaHat)/d(tHat).
Definition: SigmaEW.h:168
Sigma2ffbar2ffbarsgm()
Constructor.
Definition: SigmaEW.h:404
A derived class for q g -> gamma*/Z0 q.
Definition: SigmaEW.h:878
A derived class for f_1 f_2 -> f_3 f_4 via t-channel W+- exchange.
Definition: SigmaEW.h:231
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1087
Sigma2fgm2gmZf()
Constructor.
Definition: SigmaEW.h:949
Sigma2qgm2qg(int codeIn, string inFluxIn="qgm")
Constructor.
Definition: SigmaEW.h:1225
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:457
Sigma2qg2qgamma()
Constructor.
Definition: SigmaEW.h:28
Sigma2ffbar2WW()
Constructor.
Definition: SigmaEW.h:767
A derived class for q qbar&#39; -> W+- g.
Definition: SigmaEW.h:995
A derived class for f_1 fbar_2 -> W+- -> f_3 fbar_4, summed over light f.
Definition: SigmaEW.h:484
Sigma2gmgm2ffbar(int idIn, int codeIn)
Constructor.
Definition: SigmaEW.h:1143
Sigma2fgm2Wf()
Constructor.
Definition: SigmaEW.h:1108
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:109
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:611
virtual int id3Mass() const
Definition: SigmaEW.h:1126
virtual int id3Mass() const
Definition: SigmaEW.h:964
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:416
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1280
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:963
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:748
Definition: SigmaEW.h:399
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:864
virtual int id3Mass() const
Definition: SigmaEW.h:609
virtual bool isSChannel() const
2 -> 2 and 2 -> 3 processes only through s-channel exchange.
Definition: SigmaEW.h:558
Sigma2ffbar2FFbarsgmZ(int idIn, int codeIn)
Constructor.
Definition: SigmaEW.h:534
A derived class for q qbar -> g gamma.
Definition: SigmaEW.h:55
virtual bool hasNLO() const
This process has an inclusive NLO correction.
Definition: SigmaEW.h:206
virtual int id3Mass() const
Definition: SigmaEW.h:1162
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1123
Definition: SigmaEW.h:529
virtual int id3Mass() const
Definition: SigmaEW.h:898
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:381
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:72
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:141
virtual double sigmaHat()
Evaluate d(sigmaHat)/d(tHat).
Definition: SigmaEW.h:101
Sigma2ffbar2gmZgm()
Constructor.
Definition: SigmaEW.h:916
Definition: SigmaProcess.h:485
virtual int id3Mass() const
Definition: SigmaEW.h:294
virtual int id3Mass() const
Definition: SigmaEW.h:559
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1200
A derived class for g g -> g gamma.
Definition: SigmaEW.h:87
An intermediate class for f fbar -> W+- g/gamma and permutations.
Definition: SigmaEW.h:977
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:174
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:40
virtual void setIdColAcol()
Select flavour, colour and anticolour.
Definition: SigmaEW.cc:49
Sigma2qqbar2ggamma()
Constructor.
Definition: SigmaEW.h:60
Sigma2qqbar2gmZg()
Constructor.
Definition: SigmaEW.h:850
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1282
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:557
virtual int gmZmode() const
Special process-specific gamma*/Z0 choice if >=0 (e.g. f fbar -> H0 Z0).
Definition: SigmaProcess.h:238
Sigma2ffbargmZWgmZW()
Constructor.
Definition: SigmaEW.h:633
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:743
Sigma2qgm2qgm(int codeIn, string inFluxIn="qgm")
Constructor.
Definition: SigmaEW.h:1264
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:419
A derived class for f f&#39; -> f f&#39; via t-channel gamma*/Z0 exchange.
Definition: SigmaEW.h:188
A derived class for g gamma -> q qbar (q = u, d, s, c, b).
Definition: SigmaEW.h:1178
A derived class for f fbar&#39; -> W+-.
Definition: SigmaEW.h:355
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1051
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:253
A derived class for f fbar -> W+ W-.
Definition: SigmaEW.h:762
virtual int id3Mass() const
Definition: SigmaEW.h:790
virtual bool isSChannel() const
2 -> 2 and 2 -> 3 processes only through s-channel exchange.
Definition: SigmaEW.h:509
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:607
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1161
A derived class for f gamma -> gamma*/Z0 f.
Definition: SigmaEW.h:944
Sigma2ff2fftgmZ()
Constructor.
Definition: SigmaEW.h:193
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:792
virtual int id3Mass() const
Definition: SigmaEW.h:1018
Sigma2ffbarWggm()
Constructor.
Definition: SigmaEW.h:982
Definition: SigmaEW.h:23
Sigma2ffbargmZggm()
Constructor.
Definition: SigmaEW.h:811
An intermediate class for f fbar -> gamma*/Z0/W+- gamma*/Z0/W-+.
Definition: SigmaEW.h:628
Sigma2gg2gammagamma()
Constructor.
Definition: SigmaEW.h:159
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:379
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:511
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:336
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:930
Header for classes to set beam momentum and interaction vertex spread.
Definition: Analysis.h:20
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:334
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:561
A derived class for g g -> gamma gamma.
Definition: SigmaEW.h:154
virtual void sigmaKin()
Calculate flavour-independent parts of cross section.
Definition: SigmaEW.cc:22
virtual int resonanceA() const
Special treatment needed if process contains an s-channel resonance.
Definition: SigmaEW.h:337
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:107
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:460
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:1159
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:555
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:251
Sigma2ffbar2ffbarsgmZ()
Constructor.
Definition: SigmaEW.h:439
virtual double sigmaHat()
Evaluate d(sigmaHat)/d(tHat).
Definition: SigmaEW.h:1194
Definition: SigmaEW.h:1220
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:1202
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:862
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:293
virtual int id3Mass() const
Definition: SigmaEW.h:865
Sigma2ff2fftW()
Constructor.
Definition: SigmaEW.h:236
virtual double sigmaHat()
Evaluate d(sigmaHat)/d(tHat).
Definition: SigmaEW.h:1153
Definition: Basics.h:32
A derived class for f fbar -> gamma*/Z0.
Definition: SigmaEW.h:309
Sigma2ffbar2gammagamma()
Constructor.
Definition: SigmaEW.h:127
virtual void initProc()
Initialize process. Only used for some processes.
Definition: SigmaProcess.h:105
virtual double weightNLO()
Evaluate inclusive NLO weight.
Definition: SigmaProcess.h:163
A derived class for f fbar&#39; -> gamma*/Z0 gamma.
Definition: SigmaEW.h:911
virtual string inFlux() const
Need to know which incoming partons to set up interaction for.
Definition: SigmaEW.h:745
virtual string name() const
Info on the subprocess.
Definition: SigmaEW.h:895
Sigma2ffbar2ZW()
Constructor.
Definition: SigmaEW.h:723