Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F19244352
MSSM.cc
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
MSSM.cc
View Options
// -*- C++ -*-
//
// MSSM.cc is a part of Herwig++ - A multi-purpose Monte Carlo event generator
// Copyright (C) 2002-2007 The Herwig Collaboration
//
// Herwig++ is licenced under version 2 of the GPL, see COPYING for details.
// Please respect the MCnet academic guidelines, see GUIDELINES for details.
//
//
// This is the implementation of the non-inlined, non-templated member
// functions of the MSSM class.
//
#include
"MSSM.h"
#include
"ThePEG/Interface/ClassDocumentation.h"
#include
"ThePEG/Persistency/PersistentOStream.h"
#include
"ThePEG/Persistency/PersistentIStream.h"
using
namespace
Herwig
;
void
MSSM
::
persistentOutput
(
PersistentOStream
&
os
)
const
{
os
<<
theStopMix
<<
theSbotMix
<<
theStauMix
<<
theAlpha
<<
ounit
(
theAtop
,
GeV
)
<<
ounit
(
theAbottom
,
GeV
)
<<
ounit
(
theAtau
,
GeV
)
<<
theHiggsMix
;
}
void
MSSM
::
persistentInput
(
PersistentIStream
&
is
,
int
)
{
is
>>
theStopMix
>>
theSbotMix
>>
theStauMix
>>
theAlpha
>>
iunit
(
theAtop
,
GeV
)
>>
iunit
(
theAbottom
,
GeV
)
>>
iunit
(
theAtau
,
GeV
)
>>
theHiggsMix
;
}
ClassDescription
<
MSSM
>
MSSM
::
initMSSM
;
// Definition of the static class description member.
void
MSSM
::
Init
()
{
static
ClassDocumentation
<
MSSM
>
documentation
(
"The MSSM class is the base class for the MSSM model."
);
}
void
MSSM
::
createMixingMatrices
()
{
map
<
string
,
pair
<
MatrixSize
,
MixingVector
>
>::
const_iterator
it
;
for
(
it
=
mixings
().
begin
();
it
!=
mixings
().
end
();
++
it
)
{
string
name
=
it
->
first
;
// create the stop, sbottom and stau mixing matrices
if
(
name
==
"stopmix"
){
createMixingMatrix
(
theStopMix
,
name
,
it
->
second
.
second
,
it
->
second
.
first
);
}
else
if
(
name
==
"sbotmix"
)
{
createMixingMatrix
(
theSbotMix
,
name
,
it
->
second
.
second
,
it
->
second
.
first
);
}
else
if
(
name
==
"staumix"
)
{
createMixingMatrix
(
theStauMix
,
name
,
it
->
second
.
second
,
it
->
second
.
first
);
}
// Higgs mixing matrix in extended models
else
if
(
name
==
"nmhmix"
)
{
createMixingMatrix
(
theHiggsMix
,
name
,
it
->
second
.
second
,
it
->
second
.
first
);
}
}
// neutral higgs mixing if not already set
if
(
!
theHiggsMix
)
{
MixingVector
hmix
;
hmix
.
push_back
(
MixingElement
(
1
,
1
,
cos
(
theAlpha
)));
hmix
.
push_back
(
MixingElement
(
1
,
2
,
-
sin
(
theAlpha
)));
hmix
.
push_back
(
MixingElement
(
2
,
1
,
sin
(
theAlpha
)));
hmix
.
push_back
(
MixingElement
(
2
,
2
,
cos
(
theAlpha
)));
vector
<
long
>
ids
(
2
);
ids
[
0
]
=
25
;
ids
[
1
]
=
35
;
theHiggsMix
=
new_ptr
(
MixingMatrix
(
2
,
2
));
(
*
theHiggsMix
).
setIds
(
ids
);
}
// base class for neutralinos and charginos
SusyBase
::
createMixingMatrices
();
}
void
MSSM
::
adjustMixingMatrix
(
long
id
)
{
switch
(
id
)
{
case
1000006
:
case
2000006
:
if
(
theStopMix
)
theStopMix
->
adjustPhase
(
id
);
else
throw
SetupException
()
<<
"SusyBase::adjustMixingMatrix - "
<<
"The stop mixing matrix pointer is null!"
<<
Exception
::
runerror
;
break
;
case
1000005
:
case
2000005
:
if
(
theSbotMix
)
theSbotMix
->
adjustPhase
(
id
);
else
throw
SetupException
()
<<
"SusyBase::adjustMixingMatrix - "
<<
"The sbottom mixing matrix pointer is null!"
<<
Exception
::
runerror
;
break
;
case
1000015
:
case
2000015
:
if
(
theStauMix
)
theStauMix
->
adjustPhase
(
id
);
else
throw
SetupException
()
<<
"SusyBase::adjustMixingMatrix - "
<<
"The stau mixing matrix pointer is null!"
<<
Exception
::
runerror
;
break
;
default
:
SusyBase
::
adjustMixingMatrix
(
id
);
break
;
}
}
void
MSSM
::
extractParameters
(
bool
checkmodel
)
{
map
<
string
,
pair
<
MatrixSize
,
MixingVector
>
>::
const_iterator
it
;
// trilinear couplings
for
(
it
=
mixings
().
begin
();
it
!=
mixings
().
end
();
++
it
)
{
string
name
=
it
->
first
;
MixingVector
::
const_iterator
vit
;
if
(
name
==
"au"
)
{
theAtop
=
ZERO
;
for
(
vit
=
it
->
second
.
second
.
begin
();
vit
!=
it
->
second
.
second
.
end
();
++
vit
)
{
if
(
vit
->
row
==
3
&&
vit
->
col
==
3
)
theAtop
=
vit
->
value
*
GeV
;
}
}
else
if
(
name
==
"ad"
)
{
theAbottom
=
ZERO
;
for
(
vit
=
it
->
second
.
second
.
begin
();
vit
!=
it
->
second
.
second
.
end
();
++
vit
)
{
if
(
vit
->
row
==
3
&&
vit
->
col
==
3
)
theAbottom
=
vit
->
value
*
GeV
;
}
}
else
if
(
name
==
"ae"
)
{
theAtau
=
ZERO
;
for
(
vit
=
it
->
second
.
second
.
begin
();
vit
!=
it
->
second
.
second
.
end
();
++
vit
)
{
if
(
vit
->
row
==
3
&&
vit
->
col
==
3
)
theAtau
=
vit
->
value
*
GeV
;
}
}
}
// neutralino and chargino paramters in the base class
SusyBase
::
extractParameters
(
false
);
// check the model
map
<
string
,
ParamMap
>::
const_iterator
pit
;
pit
=
parameters
().
find
(
"modsel"
);
if
(
pit
==
parameters
().
end
())
return
;
// nmssm or mssm
ParamMap
::
const_iterator
jt
;
jt
=
pit
->
second
.
find
(
3
);
int
inmssm
=
jt
!=
pit
->
second
.
end
()
?
int
(
jt
->
second
)
:
0
;
// RPV
jt
=
pit
->
second
.
find
(
4
);
int
irpv
=
jt
!=
pit
->
second
.
end
()
?
int
(
jt
->
second
)
:
0
;
// CPV
jt
=
pit
->
second
.
find
(
5
);
int
icpv
=
jt
!=
pit
->
second
.
end
()
?
int
(
jt
->
second
)
:
0
;
// flavour violation
jt
=
pit
->
second
.
find
(
6
);
int
ifv
=
jt
!=
pit
->
second
.
end
()
?
int
(
jt
->
second
)
:
0
;
// the higgs mixing angle if not NMSSM
theAlpha
=
0.
;
if
(
inmssm
==
0
)
{
map
<
string
,
ParamMap
>::
const_iterator
pit
;
pit
=
parameters
().
find
(
"alpha"
);
if
(
pit
!=
parameters
().
end
())
{
ParamMap
::
const_iterator
it
=
pit
->
second
.
find
(
1
);
if
(
it
!=
pit
->
second
.
end
())
theAlpha
=
it
->
second
;
}
}
if
(
checkmodel
)
{
if
(
inmssm
!=
0
)
throw
Exception
()
<<
"R-parity, CP and flavour conserving MSSM model"
<<
" used but NMSSM read in "
<<
Exception
::
runerror
;
if
(
irpv
!=
0
)
throw
Exception
()
<<
"R-parity, CP and flavour conserving MSSM model"
<<
" used but RPV read in "
<<
Exception
::
runerror
;
if
(
icpv
!=
0
)
throw
Exception
()
<<
"R-parity, CP and flavour conserving MSSM model"
<<
" used but CPV read in "
<<
Exception
::
runerror
;
if
(
ifv
!=
0
)
throw
Exception
()
<<
"R-parity, CP and flavour conserving MSSM model"
<<
" used but flavour violation read in "
<<
Exception
::
runerror
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Tue, Sep 30, 4:41 AM (14 h, 8 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6563134
Default Alt Text
MSSM.cc (5 KB)
Attached To
Mode
rHERWIGHG herwighg
Attached
Detach File
Event Timeline
Log In to Comment