--- /dev/null
+// Bose-Einstein.h is a part of the PYTHIA event generator.
+// Copyright (C) 2008 Torbjorn Sjostrand.
+// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
+// Please respect the MCnet Guidelines, see GUIDELINES for details.
+
+// This file contains the classes to handle Bose-Einstein effects.
+// BoseEinsteinHadron: simple working container for particle momenta.
+// BoseEinstein: main class to perform the task.
+
+#ifndef Pythia8_BoseEinstein_H
+#define Pythia8_BoseEinstein_H
+
+#include "Basics.h"
+#include "Event.h"
+#include "ParticleData.h"
+#include "PythiaStdlib.h"
+#include "Settings.h"
+
+namespace Pythia8 {
+
+//**************************************************************************
+
+// The BoseEinsteinHadron class is a simple container for studied hadrons.
+
+class BoseEinsteinHadron {
+
+public:
+
+ // Constructors.
+ BoseEinsteinHadron() : id(0), iPos(0), p(0.), pShift(0.), pComp(0.),
+ m2(0.) {}
+ BoseEinsteinHadron(int idIn, int iPosIn, Vec4 pIn, double mIn) :
+ id(idIn), iPos(iPosIn), p(pIn), pShift(0.), pComp(0.) {m2 = mIn*mIn;}
+
+ // Information on hadron - all public.
+ int id, iPos;
+ Vec4 p, pShift, pComp;
+ double m2;
+
+};
+
+//**************************************************************************
+
+// The BoseEinstein class shifts the momenta of identical particles relative
+// to each other, to simulate Bose-Einstein effects to some approximation.
+
+class BoseEinstein {
+
+public:
+
+ // Constructor.
+ BoseEinstein() {}
+
+ // Find settings. Precalculate table used to find momentum shifts.
+ bool init(Info* infoPtrIn);
+
+ // Perform Bose-Einstein corrections on an event.
+ bool shiftEvent( Event& event);
+
+private:
+
+ // Constants: could only be changed in the code itself.
+ static const int IDHADRON[9], ITABLE[9], NCOMPSTEP;
+ static const double STEPSIZE, Q2MIN, COMPRELERR, COMPFACMAX;
+
+ // Initialization data, read from Settings.
+ bool doPion, doKaon, doEta;
+ double lambda, QRef;
+
+ // Pointer to various information on the generation.
+ Info* infoPtr;
+
+ // Table of momentum shifts for different hadron species.
+ int nStep[4], nStep3[4], nStored[10];
+ double QRef2, QRef3, R2Ref, R2Ref2, R2Ref3, mHadron[9],
+ mPair[4], m2Pair[4], deltaQ[4], deltaQ3[4], maxQ[4], maxQ3[4];
+ double shift[4][200], shift3[4][200];
+
+ // Vector of hadrons to study.
+ vector<BoseEinsteinHadron> hadronBE;
+
+ // Calculate shift and (unnormalized) compensation for pair.
+ void shiftPair(int i1, int i2, int iHad);
+
+};
+
+//**************************************************************************
+
+} // end namespace Pythia8
+
+#endif // Pythia8_BoseEinstein_H
+