Line data Source code
1 : // JunctionSplitting.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 JunctionSplitting.
7 : // JunctionSplitting takes an event and seperate junction chains from
8 : // each other, such that no junctions are colour connected to each other.
9 :
10 : #ifndef Pythia8_JunctionSplitting_H
11 : #define Pythia8_JunctionSplitting_H
12 :
13 : #include "Pythia8/Basics.h"
14 : #include "Pythia8/ColourTracing.h"
15 : #include "Pythia8/Event.h"
16 : #include "Pythia8/FragmentationFlavZpT.h"
17 : #include "Pythia8/Info.h"
18 : #include "Pythia8/ParticleData.h"
19 : #include "Pythia8/Settings.h"
20 : #include "Pythia8/StringLength.h"
21 :
22 : namespace Pythia8 {
23 :
24 : //==========================================================================
25 :
26 : // JunctionSplitting takes an event and seperate junction chains from
27 : // each other, such that no junctions are colour connected to each other.
28 :
29 0 : class JunctionSplitting {
30 :
31 : public:
32 :
33 : // Initialization.
34 : void init(Info* infoPtrIn, Settings& settings, Rndm* rndmPtrIn,
35 : ParticleData* particleDataPtrIn);
36 :
37 : // Test whether an event has a physical colour configuration.
38 : // It also splits junction pairs into pieces that PYTHIA can hadronize.
39 : bool checkColours(Event& event);
40 :
41 : private:
42 :
43 : // Constants: could only be changed in the code itself.
44 : static const int NTRYJNREST;
45 : static const double JJSTRINGM2MAX, JJSTRINGM2FRAC, CONVJNREST, MTHAD, MINDELTAR;
46 :
47 : double eNormJunction;
48 : bool allowDoubleJunRem;
49 : // Pointer to various information on the generation.
50 : Info* infoPtr;
51 :
52 : // Pointer to the random number generator.
53 : Rndm* rndmPtr;
54 :
55 : // Classes for flavour, pT and z generation.
56 : StringFlav flavSel;
57 : StringPT pTSel;
58 : StringZ zSel;
59 :
60 : // The generator class for normal string fragmentation.
61 : StringFragmentation stringFrag;
62 :
63 : // Colour tracing class used to find the colour chains.
64 : ColourTracing colTrace;
65 :
66 : // String Length class used to calculate the string length.
67 : StringLength stringLength;
68 :
69 : // Split connected junction chains into separated, mainly by splitting
70 : // gluons into q-qbar pairs.
71 : bool splitJunGluons(Event& event, vector<vector< int > >& iPartonJun,
72 : vector<vector< int > >& iPartonAntiJun);
73 :
74 : // Split multiple (> 2) directly connected junctions.
75 : bool splitJunChains(Event& event);
76 :
77 : // Split junction pairs.
78 : bool splitJunPairs(Event& event, vector<vector< int > >& iPartonJun,
79 : vector<vector< int > >& iPartonAntiJun);
80 :
81 : // Get the list of partons connected to the junctions.
82 : bool getPartonLists(Event& event, vector<vector< int > >& iPartonJun,
83 : vector<vector<int > >& iPartonAntiJun);
84 :
85 : // Change the anticolour of the particle that has acol to be col.
86 : bool setAcol(Event& event, int col, int acol);
87 :
88 : };
89 :
90 : //==========================================================================
91 :
92 : } // end namespace Pythia8
93 :
94 : #endif // Pythia8_JunctionSplitting_H
|