Higgs

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//-*-C++-*-
//-*-Higgs.h-*-
//   Written by James Monk and Andrew Pilkington
/////////////////////////////////////////////////////////////////////////////

#ifndef HIGGS_HH
#define HIGGS_HH

#include "GeneratorInterface/ExhumeInterface/interface/CrossSection.h"

namespace Exhume {

  class Higgs : public CrossSection {
  public:
    Higgs(const edm::ParameterSet &);

    double SubProcess() override;
    void SetPartons() override;
    void SetSubParameters() override;
    double SubParameterWeight() override;
    void MaximiseSubParameters() override;
    double SubParameterRange() override;
    void SetHiggsMass(const double &);
    inline double GetC() { return (C); };
    inline std::complex<double> GetPropagator() { return (Propagator()); };

    void SetHiggsDecay(const int &);

  private:
    double HiggsWidth_();

    void SetC();

    inline std::complex<double> Propagator() {
      //See hep-ph 9505211

      return (I * (1.0 + I * HiggsWidth / HiggsMass) / (sHat - HiggsMass2 + I * HiggsWidth * sHat / HiggsMass));
    };

    inline std::complex<double> GluGlu2HiggsAmp() {
      return (GGHConst * sHat * AlphaS_ * (Fsf(sHat * FsfTop) + Fsf(sHat * FsfBottom)));
    };

    std::complex<double> GGHConst;
    double AlphaS_, FsfTop, FsfBottom, NLOConst;
    double HiggsMass2, HiggsWidth, TotWidth;
    double C, One;
    double *BR;
  };

}  // namespace Exhume

#endif