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
|
#include "CondFormats/SiStripObjects/interface/FedTimingAnalysis.h"
#include "DataFormats/SiStripCommon/interface/SiStripHistoTitle.h"
#include "DataFormats/SiStripCommon/interface/SiStripEnumsAndStrings.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace sistrip;
// ----------------------------------------------------------------------------
//
FedTimingAnalysis::FedTimingAnalysis(const uint32_t& key)
: CommissioningAnalysis(key, "FedTimingAnalysis"),
time_(sistrip::invalid_),
max_(sistrip::invalid_),
delay_(sistrip::invalid_),
error_(sistrip::invalid_),
base_(sistrip::invalid_),
peak_(sistrip::invalid_),
height_(sistrip::invalid_),
optimumSamplingPoint_(15.) {
;
}
// ----------------------------------------------------------------------------
//
FedTimingAnalysis::FedTimingAnalysis()
: CommissioningAnalysis("FedTimingAnalysis"),
time_(sistrip::invalid_),
max_(sistrip::invalid_),
delay_(sistrip::invalid_),
error_(sistrip::invalid_),
base_(sistrip::invalid_),
peak_(sistrip::invalid_),
height_(sistrip::invalid_),
optimumSamplingPoint_(15.) {
;
}
// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::reset() {
time_ = sistrip::invalid_;
max_ = sistrip::invalid_;
delay_ = sistrip::invalid_;
error_ = sistrip::invalid_;
base_ = sistrip::invalid_;
peak_ = sistrip::invalid_;
height_ = sistrip::invalid_;
}
// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::print(std::stringstream& ss, uint32_t not_used) {
header(ss);
ss << " Time of tick rising edge [ns] : " << time_ << "\n"
<< " Maximum time (sampling point) [ns] : " << max_ << "\n"
<< " Delay required wrt max time [ns] : " << delay_ << "\n"
<< " Error on delay [ns] : " << error_ << "\n"
<< " Baseline [adc] : " << base_ << "\n"
<< " Tick peak [adc] : " << peak_ << "\n"
<< " Tick height [adc] : " << height_ << "\n";
}
// ----------------------------------------------------------------------------
//
void FedTimingAnalysis::max(const float& max) {
max_ = max;
if (time_ > sistrip::maximum_) {
return;
}
int32_t adjustment = 25 - static_cast<int32_t>(rint(max_ + optimumSamplingPoint_)) % 25;
max_ += adjustment;
delay_ = max_ - time_;
}
|