Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:06:19

0001 // BeamShape.h is a part of the PYTHIA event generator.
0002 // Copyright (C) 2024 Torbjorn Sjostrand.
0003 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
0004 // Please respect the MCnet Guidelines, see GUIDELINES for details.
0005 
0006 // Header for classes to set beam momentum and interaction vertex spread.
0007 
0008 #ifndef Pythia8_BeamShape_H
0009 #define Pythia8_BeamShape_H
0010 
0011 #include "Pythia8/Basics.h"
0012 #include "Pythia8/PythiaStdlib.h"
0013 #include "Pythia8/Settings.h"
0014 
0015 namespace Pythia8 {
0016 
0017 //==========================================================================
0018 
0019 // Base class to set beam momentum and interaction spot spread.
0020 
0021 class BeamShape {
0022 
0023 public:
0024 
0025   // Constructor.
0026   BeamShape() : deltaPxA(), deltaPyA(), deltaPzA(), deltaPxB(), deltaPyB(),
0027     deltaPzB(), vertexX(), vertexY(), vertexZ(), vertexT(),
0028     allowMomentumSpread(), allowVertexSpread(), sigmaPxA(), sigmaPyA(),
0029     sigmaPzA(), maxDevA(), sigmaPxB(), sigmaPyB(), sigmaPzB(), maxDevB(),
0030     sigmaVertexX(), sigmaVertexY(), sigmaVertexZ(), maxDevVertex(),
0031     sigmaTime(), maxDevTime(), offsetX(), offsetY(), offsetZ(), offsetT(),
0032     rndmPtr() {}
0033 
0034   // Destructor.
0035   virtual ~BeamShape() {}
0036 
0037   // Initialize beam parameters.
0038   virtual void init( Settings& settings, Rndm* rndmPtrIn);
0039 
0040   // Set the two beam momentum deviations and the beam vertex.
0041   virtual void pick();
0042 
0043   // Methods to read out the choice made with the above method.
0044   Vec4 deltaPA() const {return Vec4( deltaPxA, deltaPyA, deltaPzA, 0);}
0045   Vec4 deltaPB() const {return Vec4( deltaPxB, deltaPyB, deltaPzB, 0);}
0046   Vec4 vertex()  const {return Vec4( vertexX, vertexY, vertexZ, vertexT);}
0047 
0048 protected:
0049 
0050   // Values to be set.
0051   double deltaPxA, deltaPyA, deltaPzA, deltaPxB, deltaPyB, deltaPzB,
0052          vertexX, vertexY, vertexZ, vertexT;
0053 
0054   // Parameters of Gaussian parametrizations.
0055   bool   allowMomentumSpread, allowVertexSpread;
0056   double sigmaPxA, sigmaPyA, sigmaPzA, maxDevA, sigmaPxB, sigmaPyB,
0057          sigmaPzB, maxDevB, sigmaVertexX, sigmaVertexY, sigmaVertexZ,
0058          maxDevVertex, sigmaTime, maxDevTime, offsetX, offsetY,
0059          offsetZ, offsetT;
0060 
0061   // Pointer to the random number generator.
0062   Rndm*  rndmPtr;
0063 
0064 };
0065 
0066 //==========================================================================
0067 
0068 } // end namespace Pythia8
0069 
0070 #endif // Pythia8_BeamShape_H