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

« back to all changes in this revision

Viewing changes to include/SusyCouplings.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
// 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
 
 
17
namespace Pythia8 {
 
18
 
 
19
class ParticleData;
 
20
 
 
21
//==========================================================================
 
22
 
 
23
// CoupSUSY
 
24
// Auxiliary class to compute and store various SM and SUSY couplings.
 
25
 
 
26
class CoupSUSY : public Couplings{
 
27
 
 
28
public:
 
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
 
 
161
private:
 
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