StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
MiniStringFragmentation.h
1 // MiniStringFragmentation.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 // This file contains the class for "cluster" fragmentation.
7 // MiniStringFragmentation: handle the fragmentation of low-mass systems.
8 
9 #ifndef Pythia8_MiniStringFragmentation_H
10 #define Pythia8_MiniStringFragmentation_H
11 
12 #include "Pythia8/Basics.h"
13 #include "Pythia8/Event.h"
14 #include "Pythia8/FragmentationFlavZpT.h"
15 #include "Pythia8/FragmentationSystems.h"
16 #include "Pythia8/Info.h"
17 #include "Pythia8/ParticleData.h"
18 #include "Pythia8/PythiaStdlib.h"
19 #include "Pythia8/PhysicsBase.h"
20 #include "Pythia8/Settings.h"
21 
22 namespace Pythia8 {
23 
24 //==========================================================================
25 
26 // The MiniStringFragmentation class contains the routines to fragment
27 // occasional low-mass colour singlet partonic systems, where the string
28 // approach is not directly applicable (for technical reasons).
29 
30 class MiniStringFragmentation : public PhysicsBase {
31 
32 public:
33 
34  // Constructor.
35  MiniStringFragmentation() : flavSelPtr(), pTSelPtr(), zSelPtr(),
36  setVertices(), constantTau(), smearOn(), nTryMass(), hadronVertex(),
37  bLund(), xySmear(), kappaVtx(), mc(), mb(), isClosed(), mSum(), m2Sum() {}
38 
39  // Initialize and save pointers.
40  void init(StringFlav* flavSelPtrIn, StringPT* pTSelPtrIn,
41  StringZ* zSelPtrIn);
42 
43  // Do the fragmentation: driver routine.
44  bool fragment( int iSub, ColConfig& colConfig, Event& event,
45  bool isDiff = false, bool systemRecoil = true);
46 
47 private:
48 
49  // Constants: could only be changed in the code itself.
50  static const int NTRYDIFFRACTIVE, NTRYLASTRESORT, NTRYFLAV;
51 
52  // Pointers to classes for flavour, pT and z generation.
53  StringFlav* flavSelPtr;
54  StringPT* pTSelPtr;
55  StringZ* zSelPtr;
56 
57  // Initialization data, read from Settings.
58  bool setVertices, constantTau, smearOn;
59  int nTryMass, hadronVertex;
60  double bLund, xySmear, kappaVtx, mc, mb;
61 
62  // Data members.
63  bool isClosed;
64  double mSum, m2Sum;
65  Vec4 pSum;
66  vector<int> iParton;
67  FlavContainer flav1, flav2;
68 
69  // Information from the fragmentation process.
70  vector<StringVertex> ministringVertices;
71 
72  // Attempt to produce two particles from a cluster.
73  bool ministring2two( int nTry, Event& event, bool findLowMass = false);
74 
75  // Attempt to produce one particle from a cluster.
76  bool ministring2one( int iSub, ColConfig& colConfig, Event& event,
77  bool findLowMass = false, bool systemRecoil = true);
78 
79  // Set hadron production points in space-time picture.
80  void setHadronVertices(Event& event, StringRegion& region,
81  int iFirst, int iLast);
82 
83 };
84 
85 //==========================================================================
86 
87 } // end namespace Pythia8
88 
89 #endif // Pythia8_MiniStringFragmentation_H
Definition: AgUStep.h:26