## main506

Back to index.

    // main506.cc is a part of the PYTHIA event generator.
    // Copyright (C) 2026 Torbjorn Sjostrand.
    // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
    // Please respect the MCnet Guidelines, see GUIDELINES for details.

    // Keywords:
    //            Parton distribution
    //            Photon beam

    // Example how to set up the simulation of isotropic QED gamma + gamma
    // production at 750 GeV by modifying gamma + gamma -> H -> gamma + gamma.
    // Contains a semirealistic analysis of associated jet production.
    // Exemplifies how an lhagrid1 PDF file can be used for hard processes.
    // Cross section not to be taken seriously, but event properties realistic.

    #include "Pythia8/Pythia.h"
    using namespace Pythia8;

    //==========================================================================

    int main() {

      // Number of events.
      int nEvent = 5000;

      // Generator and collision energy.
      Pythia pythia;
      pythia.readString("Beams:eCM = 13000.");

      // Pick gamma + gamma -> H -> gamma + gamma production.
      pythia.readString("HiggsSM:gmgm2H = on");
      pythia.readString("25:onMode = off");
      pythia.readString("25:onIfMatch = 22 22");

      // Force H to have 750 GeV mass and yet be narrow.
      pythia.readString("25:m0 = 750.");
      pythia.readString("25:mWidth = 1.");
      pythia.readString("25:doForceWidth = on");

      // Use NLO CT14qed central member for hard process, default LO for rest.
      pythia.readString("PDF:useHard = on");
      pythia.readString("PDF:pHardSet = LHAGrid1:CT14qed_proton_0000.dat");

      // Do not allow gamma -> fermion pair by showering.
      // (To simplify removal of photons for jet finding in the rest of the event.)
      pythia.readString("TimeShower:QEDshowerByGamma = off");

      // No event printout.
      pythia.readString("Next:numberShowEvent = 0");

      // If Pythia fails to initialize, exit with error.
      if (!pythia.init()) return 1;

      // Event shorthand.
      Event& event = pythia.event;

      // Set up anti-kT jet finder with R = 0.5, pT > 30., |eta| < 5.
      SlowJet slowJet( -1, 0.5, 30., 5.);

      // Histogram.
      Hist massH( "mass of Higgs", 100, 500., 1000.);
      Hist pTH(  "pT of Higgs", 100, 0., 500.);
      Hist pTj1( "pT of jet 1", 100, 0., 500.);
      Hist pTj2( "pT of jet 2", 100, 0., 500.);
      Hist yj1(   "y of jet 1", 100, -5., 5.);
      Hist yj2(   "y of jet 2", 100, -5., 5.);

      // Begin event loop. Generate event. Skip if error.
      for (int iEvent = 0; iEvent < nEvent; ++iEvent) {
        if (!pythia.next()) continue;

        // Find location of (final copy of) Higgs. Histogram Higgs mass and pT.
        int iH = 0;
        for (int i = 1; i < event.size(); ++i) if (event[i].id() == 25) iH = i;
        massH.fill( event[iH].m() );
        pTH.fill( event[iH].pT() );

        // Mark the two daughter photons decayed to do jet finding without them.
        event[event[iH].daughter1()].statusNeg();
        event[event[iH].daughter2()].statusNeg();
        slowJet.analyze( pythia.event );

        // Histogram pT and rapidity of two hardest jets, if they exist.
        if (slowJet.sizeJet() > 0) {
          pTj1.fill( slowJet.pT(0) );
          yj1.fill( slowJet.y(0) );
        }
        if (slowJet.sizeJet() > 1) {
          pTj2.fill( slowJet.pT(1) );
          yj2.fill( slowJet.y(1) );
        }

      // End of event loop. Statistics. Histograms.
      }
      pythia.stat();
      cout << massH << pTH << pTj1 << pTj2 << yj1 << yj2;

      // Done.
      return 0;
    }