StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
BeamShape.h
1 // BeamShape.h is a part of the PYTHIA event generator.
2 // Copyright (C) 2020 Torbjorn Sjostrand.
3 // PYTHIA is licenced under the GNU GPL v2 or later, see COPYING for details.
4 // Please respect the MCnet Guidelines, see GUIDELINES for details.
5 
6 // Header for classes to set beam momentum and interaction vertex spread.
7 
8 #ifndef Pythia8_BeamShape_H
9 #define Pythia8_BeamShape_H
10 
11 #include "Pythia8/Basics.h"
12 #include "Pythia8/PythiaStdlib.h"
13 #include "Pythia8/Settings.h"
14 
15 namespace Pythia8 {
16 
17 //==========================================================================
18 
19 // Base class to set beam momentum and interaction spot spread.
20 
21 class BeamShape {
22 
23 public:
24 
25  // Constructor.
26  BeamShape() : deltaPxA(), deltaPyA(), deltaPzA(), deltaPxB(), deltaPyB(),
27  deltaPzB(), vertexX(), vertexY(), vertexZ(), vertexT(),
28  allowMomentumSpread(), allowVertexSpread(), sigmaPxA(), sigmaPyA(),
29  sigmaPzA(), maxDevA(), sigmaPxB(), sigmaPyB(), sigmaPzB(), maxDevB(),
30  sigmaVertexX(), sigmaVertexY(), sigmaVertexZ(), maxDevVertex(),
31  sigmaTime(), maxDevTime(), offsetX(), offsetY(), offsetZ(), offsetT(),
32  rndmPtr() {}
33 
34  // Destructor.
35  virtual ~BeamShape() {}
36 
37  // Initialize beam parameters.
38  virtual void init( Settings& settings, Rndm* rndmPtrIn);
39 
40  // Set the two beam momentum deviations and the beam vertex.
41  virtual void pick();
42 
43  // Methods to read out the choice made with the above method.
44  Vec4 deltaPA() const {return Vec4( deltaPxA, deltaPyA, deltaPzA, 0);}
45  Vec4 deltaPB() const {return Vec4( deltaPxB, deltaPyB, deltaPzB, 0);}
46  Vec4 vertex() const {return Vec4( vertexX, vertexY, vertexZ, vertexT);}
47 
48 protected:
49 
50  // Values to be set.
51  double deltaPxA, deltaPyA, deltaPzA, deltaPxB, deltaPyB, deltaPzB,
52  vertexX, vertexY, vertexZ, vertexT;
53 
54  // Parameters of Gaussian parametrizations.
55  bool allowMomentumSpread, allowVertexSpread;
56  double sigmaPxA, sigmaPyA, sigmaPzA, maxDevA, sigmaPxB, sigmaPyB,
57  sigmaPzB, maxDevB, sigmaVertexX, sigmaVertexY, sigmaVertexZ,
58  maxDevVertex, sigmaTime, maxDevTime, offsetX, offsetY,
59  offsetZ, offsetT;
60 
61  // Pointer to the random number generator.
62  Rndm* rndmPtr;
63 
64 };
65 
66 //==========================================================================
67 
68 } // end namespace Pythia8
69 
70 #endif // Pythia8_BeamShape_H