Darwin  1.0
Event loop based prototype framework
Objects.cc File Reference
#include <boost/test/included/unit_test.hpp>
#include <boost/exception/all.hpp>
#include "test.h"
#include "exceptions.h"
#include "Objects.h"
#include <limits>
#include <iostream>
+ Include dependency graph for Objects.cc:

Macros

#define BOOST_TEST_MODULE   testObjects
 

Functions

 BOOST_AUTO_TEST_CASE (dijets)
 
 BOOST_AUTO_TEST_CASE (genevents)
 
 BOOST_AUTO_TEST_CASE (recevents)
 
 BOOST_AUTO_TEST_CASE (pileup)
 

Variables

static const auto feps = numeric_limits<float>::epsilon()
 

Macro Definition Documentation

◆ BOOST_TEST_MODULE

#define BOOST_TEST_MODULE   testObjects

Function Documentation

◆ BOOST_AUTO_TEST_CASE() [1/4]

BOOST_AUTO_TEST_CASE ( dijets  )
24  {
25  BOOST_TEST( std::abs(DP::Jet::R - 0.4) < feps );
26 
27  // just declare two dummy jets
28  DP::RecJet jet1, jet2;
29  BOOST_TEST( std::abs(jet1.area - 2*M_PI*0.4) < feps );
30  jet1.SetPt(42);
31  jet2.SetPt(24);
32  jet1.scales = {1.1, 0.5, 1.7};
33  jet2.scales = {1.1, 0.5, 1.7};
34  jet1.nBHadrons = 1;
35  jet2.nCHadrons = 2;
36 
37  // check that `Jet::CorrPt()` works as expected
38  DP::RecJet::iScl = 1;
39  BOOST_TEST( jet1.CorrPt() == 42*0.5 ); // note: we're comparing
40  BOOST_TEST( jet2.CorrPt() == 24*0.5 ); // floats---can be instable...
41 
42  // check addition
43  BOOST_REQUIRE_NO_THROW( jet1 + jet2 );
44  DP::RecJet dijet = jet1 + jet2;
45  BOOST_TEST( dijet.Pt() == 42 + 24 );
46  DP::RecJet::iScl = 1;
47  BOOST_TEST( dijet.scales.at(1) == 0.5 );
48  BOOST_TEST( dijet.CorrPt() == (42+24)*0.5 );
49  BOOST_TEST( dijet.weight() == jet1.weight() * jet2.weight() );
50  BOOST_TEST( dijet.nBHadrons == 1 );
51  BOOST_TEST( dijet.nCHadrons == 2 );
52 
53  cout << jet1 << '\t' << jet2 << '\t' << dijet << endl;
54 
55  jet1.clear();
56  BOOST_TEST( jet1.Pt() == 0 );
57  BOOST_TEST( jet1.pdgID == 0 );
58  BOOST_TEST( jet1.nBHadrons == 0 );
59  BOOST_TEST( jet1.nCHadrons == 0 );
60  BOOST_TEST( std::abs(jet1.weights.front() - 1) < feps );
61  BOOST_TEST( jet1.weights.size () == (size_t) 1 );
62  BOOST_TEST( std::abs(jet1.scales.front() - 1) < feps );
63  BOOST_TEST( jet1.scales.size () == (size_t) 1 );
64 #if BOOST_VERSION < 107600
65  BOOST_REQUIRE_THROW( jet1 + jet2, boost::wrapexcept<length_error> );
66 #endif // TODO: fix... (note sure that the version is the problem)
67  }

◆ BOOST_AUTO_TEST_CASE() [2/4]

