ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
ZDC
ZdcAnalysis
ZdcAnalysis
ZDCTriggerEfficiency.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef ZDCANALYSIS_ZDCTRIGGEREFFICIENCY_H
6
#define ZDCANALYSIS_ZDCTRIGGEREFFICIENCY_H
7
8
#include <TSpline.h>
9
#include <vector>
10
#include <array>
11
#include <algorithm>
//std::max
12
#include <utility>
//std::pair
13
#include <stdexcept>
//std::runtime_error
14
15
class
MsgStream;
16
17
class
ZDCTriggerEfficiency
{
18
private
:
19
bool
m_haveParams
;
20
bool
m_haveCorrCoeffs
;
21
22
unsigned
int
m_minLB
;
23
unsigned
int
m_maxLB
;
24
25
unsigned
int
m_currentLB
;
26
27
std::array<std::vector<TSpline3*>, 2>
m_effParams
;
28
std::array<std::vector<TSpline3*>, 2>
m_effParamErrors
;
29
std::array<std::vector<TSpline3*>, 2>
m_effParamCorrCoeffs
;
30
31
std::array<std::vector<double>, 2>
m_currentParams
;
32
std::array<std::vector<double>, 2>
m_currentParamErrors
;
33
std::array<std::vector<double>, 2>
m_currentCorrCoefff
;
34
35
public
:
36
void
UpdatelumiBlock
(
unsigned
int
lumiBlock)
37
{
38
if
(!
m_haveParams
)
throw
std::runtime_error(
"No params for trigger efficiency."
);
39
40
if
(lumiBlock !=
m_currentLB
) {
41
int
newLB = std::max(std::min(lumiBlock,
m_maxLB
),
m_minLB
);
42
for
(
int
side : {0, 1}) {
43
m_currentParams
[side].clear();
44
m_currentParamErrors
[side].clear();
45
m_currentCorrCoefff
[side].clear();
46
47
for
(
size_t
ipar = 0; ipar <
m_effParams
[side].size(); ipar++) {
48
m_currentParams
[side].push_back(
m_effParams
[side][ipar]->Eval(newLB));
49
m_currentParamErrors
[side].push_back(
m_effParamErrors
[side][ipar]->Eval(newLB));
50
51
if
(
m_haveCorrCoeffs
) {
52
m_currentCorrCoefff
[side].push_back(
m_effParamCorrCoeffs
[side][ipar]->Eval(newLB));
53
}
54
}
55
m_currentLB
= lumiBlock;
56
}
57
}
58
}
59
60
ZDCTriggerEfficiency
() :
// in order, alpha-beta, alpha-theta, beta-theta
61
m_haveParams
(false),
m_haveCorrCoeffs
(false),
62
m_minLB
(0),
m_maxLB
(0),
m_currentLB
(0) {
63
64
}
65
66
void
SetEffParamsAndErrors
(
const
std::array<std::vector<TSpline3*>, 2>& effParams,
67
const
std::array<std::vector<TSpline3*>, 2>& effParamErrors) {
68
for
(
int
side : {0, 1}) {
69
m_effParams
[side] = effParams[side];
70
m_effParamErrors
[side] = effParamErrors[side];
71
}
72
73
m_minLB
=
m_effParams
[0][0]->GetXmin();
74
m_maxLB
=
m_effParams
[0][0]->GetXmax();
75
m_haveParams
=
true
;
76
}
77
78
void
SetEffParamCorrCoeffs
(
const
std::array<std::vector<TSpline3*>, 2>& effParamsCorrCoeffs) {
79
for
(
int
side : {0, 1}) {
80
m_effParamCorrCoeffs
[side] = effParamsCorrCoeffs[side];
81
}
82
83
m_haveCorrCoeffs
=
true
;
84
}
85
86
double
GetEfficiency
(
int
side,
float
ADCSum);
87
88
std::pair<double, double>
GetEfficiencyAndError
(MsgStream&
msg
,
int
side,
float
ADCSum);
89
90
};
91
92
#endif
ZDCTriggerEfficiency::SetEffParamCorrCoeffs
void SetEffParamCorrCoeffs(const std::array< std::vector< TSpline3 * >, 2 > &effParamsCorrCoeffs)
Definition
ZDCTriggerEfficiency.h:78
ZDCTriggerEfficiency::ZDCTriggerEfficiency
ZDCTriggerEfficiency()
Definition
ZDCTriggerEfficiency.h:60
ZDCTriggerEfficiency::GetEfficiencyAndError
std::pair< double, double > GetEfficiencyAndError(MsgStream &msg, int side, float ADCSum)
Definition
ZDCTriggerEfficiency.cxx:23
ZDCTriggerEfficiency::m_currentCorrCoefff
std::array< std::vector< double >, 2 > m_currentCorrCoefff
Definition
ZDCTriggerEfficiency.h:33
ZDCTriggerEfficiency::m_haveCorrCoeffs
bool m_haveCorrCoeffs
Definition
ZDCTriggerEfficiency.h:20
ZDCTriggerEfficiency::SetEffParamsAndErrors
void SetEffParamsAndErrors(const std::array< std::vector< TSpline3 * >, 2 > &effParams, const std::array< std::vector< TSpline3 * >, 2 > &effParamErrors)
Definition
ZDCTriggerEfficiency.h:66
ZDCTriggerEfficiency::m_currentLB
unsigned int m_currentLB
Definition
ZDCTriggerEfficiency.h:25
ZDCTriggerEfficiency::m_effParams
std::array< std::vector< TSpline3 * >, 2 > m_effParams
Definition
ZDCTriggerEfficiency.h:27
ZDCTriggerEfficiency::m_currentParams
std::array< std::vector< double >, 2 > m_currentParams
Definition
ZDCTriggerEfficiency.h:31
ZDCTriggerEfficiency::m_minLB
unsigned int m_minLB
Definition
ZDCTriggerEfficiency.h:22
ZDCTriggerEfficiency::GetEfficiency
double GetEfficiency(int side, float ADCSum)
Definition
ZDCTriggerEfficiency.cxx:9
ZDCTriggerEfficiency::m_haveParams
bool m_haveParams
Definition
ZDCTriggerEfficiency.h:19
ZDCTriggerEfficiency::m_effParamErrors
std::array< std::vector< TSpline3 * >, 2 > m_effParamErrors
Definition
ZDCTriggerEfficiency.h:28
ZDCTriggerEfficiency::m_currentParamErrors
std::array< std::vector< double >, 2 > m_currentParamErrors
Definition
ZDCTriggerEfficiency.h:32
ZDCTriggerEfficiency::m_maxLB
unsigned int m_maxLB
Definition
ZDCTriggerEfficiency.h:23
ZDCTriggerEfficiency::m_effParamCorrCoeffs
std::array< std::vector< TSpline3 * >, 2 > m_effParamCorrCoeffs
Definition
ZDCTriggerEfficiency.h:29
ZDCTriggerEfficiency::UpdatelumiBlock
void UpdatelumiBlock(unsigned int lumiBlock)
Definition
ZDCTriggerEfficiency.h:36
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0