## main503

Back to index.

    // main503.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.

    // Authors:
    //            Stefan Ask

    // Contact: Nishita Desai <nishita.desai@tifr.res.in>

    // Keywords:
    //            Extra dimensions
    //            BSM

    // This is a test program for the extra dimensions processes.

    // Documentation: S. Ask et al., arXiv:0809.4750 and arXiv:0912.4233

    #include "Pythia8/Pythia.h"

    using namespace Pythia8;

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

    // The main program.

    int main() {

      // Test cases
      // 1  = Jet + G       (real G emission)
      // 2  = Jet + U       (real U emission)
      // 3  = Z + G         (real G emission)
      // 4  = Z + U         (real U emission)
      // 5  = gamma gamma   (LED G* exchange)
      // 6  = l lbar        (LED U* exchange).
      //      Note: charged leptons only!
      // 7  = Z_KK/gamma_KK (TEV ED resonance)
      // 8  = G*            (RS resonance, SM on the TeV brane)
      // 9  = kk-gluon*     (RS resonance)
      int nTest = 1;

      // Number of events to generate. Max number of errors.
      int nEvent     = 1000;
      int nAbort     = 50;

      // Pythia generator.
      Pythia pythia;

      // PYTHIA paramters:
      pythia.readString("PhaseSpace:showViolation = off");

      // Test case parameters
      if (nTest == 1) {
        pythia.readString("ExtraDimensionsLED:monojet = on");
        pythia.readString("ExtraDimensionsLED:n = 4");
        pythia.readString("ExtraDimensionsLED:MD = 4000.");
        pythia.readString("ExtraDimensionsLED:CutOffmode = 3");
        pythia.readString("ExtraDimensionsLED:t = 2");
        pythia.readString("5000039:m0 = 2500.");
        pythia.readString("5000039:mWidth = 1500.");
        pythia.readString("5000039:mMin = 1.");
        pythia.readString("5000039:mMax = 13990.");
        pythia.readString("PhaseSpace:pTHatMin = 700.");
      } else if (nTest == 2){
        pythia.readString("ExtraDimensionsUnpart:gg2Ug = off");
        pythia.readString("ExtraDimensionsUnpart:qg2Uq = on");
        pythia.readString("ExtraDimensionsUnpart:qqbar2Ug = on");
        pythia.readString("ExtraDimensionsUnpart:spinU = 1");
        pythia.readString("ExtraDimensionsUnpart:dU = 1.2");
        pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000");
        pythia.readString("ExtraDimensionsUnpart:lambda = 1.0");
        pythia.readString("ExtraDimensionsUnpart:CutOffmode = 0");
        pythia.readString("5000039:m0 = 300.");
        pythia.readString("5000039:mWidth = 500.");
        pythia.readString("5000039:mMin = 1.");
        pythia.readString("5000039:mMax = 13990.");
        pythia.readString("PhaseSpace:pTHatMin = 700.");
      } else if (nTest == 3){
        pythia.readString("ExtraDimensionsLED:ffbar2GZ = on");
        pythia.readString("ExtraDimensionsLED:n = 6");
        pythia.readString("ExtraDimensionsLED:MD = 2000.");
        pythia.readString("ExtraDimensionsLED:CutOffmode = 1");
        pythia.readString("5000039:m0 = 3000.");
        pythia.readString("5000039:mWidth = 1500.");
        pythia.readString("5000039:mMin = 1.");
        pythia.readString("5000039:mMax = 13990.");
        pythia.readString("PhaseSpace:pTHatMin = 50.");
      } else if (nTest == 4){
        pythia.readString("ExtraDimensionsUnpart:ffbar2UZ = on");
        pythia.readString("ExtraDimensionsUnpart:spinU = 1");
        pythia.readString("ExtraDimensionsUnpart:dU = 2.0");
        pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000");
        pythia.readString("ExtraDimensionsUnpart:lambda = 1.000");
        pythia.readString("ExtraDimensionsUnpart:CutOffmode = 0");
        pythia.readString("5000039:m0 = 500.");
        pythia.readString("5000039:mWidth = 1000.");
        pythia.readString("5000039:mMin = 1.");
        pythia.readString("5000039:mMax = 13990.");
        pythia.readString("PhaseSpace:pTHatMin = 50.");
      } else if (nTest == 5){
        pythia.readString("ExtraDimensionsLED:ffbar2gammagamma = on");
        pythia.readString("ExtraDimensionsLED:gg2gammagamma = on");
        pythia.readString("ExtraDimensionsLED:LambdaT = 3300.");
        pythia.readString("PhaseSpace:mHatMin = 800.");
      } else if (nTest == 6){
        pythia.readString("ExtraDimensionsUnpart:ffbar2llbar = on");
        pythia.readString("ExtraDimensionsUnpart:gg2llbar = off");
        pythia.readString("ExtraDimensionsUnpart:spinU = 1");
        pythia.readString("ExtraDimensionsUnpart:dU = 1.3");
        pythia.readString("ExtraDimensionsUnpart:LambdaU = 1000");
        pythia.readString("ExtraDimensionsUnpart:lambda = 1.0");
        pythia.readString("ExtraDimensionsUnpart:gXX = 0");
        pythia.readString("ExtraDimensionsUnpart:gXY = 0");
        pythia.readString("PhaseSpace:mHatMin = 300.");
      } else if (nTest == 7){
        pythia.readString("ExtraDimensionsTEV:ffbar2mu+mu- = on");
        pythia.readString("ExtraDimensionsTEV:gmZmode = 3");
        pythia.readString("ExtraDimensionsTEV:nMax = 100");
        pythia.readString("ExtraDimensionsTEV:mStar = 4000");
        pythia.readString("PhaseSpace:mHatMin = 1000");
        pythia.readString("PhaseSpace:mHatMax = 6000");
        pythia.readString("5000023:isResonance = false");
      } else if (nTest == 8){
        pythia.readString("ExtraDimensionsG*:all = on");
      } else if (nTest == 9){
        pythia.readString("ExtraDimensionsG*:qqbar2KKgluon* = on");
        pythia.readString("ExtraDimensionsG*:KKintMode = 2");
        pythia.readString("ExtraDimensionsG*:KKgqR = -0.2");
        pythia.readString("ExtraDimensionsG*:KKgqL = -0.2");
        pythia.readString("ExtraDimensionsG*:KKgbR = -0.2");
        pythia.readString("ExtraDimensionsG*:KKgbL = 1.0");
        pythia.readString("ExtraDimensionsG*:KKgtR = 5.0");
        pythia.readString("ExtraDimensionsG*:KKgtL = 1.0");
        pythia.readString("5100021:m0 = 2000");
      }

      // Switch off sophisticated tau treatment: not yet matched to SUSY.
      pythia.readString("TauDecays:mode = 0");

      // Initialization for LHC.
      pythia.readString("Beams:eCM = 14000.");

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

      // Validation histograms
      Hist hEtjet("dN/dETjet: monojet check", 100, 0., 7000.);
      Hist hMass("dN/m: graviton mass spectrum", 100, 0., 7000.);

      // Begin event loop.
      int iAbort = 0;
      for (int iEvent = 0; iEvent < nEvent; ++iEvent) {

        // Generate events. Quit if many failures.
        if (!pythia.next()) {
          if (++iAbort < nAbort) continue;
          std::cout << " Event generation aborted prematurely, owing to error!\n";
          break;
        }

        // Checked particle index
        int tmp_monojet = -1;

        // Particle loop
        for (int iPart = 0; iPart < pythia.event.size(); ++iPart) {

          // From hard process (inital = 21, interm.=22, final=23 state)
          if (pythia.event[iPart].statusAbs()  == 22) {

            // Find Z_KK/gamma_KK or kk-gluon
            if( pythia.event[iPart].idAbs() == 5000023
             || pythia.event[iPart].idAbs() == 5100021
             || pythia.event[iPart].idAbs() == 5100039){
              hMass.fill( pythia.event[iPart].m() );
            }

          } else if ( pythia.event[iPart].statusAbs()  == 23 ) {

            // Find graviton/unparticle
            if( pythia.event[iPart].idAbs() == 5000039){
              hMass.fill( pythia.event[iPart].m() );
            }

            // Find mono-jets
            if (nTest == 1 || nTest == 2) {
              if ( pythia.event[iPart].idAbs() <= 6
                || pythia.event[iPart].idAbs() == 21 ){
                if (tmp_monojet >= 0) {
                  std::cout << "More than one (hard process) mono-jet ! \n";
                } else {
                  tmp_monojet  = iPart;
                }
              }
            }

          }
        }

        // Validation mono-jet wrt G.Giudice et al. paper [hep-ph/9811291v2]
        if (tmp_monojet >= 0) {
          double tmp_eta = pythia.event[tmp_monojet].eta();
          double tmp_et = pythia.event[tmp_monojet].eT();
          double tmp_et_cut = 1000;
          if ( tmp_et >=  tmp_et_cut && abs(tmp_eta) < 3 ) {
            hEtjet.fill( abs(tmp_et) );
          }
        }

      }

      // Final statistics.
      pythia.stat();
      cout << hMass << hEtjet;

      return 0;
    }