Line data Source code
1 : // MiniStringFragmentation.h is a part of the PYTHIA event generator.
2 : // Copyright (C) 2015 Torbjorn Sjostrand.
3 : // PYTHIA is licenced under the GNU GPL version 2, 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 0 : class MiniStringFragmentation {
30 :
31 : public:
32 :
33 : // Constructor.
34 0 : 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 : int nTryMass;
66 : double bLund;
67 :
68 : // Data members.
69 : bool isClosed;
70 : double mSum, m2Sum;
71 : Vec4 pSum;
72 : vector<int> iParton;
73 : FlavContainer flav1, flav2;
74 :
75 : // Attempt to produce two particles from a cluster.
76 : bool ministring2two( int nTry, Event& event);
77 :
78 : // Attempt to produce one particle from a cluster.
79 : bool ministring2one( int iSub, ColConfig& colConfig, Event& event);
80 :
81 : };
82 :
83 : //==========================================================================
84 :
85 : } // end namespace Pythia8
86 :
87 : #endif // Pythia8_MiniStringFragmentation_H
|