--- /dev/null
+// BeamShape.h is a part of the PYTHIA event generator.
+// Copyright (C) 2012 Torbjorn Sjostrand.
+// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
+// Please respect the MCnet Guidelines, see GUIDELINES for details.
+
+// Header for classes to set beam momentum and interaction vertex spread.
+
+#ifndef Pythia8_BeamShape_H
+#define Pythia8_BeamShape_H
+
+#include "Basics.h"
+#include "PythiaStdlib.h"
+#include "Settings.h"
+
+namespace Pythia8 {
+
+//==========================================================================
+
+// Base class to set beam momentum and interaction spot spread.
+
+class BeamShape {
+
+public:
+
+ // Constructor.
+ BeamShape() {}
+
+ // Destructor.
+ virtual ~BeamShape() {}
+
+ // Initialize beam parameters.
+ virtual void init( Settings& settings, Rndm* rndmPtrIn);
+
+ // Set the two beam momentum deviations and the beam vertex.
+ virtual void pick();
+
+ // Methods to read out the choice made with the above method.
+ Vec4 deltaPA() const {return Vec4( deltaPxA, deltaPyA, deltaPzA, 0);}
+ Vec4 deltaPB() const {return Vec4( deltaPxB, deltaPyB, deltaPzB, 0);}
+ Vec4 vertex() const {return Vec4( vertexX, vertexY, vertexZ, vertexT);}
+
+protected:
+
+ // Values to be set.
+ double deltaPxA, deltaPyA, deltaPzA, deltaPxB, deltaPyB, deltaPzB,
+ vertexX, vertexY, vertexZ, vertexT;
+
+ // Parameters of Gaussian parametrizations.
+ bool allowMomentumSpread, allowVertexSpread;
+ double sigmaPxA, sigmaPyA, sigmaPzA, maxDevA, sigmaPxB, sigmaPyB,
+ sigmaPzB, maxDevB, sigmaVertexX, sigmaVertexY, sigmaVertexZ,
+ maxDevVertex, sigmaTime, maxDevTime, offsetX, offsetY,
+ offsetZ, offsetT;
+
+ // Pointer to the random number generator.
+ Rndm* rndmPtr;
+
+};
+
+//==========================================================================
+
+} // end namespace Pythia8
+
+#endif // Pythia8_BeamShape_H