DAS  3.0
Das Analysis System
Variation.h
Go to the documentation of this file.
1 #pragma once
2 
3 // STD
4 #include <iostream>
5 #include <memory>
6 #include <string>
7 
8 // Darwin
9 #include <Weight.h>
10 
11 namespace Darwin::Physics {
12 
13 enum VarType {
14  single = 0b0000,
15  symmetric = 0b0001,
16  replicas = 0b0010,
17  bits = 0b0100
18 };
19 
20 #if __cplusplus >= 202002L
21 using enum VarType;
22 #endif
23 
28 class Variation {
29 
30  std::string group;
31  std::string name;
32 
33  std::size_t index;
34  int bit;
35 
36 public:
37 
40  ~Variation () = default;
41 
44  Variation (const char * group, const char * name,
45  size_t index = 0, int bit = 0) :
47  { }
48 
51  Variation (const std::string& group, const std::string& name,
52  size_t index = 0, int bit = 0) :
54  { }
55 
58  Variation (const Variation& v) :
59  group(v.group), name(v.name), index(v.index), bit(v.bit)
60  { }
61 
65  group(std::move(v.group)), name(std::move(v.name)), index(v.index), bit(v.bit)
66  { }
67 
68  inline std::string_view Group () const { return group; }
69  inline std::string_view Name () const { return name ; }
70  inline size_t Index () const { return index; }
71  inline int Bit () const { return bit ; }
72 };
73 
74 inline const Variation nominal("", "nominal");
75 
76 #if __cplusplus >= 202002L
77 std::strong_ordering operator<=> (const Variation& lhs, const Variation& rhs);
78 #endif
79 
80 } // end of namespace Darwin::Physics
81 
82 std::ostream& operator<< (std::ostream& s, const Darwin::Physics::Variation& v);
Darwin::Physics::replicas
@ replicas
Definition: Variation.h:16
Darwin::Physics::Variation::Variation
Variation(Variation &&v)
Move constructor.
Definition: Variation.h:64
Darwin::Physics::Variation::Index
size_t Index() const
Definition: Variation.h:70
Darwin::Physics::Variation::Variation
Variation(const std::string &group, const std::string &name, size_t index=0, int bit=0)
Normal constructor with std::strings.
Definition: Variation.h:51
Darwin::Physics::bits
@ bits
Definition: Variation.h:17
Darwin::Physics::operator<=>
std::strong_ordering operator<=>(const Variation &lhs, const Variation &rhs)
Definition: Variation.cc:10
Darwin::Physics::Variation::Group
std::string_view Group() const
Definition: Variation.h:68
Weight.h
Darwin::Physics::VarType
VarType
Definition: Variation.h:13
Darwin::Physics::Variation
Definition: Variation.h:28
Darwin::Physics::Variation::Bit
int Bit() const
Definition: Variation.h:71
Darwin::Physics::Variation::bit
int bit
correlation bit (needed for binned corrections with own stat. unc.)
Definition: Variation.h:34
Darwin::Physics::Variation::~Variation
~Variation()=default
Destructor.
Darwin::Physics::nominal
const Variation nominal("", "nominal")
Darwin::Physics::single
@ single
Definition: Variation.h:14
Darwin::Physics::Variation::name
std::string name
variation name (including "Up" or "Down")
Definition: Variation.h:31
Darwin::Physics::Variation::group
std::string group
e.g. "GenEventWgts"
Definition: Variation.h:30
Darwin::Physics::Variation::Variation
Variation(const Variation &v)
Copy constructor.
Definition: Variation.h:58
Darwin::Physics
Everything what concerns physics analysis directly.
Definition: darwin.h:26
Darwin::Physics::Variation::Name
std::string_view Name() const
Definition: Variation.h:69
Darwin::Physics::Variation::Variation
Variation(const char *group, const char *name, size_t index=0, int bit=0)
Normal constructor with C-style strings.
Definition: Variation.h:44
operator<<
std::ostream & operator<<(std::ostream &s, const Darwin::Physics::Variation &v)
Definition: Variation.cc:20
Darwin::Physics::Variation::index
std::size_t index
e.g. index in PhysicsObject::scales
Definition: Variation.h:33
Darwin::Physics::symmetric
@ symmetric
Definition: Variation.h:15