## main502

Back to index.

    // main502.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:
    //            Basic usage
    //            Hadronization
    //            LHE file

    // This is a simple test program.
    // It illustrates how Les Houches Event File input can be used in Pythia8.
    // Here the very few events are generated with MadGraph, and illustrate
    // more complicated colour topologies.

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

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

    int main() {

      // Generator
      Pythia pythia;

      // Stick with default values, so do not bother with a separate file
      // for changes. However, do one change, to show readString in action.
      pythia.readString("PartonLevel:ISR = off");
      pythia.readString("PartonLevel:FSR = off");
      pythia.readString("PartonLevel:MPI = off");
      pythia.readString("HadronLevel:Hadronize = on");

      // Initialize Les Houches Event File run.
      pythia.readString("Beams:frameType = 4");
      pythia.readString("Beams:LHEF = main502.lhe");

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

      // Book histogram.
      Hist nCharged("charged particle multiplicity",100,-0.5,399.5);

      // Allow for possibility of a few faulty events.
      int nAbort = 10;
      int iAbort = 0;

      // Begin event loop; generate until none left in input file.
      for (int iEvent = 0; ; ++iEvent) {
        cout << endl << "Begin event # " << iEvent << endl;

        // Generate events, and check whether generation failed.
        if (!pythia.next()) {

          // If failure because reached end of file then exit event loop.
          if (pythia.info.atEndOfFile()) break;

          // First few failures write off as "acceptable" errors, then quit.
          if (++iAbort < nAbort) continue;
          break;
        }

        // Sum up final charged multiplicity and fill in histogram.
        int nChg = 0;
        for (int i = 0; i < pythia.event.size(); ++i)
        if (pythia.event[i].isFinal() && pythia.event[i].isCharged())
          ++nChg;
        nCharged.fill(nChg);

      // End of event loop.
      }

      // Give statistics. Print histogram.
      pythia.stat();
      cout << nCharged;

      // Done.
      return 0;
    }