BOOST_AUTO_TEST_CASE ( genevents  )
70  {
71  DP::GenEvent event;
72  BOOST_TEST( std::abs(event.weights.front() - 1) < feps );
73  BOOST_TEST( event.weights.size () == (size_t) 1 );
74  BOOST_TEST( event.hard_scale == 0 );
75  BOOST_TEST( event.process == 0. );
76 
77  event.weights.front() = 42;
78  event.weights.push_back(24);
79 
81  BOOST_TEST( std::abs(event.weight() - 24) < feps );
82 
83  event.clear();
84  BOOST_TEST( std::abs(event.weights.front() - 1) < feps );
85  BOOST_TEST( event.weights.size () == (size_t) 1 );
86  BOOST_TEST( event.hard_scale == 0 );
87  BOOST_TEST( event.process == 0. );
88 
89  cout << event << endl;
90  }

◆ BOOST_AUTO_TEST_CASE() [3/4]

BOOST_AUTO_TEST_CASE ( pileup  )
120  {
121  BOOST_TEST( std::abs(DP::PileUp::MBxsec - 69200 /* mb */) < feps );
122  BOOST_TEST( std::abs(DP::PileUp::MBxsecRelUnc - 0.046) < feps ); // 4.6%
123 
124  DP::PileUp pileup;
125  pileup.trpu = 42;
126  pileup.intpu = 24;
127  BOOST_TEST( pileup.GetTrPU() == 42 );
128  BOOST_TEST( pileup.GetTrPU('+') > 42 );
129  BOOST_TEST( pileup.GetTrPU('-') < 42 );
130  BOOST_TEST( pileup.GetIntPU() == 24 );
131  BOOST_TEST( pileup.GetIntPU('+') > 24 );
132  BOOST_TEST( pileup.GetIntPU('-') < 24 );
133 
134  TRandom3 r1(23413), r2(45346);
135  BOOST_TEST( pileup.GetIntPU(r1) != pileup.GetIntPU(r2));
136 
137  pileup.clear();
138  BOOST_TEST( pileup.rho == 0 );
139  BOOST_TEST( pileup.nVtx == 0 );
140  BOOST_TEST( pileup.trpu == 0 );
141  BOOST_TEST( pileup.intpu == 0 );
142  BOOST_TEST( pileup.pthatMax == 0 );
143  }

◆ BOOST_AUTO_TEST_CASE() [4/4]

BOOST_AUTO_TEST_CASE ( recevents  )
93  {
94  DP::RecEvent event;
95  BOOST_TEST( std::abs(event.weights.front() - 1) < feps );
96  BOOST_TEST( event.weights.size () == (size_t) 1 );
97  BOOST_TEST( event.fill == 0 );
98  BOOST_TEST( event.runNo == 0 );
99  BOOST_TEST( event.lumi == 0 );
100  BOOST_TEST( event.evtNo == (unsigned long long) 0 );
101 
102  event.weights.front() = 42;
103  event.weights.push_back(24);
104 
105  DP::RecEvent::iWgt = 1;
106  BOOST_TEST( std::abs(event.weight() - 24) < feps );
107 
108  event.clear();
109  BOOST_TEST( std::abs(event.weights.front() - 1) < feps );
110  BOOST_TEST( event.weights.size () == (size_t) 1 );
111  BOOST_TEST( event.fill == 0 );
112  BOOST_TEST( event.runNo == 0 );
113  BOOST_TEST( event.lumi == 0 );
114  BOOST_TEST( event.evtNo == (unsigned long long) 0 );
115 
116  cout << event << endl;
117  }

Variable Documentation

◆ feps

