Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:30

0001 // SigmaHiggs.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Torbjorn Sjostrand.
0003 // Part of code written by Marc Montull, CERN summer student 2007.
0004 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
0005 // Please respect the MCnet Guidelines, see GUIDELINES for details.
0006 
0007 // Header file for Higgs process differential cross sections.
0008 // Contains classes derived from SigmaProcess via Sigma2Process.
0009 
0010 #ifndef Pythia8_SigmaHiggs_H
0011 #define Pythia8_SigmaHiggs_H
0012 
0013 #include "Pythia8/SigmaProcess.h"
0014 
0015 namespace Pythia8 {
0016 
0017 //==========================================================================
0018 
0019 // A derived class for f fbar -> H0 (SM), H1, H2 or A3 (BSM).
0020 
0021 class Sigma1ffbar2H : public Sigma1Process {
0022 
0023 public:
0024 
0025   // Constructor.
0026   Sigma1ffbar2H(int higgsTypeIn) : HResPtr(), mRes(), GammaRes(), m2Res(),
0027     GamMRat(), sigBW(), widthOut(), higgsType(higgsTypeIn), codeSave(),
0028     idRes() {}
0029 
0030   // Initialize process.
0031   virtual void initProc();
0032 
0033   // Calculate flavour-independent parts of cross section.
0034   virtual void sigmaKin();
0035 
0036   // Evaluate sigmaHat(sHat).
0037   virtual double sigmaHat();
0038 
0039   // Select flavour, colour and anticolour.
0040   virtual void setIdColAcol();
0041 
0042   // Evaluate weight for decay angles.
0043   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0044 
0045   // Info on the subprocess.
0046   virtual string name()       const {return nameSave;}
0047   virtual int    code()       const {return codeSave;}
0048   virtual string inFlux()     const {return "ffbarSame";}
0049   virtual int    resonanceA() const {return idRes;}
0050 
0051 private:
0052 
0053   // An H0, H1, H2 or A3 resonance object provides coupling
0054   // and propagator expressions.
0055   ParticleDataEntryPtr HResPtr;
0056   double mRes, GammaRes, m2Res, GamMRat, sigBW, widthOut;
0057   int    higgsType, codeSave, idRes;
0058   string nameSave;
0059 };
0060 
0061 //==========================================================================
0062 
0063 // A derived class for g g -> H0 (SM), H1, H2 or A3 (BSM).
0064 
0065 class Sigma1gg2H : public Sigma1Process {
0066 
0067 public:
0068 
0069   // Constructor.
0070   Sigma1gg2H(int higgsTypeIn) : HResPtr(), mRes(), GammaRes(), m2Res(),
0071     GamMRat(), sigma(), higgsType(higgsTypeIn), codeSave(), idRes() {}
0072 
0073   // Initialize process.
0074   virtual void initProc();
0075 
0076   // Calculate flavour-independent parts of cross section.
0077   virtual void sigmaKin();
0078 
0079   // Evaluate sigmaHat(sHat).
0080   virtual double sigmaHat() {return sigma;}
0081 
0082   // Select flavour, colour and anticolour.
0083   virtual void setIdColAcol();
0084 
0085   // Evaluate weight for decay angles.
0086   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0087 
0088   // Info on the subprocess.
0089   virtual string name()       const {return nameSave ;}
0090   virtual int    code()       const {return codeSave;}
0091   virtual string inFlux()     const {return "gg";}
0092   virtual int    resonanceA() const {return idRes;}
0093 
0094 private:
0095 
0096   // A H0, H1, H2 or A3 resonance object provides coupling
0097   // and propagator expressions.
0098   ParticleDataEntryPtr HResPtr;
0099   double mRes, GammaRes, m2Res, GamMRat, sigma;
0100   int    higgsType, codeSave, idRes;
0101   string nameSave;
0102 };
0103 
0104 //==========================================================================
0105 
0106 // A derived class for gamma gamma -> H0 (SM Higgs), H1, H2 or A3 (BSM Higgs).
0107 
0108 class Sigma1gmgm2H : public Sigma1Process {
0109 
0110 public:
0111 
0112   // Constructor.
0113   Sigma1gmgm2H(int higgsTypeIn) : HResPtr(), mRes(), GammaRes(), m2Res(),
0114     GamMRat(), sigma(), higgsType(higgsTypeIn), codeSave(), idRes() {}
0115 
0116   // Initialize process.
0117   virtual void initProc();
0118 
0119   // Calculate flavour-independent parts of cross section.
0120   virtual void sigmaKin();
0121 
0122   // Evaluate sigmaHat(sHat).
0123   virtual double sigmaHat() {return sigma;}
0124 
0125   // Select flavour, colour and anticolour.
0126   virtual void setIdColAcol();
0127 
0128   // Evaluate weight for decay angles.
0129   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0130 
0131   // Info on the subprocess.
0132   virtual string name()       const {return nameSave;}
0133   virtual int    code()       const {return codeSave;}
0134   virtual string inFlux()     const {return "gmgm";}
0135   virtual int    resonanceA() const {return idRes;}
0136 
0137 private:
0138 
0139   // A H0, H1, H2 or A3 resonance object provides coupling
0140   // and propagator expressions.
0141   ParticleDataEntryPtr HResPtr;
0142   double mRes, GammaRes, m2Res, GamMRat, sigma;
0143   int    higgsType, codeSave, idRes;
0144   string nameSave;
0145 };
0146 
0147 //==========================================================================
0148 
0149 // A derived class for f fbar -> H Z0.
0150 // (H can be H0 SM or H1, H2, A3 from BSM).
0151 class Sigma2ffbar2HZ : public Sigma2Process {
0152 
0153 public:
0154 
0155   // Constructor.
0156   Sigma2ffbar2HZ(int higgsTypeIn) : mZ(), widZ(), mZS(), mwZS(), thetaWRat(),
0157     sigma0(), openFracPair(), coup2Z(), higgsType(higgsTypeIn), codeSave(),
0158     idRes() {}
0159 
0160   // Initialize process.
0161   virtual void initProc();
0162 
0163   // Calculate flavour-independent parts of cross section.
0164   virtual void sigmaKin();
0165 
0166   // Evaluate d(sigmaHat)/d(tHat).
0167   virtual double sigmaHat();
0168 
0169   // Select flavour, colour and anticolour.
0170   virtual void setIdColAcol();
0171 
0172   // Evaluate weight for decay angles.
0173   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0174 
0175   // Info on the subprocess.
0176   virtual string name()       const {return nameSave;}
0177   virtual int    code()       const {return codeSave;}
0178   virtual string inFlux()     const {return "ffbarSame";}
0179   virtual bool   isSChannel() const {return true;}
0180   virtual int    id3Mass()    const {return idRes;}
0181   virtual int    id4Mass()    const {return 23;}
0182   virtual int    resonanceA() const {return 23;}
0183   virtual int    gmZmode()    const {return 2;}
0184 
0185 private:
0186 
0187   // Store Z0 mass and width.
0188   double mZ, widZ, mZS, mwZS, thetaWRat, sigma0, openFracPair, coup2Z;
0189   int    higgsType, codeSave, idRes;
0190   string nameSave;
0191 };
0192 
0193 //==========================================================================
0194 
0195 // A derived class for f fbar -> H W+- (Standard Model Higgs).
0196 // (H can be H0 SM or H1, H2, A3 from BSM).
0197 
0198 class Sigma2ffbar2HW : public Sigma2Process {
0199 
0200 public:
0201 
0202   // Constructor.
0203   Sigma2ffbar2HW(int higgsTypeIn) : mW(), widW(), mWS(), mwWS(), thetaWRat(),
0204     sigma0(), openFracPairPos(), openFracPairNeg(), coup2W(),
0205     higgsType(higgsTypeIn), codeSave(), idRes() {}
0206 
0207   // Initialize process.
0208   virtual void initProc();
0209 
0210   // Calculate flavour-independent parts of cross section.
0211   virtual void sigmaKin();
0212 
0213   // Evaluate d(sigmaHat)/d(tHat).
0214   virtual double sigmaHat();
0215 
0216   // Select flavour, colour and anticolour.
0217   virtual void setIdColAcol();
0218 
0219   // Evaluate weight for decay angles.
0220   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0221 
0222   // Info on the subprocess.
0223   virtual string name()       const {return nameSave;}
0224   virtual int    code()       const {return codeSave;}
0225   virtual string inFlux()     const {return "ffbarChg";}
0226   virtual bool   isSChannel() const {return true;}
0227   virtual int    id3Mass()    const {return idRes;}
0228   virtual int    id4Mass()    const {return 24;}
0229   virtual int    resonanceA() const {return 24;}
0230 
0231 private:
0232 
0233   // Store W+- mass and width, and couplings.
0234   double mW, widW, mWS, mwWS, thetaWRat, sigma0, openFracPairPos,
0235          openFracPairNeg, coup2W;
0236   int    higgsType, codeSave, idRes;
0237   string nameSave;
0238 };
0239 
0240 //==========================================================================
0241 
0242 // A derived class for f f' -> H f f' (Z0 Z0 fusion of SM or BSM Higgs).
0243 // (H can be H0 SM or H1, H2, A3 from BSM).
0244 
0245 class Sigma3ff2HfftZZ : public Sigma3Process {
0246 
0247 public:
0248 
0249   // Constructor.
0250   Sigma3ff2HfftZZ(int higgsTypeIn) : mZS(), prefac(), sigma1(), sigma2(),
0251     openFrac(), coup2Z(), higgsType(higgsTypeIn), codeSave(), idRes() {}
0252 
0253   // Initialize process.
0254   virtual void initProc();
0255 
0256   // Calculate flavour-independent parts of cross section.
0257   virtual void sigmaKin();
0258 
0259   // Evaluate sigmaHat(sHat).
0260   virtual double sigmaHat();
0261 
0262   // Select flavour, colour and anticolour.
0263   virtual void setIdColAcol();
0264 
0265   // Evaluate weight for decay angles.
0266   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0267 
0268   // Info on the subprocess.
0269   virtual string name()    const {return nameSave;}
0270   virtual int    code()    const {return codeSave;}
0271   virtual string inFlux()  const {return "ff";}
0272   virtual int    id3Mass() const {return idRes;}
0273 
0274   // Instructions for 3-body phase space with t-channel propagators.
0275   virtual int    idTchan1()        const {return 23;}
0276   virtual int    idTchan2()        const {return 23;}
0277   virtual double tChanFracPow1()   const {return 0.05;}
0278   virtual double tChanFracPow2()   const {return 0.9;}
0279   virtual bool   useMirrorWeight() const {return true;}
0280 
0281 private:
0282 
0283   // Store standard factors.
0284   double mZS, prefac, sigma1, sigma2, openFrac, coup2Z;
0285   int    higgsType, codeSave, idRes;
0286   string nameSave;
0287 };
0288 
0289 //==========================================================================
0290 
0291 // A derived class for f_1 f_2 -> H f_3 f_4 (W+ W- fusion of SM or BSM Higgs).
0292 // (H can be H0 SM or H1, H2, A3 from BSM).
0293 
0294 class Sigma3ff2HfftWW : public Sigma3Process {
0295 
0296 public:
0297 
0298   // Constructor.
0299   Sigma3ff2HfftWW(int higgsTypeIn) : mWS(), prefac(), sigma0(), openFrac(),
0300     coup2W(), higgsType(higgsTypeIn), codeSave(), idRes() {}
0301 
0302   // Initialize process.
0303   virtual void initProc();
0304 
0305   // Calculate flavour-independent parts of cross section.
0306   virtual void sigmaKin();
0307 
0308   // Evaluate sigmaHat(sHat).
0309   virtual double sigmaHat();
0310 
0311   // Select flavour, colour and anticolour.
0312   virtual void setIdColAcol();
0313 
0314   // Evaluate weight for decay angles.
0315   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0316 
0317   // Info on the subprocess.
0318   virtual string name()    const {return nameSave;}
0319   virtual int    code()    const {return codeSave;}
0320   virtual string inFlux()  const {return "ff";}
0321   virtual int    id3Mass() const {return idRes;}
0322 
0323   // Instructions for 3-body phase space with t-channel propagators.
0324   virtual int    idTchan1()        const {return 24;}
0325   virtual int    idTchan2()        const {return 24;}
0326   virtual double tChanFracPow1()   const {return 0.05;}
0327   virtual double tChanFracPow2()   const {return 0.9;}
0328   virtual bool   useMirrorWeight() const {return true;}
0329 
0330 private:
0331 
0332   // Store standard prefactor.
0333   double mWS, prefac, sigma0, openFrac, coup2W;
0334   int    higgsType, codeSave, idRes;
0335   string nameSave;
0336 };
0337 
0338 //==========================================================================
0339 
0340 // A derived class for g g -> H Q Qbar (Q Qbar fusion of SM or BSM Higgs).
0341 // (H can be H0 SM or H1, H2, A3 from BSM).
0342 
0343 class Sigma3gg2HQQbar : public Sigma3Process {
0344 
0345 public:
0346 
0347   // Constructor.
0348   Sigma3gg2HQQbar(int idIn, int higgsTypeIn) : prefac(), sigma(),
0349     openFracTriplet(), coup2Q(), idNew(idIn), higgsType(higgsTypeIn),
0350     codeSave(), idRes() {}
0351 
0352   // Initialize process.
0353   virtual void initProc();
0354 
0355   // Calculate flavour-independent parts of cross section.
0356   virtual void sigmaKin();
0357 
0358   // Evaluate sigmaHat(sHat).
0359   virtual double sigmaHat() {return sigma;}
0360 
0361   // Select flavour, colour and anticolour.
0362   virtual void setIdColAcol();
0363 
0364   // Evaluate weight for decay angles.
0365   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0366 
0367   // Info on the subprocess.
0368   virtual string name()    const {return nameSave;}
0369   virtual int    code()    const {return codeSave;}
0370   virtual string inFlux()  const {return "gg";}
0371   virtual int    id3Mass() const {return idRes;}
0372   virtual int    id4Mass() const {return idNew;}
0373   virtual int    id5Mass() const {return idNew;}
0374 
0375   // Instructions for 3-body phase space with t-channel propagators.
0376   virtual int    idTchan1()        const {return idNew;}
0377   virtual int    idTchan2()        const {return idNew;}
0378   virtual double tChanFracPow1()   const {return 0.4;}
0379   virtual double tChanFracPow2()   const {return 0.2;}
0380   virtual bool   useMirrorWeight() const {return false;}
0381 
0382 private:
0383 
0384   // Store flavour-specific process information and standard prefactor.
0385   double prefac, sigma, openFracTriplet, coup2Q;
0386   int    idNew, higgsType, codeSave, idRes;
0387   string nameSave;
0388 
0389 };
0390 
0391 //==========================================================================
0392 
0393 // A derived class for q qbar -> H Q Qbar (Q Qbar fusion of SM or BSM Higgs).
0394 // (H can be H0 SM or H1, H2, A3 from BSM).
0395 
0396 class Sigma3qqbar2HQQbar : public Sigma3Process {
0397 
0398 public:
0399 
0400   // Constructor.
0401   Sigma3qqbar2HQQbar(int idIn, int higgsTypeIn) : prefac(), sigma(),
0402     openFracTriplet(), coup2Q(), idNew(idIn), higgsType(higgsTypeIn),
0403     codeSave(), idRes() {}
0404 
0405   // Initialize process.
0406   virtual void initProc();
0407 
0408   // Calculate flavour-independent parts of cross section.
0409   virtual void sigmaKin();
0410 
0411   // Evaluate sigmaHat(sHat).
0412   virtual double sigmaHat() {return sigma;}
0413 
0414   // Select flavour, colour and anticolour.
0415   virtual void setIdColAcol();
0416 
0417   // Evaluate weight for decay angles.
0418   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0419 
0420   // Info on the subprocess.
0421   virtual string name()    const {return nameSave;}
0422   virtual int    code()    const {return codeSave;}
0423   virtual string inFlux()  const {return "qqbarSame";}
0424   virtual int    id3Mass() const {return idRes;}
0425   virtual int    id4Mass() const {return idNew;}
0426   virtual int    id5Mass() const {return idNew;}
0427 
0428   // Instructions for 3-body phase space with t-channel propagators.
0429   virtual int    idTchan1()        const {return idNew;}
0430   virtual int    idTchan2()        const {return idNew;}
0431   virtual double tChanFracPow1()   const {return 0.4;}
0432   virtual double tChanFracPow2()   const {return 0.2;}
0433   virtual bool   useMirrorWeight() const {return false;}
0434 
0435 private:
0436 
0437   // Store flavour-specific process information and standard prefactor.
0438   double prefac, sigma, openFracTriplet, coup2Q;
0439   int    idNew, higgsType, codeSave, idRes;
0440   string nameSave;
0441 
0442 };
0443 
0444 //==========================================================================
0445 
0446 // A derived class for q g -> H q (SM or BSM Higgs).
0447 // (H can be H0 SM or H1, H2, A3 from BSM).
0448 
0449 class Sigma2qg2Hq : public Sigma2Process {
0450 
0451 public:
0452 
0453   // Constructor.
0454   Sigma2qg2Hq(int idIn, int higgsTypeIn) : m2W(), thetaWRat(), sigma(),
0455     openFrac(), idNew(idIn), higgsType(higgsTypeIn), codeSave(), idRes() {}
0456 
0457   // Initialize process.
0458   virtual void initProc();
0459 
0460   // Calculate flavour-independent parts of cross section.
0461   virtual void sigmaKin();
0462 
0463   // Evaluate sigmaHat(sHat).
0464   virtual double sigmaHat();
0465 
0466   // Select flavour, colour and anticolour.
0467   virtual void setIdColAcol();
0468 
0469   // Evaluate weight for decay angles.
0470   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0471 
0472   // Info on the subprocess.
0473   virtual string name()    const {return nameSave;}
0474   virtual int    code()    const {return codeSave;}
0475   virtual string inFlux()  const {return "qg";}
0476   virtual int    id3Mass() const {return idRes;}
0477   virtual int    id4Mass() const {return idNew;}
0478 
0479 private:
0480 
0481   // Store flavour-specific process information and standard prefactor.
0482   double m2W, thetaWRat, sigma, openFrac;
0483   int    idNew, higgsType, codeSave, idRes;
0484   string nameSave;
0485 
0486 };
0487 
0488 //==========================================================================
0489 
0490 // A derived class for g g -> H0 g (SM or BSM Higgs via heavy top loop).
0491 // (H can be H0 SM or H1, H2, A3 from BSM).
0492 
0493 class Sigma2gg2Hglt : public Sigma2Process {
0494 
0495 public:
0496 
0497   // Constructor.
0498   Sigma2gg2Hglt(int higgsTypeIn) : widHgg(), sigma(), openFrac(),
0499     higgsType(higgsTypeIn), codeSave(), idRes() {}
0500 
0501   // Initialize process.
0502   virtual void initProc();
0503 
0504   // Calculate flavour-independent parts of cross section.
0505   virtual void sigmaKin();
0506 
0507   // Evaluate d(sigmaHat)/d(tHat).
0508   virtual double sigmaHat() {return sigma;}
0509 
0510   // Select flavour, colour and anticolour.
0511   virtual void setIdColAcol();
0512 
0513   // Evaluate weight for decay angles.
0514   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0515 
0516   // Info on the subprocess.
0517   virtual string name()    const {return nameSave;}
0518   virtual int    code()    const {return codeSave;}
0519   virtual string inFlux()  const {return "gg";}
0520   virtual int    id3Mass() const {return idRes;}
0521 
0522 private:
0523 
0524   // Store standard prefactor.
0525   double widHgg, sigma, openFrac;
0526   int    higgsType, codeSave, idRes;
0527   string nameSave;
0528 };
0529 
0530 //==========================================================================
0531 
0532 // A derived class for q g -> H q (SM or BSM Higgs via heavy top loop).
0533 // (H can be H0 SM or H1, H2, A3 from BSM).
0534 
0535 class Sigma2qg2Hqlt : public Sigma2Process {
0536 
0537 public:
0538 
0539   // Constructor.
0540   Sigma2qg2Hqlt(int higgsTypeIn) : widHgg(), sigma(), openFrac(),
0541     higgsType(higgsTypeIn), codeSave(), idRes() {}
0542 
0543   // Initialize process.
0544   virtual void initProc();
0545 
0546   // Calculate flavour-independent parts of cross section.
0547   virtual void sigmaKin();
0548 
0549   // Evaluate d(sigmaHat)/d(tHat).
0550   virtual double sigmaHat() {return sigma;}
0551 
0552   // Select flavour, colour and anticolour.
0553   virtual void setIdColAcol();
0554 
0555   // Evaluate weight for decay angles.
0556   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0557 
0558   // Info on the subprocess.
0559   virtual string name()    const {return nameSave;}
0560   virtual int    code()    const {return codeSave;}
0561   virtual string inFlux()  const {return "qg";}
0562   virtual int    id3Mass() const {return idRes;}
0563 
0564 private:
0565 
0566   // Store standard prefactor.
0567   double widHgg, sigma, openFrac;
0568   int    higgsType, codeSave, idRes;
0569   string nameSave;
0570 };
0571 
0572 //==========================================================================
0573 
0574 // A derived class for q qbar -> H g (SM or BSM Higgs via heavy top loop).
0575 // (H can be H0 SM or H1, H2, A3 from BSM).
0576 
0577 class Sigma2qqbar2Hglt : public Sigma2Process {
0578 
0579 public:
0580 
0581   // Constructor.
0582   Sigma2qqbar2Hglt(int higgsTypeIn) : widHgg(), sigma(), openFrac(),
0583     higgsType(higgsTypeIn), codeSave(), idRes() {}
0584 
0585   // Initialize process.
0586   virtual void initProc();
0587 
0588   // Calculate flavour-independent parts of cross section.
0589   virtual void sigmaKin();
0590 
0591   // Evaluate d(sigmaHat)/d(tHat).
0592   virtual double sigmaHat() {return sigma;}
0593 
0594   // Select flavour, colour and anticolour.
0595   virtual void setIdColAcol();
0596 
0597   // Evaluate weight for decay angles.
0598   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0599 
0600   // Info on the subprocess.
0601   virtual string name()    const {return nameSave;}
0602   virtual int    code()    const {return codeSave;}
0603   virtual string inFlux()  const {return "qqbarSame";}
0604   virtual int    id3Mass() const {return idRes;}
0605 
0606 private:
0607 
0608   // Store standard prefactor.
0609   double widHgg, sigma, openFrac;
0610   int    higgsType, codeSave, idRes;
0611   string nameSave;
0612 };
0613 
0614 //==========================================================================
0615 
0616 // A derived class for f fbar' -> H+-.
0617 
0618 class Sigma1ffbar2Hchg : public Sigma1Process {
0619 
0620 public:
0621 
0622   // Constructor.
0623   Sigma1ffbar2Hchg() : HResPtr(), mRes(), GammaRes(), m2Res(), GamMRat(),
0624     m2W(), thetaWRat(), tan2Beta(), sigBW(), widthOutPos(), widthOutNeg() {}
0625 
0626   // Initialize process.
0627   virtual void initProc();
0628 
0629   // Calculate flavour-independent parts of cross section.
0630   virtual void sigmaKin();
0631 
0632   // Evaluate sigmaHat(sHat).
0633   virtual double sigmaHat();
0634 
0635   // Select flavour, colour and anticolour.
0636   virtual void setIdColAcol();
0637 
0638   // Evaluate weight for decay angles.
0639   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0640 
0641   // Info on the subprocess.
0642   virtual string name()       const {return "f fbar' -> H+-";}
0643   virtual int    code()       const {return 1061;}
0644   virtual string inFlux()     const {return "ffbarChg";}
0645   virtual int    resonanceA() const {return 37;}
0646 
0647 private:
0648 
0649   // A H0 resonance object provides coupling and propagator expressions.
0650   ParticleDataEntryPtr HResPtr;
0651   double mRes, GammaRes, m2Res, GamMRat, m2W, thetaWRat, tan2Beta, sigBW,
0652          widthOutPos, widthOutNeg;
0653 
0654 };
0655 
0656 //==========================================================================
0657 
0658 // A derived class for q g -> H+- q'.
0659 
0660 class Sigma2qg2Hchgq : public Sigma2Process {
0661 
0662 public:
0663 
0664   // Constructor.
0665   Sigma2qg2Hchgq(int idIn, int codeIn, string nameIn) : idNew(idIn),
0666     codeSave(codeIn), idOld(), idUp(), idDn(), nameSave(nameIn), m2W(),
0667     thetaWRat(), tan2Beta(), sigma(), openFracPos(), openFracNeg() {}
0668 
0669   // Initialize process.
0670   virtual void initProc();
0671 
0672   // Calculate flavour-independent parts of cross section.
0673   virtual void sigmaKin();
0674 
0675   // Evaluate sigmaHat(sHat).
0676   virtual double sigmaHat();
0677 
0678   // Select flavour, colour and anticolour.
0679   virtual void setIdColAcol();
0680 
0681   // Evaluate weight for decay angles.
0682   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0683 
0684   // Info on the subprocess.
0685   virtual string name()    const {return nameSave;}
0686   virtual int    code()    const {return codeSave;}
0687   virtual string inFlux()  const {return "qg";}
0688   virtual int    id3Mass() const {return 37;}
0689   virtual int    id4Mass() const {return idNew;}
0690 
0691 private:
0692 
0693   // Store flavour-specific process information and standard prefactor.
0694   int    idNew, codeSave, idOld, idUp, idDn;
0695   string nameSave;
0696   double m2W, thetaWRat, tan2Beta, sigma, openFracPos, openFracNeg;
0697 
0698 };
0699 
0700 //==========================================================================
0701 
0702 // A derived class for f fbar -> A0(H_3) h0(H_1) or A0(H_3) H0(H_2).
0703 
0704 class Sigma2ffbar2A3H12 : public Sigma2Process {
0705 
0706 public:
0707 
0708   // Constructor.
0709   Sigma2ffbar2A3H12(int higgsTypeIn) : higgsType(higgsTypeIn), higgs12(),
0710     codeSave(), coupZA3H12(), m2Z(), mGammaZ(), thetaWRat(), openFrac(),
0711     sigma0() {}
0712 
0713   // Initialize process.
0714   virtual void initProc();
0715 
0716   // Calculate flavour-independent parts of cross section.
0717   virtual void sigmaKin();
0718 
0719   // Evaluate sigmaHat(sHat).
0720   virtual double sigmaHat();
0721 
0722   // Select flavour, colour and anticolour.
0723   virtual void setIdColAcol();
0724 
0725   // Evaluate weight for decay angles.
0726   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0727 
0728   // Info on the subprocess.
0729   virtual string name()    const {return nameSave;}
0730   virtual int    code()    const {return codeSave;}
0731   virtual string inFlux()  const {return "ffbarSame";}
0732   virtual int    id3Mass() const {return 36;}
0733   virtual int    id4Mass() const {return higgs12;}
0734 
0735 private:
0736 
0737   // Store flavour-specific process information and standard prefactor.
0738   int    higgsType, higgs12, codeSave;
0739   string nameSave;
0740   double coupZA3H12, m2Z, mGammaZ, thetaWRat, openFrac, sigma0;
0741 
0742 };
0743 
0744 //==========================================================================
0745 
0746 // A derived class for f fbar -> H+- h0(H_1) or H+- H0(H_2).
0747 
0748 class Sigma2ffbar2HchgH12 : public Sigma2Process {
0749 
0750 public:
0751 
0752   // Constructor.
0753   Sigma2ffbar2HchgH12(int higgsTypeIn) : higgsType(higgsTypeIn), higgs12(),
0754     codeSave(), coupWHchgH12(), m2W(), mGammaW(), thetaWRat(), openFracPos(),
0755     openFracNeg(), sigma0() {}
0756 
0757   // Initialize process.
0758   virtual void initProc();
0759 
0760   // Calculate flavour-independent parts of cross section.
0761   virtual void sigmaKin();
0762 
0763   // Evaluate sigmaHat(sHat).
0764   virtual double sigmaHat();
0765 
0766   // Select flavour, colour and anticolour.
0767   virtual void setIdColAcol();
0768 
0769   // Evaluate weight for decay angles.
0770   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0771 
0772   // Info on the subprocess.
0773   virtual string name()    const {return nameSave;}
0774   virtual int    code()    const {return codeSave;}
0775   virtual string inFlux()  const {return "ffbarChg";}
0776   virtual int    id3Mass() const {return 37;}
0777   virtual int    id4Mass() const {return higgs12;}
0778 
0779 private:
0780 
0781   // Store flavour-specific process information and standard prefactor.
0782   int    higgsType, higgs12, codeSave;
0783   string nameSave;
0784   double coupWHchgH12, m2W, mGammaW, thetaWRat, openFracPos, openFracNeg,
0785          sigma0;
0786 
0787 };
0788 
0789 //==========================================================================
0790 
0791 // A derived class for f fbar -> H+ H-.
0792 
0793 class Sigma2ffbar2HposHneg : public Sigma2Process {
0794 
0795 public:
0796 
0797   // Constructor.
0798   Sigma2ffbar2HposHneg() : m2Z(), mGammaZ(), thetaWRat(), eH(), lH(),
0799     openFrac(), gamSig(), intSig(), resSig() {}
0800 
0801   // Initialize process.
0802   virtual void initProc();
0803 
0804   // Calculate flavour-independent parts of cross section.
0805   virtual void sigmaKin();
0806 
0807   // Evaluate sigmaHat(sHat).
0808   virtual double sigmaHat();
0809 
0810   // Select flavour, colour and anticolour.
0811   virtual void setIdColAcol();
0812 
0813   // Evaluate weight for decay angles.
0814   virtual double weightDecay( Event& process, int iResBeg, int iResEnd);
0815 
0816   // Info on the subprocess.
0817   virtual string name()    const {return "f fbar -> H+ H-";}
0818   virtual int    code()    const {return 1085;}
0819   virtual string inFlux()  const {return "ffbarSame";}
0820   virtual int    id3Mass() const {return 37;}
0821   virtual int    id4Mass() const {return 37;}
0822 
0823 private:
0824 
0825   // Store flavour-specific process information and standard prefactor.
0826   double m2Z, mGammaZ, thetaWRat, eH, lH, openFrac, gamSig, intSig, resSig;
0827 
0828 };
0829 
0830 //==========================================================================
0831 
0832 } // end namespace Pythia8
0833 
0834 #endif // Pythia8_SigmaHiggs_H