1#include "Tracking/dqm/RawSiStripDQM.h"
3#include "Tracking/Event/FittedSiStripHit.h"
4#include "Tracking/Event/RawSiStripHit.h"
5#include "Tracking/Event/SiStripWaveform.h"
7namespace tracking::dqm {
10 raw_hits_collection_ = parameters.
get<std::string>(
"raw_hits_collection");
11 subtracted_hits_collection_ =
12 parameters.
get<std::string>(
"subtracted_hits_collection");
13 waveforms_collection_ = parameters.
get<std::string>(
"waveforms_collection");
14 fitted_hits_collection_ =
15 parameters.
get<std::string>(
"fitted_hits_collection");
16 input_pass_name_ = parameters.
get<std::string>(
"input_pass_name");
17 n_hybrids_ = parameters.
get<
int>(
"n_hybrids");
18 const auto layer_ids{parameters.
get<std::vector<int>>(
"layer_ids")};
20 for (
int h{0}; h < n_hybrids_; ++h) {
21 const std::string suffix{
"_h" + std::to_string(h)};
23 subtracted_adc_names_.push_back(
"subtracted_adc" + suffix);
24 pchannel_names_.push_back(
"waveform_pchannel" + suffix);
25 peak_names_.push_back(
"waveform_peak" + suffix);
27 for (
int layer : layer_ids) {
33 const std::vector<std::string>& names) {
34 std::vector<TH1*> hists;
35 for (
const auto& name : names) hists.push_back(
histograms_.
get(name));
41 if (event.
exists(raw_hits_collection_, input_pass_name_)) {
43 raw_hits_collection_, input_pass_name_)};
47 for (
const auto& hit : hits) {
48 read_error->Fill(hit.getReadError());
49 if (hit.getHybridId() >= n_hybrids_)
continue;
50 for (
short adc : hit.getSamples()) {
51 raw_adc[hit.getHybridId()]->Fill(adc);
56 if (event.
exists(subtracted_hits_collection_, input_pass_name_)) {
58 subtracted_hits_collection_, input_pass_name_)};
59 const auto subtracted_adc{
getHists(subtracted_adc_names_)};
60 for (
const auto& hit : hits) {
61 if (hit.getHybridId() >= n_hybrids_)
continue;
62 for (
short adc : hit.getSamples()) {
63 subtracted_adc[hit.getHybridId()]->Fill(adc);
68 if (event.
exists(waveforms_collection_, input_pass_name_)) {
70 waveforms_collection_, input_pass_name_)};
72 for (
const auto& waveform : waveforms) {
75 if (waveform.getHybridId() >= n_hybrids_)
continue;
77 waveform.getPchannel());
79 waveform.peakAmplitude());
84 if (!event.
exists(fitted_hits_collection_, input_pass_name_))
return;
86 fitted_hits_collection_, input_pass_name_)};
88 for (
const auto& hit : fitted_hits) {
90 if (hit.getNDF() > 0) {
#define DECLARE_ANALYZER(CLASS)
Macro which allows the framework to construct an analyzer given its name during configuration.
HistogramPool histograms_
helper object for making and filling histograms
Implements an event buffer system for storing event data.
bool exists(const std::string &name, const std::string &passName, bool unique=true) const
Check for the existence of an object or collection with the given name and pass name in the event.
void fill(const std::string &name, const T &val)
Fill a 1D histogram.
TH1 * get(const std::string &name)
get a histogram from this pool by name
Class encapsulating parameters for configuring a processor.
const T & get(const std::string &name) const
Retrieve the parameter of the given name.
Result of fitting a pulse shape to the ADC samples of a single readout strip.
Implementation of a raw digitized hit from a silicon strip detector.
DQM for silicon strip data read from the DAQ: raw hits, pedestal subtracted hits, the waveforms assem...
void configure(framework::config::Parameters ¶meters) override
Callback for the EventProcessor to configure itself from the given set of parameters.
void analyze(const framework::Event &event) override
Process the event and make histograms or summaries.
std::map< int, std::string > fit_amplitude_names_
fit amplitude histogram name by layer id
std::vector< TH1 * > getHists(const std::vector< std::string > &names)
histograms by name, looked up once per event
std::vector< std::string > raw_adc_names_
per-hybrid histogram names, built once