ATLAS Offline Software
Loading...
Searching...
No Matches
ZDCTriggerEfficiency Class Reference

#include <ZDCTriggerEfficiency.h>

Collaboration diagram for ZDCTriggerEfficiency:

Public Member Functions

void UpdatelumiBlock (unsigned int lumiBlock)
 ZDCTriggerEfficiency ()
void SetEffParamsAndErrors (const std::array< std::vector< TSpline3 * >, 2 > &effParams, const std::array< std::vector< TSpline3 * >, 2 > &effParamErrors)
void SetEffParamCorrCoeffs (const std::array< std::vector< TSpline3 * >, 2 > &effParamsCorrCoeffs)
double GetEfficiency (int side, float ADCSum)
std::pair< double, double > GetEfficiencyAndError (MsgStream &msg, int side, float ADCSum)

Private Attributes

bool m_haveParams
bool m_haveCorrCoeffs
unsigned int m_minLB
unsigned int m_maxLB
unsigned int m_currentLB
std::array< std::vector< TSpline3 * >, 2 > m_effParams
std::array< std::vector< TSpline3 * >, 2 > m_effParamErrors
std::array< std::vector< TSpline3 * >, 2 > m_effParamCorrCoeffs
std::array< std::vector< double >, 2 > m_currentParams
std::array< std::vector< double >, 2 > m_currentParamErrors
std::array< std::vector< double >, 2 > m_currentCorrCoefff

Detailed Description

Definition at line 17 of file ZDCTriggerEfficiency.h.

Constructor & Destructor Documentation

◆ ZDCTriggerEfficiency()

ZDCTriggerEfficiency::ZDCTriggerEfficiency ( )
inline

Definition at line 60 of file ZDCTriggerEfficiency.h.

60 : // 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 }

Member Function Documentation

◆ GetEfficiency()

double ZDCTriggerEfficiency::GetEfficiency ( int side,
float ADCSum )

Definition at line 9 of file ZDCTriggerEfficiency.cxx.

9 {
10 double alpha = m_currentParams[side][0];
11 double beta = m_currentParams[side][1];
12 double theta = m_currentParams[side][2];
13 if(alpha<10e-5||beta<10e-5||theta<10e-5)
14 {
15 return -1;
16 }
17 double m = std::exp(-ADCSum/theta);
18 double p = std::exp(-(ADCSum - alpha) / beta);
19 double efficiency = (1 - m) / (1 + p);
20 return efficiency;
21}
Scalar theta() const
theta method
std::array< std::vector< double >, 2 > m_currentParams
void efficiency(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")

◆ GetEfficiencyAndError()

std::pair< double, double > ZDCTriggerEfficiency::GetEfficiencyAndError ( MsgStream & msg,
int side,
float ADCSum )

Definition at line 23 of file ZDCTriggerEfficiency.cxx.

23 {
24 double alpha = m_currentParams[side][0];
25 double beta = m_currentParams[side][1];
26 double theta = m_currentParams[side][2];
27 if(alpha<10e-5||beta<10e-5||theta<10e-5)
28 {
29 return std::make_pair(-1,-1);
30 }
31
32 double alphaErr = m_currentParamErrors[side][0];
33 double betaErr = m_currentParamErrors[side][1];
34 double thetaErr = m_currentParamErrors[side][2];
35
36 double corrAlphaBeta = m_currentCorrCoefff[side][0];
37 double corrAlphaTheta = m_currentCorrCoefff[side][1];
38 double corrBetaTheta = m_currentCorrCoefff[side][2];
39
40 double m = std::exp(-ADCSum/theta);
41 double p = std::exp(-(ADCSum - alpha) / beta);
42 double efficiency = (1 - m) / (1 + p);
43 double dda = (1 - m) * -p / beta / (1 + p) / (1 + p);
44 double ddb = (1 - m) * -p / std::pow(1 + p, 2.0) * ADCSum / beta / beta;
45 double ddt = -ADCSum * m / theta / theta / (1 + p);
46
47 double efficiencyErr = std::sqrt(
48 std::pow(alphaErr * dda, 2) +
49 std::pow(betaErr * ddb, 2) +
50 std::pow(thetaErr * ddt, 2) +
51 2 * corrAlphaBeta*alphaErr*betaErr * dda * ddb +
52 2 * corrAlphaTheta*alphaErr*thetaErr * dda * ddt +
53 2 * corrBetaTheta*betaErr*thetaErr * ddb * ddt);
54
55 if (efficiencyErr<0)
56 {
57 efficiencyErr = 0;
58 msg << MSG::INFO << "Efficiency Uncertainty calculation abnormal." << endmsg;
59 }
60
61 return std::make_pair(efficiency, efficiencyErr);
62}
#define endmsg
std::array< std::vector< double >, 2 > m_currentCorrCoefff
std::array< std::vector< double >, 2 > m_currentParamErrors
MsgStream & msg
Definition testRead.cxx:32

◆ SetEffParamCorrCoeffs()

void ZDCTriggerEfficiency::SetEffParamCorrCoeffs ( const std::array< std::vector< TSpline3 * >, 2 > & effParamsCorrCoeffs)
inline

Definition at line 78 of file ZDCTriggerEfficiency.h.

78 {
79 for (int side : {0, 1}) {
80 m_effParamCorrCoeffs[side] = effParamsCorrCoeffs[side];
81 }
82
83 m_haveCorrCoeffs = true;
84 }
std::array< std::vector< TSpline3 * >, 2 > m_effParamCorrCoeffs

◆ SetEffParamsAndErrors()

void ZDCTriggerEfficiency::SetEffParamsAndErrors ( const std::array< std::vector< TSpline3 * >, 2 > & effParams,
const std::array< std::vector< TSpline3 * >, 2 > & effParamErrors )
inline

Definition at line 66 of file ZDCTriggerEfficiency.h.

67 {
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 }
std::array< std::vector< TSpline3 * >, 2 > m_effParams
std::array< std::vector< TSpline3 * >, 2 > m_effParamErrors

◆ UpdatelumiBlock()

void ZDCTriggerEfficiency::UpdatelumiBlock ( unsigned int lumiBlock)
inline

Definition at line 36 of file ZDCTriggerEfficiency.h.

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();
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 }
56 }
57 }
58 }
setTeId lumiBlock

