main501
Back to index.
// main501.cc is a part of the PYTHIA event generator.
// Copyright (C) 2024 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:
// Nishita Desai
// Keywords:
// Basic usage
// Supersymmetry
// BSM
// Command file
// This is a simple test program.
// It illustrates how to run SUSY processes in Pythia8.
// All input is specified in the main501.cmnd file.
#include "Pythia8/Pythia.h"
using namespace Pythia8;
//==========================================================================
int main() {
// Generator. Shorthand for the event.
Pythia pythia;
Event& event = pythia.event;
// Read in commands from external file.
pythia.readFile("main501.cmnd");
// Extract settings to be used in the main program.
int nEvent = pythia.mode("Main:numberOfEvents");
int nAbort = pythia.mode("Main:timesAllowErrors");
double eCM = pythia.parm("Beams:eCM");
// If Pythia fails to initialize, exit with error.
if (!pythia.init()) return 1;
// Histograms.
double epTol = 1e-6 * eCM;
Hist epCons("deviation from energy-momentum conservation",100,0.,epTol);
Hist nFinal("final particle multiplicity",100,-0.5,799.5);
Hist dnparticledy("dn/dy for particles",100,-10.,10.);
// Begin event loop.
int iAbort = 0;
for (int iEvent = 0; iEvent < nEvent; ++iEvent) {
// Generate events. Quit if failure.
if (!pythia.next()) {
if (++iAbort < nAbort) continue;
cout << " Event generation aborted prematurely, owing to error!\n";
break;
}
// Loop over final particles in the event.
int nFin = 0;
Vec4 pSum;
for (int i = 0; i < event.size(); ++i) if (event[i].isFinal()) {
nFin++;
pSum += event[i].p();
dnparticledy.fill(event[i].y());
}
// Check and print event with too big energy-momentum deviation.
nFinal.fill(nFin);
double epDev = abs(pSum.e() - eCM) + abs(pSum.px()) + abs(pSum.py())
+ abs(pSum.pz());
epCons.fill(epDev);
if (epDev > epTol) {
cout << " Warning! Event with epDev = " << scientific
<< setprecision(4) << epDev << " now listed:";
event.list();
}
// End of event loop.
}
// Final statistics and histogram output.
pythia.stat();
cout << epCons << nFinal << dnparticledy;
return 0;
}