ATLAS Offline Software
Loading...
Searching...
No Matches
GetQuantumEfficiency.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include <algorithm>
6#include <cassert>
8
9namespace {
10
11 struct L2QE {
12 double lambda;
13 double qe;
14 };
15
16 L2QE const r762[] = {
17 {160., 0.063096},
18 {170., 0.152522},
19 {180., 0.188365},
20 {190., 0.211349},
21 {200., 0.237137},
22 {210., 0.232631},
23 {220., 0.223872},
24 {230., 0.207332},
25 {240., 0.203392},
26 {250., 0.199526},
27 {260., 0.192014},
28 {270., 0.188365},
29 {280., 0.192014},
30 {290., 0.207332},
31 {300., 0.211349},
32 {310., 0.215443},
33 {320., 0.223872},
34 {330., 0.228209},
35 {340., 0.232631},
36 {350., 0.237137},
37 {360., 0.241732},
38 {370., 0.246415},
39 {380., 0.256055},
40 {390., 0.251189},
41 {400., 0.251189},
42 {410., 0.251189},
43 {420., 0.251189},
44 {430., 0.246415},
45 {440., 0.246415},
46 {450., 0.237137},
47 {460., 0.232631},
48 {470., 0.219617},
49 {480., 0.207332},
50 {490., 0.195734},
51 {500., 0.177828},
52 {510., 0.161560},
53 {520., 0.146780},
54 {530., 0.133352},
55 {540., 0.125893},
56 {550., 0.114376},
57 {560., 0.101937},
58 {570., 0.077923},
59 {580., 0.055165},
60 {590., 0.044668},
61 {600., 0.036869},
62 {610., 0.029854},
63 {620., 0.021962},
64 {630., 0.017113},
65 {640., 0.012115},
66 {650., 0.008912},
67 {660., 0.005623},
68 {670., 0.003687},
69 {680., 0.002073},
70 {690., 0.001188},
71 {700., 0.000764}
72 };
73
74 bool less_than(L2QE const& lhs, double l) { return lhs.lambda < l; }
75
76 L2QE const* const r762_begin = r762;
77 L2QE const* const r762_end = r762 + sizeof(r762) / sizeof(L2QE);
78}
79
80double GetQuantumEfficiency(double lambda, L2QE const* first, L2QE const* last) {
81
82 double const lambda_min = first->lambda;
83 double const lambda_max = (last - 1)->lambda;
84
85 if (lambda < lambda_min || lambda > lambda_max) return 0;
86
87 L2QE const* const p(std::lower_bound(first, last, lambda, less_than));
88
89 if (p == first) return p->qe;
90 else {
91
92 L2QE const* const q = p - 1;
93 return (lambda - q->lambda)*(p->qe - q->qe)/(p->lambda - q->lambda) + q->qe;
94 }
95}
96
97double GetQuantumEfficiencyR762(double lambda) { return GetQuantumEfficiency(lambda, r762_begin, r762_end); }
double GetQuantumEfficiency(double lambda, L2QE const *first, L2QE const *last)
double GetQuantumEfficiencyR762(double lambda)
l
Printing final latex table to .tex output file.