EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
src
EvtGenBase
EvtHighSpinParticle.cpp
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4
* *
5
* This file is part of EvtGen. *
6
* *
7
* EvtGen is free software: you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation, either version 3 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* EvtGen is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19
***********************************************************************/
20
21
#include "
EvtGenBase/EvtHighSpinParticle.hh
"
22
23
#include "
EvtGenBase/EvtPDL.hh
"
24
#include "
EvtGenBase/EvtSpinDensity.hh
"
25
#include "
EvtGenBase/EvtVector4R.hh
"
26
#include "
EvtGenBase/EvtdFunction.hh
"
27
28
#include <assert.h>
29
#include <iostream>
30
#include <math.h>
31
32
void
EvtHighSpinParticle::init
(
EvtId
id
,
const
EvtVector4R
& p4 )
33
{
34
m_validP4
=
true
;
35
setp
( p4 );
36
setpart_num
(
id
);
37
38
setLifetime
();
39
}
40
41
EvtSpinDensity
EvtHighSpinParticle::rotateToHelicityBasis
()
const
42
{
43
int
n =
EvtSpinType::getSpinStates
(
EvtPDL::getSpinType
(
getId
() ) );
44
45
EvtSpinDensity
R;
46
R.
setDiag
( n );
47
48
return
R;
49
}
50
51
EvtSpinDensity
EvtHighSpinParticle::rotateToHelicityBasis
(
double
alpha,
52
double
beta,
53
double
gamma )
const
54
{
55
int
n =
EvtSpinType::getSpinStates
(
EvtPDL::getSpinType
(
getId
() ) );
56
57
EvtSpinDensity
R;
58
59
R.
setDim
( n );
60
61
int
J2 =
EvtSpinType::getSpin2
(
EvtPDL::getSpinType
(
getId
() ) );
62
63
assert( n == J2 + 1 );
64
65
auto
lambda2 = [J2](
int
i ) {
return
J2 - i * 2; };
66
67
for
(
int
i = 0; i < n; i++ ) {
68
for
(
int
j = 0; j < n; j++ ) {
69
R.
set
( i, j,
70
EvtdFunction::d
( J2, lambda2( j ), lambda2( i ), beta ) *
71
exp
(
EvtComplex
( 0.0, 0.5 * ( alpha * lambda2( i ) -
72
gamma * lambda2( j ) ) ) ) );
73
}
74
}
75
76
return
R;
77
}
exp
EvtComplex exp(const EvtComplex &c)
Definition
EvtComplex.hh:242
EvtHighSpinParticle.hh
EvtPDL.hh
EvtSpinDensity.hh
EvtVector4R.hh
EvtdFunction.hh
EvtComplex
Definition
EvtComplex.hh:29
EvtHighSpinParticle::rotateToHelicityBasis
EvtSpinDensity rotateToHelicityBasis() const override
Definition
EvtHighSpinParticle.cpp:41
EvtHighSpinParticle::init
void init(EvtId id, const EvtVector4R &p) override
Definition
EvtHighSpinParticle.cpp:32
EvtId
Definition
EvtId.hh:27
EvtPDL::getSpinType
static EvtSpinType::spintype getSpinType(EvtId i)
Definition
EvtPDL.cpp:371
EvtParticle::getId
EvtId getId() const
Definition
EvtParticle.cpp:124
EvtParticle::setLifetime
void setLifetime()
Definition
EvtParticle.cpp:100
EvtParticle::m_validP4
bool m_validP4
Definition
EvtParticle.hh:460
EvtParticle::setp
void setp(double e, double px, double py, double pz)
Definition
EvtParticle.hh:442
EvtParticle::setpart_num
void setpart_num(EvtId particle_number)
Definition
EvtParticle.hh:454
EvtSpinDensity
Definition
EvtSpinDensity.hh:28
EvtSpinDensity::setDim
void setDim(int n)
Definition
EvtSpinDensity.cpp:79
EvtSpinDensity::setDiag
void setDiag(int n)
Definition
EvtSpinDensity.cpp:118
EvtSpinDensity::set
void set(int i, int j, const EvtComplex &rhoij)
Definition
EvtSpinDensity.cpp:106
EvtSpinType::getSpin2
static int getSpin2(spintype stype)
Definition
EvtSpinType.cpp:25
EvtSpinType::getSpinStates
static int getSpinStates(spintype stype)
Definition
EvtSpinType.cpp:56
EvtVector4R
Definition
EvtVector4R.hh:29
EvtdFunction::d
static double d(int j, int m1, int m2, double theta)
Definition
EvtdFunction.cpp:30
Generated by
1.16.1