source: HiSusy/trunk/Pythia8/pythia8170/include/HadronLevel.h @ 1

Last change on this file since 1 was 1, checked in by zerwas, 11 years ago

first import of structure, PYTHIA8 and DELPHES

File size: 4.3 KB
Line 
1// HadronLevel.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 main class for hadron-level generation.
7// HadronLevel: handles administration of fragmentation and decay.
8
9#ifndef Pythia8_HadronLevel_H
10#define Pythia8_HadronLevel_H
11
12#include "Basics.h"
13#include "BoseEinstein.h"
14#include "Event.h"
15#include "FragmentationFlavZpT.h"
16#include "FragmentationSystems.h"
17#include "HadronScatter.h"
18#include "HiddenValleyFragmentation.h"
19#include "Info.h"
20#include "MiniStringFragmentation.h"
21#include "ParticleData.h"
22#include "ParticleDecays.h"
23#include "PythiaStdlib.h"
24#include "RHadrons.h"
25#include "Settings.h"
26#include "StringFragmentation.h"
27#include "TimeShower.h"
28
29namespace Pythia8 {
30 
31//==========================================================================
32
33// The HadronLevel class contains the top-level routines to generate
34// the transition from the partonic to the hadronic stage of an event.
35
36class HadronLevel {
37
38public:
39
40  // Constructor.
41  HadronLevel() {}
42
43  // Initialize HadronLevel classes as required.
44  bool init(Info* infoPtrIn, Settings& settings, 
45    ParticleData* particleDataPtrIn, Rndm* rndmPtrIn, 
46    Couplings* couplingsPtrIn, TimeShower* timesDecPtr, 
47    RHadrons* rHadronsPtrIn, DecayHandler* decayHandlePtr, 
48    vector<int> handledParticles);
49
50  // Get pointer to StringFlav instance (needed by BeamParticle).
51  StringFlav* getStringFlavPtr() {return &flavSel;}
52 
53  // Generate the next event.
54  bool next(Event& event); 
55
56  // Special routine to allow more decays if on/off switches changed.
57  bool moreDecays(Event& event);
58
59private: 
60
61  // Constants: could only be changed in the code itself.
62  static const int    NTRYJNREST;
63  static const double JJSTRINGM2MAX, JJSTRINGM2FRAC, CONVJNREST, MTHAD;
64
65  // Initialization data, read from Settings.
66  bool   doHadronize, doDecay, doBoseEinstein, allowRH;
67  double mStringMin, eNormJunction, widthSepBE;
68
69  // Settings for hadron scattering --rjc
70  bool   doHadronScatter, hsAfterDecay;
71
72  // Pointer to various information on the generation.
73  Info*         infoPtr;
74
75  // Pointer to the particle data table.
76  ParticleData* particleDataPtr;
77
78  // Pointer to the random number generator.
79  Rndm*         rndmPtr;
80
81  // Pointers to Standard Model couplings.
82  Couplings*    couplingsPtr;
83
84  // Configuration of colour-singlet systems.
85  ColConfig     colConfig;   
86
87  // Colour information.
88  vector<int>    iColEnd, iAcolEnd, iColAndAcol, iParton, iPartonJun, 
89                 iPartonAntiJun, iJunLegA, iJunLegB, iJunLegC, 
90                 iAntiLegA, iAntiLegB, iAntiLegC, iGluLeg;
91  vector<double> m2Pair; 
92
93  // The generator class for normal string fragmentation.
94  StringFragmentation stringFrag;
95
96  // The generator class for special low-mass string fragmentation.
97  MiniStringFragmentation ministringFrag;
98
99  // The generator class for normal decays.
100  ParticleDecays decays;
101
102  // The generator class for hadron scattering --rjc
103  HadronScatter hadronScatter;
104
105  // The generator class for Bose-Einstein effects.
106  BoseEinstein boseEinstein;
107
108  // Classes for flavour, pT and z generation.
109  StringFlav flavSel;
110  StringPT   pTSel;
111  StringZ    zSel;
112
113  // The RHadrons class is used to fragment off and decay R-hadrons.
114  RHadrons*  rHadronsPtr;
115
116  // Special class for Hidden-Valley hadronization. Not always used.
117  HiddenValleyFragmentation hiddenvalleyFrag;
118  bool useHiddenValley;
119
120  // Special case: colour-octet onium decays, to be done initially.
121  bool decayOctetOnia(Event& event);
122 
123  // Trace colour flow in the event to form colour singlet subsystems.
124  bool findSinglets(Event& event);
125 
126  // Trace a colour line, from a colour, from an anticolour, or in loop.
127  bool traceFromCol(int indxCol, Event& event, int iJun = -1, int iCol = -1);
128  bool traceFromAcol(int indxCol, Event& event, int iJun = -1, int iCol = -1); 
129  bool traceInLoop(int indxCol, int indxAcol, Event& event);
130
131  // Split junction-antijunction system into two, or simplify other way.
132  bool splitJunctionPair(Event& event);
133 
134};
135 
136//==========================================================================
137
138} // end namespace Pythia8
139
140#endif // Pythia8_HadronLevel_H
Note: See TracBrowser for help on using the repository browser.