Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Docker-in-Docker (DinD) capabilities of public runners deactivated.
More info
Open sidebar
marty
marty-public
Commits
f66032e1
Commit
f66032e1
authored
May 13, 2021
by
Grégoire Uhlrich
Browse files
Model building fix in Field strength replacement
parent
b78a13ee
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
221 additions
and
178 deletions
+221
-178
csl/include/replace.h
csl/include/replace.h
+1
-1
csl/src/abreviation.cpp
csl/src/abreviation.cpp
+9
-7
csl/src/comparison.cpp
csl/src/comparison.cpp
+4
-6
csl/src/indicial.cpp
csl/src/indicial.cpp
+14
-9
csl/src/librarygenerator.cpp
csl/src/librarygenerator.cpp
+3
-15
csl/src/replace.cpp
csl/src/replace.cpp
+17
-4
csl/src/tensorField.cpp
csl/src/tensorField.cpp
+6
-3
marty/Makefile
marty/Makefile
+1
-1
marty/include/MSSM.h
marty/include/MSSM.h
+2
-1
marty/include/graph.h
marty/include/graph.h
+2
-2
marty/include/insertion.h
marty/include/insertion.h
+1
-1
marty/include/lagrangian.h
marty/include/lagrangian.h
+6
-0
marty/include/quantumField.h
marty/include/quantumField.h
+1
-2
marty/sgl/Makefile
marty/sgl/Makefile
+1
-1
marty/src/MSSM.cpp
marty/src/MSSM.cpp
+123
-107
marty/src/PMSSM.cpp
marty/src/PMSSM.cpp
+1
-0
marty/src/amplitudeInitializer.cpp
marty/src/amplitudeInitializer.cpp
+2
-2
marty/src/feynmanRule.cpp
marty/src/feynmanRule.cpp
+4
-0
marty/src/graph.cpp
marty/src/graph.cpp
+3
-3
marty/src/lagrangian.cpp
marty/src/lagrangian.cpp
+20
-13
No files found.
csl/include/replace.h
View file @
f66032e1
...
...
@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License
// along with MARTY. If not, see <https://www.gnu.org/licenses/>.
#pragma once
#pragma once
#include "abstract.h"
#include "index.h"
...
...
csl/src/abreviation.cpp
View file @
f66032e1
...
...
@@ -406,12 +406,15 @@ Expr Abbrev::makeAbbreviation(std::string name,
Expr
const
&
encapsulated
,
bool
split
)
{
if
(
encapsulated
->
size
()
==
0
)
// nothing to abbreviate
return
encapsulated
;
// Important refresh to ensure the mathematical equivalence between the
// expression tested here and the entering later the abbreviation
Expr
encaps
=
DeepRefreshed
(
encapsulated
);
if
(
encaps
->
size
()
==
0
)
// nothing to abbreviate
return
encaps
;
if
(
name
==
"Ab"
&&
split
&&
(
csl
::
IsSum
(
encaps
ulated
)
||
csl
::
IsProd
(
encaps
ulated
)))
{
const
size_t
size
=
csl
::
Size
(
encaps
ulated
);
&&
(
csl
::
IsSum
(
encaps
)
||
csl
::
IsProd
(
encaps
)))
{
const
size_t
size
=
csl
::
Size
(
encaps
);
std
::
vector
<
csl
::
Expr
>
abbrevs
;
std
::
vector
<
csl
::
Expr
>
numericals
;
std
::
vector
<
csl
::
Expr
>
funcs
;
...
...
@@ -419,7 +422,7 @@ Expr Abbrev::makeAbbreviation(std::string name,
std
::
vector
<
csl
::
Expr
>
tensors
;
std
::
vector
<
csl
::
Expr
>
others
;
for
(
size_t
i
=
0
;
i
!=
size
;
++
i
)
{
auto
const
&
arg
=
encaps
ulated
[
i
];
auto
const
&
arg
=
encaps
[
i
];
if
(
isAnAbbreviation
(
arg
))
{
abbrevs
.
push_back
(
arg
);
}
...
...
@@ -439,7 +442,7 @@ Expr Abbrev::makeAbbreviation(std::string name,
others
.
push_back
(
arg
);
}
}
bool
isProd
=
csl
::
IsProd
(
encaps
ulated
);
bool
isProd
=
csl
::
IsProd
(
encaps
);
std
::
vector
<
csl
::
Expr
>
last
(
6
);
last
[
0
]
=
makeSubAbbrev
(
abbrevs
,
isProd
);
last
[
1
]
=
makeSubAbbrev
(
funcs
,
isProd
);
...
...
@@ -459,7 +462,6 @@ Expr Abbrev::makeAbbreviation(std::string name,
// auto res = makeAbbreviation(name, comb, false);
// return res;
}
Expr
encaps
=
DeepRefreshed
(
encapsulated
);
if
(
avoidDuplicates
)
{
if
(
auto
ab
=
findExisting
(
name
,
encaps
);
ab
)
return
ab
.
value
();
...
...
csl/src/comparison.cpp
View file @
f66032e1
...
...
@@ -13,6 +13,7 @@
// You should have received a copy of the GNU General Public License
// along with MARTY. If not, see <https://www.gnu.org/licenses/>.
#include "scopedProperty.h"
#include "comparison.h"
#include "indicial.h"
#include "utils.h"
...
...
@@ -159,13 +160,12 @@ bool Comparator::compare(const Index& A, const Index& B)
return
true
;
}
else
{
freeIndexComparisonActive
=
false
;
csl
::
ScopedProperty
prop
(
&
freeIndexComparisonActive
,
false
)
;
if
(
indexCorrespondance
[
A
]
==
B
)
if
(
indexCorrespondance
.
find
(
B
)
==
indexCorrespondance
.
end
())
{
indexCorrespondance
[
B
]
=
A
;
return
true
;
}
freeIndexComparisonActive
=
true
;
}
return
false
;
...
...
@@ -184,13 +184,12 @@ bool Comparator::compare(const Index& A, const Index& B)
}
else
{
// Deactivating freeIndexComparison here in order to compare exactly.
freeIndexComparisonActive
=
false
;
csl
::
ScopedProperty
prop
(
&
freeIndexComparisonActive
,
false
)
;
if
(
indexCorrespondance
[
A
]
==
B
)
if
(
indexCorrespondance
.
find
(
B
)
==
indexCorrespondance
.
end
())
{
indexCorrespondance
[
B
]
=
A
;
return
true
;
}
freeIndexComparisonActive
=
true
;
}
return
false
;
...
...
@@ -222,11 +221,10 @@ bool Comparator::dummyVecIntComparison(Expr_info A, Expr_info B)
bool
Comparator
::
freeIndexComparison
(
Expr_info
A
,
Expr_info
B
)
{
freeIndexComparisonActive
=
true
;
csl
::
ScopedProperty
prop
(
&
freeIndexComparisonActive
,
true
)
;
bool
rep
=
A
->
operator
==
(
B
);
// rep = rep and indexCorrespondance.empty();
indexCorrespondance
.
clear
();
freeIndexComparisonActive
=
false
;
return
rep
;
}
...
...
csl/src/indicial.cpp
View file @
f66032e1
...
...
@@ -3147,9 +3147,12 @@ bool ISum::isIndexed() const
IndexStructure
ISum
::
getIndexStructure
()
const
{
if
(
argument
.
size
()
>
0
)
return
argument
[
0
]
->
getIndexStructure
();
return
IndexStructure
();
auto
arg
=
argument
.
begin
();
while
(
arg
!=
argument
.
end
())
{
if
(
*
arg
!=
CSL_0
)
return
(
**
arg
).
getIndexStructure
();
++
arg
;
}
return
{};
}
void
ISum
::
selfCheckIndexStructure
()
...
...
@@ -3176,12 +3179,14 @@ void ISum::selfCheckIndexStructure()
selfCheckIndexStructure
();
return
;
}
cout
<<
structure
<<
endl
;
cout
<<
(
**
arg
).
getFreeIndexStructure
()
<<
endl
;
std
::
cout
<<
argument
[
i
]
<<
std
::
endl
;
std
::
cout
<<
*
arg
<<
std
::
endl
;
std
::
cout
<<
csl
::
DeepRefreshed
(
argument
[
i
])
<<
'\n'
;
std
::
cout
<<
csl
::
DeepRefreshed
(
*
arg
)
<<
'\n'
;
std
::
cerr
<<
"In : "
<<
'\n'
;
print
();
std
::
cerr
<<
structure
<<
endl
;
std
::
cerr
<<
(
**
arg
).
getFreeIndexStructure
()
<<
endl
;
std
::
cerr
<<
argument
[
i
]
<<
std
::
endl
;
std
::
cerr
<<
*
arg
<<
std
::
endl
;
std
::
cerr
<<
csl
::
Evaluated
(
argument
[
i
],
csl
::
eval
::
abbreviation
)
<<
'\n'
;
std
::
cerr
<<
csl
::
Evaluated
(
*
arg
,
csl
::
eval
::
abbreviation
)
<<
'\n'
;
callError
(
cslError
::
InvalidIndicialSum
,
"Sum::selfCheckIndexStructure() const"
);
}
...
...
csl/src/librarygenerator.cpp
View file @
f66032e1
...
...
@@ -705,13 +705,7 @@ namespace csl {
std
::
string
LibraryGenerator
::
getFunctionFileName
(
LibFunction
const
&
f
)
const
{
std
::
string
res
;
for
(
const
char
c
:
f
.
getName
())
if
(
c
>=
'A'
and
c
<=
'Z'
)
res
+=
c
+
'a'
-
'A'
;
else
res
+=
c
;
return
res
;
return
f
.
getName
();
}
std
::
string
LibraryGenerator
::
getGroupFileName
(
...
...
@@ -908,14 +902,8 @@ namespace csl {
void
LibraryGenerator
::
printFunction
(
LibFunction
const
&
f
)
const
{
std
::
string
nameHeader
;
std
::
string
nameSource
;
for
(
const
char
c
:
f
.
getName
())
if
(
c
>=
'A'
and
c
<=
'Z'
)
nameHeader
+=
c
+
'a'
-
'A'
;
else
nameHeader
+=
c
;
nameSource
=
nameHeader
;
std
::
string
nameHeader
=
f
.
getName
();
std
::
string
nameSource
=
nameHeader
;
nameHeader
+=
".h"
;
nameSource
+=
".cpp"
;
...
...
csl/src/replace.cpp
View file @
f66032e1
...
...
@@ -109,9 +109,13 @@ namespace csl {
return
;
}
csl
::
WeakDeepCopy
(
expr
);
auto
cc
=
&
csl
::
GetComplexConjugate
;
auto
conditionalCC
=
[
&
](
csl
::
Expr
const
&
sub
)
{
if
(
sub
->
isComplexConjugate
())
return
CSL_UNDEF
;
return
csl
::
GetComplexConjugate
(
sub
);
};
std
::
vector
<
csl
::
Expr
>
ccFrom
(
from
.
size
());
std
::
transform
(
from
.
begin
(),
from
.
end
(),
ccFrom
.
begin
(),
c
c
);
std
::
transform
(
from
.
begin
(),
from
.
end
(),
ccFrom
.
begin
(),
c
onditionalCC
);
applyThroughAbbreviations
(
expr
,
[
&
](
csl
::
Expr
const
&
sub
,
bool
isPredicate
)
{
...
...
@@ -359,7 +363,16 @@ namespace csl {
)
{
auto
parent
=
expr
->
getParent_info
();
auto
posF
=
std
::
find
(
begin
(
parentFrom
),
end
(
parentFrom
),
parent
);
auto
posF
=
end
(
parentFrom
);
for
(
size_t
i
=
0
;
i
!=
from
.
size
();
++
i
)
{
if
(
parent
!=
parentFrom
[
i
])
continue
;
// If replacement from complex conjugate, expr must also be
if
(
from
[
i
]
->
isComplexConjugate
()
&&
!
expr
->
isComplexConjugate
())
continue
;
posF
=
begin
(
parentFrom
)
+
i
;
break
;
}
if
(
posF
!=
end
(
parentFrom
))
{
if
(
isPredicate
)
return
CSL_UNDEF
;
...
...
@@ -370,7 +383,7 @@ namespace csl {
IndexStructure
structureToSave
=
expr
->
getIndexStructure
();
Expr
newSub
=
csl
::
DeepCopy
(
res
);
RenameIndices
(
newSub
);
if
(
expr
->
isComplexConjugate
())
if
(
expr
->
isComplexConjugate
()
!=
from
[
i
]
->
isComplexConjugate
()
)
newSub
=
GetComplexConjugate
(
newSub
);
if
(
not
structureToSave
.
empty
())
csl
::
ApplyIndices
(
...
...
csl/src/tensorField.cpp
View file @
f66032e1
...
...
@@ -861,13 +861,16 @@ bool TensorFieldElement::operator==(Expr_info expr) const
}
if
(
expr
->
getType
()
!=
getType
()
or
parent
!=
expr
->
getParent
()
or
point
!=
expr
->
getPoint
())
or
point
!=
expr
->
getPoint
())
{
return
false
;
}
if
(
not
Complexified
::
operator
==
(
expr
))
return
false
;
if
(
Comparator
::
getFreeIndexComparisonActive
())
return
index
.
compareWithDummy
(
expr
->
getIndexStructure
(),
if
(
Comparator
::
getFreeIndexComparisonActive
())
{
return
index
.
compareWithDummy
(
expr
->
getIndexStructure
(),
Comparator
::
indexCorrespondance
);
}
if
(
not
index
.
exactMatch
(
expr
->
getIndexStructure
()))
return
false
;
...
...
marty/Makefile
View file @
f66032e1
...
...
@@ -10,7 +10,7 @@ DYNAMICLIBRARY = libmarty.so
LTVERSION
=
2.15
CXXDEBUG
=
$(CXX)
-g
# -D DEBUG
CXXFLAGS
=
$(MARTY_CXX_FLAGS)
-Wall
-Wextra
-Wpedantic
-std
=
c++17
-O3
-fPIC
-Wfatal-errors
CXXFLAGS
=
$(MARTY_CXX_FLAGS)
-Wall
-Wextra
-Wpedantic
-std
=
c++17
-O3
-fPIC
-Wfatal-errors
-DDEBUGLOG
SRCDIR
=
src
HEADDIR
=
include
...
...
marty/include/MSSM.h
View file @
f66032e1
...
...
@@ -280,7 +280,7 @@ public:
protected:
csl
::
Expr
cc
(
csl
::
Expr
const
&
init
)
{
static
csl
::
Expr
cc
(
csl
::
Expr
const
&
init
)
{
return
csl
::
GetComplexConjugate
(
init
);
}
...
...
@@ -339,6 +339,7 @@ protected:
void
promoteMajoranas
();
void
diagonalizeSFermions
();
void
renameSFermions
();
void
generateDiracFermions
();
friend
std
::
ostream
&
operator
<<
(
...
...
marty/include/graph.h
View file @
f66032e1
...
...
@@ -803,7 +803,7 @@ class WickCalculator {
std
::
vector
<
mty
::
FeynruleMomentum
>&
witnessMapping
,
bool
ruleMode
=
true
);
static
std
::
vector
<
mty
::
FeynmanDiagram
>
getDiagrams
_
(
static
std
::
vector
<
mty
::
FeynmanDiagram
>
getDiagrams
(
mty
::
Model
const
*
model
,
const
csl
::
Expr
&
initialExpr
,
std
::
map
<
csl
::
Tensor
,
size_t
>&
vertexIds
,
...
...
@@ -811,7 +811,7 @@ class WickCalculator {
bool
symmetriseExternalLegs
=
false
,
bool
ruleMode
=
true
);
static
std
::
vector
<
mty
::
FeynmanDiagram
>
getDiagrams
_
(
static
std
::
vector
<
mty
::
FeynmanDiagram
>
getDiagrams
(
mty
::
Model
const
*
model
,
const
csl
::
Expr
&
initialExpr
,
std
::
map
<
csl
::
Tensor
,
size_t
>&
vertexIds
,
...
...
marty/include/insertion.h
View file @
f66032e1
...
...
@@ -77,7 +77,7 @@ class Insertion {
bool
isOutgoingParticle
()
const
{
return
!
isIncoming
()
&&
isParticle
();
}
bool
isOutoingAntiParticle
()
const
{
bool
isOut
g
oingAntiParticle
()
const
{
return
!
isIncoming
()
&&
!
isParticle
();
}
...
...
marty/include/lagrangian.h
View file @
f66032e1
...
...
@@ -124,6 +124,12 @@ class Lagrangian {
static
void
mergeTerms
(
std
::
vector
<
TermType
>&
terms
);
protected:
void
ensurePoint
(
csl
::
Expr
&
expr
);
void
ensurePoint
(
InteractionTerm
&
term
);
};
inline
...
...
marty/include/quantumField.h
View file @
f66032e1
...
...
@@ -942,8 +942,7 @@ class QuantumFieldParent: public csl::TensorFieldParent {
* indices.
* \sa getFullSetOfIndices(), operator()().
*/
csl
::
Expr
getInstance
(
csl
::
Tensor
point
=
csl
::
tensor_s
(
"X"
,
&
csl
::
Minkowski
));
csl
::
Expr
getInstance
(
csl
::
Tensor
point
=
defaultSpaceTimePoint
);
/*!
* \brief Sets the integrated out property of the field.
...
...
marty/sgl/Makefile
View file @
f66032e1
...
...
@@ -4,7 +4,7 @@ CXX = g++-7
VERSION
=
1.0
CXXDEBUG
=
$(CXX)
-g
-D
DEBUG
CFLAGS
=
-Wall
-Wextra
-Wpedantic
-std
=
c++17
-O3
-fPIC
#
-DDEBUGLOG
CFLAGS
=
-Wall
-Wextra
-Wpedantic
-std
=
c++17
-O3
-fPIC
-DDEBUGLOG
SRCDIR
=
src
HEADDIR
=
include
...
...
marty/src/MSSM.cpp
View file @
f66032e1
...
...
@@ -128,8 +128,8 @@ void MSSM_Model::initGaugeAndFlavor()
}
void
MSSM_Model
::
initGauginos
()
{
s_B
=
mty
::
weylfermion_s
(
"
~B
"
,
B
->
getGaugeIrrep
(),
Chirality
::
Left
);
s_Wi
=
mty
::
weylfermion_s
(
"
~W
"
,
Wi
->
getGaugeIrrep
(),
Chirality
::
Left
);
s_B
=
mty
::
weylfermion_s
(
"
sB ;
\\
tilde{B}
"
,
B
->
getGaugeIrrep
(),
Chirality
::
Left
);
s_Wi
=
mty
::
weylfermion_s
(
"
sW ;
\\
tilde{W}
"
,
Wi
->
getGaugeIrrep
(),
Chirality
::
Left
);
s_G
=
mty
::
weylfermion_s
(
"sG;
\\
tilde{G}"
,
G
->
getGaugeIrrep
(),
Chirality
::
Left
);
s_B
->
setSelfConjugate
(
true
);
s_Wi
->
setSelfConjugate
(
true
);
...
...
@@ -167,11 +167,11 @@ void MSSM_Model::initLeptons()
void
MSSM_Model
::
initSLeptons
()
{
s_Li
=
mty
::
scalarboson_s
(
"
~
L_L"
,
"
sL_L ;
\\
tilde{
L_L
}
"
,
Li
->
getGaugeIrrep
(),
Li
->
getFlavorIrrep
());
s_Ei
=
mty
::
scalarboson_s
(
"
~
E_R"
,
"
sE_R ;
\\
tilde{
E_R
}
"
,
Ei
->
getGaugeIrrep
(),
Ei
->
getFlavorIrrep
());
...
...
@@ -222,15 +222,15 @@ void MSSM_Model::initQuarks()
void
MSSM_Model
::
initSQuarks
()
{
s_Qi
=
mty
::
scalarboson_s
(
"
~
Q_L"
,
"
sQ_L ;
\\
tilde{
Q_L
}
"
,
Qi
->
getGaugeIrrep
(),
Qi
->
getFlavorIrrep
());
s_Ui
=
mty
::
scalarboson_s
(
"
~
U_R"
,
"
sU_R ;
\\
tilde{
U_R
}
"
,
Ui
->
getGaugeIrrep
(),
Ui
->
getFlavorIrrep
());
s_Di
=
mty
::
scalarboson_s
(
"
~
D_R"
,
"
sD_R ;
\\
tilde{
D_R
}
"
,
Di
->
getGaugeIrrep
(),
Di
->
getFlavorIrrep
());
...
...
@@ -277,13 +277,13 @@ void MSSM_Model::initHiggs()
Hu
=
mty
::
scalarboson_s
(
"Hu"
,
*
this
);
Hu
->
setGroupRep
(
"L"
,
1
);
Hu
->
setGroupRep
(
"Y"
,
{
1
,
2
});
m_sHu
=
csl
::
constant_s
(
"m_
~
Hu"
);
m_sHu
=
csl
::
constant_s
(
"m_
s
Hu"
);
Hu
->
setMass
(
m_sHu
);
Hd
=
mty
::
scalarboson_s
(
"Hd"
,
*
this
);
Hd
->
setGroupRep
(
"L"
,
1
);
Hd
->
setGroupRep
(
"Y"
,
{
-
1
,
2
});
m_sHd
=
csl
::
constant_s
(
"m_
~
Hd"
);
m_sHd
=
csl
::
constant_s
(
"m_
s
Hd"
);
Hd
->
setMass
(
m_sHd
);
addParticles
({
Hu
,
Hd
});
...
...
@@ -291,12 +291,12 @@ void MSSM_Model::initHiggs()
void
MSSM_Model
::
initHiggsinos
()
{
s_Hu
=
mty
::
weylfermion_s
(
"
~
Hu"
,
"
s
Hu
;
\\
tilde{Hu}
"
,
Hu
->
getGaugeIrrep
(),
Hd
->
getFlavorIrrep
(),
Chirality
::
Left
);
s_Hd
=
mty
::
weylfermion_s
(
"
~
Hd"
,
"
s
Hd
;
\\
tilde{Hd}
"
,
Hd
->
getGaugeIrrep
(),
Hd
->
getFlavorIrrep
(),
Chirality
::
Left
);
...
...
@@ -952,6 +952,7 @@ void MSSM_Model::getToLowEnergyLagrangian()
csl
::
ScopedProperty
p
(
&
mty
::
InteractionTerm
::
abbreviateFactors
,
true
);
diagonalizeSFermions
();
renameSFermions
();
generateDiracFermions
();
gatherMasses
();
promoteToGoldstone
(
"G^+"
,
"W"
);
...
...
@@ -965,28 +966,30 @@ void MSSM_Model::breakSU2LGaugeSymmetry()
{
"Hu"
,
"Hd"
,
"W"
,
"c_A_L"
,
"Q_L"
,
"L_L"
,
"
~
Hu"
,
"
~
Hd"
,
"
~
W"
,
"
~
Q_L"
,
"
~
L_L"
},
"
s
Hu"
,
"
s
Hd"
,
"
s
W"
,
"
s
Q_L"
,
"
s
L_L"
},
{{
"H
_u^+
"
,
"H
_u^
0"
},
{
"H
_d^
0"
,
"H
_d^-
"
},
{
"W
^
1"
,
"W
^
2"
,
"W
^
3"
},
{{
"H
up
"
,
"H
u
0"
},
{
"H
d
0"
,
"H
dm
"
},
{
"W1"
,
"W2"
,
"W3"
},
{
"c_W_1"
,
"c_W_2"
,
"c_W_3"
},
{
"U_L"
,
"D_L"
},
{
"
\\
Nu _L"
,
"E_L"
},
{
"~H_u^+"
,
"~H_u^0"
},
{
"~H_d^0"
,
"~H_d^-"
},
{
"~W^1"
,
"~W^2"
,
"~W^3"
},
{
"~U_L"
,
"~D_L"
},
{
"~
\\
Nu _L"
,
"~E_L"
}});
getParticle
(
"~H_u^0"
)
->
setSelfConjugate
(
true
);
getParticle
(
"~H_d^0"
)
->
setSelfConjugate
(
true
);
{
"Nu_L ;
\\
Nu_L"
,
"E_L"
},
{
"sHup ;
\\
tilde{H}_u^+"
,
"sHu0 ;
\\
tilde{H}_u^0"
},
{
"sHd0 ;
\\
tilde{H}_d^0"
,
"sHdm ;
\\
tilde{H}_d^-"
},
{
"sW1 ;
\\
tilde{W}"
,
"sW2 ;
\\
tilde{W}^2"
,
"sW3 ;
\\
tilde{W}^3"
},
{
"sU_L ;
\\
tilde{U}_L"
,
"sD_L ;
\\
tilde{D}_L"
},
{
"sNu_L ;
\\
tilde{
\\
Nu}_L"
,
"sE_L ;
\\
tilde{E}_L"
}});
getParticle
(
"sHu0"
)
->
setSelfConjugate
(
true
);
getParticle
(
"sHd0"
)
->
setSelfConjugate
(
true
);
}
void
MSSM_Model
::
replaceWBoson
()
{
Particle
W1
=
GetParticle
(
*
this
,
"W
^
1"
);
Particle
W2
=
GetParticle
(
*
this
,
"W
^
2"
);
Particle
W1
=
GetParticle
(
*
this
,
"W1"
);
Particle
W2
=
GetParticle
(
*
this
,
"W2"
);
Particle
W_SM
=
GenerateSimilarParticle
(
"W; W^+"
,
W1
);
SetSelfConjugate
(
W_SM
,
false
);
...
...
@@ -1010,10 +1013,10 @@ void MSSM_Model::replaceWBoson()
GetFieldStrength
(
W2
),
CSL_I
*
(
F_W_p
-
F_W_m
)
/
csl
::
sqrt_s
(
2
));
Particle
s_W1
=
GetParticle
(
*
this
,
"
~W^
1"
);
Particle
s_W2
=
GetParticle
(
*
this
,
"
~W^
2"
);
Particle
s_W
=
GenerateSimilarParticle
(
"sWp ;
\\
tilde{W^+
}
"
,
s_W1
);
Particle
s_Wc
=
GenerateSimilarParticle
(
"sWm ;
\\
tilde{W^-
}
"
,
s_W2
);
Particle
s_W1
=
GetParticle
(
*
this
,
"
sW
1"
);
Particle
s_W2
=
GetParticle
(
*
this
,
"
sW
2"
);
Particle
s_W
=
GenerateSimilarParticle
(
"sWp ;
\\
tilde{W
}
^+"
,
s_W1
);
Particle
s_Wc
=
GenerateSimilarParticle
(
"sWm ;
\\
tilde{W
}
^-"
,
s_W2
);
s_W
->
setSelfConjugate
(
false
);
s_Wc
->
setSelfConjugate
(
false
);
csl
::
Index
alpha
=
mty
::
DiracIndex
();
...
...
@@ -1030,14 +1033,14 @@ void MSSM_Model::replaceWBoson()
void
MSSM_Model
::
expandAroundVEVs
()
{
v_h
=
sm_input
::
v
;
beta_h
=
csl
::
constant_s
(
"
\\
beta"
);
beta_h
=
csl
::
constant_s
(
"beta"
);
csl
::
Expr
vu
=
v_h
*
csl
::
sin_s
(
beta_h
);
csl
::
Expr
vd
=
v_h
*
csl
::
cos_s
(
beta_h
);
Particle
Hu0
=
GetParticle
(
*
this
,
"H
_u^
0"
);
Particle
Hup
=
GetParticle
(
*
this
,
"H
_u^+
"
);
Particle
Hdm
=
GetParticle
(
*
this
,
"H
_d^-
"
);
Particle
Hd0
=
GetParticle
(
*
this
,
"H
_d^
0"
);
Particle
Hu0
=
GetParticle
(
*
this
,
"H
u
0"
);
Particle
Hup
=
GetParticle
(
*
this
,
"H
up
"
);
Particle
Hdm
=
GetParticle
(
*
this
,
"H
dm
"
);
Particle
Hd0
=
GetParticle
(
*
this
,
"H
d
0"
);
Particle
phi_u_c
=
scalarboson_s
(
"phi_u;
\\
phi _u^+"
,
*
this
);
Particle
phi_d_c
=
scalarboson_s
(
"phi_d;
\\
phi _d^+"
,
*
this
);
...
...
@@ -1073,29 +1076,15 @@ void MSSM_Model::expandAroundVEVs()
void
MSSM_Model
::
diagonalize2By2Matrices
()
{
diagonalizeSymbolically
(
"B"
);
renameParticle
(
"W
^
3"
,
"Z"
);
renameParticle
(
"W3"
,
"Z"
);
renameParticle
(
"B"
,
"A"
);
// diagonalizeSymbolically("\\eta _u", true);
// renameParticle("\\eta _u", "A^0");
// renameParticle("\\eta _d", "G^0");
// diagonalizeSymbolically("\\phi _u^+", true);
// renameParticle("\\phi _u^+", "H^+");
// renameParticle("\\phi _d^+", "G^+");
csl
::
Expr
mu_2
=
cc
(
mu_h
)
*
mu_h
;
csl
::
Expr
MZ2
=
csl
::
pow_s
(
sm_input
::
M_Z
,
2
);
Replaced
(
*
this
,
g_L
*
g_L
+
g_Y
*
g_Y
,
4
*
MZ2
/
(
v_h
*
v_h
));
csl
::
Expr
c2beta
=
1
-
2
*
csl
::
pow_s
(
csl
::
sin_s
(
beta_h
),
2
);
// Replaced(*this,
// MZ2,
// csl::Expanded((m_sHu*m_sHu - m_sHd*m_sHd)/c2beta)
// - m_sHu*m_sHu
// - m_sHd*m_sHd
// - 2*mu_2);
Replaced
(
*
this
,
m_sHu
,
csl
::
sqrt_s
(
M_A0
*
M_A0
-
m_sHd
*
m_sHd
-
2
*
mu_2
));
...
...
@@ -1139,7 +1128,7 @@ void MSSM_Model::diagonalize2By2Matrices()
mty
::
Particle
H
=
scalarboson_s
(
"H0; H^0"
,
*
this
);
mty
::
SetSelfConjugate
(
h
,
true
);
mty
::
SetSelfConjugate
(
H
,
true
);
alpha_h
=
csl
::
constant_s
(
"alpha
;
\\
alpha
"
);
alpha_h
=
csl
::
constant_s
(
"alpha"
);
rotateFields
(
{
rho_u
,
rho_d
},
{
h
,
H
},
...
...
@@ -1157,15 +1146,15 @@ void MSSM_Model::diagonalize2By2Matrices()
}
void
MSSM_Model
::
diagonalizeYukawas
()
{
m_e
=
sm_input
::
m_e
;
// csl::constant_s("m_e");
m_mu
=
sm_input
::
m_mu
;
// csl::constant_s("m_\\mu");
m_tau
=
sm_input
::
m_tau
;
// csl::constant_s("m_\\tau");
m_u
=
sm_input
::
m_u
;
// csl::constant_s("m_u");
m_c
=
sm_input
::
m_c
;
// csl::constant_s("m_c");
m_t
=
sm_input
::
m_t
;
// csl::constant_s("m_t");
m_d
=
sm_input
::
m_d
;
// csl::constant_s("m_d");
m_s
=
sm_input
::
m_s
;
// csl::constant_s("m_s");
m_b
=
sm_input
::
m_b
;
// csl::constant_s("m_b");
m_e
=
sm_input
::
m_e
;
m_mu
=
sm_input
::
m_mu
;
m_tau
=
sm_input
::
m_tau
;
m_u
=
sm_input
::
m_u
;
m_c
=
sm_input
::
m_c
;
m_t
=
sm_input
::
m_t
;
m_d
=
sm_input
::
m_d
;
m_s
=
sm_input
::
m_s
;
m_b
=
sm_input
::
m_b
;
const
csl
::
Space
*
flavorSpace
=
csl
::
GetSpace
(
Ye
);
csl
::
Tensor
M_e
=
csl
::
tensor_s
(
...
...
@@ -1225,8 +1214,8 @@ void MSSM_Model::diagonalizeYukawas()
mty
::
Particle
D_L
=
GetParticle
(
*
this
,
"D_L"
);
mty
::
Particle
D_R
=
GetParticle
(
*
this
,
"D_R"
);
mty
::
Particle
sD_L
=
GetParticle
(
*
this
,
"
~
D_L"
);
mty
::
Particle
sD_R
=
GetParticle
(
*
this
,
"
~
D_R"
);
mty
::
Particle
sD_L
=
GetParticle
(
*
this
,
"
s
D_L"
);
mty
::
Particle
sD_R
=
GetParticle
(
*
this
,
"
s
D_R"
);
csl
::
Index
a1
=
DiracIndex
();
csl
::
Index
A
=
generateIndex
(
"C"
,
D_L
);
...
...
@@ -1281,8 +1270,8 @@ void MSSM_Model::breakSMFlavorSymmetry()
*
this
,
"SM_flavor"
,
{
"U_L"
,
"U_R"
,
"D_L"
,
"D_R"
,
"E_L"
,
"E_R"
,
"
\\
Nu
_L"
,
"
~
U_L"
,
"
~
U_R"
,
"
~
D_L"
,
"
~
D_R"
,
"
~
E_L"
,
"
~
E_R"
,
"
~
\\
Nu
_L"
},
{
"U_L"
,
"U_R"
,
"D_L"
,
"D_R"
,
"E_L"
,
"E_R"
,
"Nu_L"
,
"
s
U_L"
,
"
s
U_R"
,
"
s
D_L"
,
"
s
D_R"
,
"
s
E_L"
,
"
s
E_R"
,
"
s
Nu_L"
},
{{
"u_L"
,
"c_L"
,
"t_L"
},
{
"u_R"
,
"c_R"
,
"t_R"
},
...
...
@@ -1290,42 +1279,45 @@ void MSSM_Model::breakSMFlavorSymmetry()
{
"d_R"
,
"s_R"
,
"b_R"
},
{
"e_L"
,
"mu_L;
\\
mu_L"
,
"tau_L;
\\
tau_L"
},
{
"e_R"
,
"mu_R;
\\
mu_R"
,
"tau_R;
\\
tau_R"
},
{
"nu_e_L;
\\
nu_{eL}"
,
"nu_mu_L;
\\
nu_{
\\
mu L}"
,
"nu_tau_L;
\\
nu_{
\\
tau L}"
},
{
"su_L;
\\
tilde{u_L}"
,
"sc_L;
\\
tilde{c_L}"
,
"st_L;
\\
tilde{t_L}"
},
{
"su_R;
\\
tilde{u_R}"
,
"sc_R;
\\
tilde{c_R}"
,
"st_R;
\\
tilde{t_R}"
},
{
"sd_L;
\\
tilde{d_L}"
,
"ss_L;
\\
tilde{s_L}"
,
"sb_L;
\\
tilde{b_L}"
},
{
"sd_R;
\\
tilde{d_R}"
,
"ss_R;
\\
tilde{s_R}"
,
"sb_R;
\\
tilde{b_R}"
},
{
"se_L;
\\
tilde{e_L}"
,
"smu_L;
\\
tilde{
\\
mu_L}"
,
"stau_L;
\\
tilde{
\\
tau_L}"
},
{
"se_R;
\\
tilde{e_R}"
,
"smu_R;
\\
tilde{
\\
mu_R}"
,
"stau_R;
\\
tilde{
\\
tau_R}"
},
{
"snu_e_L;
\\
tilde{
\\
nu_{eL}}"
,
"snu_mu_L;
\\
tilde{
\\
nu_{
\\
mu L}}"
,
"snu_tau_L;
\\
tilde{
\\
nu_{
\\
tau L}}"
}});
{
"nu_e;
\\
nu_{eL}"
,
"nu_mu;
\\
nu_{
\\
mu L}"
,
"nu_tau;
\\
nu_{
\\
tau L}"
},
{
"su_L;
\\
tilde{u}_L"
,
"sc_L;
\\
tilde{c}_L"
,
"st_L;
\\
tilde{t}_L"
},
{
"su_R;
\\
tilde{u}_R"
,
"sc_R;
\\
tilde{c}_R"
,
"st_R;
\\
tilde{t}_R"
},
{
"sd_L;
\\
tilde{d}_L"
,
"ss_L;
\\
tilde{s}_L"
,
"sb_L;
\\
tilde{b}_L"
},
{
"sd_R;
\\
tilde{d}_R"
,
"ss_R;
\\
tilde{s}_R"
,
"sb_R;
\\
tilde{b}_R"
},
{
"se_L;
\\
tilde{e}_L"
,
"smu_L;
\\
tilde{
\\
mu}_L"
,
"stau_L;
\\
tilde{
\\
tau}_L"
},
{
"se_R;
\\
tilde{e}_R"
,
"smu_R;
\\
tilde{
\\
mu}_R"
,
"stau_R;
\\
tilde{
\\
tau}_R"
},
{
"snu_e;
\\
tilde{
\\
nu}_{eL}"
,
"snu_mu;
\\
tilde{
\\
nu}_{
\\
mu L}"
,
"snu_tau;
\\
tilde{
\\
nu}_{
\\
tau L}"
}});
}
void
MSSM_Model
::
diagonalizeNeutralinos
()
{
mty
::
Particle
N1_init
=
getParticle
(
"
~
B"
);