ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Generators
AtlasHepMC
AtlasHepMC
Polarization.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
/* Author: Andrii Verbytskyi andrii.verbytskyi@mpp.mpg.de */
5
6
#ifndef ATLASHEPMC_POLARIZATION_H
7
#define ATLASHEPMC_POLARIZATION_H
8
#include "HepMC3/GenParticle.h"
9
#include "HepMC3/Attribute.h"
10
#include "
AtlasHepMC/AttributeNames.h
"
11
namespace
HepMC
{
12
class
Polarization
{
13
public
:
14
Polarization
(
const
double
a
= 0.0,
const
double
b = 0.0,
15
bool
is_defined
=
false
)
16
:
m_theta
(
a
),
m_phi
(b),
m_is_defined
(
is_defined
) {};
17
~Polarization
() {};
18
double
theta
()
const
{
return
m_theta
;}
19
double
phi
()
const
{
return
m_phi
;}
20
bool
is_defined
()
const
{
return
m_is_defined
; }
21
inline
bool
operator ==
(
const
Polarization
&
a
)
const
{
return
(std::abs(
a
.phi() -
phi
()) <= 0.00001) && (std::abs(
a
.theta() -
theta
()) <= 0.00001);}
22
private
:
23
double
m_theta
;
24
double
m_phi
;
25
bool
m_is_defined
;
26
};
27
template <class T, std::enable_if_t<std::is_same<T, HepMC3::GenParticlePtr>::value || std::is_same<T, HepMC3::ConstGenParticlePtr>::value,
bool
> =
true
>
28
inline
Polarization
polarization
(
const
T&
a
) {
29
std::shared_ptr<HepMC3::DoubleAttribute> phi_A =
a
->template attribute<HepMC3::DoubleAttribute>(HepMCStr::phi);
30
std::shared_ptr<HepMC3::DoubleAttribute> theta_A =
a
->template attribute<HepMC3::DoubleAttribute>(HepMCStr::theta);
31
const
double
phi
= (phi_A ? phi_A->value() : 0.0);
32
const
double
theta
= (theta_A ? theta_A->value() : 0.0);
33
const
bool
is_defined = phi_A && theta_A;
34
return
Polarization
(
theta
,
phi
, is_defined);
35
}
36
template
<
class
T>
inline
void
set_polarization
(T&
a
,
const
Polarization
& b) {
37
a
->add_attribute(HepMCStr::phi, std::make_shared<HepMC3::DoubleAttribute>(b.phi()));
38
a
->add_attribute(HepMCStr::theta, std::make_shared<HepMC3::DoubleAttribute>(b.theta()));
39
}
40
}
41
#endif
phi
Scalar phi() const
phi method
Definition
AmgMatrixBasePlugin.h:67
theta
Scalar theta() const
theta method
Definition
AmgMatrixBasePlugin.h:75
AttributeNames.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
HepMC::Polarization
Definition
Polarization.h:12
HepMC::Polarization::m_phi
double m_phi
Definition
Polarization.h:24
HepMC::Polarization::~Polarization
~Polarization()
Definition
Polarization.h:17
HepMC::Polarization::theta
double theta() const
Definition
Polarization.h:18
HepMC::Polarization::m_theta
double m_theta
Definition
Polarization.h:23
HepMC::Polarization::Polarization
Polarization(const double a=0.0, const double b=0.0, bool is_defined=false)
Definition
Polarization.h:14
HepMC::Polarization::is_defined
bool is_defined() const
Definition
Polarization.h:20
HepMC::Polarization::phi
double phi() const
Definition
Polarization.h:19
HepMC::Polarization::operator==
bool operator==(const Polarization &a) const
Definition
Polarization.h:21
HepMC::Polarization::m_is_defined
bool m_is_defined
Definition
Polarization.h:25
HepMC
Definition
Barcode.h:13
HepMC::set_polarization
void set_polarization(T &a, const Polarization &b)
Definition
Polarization.h:36
HepMC::polarization
Polarization polarization(const T &a)
Definition
Polarization.h:28
Generated on
for ATLAS Offline Software by
1.17.0