22 <<
" Constructing object...";
29 <<
" Destructing object...";
39 HistosMap::const_iterator iter;
40 Analyses::iterator ianal;
41 std::map<std::string, uint16_t>
errors;
44 for (ianal =
data().
begin(); ianal !=
data().end(); ianal++) {
60 if (iter->second.empty()) {
62 <<
" Zero histograms found!";
67 std::vector<TH1*> profs;
68 Histos::const_iterator ihis = iter->second.begin();
69 for (; ihis != iter->second.end(); ihis++) {
72 profs.push_back(prof);
88 if (anal->
time() > time_max) {
89 time_max = anal->
time();
90 device_max = iter->first;
94 if (anal->
time() < time_min) {
95 time_min = anal->
time();
96 device_min = iter->first;
103 <<
" Unable to set maximum time! Found unexpected value: " << time_max;
108 <<
" Crate/FEC/Ring/CCU/module/channel: " << min.
fecCrate() <<
"/" << min.
fecSlot()
110 << min.
lldChan() <<
" has minimum time for tick mark rising edge [ns]: " << time_min;
114 <<
" Crate/FEC/Ring/CCU/module/channel: " << max.
fecCrate() <<
"/" << max.
fecSlot()
116 << max.
lldChan() <<
" has maximum time for tick mark rising edge [ns]: " << time_max;
119 <<
" Difference b/w minimum and maximum times" 120 <<
" for tick mark rising edges [ns] is: " << (time_max - time_min);
124 for (ianal =
data().begin(); ianal !=
data().end(); ianal++) {
129 anal->
refTime(time_max, this->
pset().getParameter<int>(
"TargetDelay"));
140 <<
" Analyzed histograms for " <<
histos().size() <<
" FED channels, of which " 141 << valid <<
" (" << 100 * valid /
histos().size() <<
"%) are valid.";
144 <<
" No histograms to analyze!";
149 <<
" Analyzed histograms for " <<
histos().size() <<
" FED channels, of which " 150 << valid <<
" (" << 100 * valid /
histos().size() <<
"%) are valid.";
151 if (!errors.empty()) {
153 std::stringstream
ss;
155 std::map<std::string, uint16_t>::const_iterator
ii;
156 for (ii = errors.begin(); ii != errors.end(); ++
ii) {
157 ss <<
" " << ii->first <<
": " << ii->second << std::endl;
161 <<
" Found " << count <<
" errors (" << 100 * count /
histos().size()
162 <<
"%): " << ss.str();
166 <<
" No histograms to analyze!";
void analysis(const std::vector< TH1 * > &)
Analyses & data(bool getMaskedData=false)
const uint16_t & fecRing() const
const edm::ParameterSet & pset() const
const float & refTime() const
Analysis for timing run using APV tick marks.
static const char mlDqmClient_[]
const uint16_t & lldChan() const
const uint16_t & fecSlot() const
static const uint16_t valid_
Utility class that identifies a position within the strip tracker control structure, down to the level of an APV25.
void histoAnalysis(bool debug) override
bool isValid() const override
const float & time() const
const uint16_t & fecCrate() const
int extract(std::vector< int > *output, const std::string &dati)
std::unique_ptr< Factory > factory_
const uint16_t & ccuAddr() const
static const uint16_t invalid_
const uint16_t & ccuChan() const
Analysis for timing run using APV tick marks.
const VString & getErrorCodes() const
~ApvTimingHistograms() override
bool foundTickMark() const
ApvTimingHistograms(const edm::ParameterSet &pset, DQMStore *)
const HistosMap & histos() const