]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PYTHIA8/pythia8170/include/SusyCouplings.h
Update to pythi8.170
[u/mrichter/AliRoot.git] / PYTHIA8 / pythia8170 / include / SusyCouplings.h
CommitLineData
63ba5337 1// SusyCouplings.h is a part of the PYTHIA event generator.
2// Copyright (C) 2012 Torbjorn Sjostrand.
3// Main authors of this file: N. Desai, P. Skands
4// PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
5// Please respect the MCnet Guidelines, see GUIDELINES for details.
6
7// Header file for setup of common SUSY couplings.
8
9#ifndef Pythia8_SusyCouplings_H
10#define Pythia8_SusyCouplings_H
11
12#include "PythiaComplex.h"
13#include "Settings.h"
14#include "StandardModel.h"
15#include "SusyLesHouches.h"
16
17namespace Pythia8 {
18
19class ParticleData;
20
21//==========================================================================
22
23// CoupSUSY
24// Auxiliary class to compute and store various SM and SUSY couplings.
25
26class CoupSUSY : public Couplings{
27
28public:
29
30 // Constructor
31 CoupSUSY() {isInit=false; isNMSSM = false; isSUSY=true;}
32
33 // Initialize
34 void initSUSY(SusyLesHouches* slhaPtrIn, Settings* settingsPtrIn,
35 ParticleData* particleDataPtrIn);
36
37 // Status flag. Flag for NMSSM.
38 bool isInit, isNMSSM;
39
40 // Z and W pole masses and widths
41 double mWpole, wWpole, mZpole, wZpole;
42
43 // Running masses and weak mixing angle
44 // (default to pole values if no running available)
45 double mW, mZ, sin2W, sinW, cosW;
46
47 // Tanbeta
48 double tanb, cosb, sinb;
49
50 //Higgs-sector parameters
51 double muHiggs, alphaHiggs, mAHiggs;
52
53 // ~qq~g couplings
54 complex LsddG[7][4], RsddG[7][4];
55 complex LsuuG[7][4], RsuuG[7][4];
56 // Assume generation index for Squark. Translate if PDG code instead.
57 complex getLsqqG(int iGenSq, int idQ) {if (abs(iGenSq) > 1000000)
58 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
59 return (abs(idQ)%2 == 0) ? LsuuG[iGenSq][abs(idQ)/2]
60 : LsddG[iGenSq][(abs(idQ)+1)/2] ;}
61 complex getRsqqG(int iGenSq, int idQ) {if (abs(iGenSq) > 1000000)
62 iGenSq = 3*(abs(iGenSq)/2000000) + (abs(iGenSq)%10+1)/2;
63 return (abs(idQ)%2 == 0) ? RsuuG[iGenSq][abs(idQ)/2]
64 : RsddG[iGenSq][(abs(idQ)+1)/2] ;}
65
66 // ~chi0~chi0Z couplings
67 complex OLpp[6][6], ORpp[6][6];
68
69 // ~chi+~chi-Z couplings
70 complex OLp[3][3], ORp[3][3];
71
72 // ~chi0~chi+W couplings
73 complex OL[6][3], OR[6][3];
74
75 // qqZ couplings
76 double LqqZ[7], RqqZ[7];
77
78 // ~q~qZ couplings
79 complex LsdsdZ[7][7], RsdsdZ[7][7];
80 complex LsusuZ[7][7], RsusuZ[7][7];
81 complex getLsqsqZ(int idSq1, int idSq2) {
82 if (abs(idSq1)%2 != abs(idSq2)%2) return complex(0.0,0.0);
83 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
84 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
85 return (abs(idSq1)%2 == 0) ? LsusuZ[iGen1][iGen2] : LsdsdZ[iGen1][iGen2];}
86 complex getRsqsqZ(int idSq1, int idSq2) {
87 if (abs(idSq1)%2 != abs(idSq2)%2) return complex(0.0,0.0);
88 int iGen1 = 3*(abs(idSq1)/2000000) + (abs(idSq1)%10+1)/2;
89 int iGen2 = 3*(abs(idSq2)/2000000) + (abs(idSq2)%10+1)/2;
90 return (abs(idSq1)%2 == 0) ? RsusuZ[iGen1][iGen2] : RsdsdZ[iGen1][iGen2];}
91
92 // udW couplings
93 complex LudW[4][4], RudW[4][4];
94
95 // ~u~dW couplings
96 complex LsusdW[7][7], RsusdW[7][7];
97
98 // ~qq~chi0 couplings
99 complex LsddX[7][4][6], RsddX[7][4][6];
100 complex LsuuX[7][4][6], RsuuX[7][4][6];
101 complex getLsqqX(int iSq, int idQ, int iNeut) {return (abs(idQ)%2 == 0)
102 ? LsuuX[iSq][abs(idQ)/2][iNeut] : LsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
103 complex getRsqqX(int iSq, int idQ, int iNeut) {return (abs(idQ)%2 == 0)
104 ? RsuuX[iSq][abs(idQ)/2][iNeut] : RsddX[iSq][(abs(idQ)+1)/2][iNeut] ;}
105
106 // ~du~chi+ couplings
107 complex LsduX[7][4][3], RsduX[7][4][3];
108
109 // ~ud~chi+ couplings
110 complex LsudX[7][4][3], RsudX[7][4][3];
111
112 //llZ couplings
113 double LllZ[7], RllZ[7];
114
115 //lvW couplings
116 complex LlvW[4], RlvW[4];
117
118 // ~l~lZ couplings
119 complex LslslZ[7][7],RslslZ[7][7];
120 complex LsvsvZ[7][7],RsvsvZ[7][7];
121
122 // ~l~vW couplings
123 complex LslsvW[7][7], RslsvW[7][7];
124
125 // ~ll~chi0 couplings
126 complex LsvvX[7][4][6], RsvvX[7][4][6];
127 complex LsllX[7][4][6], RsllX[7][4][6];
128
129 // ~vl~chi+ couplings
130 complex LsvlX[7][4][3], RsvlX[7][4][3];
131
132 // ~lv~chi+ couplings
133 complex LslvX[7][4][3], RslvX[7][4][3];
134
135 // RPV couplings
136 double rvLLE[4][4][4], rvLQD[4][4][4], rvUDD[4][4][4];
137 // Flags for RPV couplings
138 bool isLLE, isLQD, isUDD;
139
140 //Squark mixing matrix: needed for RPV
141 complex Rusq[7][7], Rdsq[7][7];
142
143 // Return neutralino, chargino, sup, sdown and slepton flavour codes.
144 int idNeut(int idChi);
145 int idChar(int idChi);
146 int idSup(int iSup);
147 int idSdown(int iSdown);
148 int idSlep(int iSlep);
149
150 //Reverse lookup for neutralinos and charginos
151 int typeNeut(int idPDG);
152 int typeChar(int idPDG);
153
154 // Return a particle name, given the PDG code.
155 string getName(int pdgCode);
156
157 // Pointer to SLHA instance
158 // Used in SusyResonanceWidths for checking if decay table exists
159 SusyLesHouches* slhaPtr;
160
161private:
162 // Debug flag
163 static const bool DEBUG;
164
165
166 // Pointer to the settings database.
167 Settings* settingsPtr;
168
169 // Pointer to the particle data table.
170 ParticleData* particleDataPtr;
171
172};
173
174//==========================================================================
175
176} // end namespace Pythia8
177
178#endif // Pythia8_SusyCouplings_H