Member Data Documentation

◆ m_currentCorrCoefff

std::array<std::vector<double>, 2> ZDCTriggerEfficiency::m_currentCorrCoefff
private

Definition at line 33 of file ZDCTriggerEfficiency.h.

◆ m_currentLB

unsigned int ZDCTriggerEfficiency::m_currentLB
private

Definition at line 25 of file ZDCTriggerEfficiency.h.

◆ m_currentParamErrors

std::array<std::vector<double>, 2> ZDCTriggerEfficiency::m_currentParamErrors
private

Definition at line 32 of file ZDCTriggerEfficiency.h.

◆ m_currentParams

std::array<std::vector<double>, 2> ZDCTriggerEfficiency::m_currentParams
private

Definition at line 31 of file ZDCTriggerEfficiency.h.

◆ m_effParamCorrCoeffs

std::array<std::vector<TSpline3*>, 2> ZDCTriggerEfficiency::m_effParamCorrCoeffs
private

Definition at line 29 of file ZDCTriggerEfficiency.h.

◆ m_effParamErrors

std::array<std::vector<TSpline3*>, 2> ZDCTriggerEfficiency::m_effParamErrors
private

Definition at line 28 of file ZDCTriggerEfficiency.h.

◆ m_effParams

std::array<std::vector<TSpline3*>, 2> ZDCTriggerEfficiency::m_effParams
private

Definition at line 27 of file ZDCTriggerEfficiency.h.

◆ m_haveCorrCoeffs

bool ZDCTriggerEfficiency::m_haveCorrCoeffs
private

Definition at line 20 of file ZDCTriggerEfficiency.h.

◆ m_haveParams

bool ZDCTriggerEfficiency::m_haveParams
private

Definition at line 19 of file ZDCTriggerEfficiency.h.

◆ m_maxLB

unsigned int ZDCTriggerEfficiency::m_maxLB
private

Definition at line 23 of file ZDCTriggerEfficiency.h.

◆ m_minLB

unsigned int ZDCTriggerEfficiency::m_minLB
private

Definition at line 22 of file ZDCTriggerEfficiency.h.


The documentation for this class was generated from the following files: