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) 2012 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 "Basics.h"
13 #include "Event.h"
14 #include "FragmentationFlavZpT.h"
15 #include "FragmentationSystems.h"
16 #include "Info.h"
17 #include "ParticleData.h"
18 #include "PythiaStdlib.h"
19 #include "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 
30 
31 public:
32 
33  // Constructor.
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