1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
#ifndef CondFormats_SiStripObjects_DaqScopeModeAnalysis_H
#define CondFormats_SiStripObjects_DaqScopeModeAnalysis_H
#include "CondFormats/SiStripObjects/interface/CommissioningAnalysis.h"
#include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
#include <sstream>
#include <vector>
#include <cstdint>
/**
@class DaqScopeModeAnalysis
@author R.Bainbridge
@brief Analysis for scope mode data.
*/
class DaqScopeModeAnalysis : public CommissioningAnalysis {
public:
DaqScopeModeAnalysis(const uint32_t& key);
DaqScopeModeAnalysis();
~DaqScopeModeAnalysis() override { ; }
friend class DaqScopeModeAlgorithm;
/** Identifies if analysis is valid or not. */
bool isValid() const override;
/** Identifies if tick mark is found or not. */
bool foundTickMark() const;
/** FED frame-finding threshold [ADC] (returns 65535 if invalid). */
uint16_t frameFindingThreshold() const;
// Pedestal, noise and raw noise (128-strip vector per APV)
inline const VVFloat& peds() const;
inline const VVFloat& noise() const;
inline const VVFloat& raw() const;
// Dead and noisy strips (vector per APV)
inline const VVInt& dead() const;
inline const VVInt& noisy() const;
// Mean and rms spread (value per APV)
inline const VFloat& pedsMean() const;
inline const VFloat& pedsSpread() const;
inline const VFloat& noiseMean() const;
inline const VFloat& noiseSpread() const;
inline const VFloat& rawMean() const;
inline const VFloat& rawSpread() const;
// Max and min values (value per APV)
inline const VFloat& pedsMax() const;
inline const VFloat& pedsMin() const;
inline const VFloat& noiseMax() const;
inline const VFloat& noiseMin() const;
inline const VFloat& rawMax() const;
inline const VFloat& rawMin() const;
/** Height of tick mark [ADC]. */
inline const float& height() const;
/** Baseline level of tick mark [ADC]. */
inline const float& base() const;
/** Level of tick mark top [ADC]. */
inline const float& peak() const;
/** Prints analysis results. */
void print(std::stringstream&, uint32_t apv_number = 0) override;
/** Adds error codes for analysis (overrides private base). */
inline void addErrorCode(const std::string& error) override;
/** Overrides base method. */
void summary(std::stringstream&) const override;
/** Resets analysis member data. */
void reset() override;
/** Threshold defining minimum tick mark height [ADC]. */
static const float tickMarkHeightThreshold_;
/** Threshold for FED frame finding (fraction of tick height). */
static const float frameFindingThreshold_;
private:
/** Height of tick mark [ADC]. */
float height_;
/** Baseline level of tick mark [ADC]. */
float base_;
/** Level of tick mark top [ADC]. */
float peak_;
/** Peds values. */
VVFloat peds_;
/** Noise values. */
VVFloat noise_;
/** Raw noise values. */
VVFloat raw_;
/** Dead strips. */
VVInt dead_;
/** Noisy strips. */
VVInt noisy_;
/** Mean peds value. */
VFloat pedsMean_;
/** Rms spread in peds. */
VFloat pedsSpread_;
/** Mean noise value. */
VFloat noiseMean_;
/** Rms spread in noise. */
VFloat noiseSpread_;
/** Mean raw noise value. */
VFloat rawMean_;
/** Rms spread in raw noise. */
VFloat rawSpread_;
/** Max peds value. */
VFloat pedsMax_;
/** Min peds value. */
VFloat pedsMin_;
/** Max noise value. */
VFloat noiseMax_;
/** Min noise value. */
VFloat noiseMin_;
/** Max raw noise value. */
VFloat rawMax_;
/** Min raw noise value. */
VFloat rawMin_;
// true if legacy histogram naming is used
bool legacy_;
};
const DaqScopeModeAnalysis::VVFloat& DaqScopeModeAnalysis::peds() const { return peds_; }
const DaqScopeModeAnalysis::VVFloat& DaqScopeModeAnalysis::noise() const { return noise_; }
const DaqScopeModeAnalysis::VVFloat& DaqScopeModeAnalysis::raw() const { return raw_; }
const DaqScopeModeAnalysis::VVInt& DaqScopeModeAnalysis::dead() const { return dead_; }
const DaqScopeModeAnalysis::VVInt& DaqScopeModeAnalysis::noisy() const { return noisy_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::pedsMean() const { return pedsMean_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::pedsSpread() const { return pedsSpread_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::noiseMean() const { return noiseMean_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::noiseSpread() const { return noiseSpread_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::rawMean() const { return rawMean_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::rawSpread() const { return rawSpread_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::pedsMax() const { return pedsMax_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::pedsMin() const { return pedsMin_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::noiseMax() const { return noiseMax_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::noiseMin() const { return noiseMin_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::rawMax() const { return rawMax_; }
const DaqScopeModeAnalysis::VFloat& DaqScopeModeAnalysis::rawMin() const { return rawMin_; }
const float& DaqScopeModeAnalysis::height() const { return height_; }
const float& DaqScopeModeAnalysis::base() const { return base_; }
const float& DaqScopeModeAnalysis::peak() const { return peak_; }
void DaqScopeModeAnalysis::addErrorCode(const std::string& error) { CommissioningAnalysis::addErrorCode(error); }
#endif // CondFormats_SiStripObjects_DaqScopeModeAnalysis_H
|