const auto feps = numeric_limits<float>::epsilon()
static
Darwin::Physics::GenEvent::hard_scale
float hard_scale
hard scale, corresponding to pthat in Pythia 8
Definition: Objects.h:29
Darwin::Physics::GenEvent::iWgt
static size_t iWgt
global index for weight
Definition: Objects.h:26
Darwin::Physics::RecEvent
Definition: Objects.h:40
Darwin::Physics::RecEvent::evtNo
unsigned long long evtNo
event number
Definition: Objects.h:46
Darwin::Physics::PileUp::rho
float rho
soft activity (see formula 7.15 in Patrick's thesis)
Definition: Objects.h:101
Darwin::Physics::RecJet::iScl
static size_t iScl
global index for scale
Definition: Objects.h:192
Darwin::Physics::GenEvent::process
int process
flag for process (TODO?)
Definition: Objects.h:28
Darwin::Physics::RecEvent::runNo
int runNo
6-digit run number
Definition: Objects.h:44
Darwin::Physics::GenEvent::weight
float weight() const final
uses iWgt internally
Definition: Objects.cc:22
Darwin::Physics::Jet::R
static float R
parameter of clustering algorithm
Definition: Objects.h:147
Darwin::Physics::PileUp::clear
void clear()
resets all members to the same values as in the constructor
Definition: Objects.cc:113
feps
static const auto feps
Definition: Objects.cc:19
Darwin::Physics::Jet::pdgID
char pdgID
pdgID (default is 0 = undefined)
Definition: Objects.h:149
Darwin::Physics::RecJet::weight
float weight() const final
uses iWgt internally
Definition: Objects.cc:240
Darwin::Physics::RecEvent::weight
float weight() const final
uses iWgt internally
Definition: Objects.cc:37
Darwin::Physics::PileUp::trpu
float trpu
true pile-up
Definition: Objects.h:103
Darwin::Physics::PileUp::GetTrPU
float GetTrPU(const char='0') const
true pile-up variations
Definition: Objects.cc:87
Darwin::Physics::RecEvent::lumi
int lumi
lumi section
Definition: Objects.h:45
Darwin::Physics::PileUp
Definition: Objects.h:96
Darwin::Physics::Jet::weights
std::vector< float > weights
jet weight (typically expected to be trivial for all-flavour inclusive jet cross section)
Definition: Objects.h:155
Darwin::Physics::Event::weights
std::vector< float > weights
Definition: Objects.h:16
Darwin::Physics::RecEvent::iWgt
static size_t iWgt
global index for weight
Definition: Objects.h:41
Darwin::Physics::PileUp::GetIntPU
float GetIntPU(const char='0') const
in-time pile-up variations
Definition: Objects.cc:97
Darwin::Physics::PileUp::nVtx
int nVtx
number of vertices in the event
Definition: Objects.h:102
Darwin::Physics::Jet::nCHadrons
char nCHadrons
number of C hadrons (0, 1+ in 2017; 0, 1, 2+ in 2016)
Definition: Objects.h:151
Darwin::Physics::RecJet::area
float area
jet area, roughly = pi*R^2
Definition: Objects.h:200
Darwin::Physics::Jet::scales
std::vector< float > scales
Definition: Objects.h:154
Darwin::Physics::Jet::nBHadrons
char nBHadrons
number of B hadrons (0, 1 or 2+)
Definition: Objects.h:150
Darwin::Physics::PileUp::MBxsec
static float MBxsec
minimum-bias cross section
Definition: Objects.h:98
Darwin::Physics::PileUp::intpu
int intpu
in-time pile-up (i.e. from the same bunch crossing)
Definition: Objects.h:104
Darwin::Physics::PileUp::MBxsecRelUnc
static float MBxsecRelUnc
relative uncertainty on minimum-bias cross section
Definition: Objects.h:99
Darwin::Physics::GenEvent
Structure for events in MC only with generator information.
Definition: Objects.h:25
Darwin::Physics::RecJet::CorrPt
float CorrPt() const final
uses iScl internally
Definition: Objects.cc:241
Darwin::Physics::RecJet
A detector level jet.
Definition: Objects.h:189
Darwin::Physics::RecJet::clear
void clear() override
resets all members to the same values as in the constructor
Definition: Objects.cc:246
Darwin::Physics::PileUp::pthatMax
float pthatMax
hard-scale of the hardest pile-up event (to deal with anomalous events)
Definition: Objects.h:105
Darwin::Physics::RecEvent::fill
int fill
4-digit LHC fill
Definition: Objects.h:43