1 // SigmaEW.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2008 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
6 // Header file for electroweak process differential cross sections.
7 // Contains classes derived from SigmaProcess via Sigma(1/2)Process.
9 #ifndef Pythia8_SigmaEW_H
10 #define Pythia8_SigmaEW_H
12 #include "PythiaComplex.h"
13 #include "SigmaProcess.h"
18 //**************************************************************************
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.
23 class Sigma2qg2qgamma : public Sigma2Process {
30 // Calculate flavour-independent parts of cross section.
31 virtual void sigmaKin();
33 // Evaluate d(sigmaHat)/d(tHat).
34 virtual double sigmaHat();
36 // Select flavour, colour and anticolour.
37 virtual void setIdColAcol();
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";}
46 // Values stored for later use.
47 double mNew, m2New, sigUS, sigma0;
51 //**************************************************************************
53 // A derived class for q qbar -> g gamma.
55 class Sigma2qqbar2ggamma : public Sigma2Process {
60 Sigma2qqbar2ggamma() {}
62 // Calculate flavour-independent parts of cross section.
63 virtual void sigmaKin();
65 // Evaluate d(sigmaHat)/d(tHat).
66 virtual double sigmaHat();
68 // Select flavour, colour and anticolour.
69 virtual void setIdColAcol();
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";}
78 // Values stored for later use.
83 //**************************************************************************
85 // A derived class for g g -> g gamma.
87 class Sigma2gg2ggamma : public Sigma2Process {
94 // Initialize process.
95 virtual void initProc();
97 // Calculate flavour-independent parts of cross section.
98 virtual void sigmaKin();
100 // Evaluate d(sigmaHat)/d(tHat).
101 virtual double sigmaHat() {return sigma;}
103 // Select flavour, colour and anticolour.
104 virtual void setIdColAcol();
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";}
113 // Values stored for later use.
114 double chargeSum, sigma;
118 //**************************************************************************
120 // A derived class for f fbar -> gamma gamma.
122 class Sigma2ffbar2gammagamma : public Sigma2Process {
127 Sigma2ffbar2gammagamma() {}
129 // Calculate flavour-independent parts of cross section.
130 virtual void sigmaKin();
132 // Evaluate d(sigmaHat)/d(tHat).
133 virtual double sigmaHat();
135 // Select flavour, colour and anticolour.
136 virtual void setIdColAcol();
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";}
145 // Values stored for later use.
146 double sigTU, sigma0;
150 //**************************************************************************
152 // A derived class for g g -> gamma gamma.
154 class Sigma2gg2gammagamma : public Sigma2Process {
159 Sigma2gg2gammagamma() {}
161 // Initialize process.
162 virtual void initProc();
164 // Calculate flavour-independent parts of cross section.
165 virtual void sigmaKin();
167 // Evaluate d(sigmaHat)/d(tHat).
168 virtual double sigmaHat() {return sigma;}
170 // Select flavour, colour and anticolour.
171 virtual void setIdColAcol();
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";}
180 double charge2Sum, sigma;
184 //**************************************************************************
186 // A derived class for f f' -> f f' via t-channel gamma*/Z0 exchange.
188 class Sigma2ff2fftgmZ : public Sigma2Process {
195 // Initialize process.
196 virtual void initProc();
198 // Calculate flavour-independent parts of cross section.
199 virtual void sigmaKin();
201 // Evaluate sigmaHat(sHat).
202 virtual double sigmaHat();
204 // Select flavour, colour and anticolour.
205 virtual void setIdColAcol();
207 // Info on the subprocess.
208 virtual string name() const {return "f f' -> f f' (t-channel gamma*/Z0)";}
209 virtual int code() const {return 211;}
210 virtual string inFlux() const {return "ff";}
214 // Z parameters for propagator.
216 double mZ, mZS, thetaWRat, sigmagmgm, sigmagmZ, sigmaZZ;
220 //**************************************************************************
222 // A derived class for f_1 f_2 -> f_3 f_4 via t-channel W+- exchange.
224 class Sigma2ff2fftW : public Sigma2Process {
231 // Initialize process.
232 virtual void initProc();
234 // Calculate flavour-independent parts of cross section.
235 virtual void sigmaKin();
237 // Evaluate sigmaHat(sHat).
238 virtual double sigmaHat();
240 // Select flavour, colour and anticolour.
241 virtual void setIdColAcol();
243 // Info on the subprocess.
244 virtual string name() const {return "f_1 f_2 -> f_3 f_4 (t-channel W+-)";}
245 virtual int code() const {return 212;}
246 virtual string inFlux() const {return "ff";}
250 // W parameters for propagator.
251 double mW, mWS, thetaWRat, sigma0;
255 //**************************************************************************
257 // A derived class for q q' -> Q q" via t-channel W+- exchange.
258 // Related to Sigma2ff2fftW class, but with massive matrix elements.
260 class Sigma2qq2QqtW : public Sigma2Process {
265 Sigma2qq2QqtW(int idIn, int codeIn) : idNew(idIn), codeSave(codeIn) {}
267 // Initialize process.
268 virtual void initProc();
270 // Calculate flavour-independent parts of cross section.
271 virtual void sigmaKin();
273 // Evaluate sigmaHat(sHat).
274 virtual double sigmaHat();
276 // Select flavour, colour and anticolour.
277 virtual void setIdColAcol();
279 // Evaluate weight for W decay angles in top decay (else inactive).
280 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
282 // Info on the subprocess.
283 virtual string name() const {return nameSave;}
284 virtual int code() const {return codeSave;}
285 virtual string inFlux() const {return "ff";}
286 virtual int id3Mass() const {return idNew;}
290 // Values stored for process type. W parameters for propagator.
293 double mW, mWS, thetaWRat, sigma0, openFracPos, openFracNeg;
297 //**************************************************************************
299 // A derived class for f fbar -> gamma*/Z0.
301 class Sigma1ffbar2gmZ : public Sigma1Process {
308 // Initialize process.
309 virtual void initProc();
311 // Calculate flavour-independent parts of cross section.
312 virtual void sigmaKin();
314 // Evaluate sigmaHat(sHat).
315 virtual double sigmaHat();
317 // Select flavour, colour and anticolour.
318 virtual void setIdColAcol();
320 // Evaluate weight for Z decay angle.
321 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
323 // Info on the subprocess.
324 virtual string name() const {return "f fbar -> gamma*/Z0";}
325 virtual int code() const {return 221;}
326 virtual string inFlux() const {return "ffbarSame";}
327 virtual int resonanceA() const {return 23;}
331 // Parameters set at initialization or for each new event.
333 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
334 gamSum, intSum, resSum, gamProp, intProp, resProp;
336 // Pointer to properties of the particle species, to access decay channels.
337 ParticleDataEntry* particlePtr;
341 //**************************************************************************
343 // A derived class for f fbar' -> W+-.
345 class Sigma1ffbar2W : public Sigma1Process {
352 // Initialize process.
353 virtual void initProc();
355 // Calculate flavour-independent parts of cross section.
356 virtual void sigmaKin();
358 // Evaluate sigmaHat(sHat).
359 virtual double sigmaHat();
361 // Select flavour, colour and anticolour.
362 virtual void setIdColAcol();
364 // Evaluate weight for W decay angle.
365 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
367 // Info on the subprocess.
368 virtual string name() const {return "f fbar' -> W+-";}
369 virtual int code() const {return 222;}
370 virtual string inFlux() const {return "ffbarChg";}
371 virtual int resonanceA() const {return 24;}
375 // Parameters set at initialization.
376 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0Pos, sigma0Neg;
378 // Pointer to properties of the particle species, to access decay channels.
379 ParticleDataEntry* particlePtr;
383 //**************************************************************************
385 // A derived class for f fbar -> gamma* -> f' fbar', summed over light f'.
386 // Allows pT-ordered evolution for multiple interactions.
388 class Sigma2ffbar2ffbarsgm : public Sigma2Process {
393 Sigma2ffbar2ffbarsgm() {}
395 // Calculate flavour-independent parts of cross section.
396 virtual void sigmaKin();
398 // Evaluate sigmaHat(sHat).
399 virtual double sigmaHat();
401 // Select flavour, colour and anticolour.
402 virtual void setIdColAcol();
404 // Info on the subprocess.
405 virtual string name() const {
406 return "f fbar -> f' fbar' (s-channel gamma*)";}
407 virtual int code() const {return 223;}
408 virtual string inFlux() const {return "ffbarSame";}
409 virtual bool isSChannel() const {return true;}
413 // Values stored for later use.
419 //**************************************************************************
421 // A derived class for f fbar -> gamma*/Z0 -> F Fbar, for one heavy F.
422 // Allows pT cuts as for other 2 -> 2 processes.
424 class Sigma2ffbar2FFbarsgmZ : public Sigma2Process {
429 Sigma2ffbar2FFbarsgmZ(int idIn, int codeIn) : idNew(idIn),
432 // Initialize process.
433 virtual void initProc();
435 // Calculate flavour-independent parts of cross section.
436 virtual void sigmaKin();
438 // Evaluate sigmaHat(sHat).
439 virtual double sigmaHat();
441 // Select flavour, colour and anticolour.
442 virtual void setIdColAcol();
444 // Evaluate weight for W decay angles in top decay (else inactive).
445 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
447 // Info on the subprocess.
448 virtual string name() const {return nameSave;}
449 virtual int code() const {return codeSave;}
450 virtual string inFlux() const {return "ffbarSame";}
451 virtual bool isSChannel() const {return true;}
452 virtual int id3Mass() const {return idNew;}
453 virtual int id4Mass() const {return idNew;}
454 virtual int resonanceA() const {return 23;}
458 // Values stored for process type. Z parameters for propagator.
459 int idNew, codeSave, gmZmode;
462 double ef, vf, af, mRes, GammaRes, m2Res, GamMRat, thetaWRat,
463 mr, betaf, cosThe, gamProp, intProp, resProp, openFracPair;
467 //**************************************************************************
469 // A derived class for f fbar' -> W+- -> F fbar", for one or two heavy F.
470 // Allows pT cuts as for other 2 -> 2 processes.
472 class Sigma2ffbar2FfbarsW : public Sigma2Process {
477 Sigma2ffbar2FfbarsW(int idIn, int idIn2, int codeIn) : idNew(idIn),
478 idNew2(idIn2), codeSave(codeIn) {}
480 // Initialize process.
481 virtual void initProc();
483 // Calculate flavour-independent parts of cross section.
484 virtual void sigmaKin();
486 // Evaluate sigmaHat(sHat).
487 virtual double sigmaHat();
489 // Select flavour, colour and anticolour.
490 virtual void setIdColAcol();
492 // Evaluate weight for W decay angles in top decay (else inactive).
493 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
495 // Info on the subprocess.
496 virtual string name() const {return nameSave;}
497 virtual int code() const {return codeSave;}
498 virtual string inFlux() const {return "ffbarChg";}
499 virtual bool isSChannel() const {return true;}
500 virtual int id3Mass() const {return idNew;}
501 virtual int id4Mass() const {return idPartner;}
502 virtual int resonanceA() const {return 24;}
506 // Values stored for process type. W parameters for propagator.
507 int idNew, idNew2, codeSave, idPartner;
510 double V2New, mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
511 openFracPos, openFracNeg;
515 //**************************************************************************
517 // An intermediate class for f fbar -> gamma*/Z0/W+- gamma*/Z0/W-+.
519 class Sigma2ffbargmZWgmZW : public Sigma2Process {
524 Sigma2ffbargmZWgmZW() {}
528 // Internal products.
533 // Calculate and store internal products.
534 void setupProd( Event& process, int i1, int i2, int i3, int i4,
537 // Evaluate the F function of Gunion and Kunszt.
538 complex fGK(int i1, int i2, int i3, int i4, int i5, int i6);
540 // Evaluate the Xi function of Gunion and Kunszt.
541 double xiGK( double tHnow, double uHnow);
543 // Evaluate the Xj function of Gunion and Kunszt.
544 double xjGK( double tHnow, double uHnow);
550 //**************************************************************************
552 // A derived class for f fbar -> gamma*/Z0 gamma*/Z0.
554 class Sigma2ffbar2gmZgmZ : public Sigma2ffbargmZWgmZW {
559 Sigma2ffbar2gmZgmZ() {}
561 // Initialize process.
562 virtual void initProc();
564 // Calculate flavour-independent parts of cross section.
565 virtual void sigmaKin();
567 // Evaluate d(sigmaHat)/d(tHat).
568 virtual double sigmaHat();
570 // Select flavour, colour and anticolour.
571 virtual void setIdColAcol();
573 // Evaluate weight for simultaneous flavour choices.
574 virtual double weightDecayFlav( Event& process);
576 // Evaluate weight for decay angles of the two gamma*/Z0.
577 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
579 // Info on the subprocess.
580 virtual string name() const {return "f fbar -> gamma*/Z0 gamma*/Z0";}
581 virtual int code() const {return 231;}
582 virtual string inFlux() const {return "ffbarSame";}
583 virtual int id3Mass() const {return 23;}
584 virtual int id4Mass() const {return 23;}
588 // Parameters set at initialization or for each new event.
589 int gmZmode, i1, i2, i3, i4, i5, i6;
590 double mRes, GammaRes, m2Res, GamMRat, thetaWRat, sigma0,
591 gamSum3, intSum3, resSum3, gamProp3, intProp3, resProp3,
592 gamSum4, intSum4, resSum4, gamProp4, intProp4, resProp4,
593 c3LL, c3LR, c3RL, c3RR, c4LL, c4LR, c4RL, c4RR, flavWt;
595 // Pointer to properties of the particle species, to access decay channels.
596 ParticleDataEntry* particlePtr;
600 //**************************************************************************
602 // A derived class for f fbar' -> Z0 W+-. (Here pure Z0, unfortunately.)
604 class Sigma2ffbar2ZW : public Sigma2ffbargmZWgmZW {
611 // Initialize process.
612 virtual void initProc();
614 // Calculate flavour-independent parts of cross section.
615 virtual void sigmaKin();
617 // Evaluate d(sigmaHat)/d(tHat).
618 virtual double sigmaHat();
620 // Select flavour, colour and anticolour.
621 virtual void setIdColAcol();
623 // Evaluate weight for Z0 and W+- decay angles.
624 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
626 // Info on the subprocess.
627 virtual string name() const {return "f fbar' -> Z0 W+- (no gamma*!)";}
628 virtual int code() const {return 232;}
629 virtual string inFlux() const {return "ffbarChg";}
630 virtual int id3Mass() const {return 23;}
631 virtual int id4Mass() const {return 24;}
632 virtual int resonanceA() const {return 24;}
636 // Store W+- mass and width, and couplings.
637 double mW, widW, mWS, mwWS, sin2thetaW, cos2thetaW, thetaWRat,
638 thetaWpt, thetaWmm, lun, lde, sigma0, openFracPos, openFracNeg;
642 //**************************************************************************
644 // A derived class for f fbar -> W+ W-.
646 class Sigma2ffbar2WW : public Sigma2ffbargmZWgmZW {
653 // Initialize process.
654 virtual void initProc();
656 // Calculate flavour-independent parts of cross section.
657 virtual void sigmaKin();
659 // Evaluate d(sigmaHat)/d(tHat).
660 virtual double sigmaHat();
662 // Select flavour, colour and anticolour.
663 virtual void setIdColAcol();
665 // Evaluate weight for W+ and W- decay angles.
666 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
668 // Info on the subprocess.
669 virtual string name() const {return "f fbar -> W+ W-";}
670 virtual int code() const {return 233;}
671 virtual int id3Mass() const {return 24;}
672 virtual string inFlux() const {return "ffbarSame";}
673 virtual int id4Mass() const {return -24;}
674 virtual int resonanceA() const {return 23;}
678 // Store Z0 mass and width.
679 double mZ, widZ, mZS, mwZS, thetaWRat, sigma0, cgg, cgZ, cZZ, cfg,
680 cfZ, cff, gSS, gTT, gST, gUU, gSU, openFracPair;
684 //**************************************************************************
686 // An intermediate class for f fbar -> gamma*/Z0 g/gamma and permutations.
688 class Sigma2ffbargmZggm : public Sigma2Process {
693 Sigma2ffbargmZggm() {}
695 // Initialize process.
696 virtual void initProc();
698 // Evaluate weight for gamma&/Z0 decay angle.
699 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
703 // Parameters set at initialization or for each new event.
705 double mRes, GammaRes, m2Res, GamMRat, thetaWRat,
706 gamSum, intSum, resSum, gamProp, intProp, resProp;
708 // Evaluate current sum of flavour couplings times phase space.
711 // Evaluate current propagator terms of cross section.
716 // Pointer to properties of the particle species, to access decay channels.
717 ParticleDataEntry* particlePtr;
721 //**************************************************************************
723 // A derived class for q qbar -> gamma*/Z0 g.
725 class Sigma2qqbar2gmZg : public Sigma2ffbargmZggm {
730 Sigma2qqbar2gmZg() {}
732 // Calculate flavour-independent parts of cross section.
733 virtual void sigmaKin();
735 // Evaluate d(sigmaHat)/d(tHat).
736 virtual double sigmaHat();
738 // Select flavour, colour and anticolour.
739 virtual void setIdColAcol();
741 // Info on the subprocess.
742 virtual string name() const {return "q qbar -> gamma*/Z0 g";}
743 virtual int code() const {return 241;}
744 virtual string inFlux() const {return "qqbarSame";}
745 virtual int id3Mass() const {return 23;}
749 // Values stored for later use.
754 //**************************************************************************
756 // A derived class for q g -> gamma*/Z0 q.
758 class Sigma2qg2gmZq : public Sigma2ffbargmZggm {
765 // Calculate flavour-independent parts of cross section.
766 virtual void sigmaKin();
768 // Evaluate d(sigmaHat)/d(tHat).
769 virtual double sigmaHat();
771 // Select flavour, colour and anticolour.
772 virtual void setIdColAcol();
774 // Info on the subprocess.
775 virtual string name() const {return "q g-> gamma*/Z0 q";}
776 virtual int code() const {return 242;}
777 virtual string inFlux() const {return "qg";}
778 virtual int id3Mass() const {return 23;}
782 // Values stored for later use.
787 //**************************************************************************
789 // A derived class for f fbar' -> gamma*/Z0 gamma.
791 class Sigma2ffbar2gmZgm : public Sigma2ffbargmZggm {
796 Sigma2ffbar2gmZgm() {}
798 // Calculate flavour-independent parts of cross section.
799 virtual void sigmaKin();
801 // Evaluate d(sigmaHat)/d(tHat).
802 virtual double sigmaHat();
804 // Select flavour, colour and anticolour.
805 virtual void setIdColAcol();
807 // Info on the subprocess.
808 virtual string name() const {return "f fbar -> gamma*/Z0 gamma";}
809 virtual int code() const {return 243;}
810 virtual string inFlux() const {return "ffbarSame";}
811 virtual int id3Mass() const {return 23;}
815 // Values stored for later use.
820 //**************************************************************************
822 // A derived class for f gamma -> gamma*/Z0 f.
824 class Sigma2fgm2gmZf : public Sigma2ffbargmZggm {
831 // Calculate flavour-independent parts of cross section.
832 virtual void sigmaKin();
834 // Evaluate d(sigmaHat)/d(tHat).
835 virtual double sigmaHat();
837 // Select flavour, colour and anticolour.
838 virtual void setIdColAcol();
840 // Info on the subprocess.
841 virtual string name() const {return "f gamma -> gamma*/Z0 f";}
842 virtual int code() const {return 244;}
843 virtual string inFlux() const {return "fgm";}
844 virtual int id3Mass() const {return 23;}
848 // Values stored for later use.
853 //**************************************************************************
855 // An intermediate class for f fbar -> W+- g/gamma and permutations.
857 class Sigma2ffbarWggm : public Sigma2Process {
864 // Evaluate weight for gamma&/Z0 decay angle.
865 virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
871 //**************************************************************************
873 // A derived class for q qbar' -> W+- g.
875 class Sigma2qqbar2Wg : public Sigma2ffbarWggm {
882 // Initialize process.
883 virtual void initProc();
885 // Calculate flavour-independent parts of cross section.
886 virtual void sigmaKin();
888 // Evaluate d(sigmaHat)/d(tHat).
889 virtual double sigmaHat();
891 // Select flavour, colour and anticolour.
892 virtual void setIdColAcol();
894 // Info on the subprocess.
895 virtual string name() const {return "q qbar' -> W+- g";}
896 virtual int code() const {return 251;}
897 virtual string inFlux() const {return "ffbarChg";}
898 virtual int id3Mass() const {return 24;}
902 // Values stored for later use.
903 double sigma0, openFracPos, openFracNeg;
907 //**************************************************************************
909 // A derived class for q g -> W+- q'.
911 class Sigma2qg2Wq : public Sigma2ffbarWggm {
918 // Initialize process.
919 virtual void initProc();
921 // Calculate flavour-independent parts of cross section.
922 virtual void sigmaKin();
924 // Evaluate d(sigmaHat)/d(tHat).
925 virtual double sigmaHat();
927 // Select flavour, colour and anticolour.
928 virtual void setIdColAcol();
930 // Info on the subprocess.
931 virtual string name() const {return "q g-> W+- q'";}
932 virtual int code() const {return 252;}
933 virtual string inFlux() const {return "qg";}
934 virtual int id3Mass() const {return 24;}
938 // Values stored for later use.
939 double sigma0, openFracPos, openFracNeg;
943 //**************************************************************************
945 // A derived class for f fbar' -> W+- gamma.
947 class Sigma2ffbar2Wgm : public Sigma2ffbarWggm {
954 // Initialize process.
955 virtual void initProc();
957 // Calculate flavour-independent parts of cross section.
958 virtual void sigmaKin();
960 // Evaluate d(sigmaHat)/d(tHat).
961 virtual double sigmaHat();
963 // Select flavour, colour and anticolour.
964 virtual void setIdColAcol();
966 // Info on the subprocess.
967 virtual string name() const {return "f fbar' -> W+- gamma";}
968 virtual int code() const {return 253;}
969 virtual string inFlux() const {return "ffbarChg";}
970 virtual int id3Mass() const {return 24;}
974 // Values stored for later use.
975 double sigma0, openFracPos, openFracNeg;
979 //**************************************************************************
981 // A derived class for f gamma -> W+- f'.
983 class Sigma2fgm2Wf : public Sigma2ffbarWggm {
990 // Initialize process.
991 virtual void initProc();
993 // Calculate flavour-independent parts of cross section.
994 virtual void sigmaKin();
996 // Evaluate d(sigmaHat)/d(tHat).
997 virtual double sigmaHat();
999 // Select flavour, colour and anticolour.
1000 virtual void setIdColAcol();
1002 // Info on the subprocess.
1003 virtual string name() const {return "f gamma -> W+- f'";}
1004 virtual int code() const {return 254;}
1005 virtual string inFlux() const {return "fgm";}
1006 virtual int id3Mass() const {return 24;}
1010 // Values stored for later use.
1011 double sigma0, openFracPos, openFracNeg;
1015 //**************************************************************************
1017 } // end namespace Pythia8
1019 #endif // Pythia8_SigmaEW_H