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) 2018 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/Settings.h"
20 
21 namespace Pythia8 {
22 
23 //==========================================================================
24 
25 // The MiniStringFragmentation class contains the routines to fragment
26 // occasional low-mass colour singlet partonic systems, where the string
27 // approach is not directly applicable (for technical reasons).
28 
29 class MiniStringFragmentation {
30 
31 public:
32 
33  // Constructor.
34  MiniStringFragmentation() {}
35 
36  // Initialize and save pointers.
37  void init(Info* infoPtrIn, Settings& settings,
38  ParticleData* particleDataPtrIn, Rndm* rndmPtrIn,
39  StringFlav* flavSelPtrIn, StringPT* pTSelPtrIn, StringZ* zSelPtrIn);
40 
41  // Do the fragmentation: driver routine.
42  bool fragment( int iSub, ColConfig& colConfig, Event& event,
43  bool isDiff = false);
44 
45 private:
46 
47  // Constants: could only be changed in the code itself.
48  static const int NTRYDIFFRACTIVE, NTRYLASTRESORT, NTRYFLAV;
49 
50  // Pointer to various information on the generation.
51  Info* infoPtr;
52 
53  // Pointer to the particle data table.
54  ParticleData* particleDataPtr;
55 
56  // Pointer to the random number generator.
57  Rndm* rndmPtr;
58 
59  // Pointers to classes for flavour, pT and z generation.
60  StringFlav* flavSelPtr;
61  StringPT* pTSelPtr;
62  StringZ* zSelPtr;
63 
64  // Initialization data, read from Settings.
65  bool setVertices, constantTau, smearOn;
66  int nTryMass, hadronVertex;
67  double bLund, xySmear, kappaVtx, mc, mb;
68 
69  // Data members.
70  bool isClosed;
71  double mSum, m2Sum;
72  Vec4 pSum;
73  vector<int> iParton;
74  FlavContainer flav1, flav2;
75 
76  // Information from the fragmentation process.
77  vector<StringVertex> ministringVertices;
78 
79  // Attempt to produce two particles from a cluster.
80  bool ministring2two( int nTry, Event& event);
81 
82  // Attempt to produce one particle from a cluster.
83  bool ministring2one( int iSub, ColConfig& colConfig, Event& event);
84 
85  // Set hadron production points in space-time picture.
86  void setHadronVertices(Event& event, StringRegion& region,
87  int iFirst, int iLast);
88 
89 };
90 
91 //==========================================================================
92 
93 } // end namespace Pythia8
94 
95 #endif // Pythia8_MiniStringFragmentation_H
Definition: AgUStep.h:26