~ubuntu-branches/ubuntu/trusty/pythia8/trusty-proposed

« back to all changes in this revision

Viewing changes to include/HiddenValleyFragmentation.h

  • Committer: Package Import Robot
  • Author(s): Lifeng Sun
  • Date: 2012-05-22 11:43:00 UTC
  • Revision ID: package-import@ubuntu.com-20120522114300-0jvsv2vl4o2bo435
Tags: upstream-8.1.65
ImportĀ upstreamĀ versionĀ 8.1.65

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
22
namespace Pythia8 {
 
23
 
 
24
//==========================================================================
 
25
 
 
26
// The HVStringFlav class is used to select HV-quark and HV-hadron flavours.
 
27
 
 
28
class HVStringFlav : public StringFlav {
 
29
 
 
30
public:
 
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
 
 
47
private:
 
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
 
 
59
class HVStringPT : public StringPT {
 
60
 
 
61
public:
 
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
 
 
78
class HVStringZ : public StringZ {
 
79
 
 
80
public:
 
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
 
 
99
private:
 
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
 
 
111
class HiddenValleyFragmentation {
 
112
 
 
113
public:
 
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
 
 
131
private: 
 
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