source: HiSusy/trunk/Pythia8/pythia8170/include/HiddenValleyFragmentation.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.7 KB
Line 
1// HiddenValleyFragmentation.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 classes for Hidden-Valley fragmentation.
7
8#ifndef Pythia8_HiddenValleyFragmentation_H
9#define Pythia8_HiddenValleyFragmentation_H
10
11#include "Basics.h"
12#include "Event.h"
13#include "FragmentationFlavZpT.h"
14#include "FragmentationSystems.h"
15#include "Info.h"
16#include "MiniStringFragmentation.h"
17#include "ParticleData.h"
18#include "PythiaStdlib.h"
19#include "Settings.h"
20#include "StringFragmentation.h"
21
22namespace Pythia8 {
23
24//==========================================================================
25
26// The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
27
28class HVStringFlav : public StringFlav {
29
30public:
31
32  // Constructor.
33  HVStringFlav() {}
34
35  // Destructor.
36  ~HVStringFlav() {}
37
38  // Initialize data members.
39  void init(Settings& settings, Rndm* rndmPtrIn);
40
41  // Pick a new flavour (including diquarks) given an incoming one.
42  FlavContainer pick(FlavContainer& flavOld);
43
44  // Combine two flavours (including diquarks) to produce a hadron.
45  int combine(FlavContainer& flav1, FlavContainer& flav2);
46
47private:
48
49  // Initialization data, to be read from Settings.
50  int    nFlav;
51  double probVector;
52
53};
54 
55//==========================================================================
56
57// The HVStringPT class is used to select select HV transverse momenta.
58
59class HVStringPT : public StringPT {
60
61public:
62
63  // Constructor.
64  HVStringPT() {}
65
66  // Destructor.
67  ~HVStringPT() {}
68
69  // Initialize data members.
70  void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
71
72};
73 
74//==========================================================================
75
76// The HVStringZ class is used to sample the HV fragmentation function f(z).
77
78class HVStringZ : public StringZ {
79
80public:
81
82  // Constructor.
83  HVStringZ() {}
84
85  // Destructor.
86  ~HVStringZ() {}
87
88  // Initialize data members.
89  void init(Settings& settings, ParticleData& particleData, Rndm* rndmPtrIn);
90 
91  // Fragmentation function: top-level to determine parameters.
92  double zFrag( int idOld, int idNew = 0, double mT2 = 1.);
93
94  // Parameters for stopping in the middle; for now hardcoded.
95  virtual double stopMass()    {return 1.5 * mhvMeson;} 
96  virtual double stopNewFlav() {return 2.0;} 
97  virtual double stopSmear()   {return 0.2;} 
98
99private:
100
101  // Initialization data, to be read from Settings and ParticleData.
102  double mqv2, bmqv2, rFactqv, mhvMeson;
103
104};
105
106//==========================================================================
107
108// The HiddenValleyFragmentation class contains the routines
109// to fragment a Hidden Valley partonic system.
110
111class HiddenValleyFragmentation {
112
113public:
114
115  // Constructor.
116  HiddenValleyFragmentation() : hvFlavSelPtr(NULL), hvPTSelPtr(NULL),
117    hvZSelPtr(NULL) {}
118
119  // Destructor.
120  ~HiddenValleyFragmentation() { if (doHVfrag) { 
121    if (hvZSelPtr) delete hvZSelPtr; if (hvPTSelPtr) delete hvPTSelPtr;
122    if (hvFlavSelPtr) delete hvFlavSelPtr;} }
123
124  // Initialize and save pointers.
125  bool init(Info* infoPtrIn, Settings& settings, 
126    ParticleData* particleDataPtrIn, Rndm* rndmPtrIn);
127
128  // Do the fragmentation: driver routine.
129  bool fragment(Event& event);
130
131private: 
132
133  // Pointer to various information on the generation.
134  Info*         infoPtr;
135
136  // Pointer to the particle data table.
137  ParticleData* particleDataPtr;
138
139  // Pointer to the random number generator.
140  Rndm*         rndmPtr;
141
142  // Data mambers.
143  bool          doHVfrag;
144  int           nFlav, hvOldSize, hvNewSize; 
145  double        mhvMeson, mSys;
146  vector<int>   ihvParton;
147
148  // Configuration of colour-singlet systems.
149  ColConfig     hvColConfig;   
150
151  // Temporary event record for the Hidden Valley system.
152  Event         hvEvent;
153
154  // The generator class for Hidden Valley string fragmentation.
155  StringFragmentation hvStringFrag;
156
157  // The generator class for special low-mass HV string fragmentation.
158  MiniStringFragmentation hvMinistringFrag;
159
160  // Pointers to classes for flavour, pT and z generation in HV sector.
161  StringFlav*   hvFlavSelPtr;
162  StringPT*     hvPTSelPtr;
163  StringZ*      hvZSelPtr;
164
165  // Extract HV-particles from event to hvEvent. Assign HV-colours.
166  bool extractHVevent(Event& event);
167
168  // Collapse of low-mass system to one HV-meson.
169  bool collapseToMeson();
170
171  // Insert HV particles from hvEvent to event.
172  bool insertHVevent(Event& event);
173
174}; 
175 
176//==========================================================================
177
178} // end namespace Pythia8
179
180#endif // Pythia8_HiddenValleyFragmentation_H
Note: See TracBrowser for help on using the repository browser.