Line data Source code
1 : // Bose-Einstein.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 classes to handle Bose-Einstein effects.
7 : // BoseEinsteinHadron: simple working container for particle momenta.
8 : // BoseEinstein: main class to perform the task.
9 :
10 : #ifndef Pythia8_BoseEinstein_H
11 : #define Pythia8_BoseEinstein_H
12 :
13 : #include "Pythia8/Basics.h"
14 : #include "Pythia8/Event.h"
15 : #include "Pythia8/ParticleData.h"
16 : #include "Pythia8/PythiaStdlib.h"
17 : #include "Pythia8/Settings.h"
18 :
19 : namespace Pythia8 {
20 :
21 : //==========================================================================
22 :
23 : // The BoseEinsteinHadron class is a simple container for studied hadrons.
24 :
25 0 : class BoseEinsteinHadron {
26 :
27 : public:
28 :
29 : // Constructors.
30 0 : BoseEinsteinHadron() : id(0), iPos(0), p(0.), pShift(0.), pComp(0.),
31 0 : m2(0.) {}
32 : BoseEinsteinHadron(int idIn, int iPosIn, Vec4 pIn, double mIn) :
33 0 : id(idIn), iPos(iPosIn), p(pIn), pShift(0.), pComp(0.) {m2 = mIn*mIn;}
34 :
35 : // Information on hadron - all public.
36 : int id, iPos;
37 : Vec4 p, pShift, pComp;
38 : double m2;
39 :
40 : };
41 :
42 : //==========================================================================
43 :
44 : // The BoseEinstein class shifts the momenta of identical particles relative
45 : // to each other, to simulate Bose-Einstein effects to some approximation.
46 :
47 0 : class BoseEinstein {
48 :
49 : public:
50 :
51 : // Constructor.
52 0 : BoseEinstein() {}
53 :
54 : // Find settings. Precalculate table used to find momentum shifts.
55 : bool init(Info* infoPtrIn, Settings& settings, ParticleData& particleData);
56 :
57 : // Perform Bose-Einstein corrections on an event.
58 : bool shiftEvent( Event& event);
59 :
60 : private:
61 :
62 : // Constants: could only be changed in the code itself.
63 : static const int IDHADRON[9], ITABLE[9], NCOMPSTEP;
64 : static const double STEPSIZE, Q2MIN, COMPRELERR, COMPFACMAX;
65 :
66 : // Initialization data, read from Settings.
67 : bool doPion, doKaon, doEta;
68 : double lambda, QRef;
69 :
70 : // Pointer to various information on the generation.
71 : Info* infoPtr;
72 :
73 : // Table of momentum shifts for different hadron species.
74 : int nStep[4], nStep3[4], nStored[10];
75 : double QRef2, QRef3, R2Ref, R2Ref2, R2Ref3, mHadron[9],
76 : mPair[4], m2Pair[4], deltaQ[4], deltaQ3[4], maxQ[4], maxQ3[4];
77 : double shift[4][200], shift3[4][200];
78 :
79 : // Vector of hadrons to study.
80 : vector<BoseEinsteinHadron> hadronBE;
81 :
82 : // Calculate shift and (unnormalized) compensation for pair.
83 : void shiftPair(int i1, int i2, int iHad);
84 :
85 : };
86 :
87 : //==========================================================================
88 :
89 : } // end namespace Pythia8
90 :
91 : #endif // Pythia8_BoseEinstein_H
|