34 #include <boost/tokenizer.hpp> 45 #include "TPaveStats.h" 52 SiStripPedestalContainer(
const std::shared_ptr<SiStripPedestals>&
payload,
56 payloadType_ =
"SiStripPedestals";
60 void storeAllValues()
override {
61 std::vector<uint32_t> detid;
62 payload_->getDetIds(detid);
64 for (
const auto&
d : detid) {
66 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
68 SiStripCondData_.fillByPushBack(
d, payload_->getPed(it,
range));
74 class SiStripPedestalCompareByPartition :
public PlotImage<SiStripPedestals, MULTI_IOV, 2> {
76 SiStripPedestalCompareByPartition()
79 bool fill()
override {
81 auto theIOVs = PlotBase::getTag<0>().iovs;
82 auto tagname1 = PlotBase::getTag<0>().
name;
83 auto tag2iovs = PlotBase::getTag<1>().iovs;
84 auto tagname2 = PlotBase::getTag<1>().
name;
88 std::shared_ptr<SiStripPedestals> last_payload = fetchPayload(std::get<1>(lastiov));
89 std::shared_ptr<SiStripPedestals> first_payload = fetchPayload(std::get<1>(firstiov));
91 SiStripPedestalContainer* l_objContainer =
new SiStripPedestalContainer(last_payload, lastiov, tagname1);
92 SiStripPedestalContainer* f_objContainer =
new SiStripPedestalContainer(first_payload, firstiov, tagname2);
94 l_objContainer->compare(f_objContainer);
98 TCanvas
canvas(
"Partition summary",
"partition summary", 1400, 1000);
99 l_objContainer->fillByPartition(
canvas, 300, 0.1, 300.);
108 class SiStripPedestalDiffByPartition :
public PlotImage<SiStripPedestals, MULTI_IOV, 2> {
110 SiStripPedestalDiffByPartition()
113 bool fill()
override {
115 auto theIOVs = PlotBase::getTag<0>().iovs;
116 auto tagname1 = PlotBase::getTag<0>().
name;
117 auto tag2iovs = PlotBase::getTag<1>().iovs;
118 auto tagname2 = PlotBase::getTag<1>().
name;
122 std::shared_ptr<SiStripPedestals> last_payload = fetchPayload(std::get<1>(lastiov));
123 std::shared_ptr<SiStripPedestals> first_payload = fetchPayload(std::get<1>(firstiov));
125 SiStripPedestalContainer* l_objContainer =
new SiStripPedestalContainer(last_payload, lastiov, tagname1);
126 SiStripPedestalContainer* f_objContainer =
new SiStripPedestalContainer(first_payload, firstiov, tagname2);
128 l_objContainer->subtract(f_objContainer);
132 TCanvas
canvas(
"Partition summary",
"partition summary", 1400, 1000);
133 l_objContainer->fillByPartition(
canvas, 100, -30., 30.);
142 class SiStripPedestalCorrelationByPartition :
public PlotImage<SiStripPedestals> {
144 SiStripPedestalCorrelationByPartition()
149 bool fill(
const std::vector<SiStripPI::MetaData>& iovs)
override {
150 std::vector<SiStripPI::MetaData> sorted_iovs = iovs;
153 std::sort(begin(sorted_iovs),
end(sorted_iovs), [](
auto const&
t1,
auto const&
t2) {
154 return std::get<0>(
t1) < std::get<0>(
t2);
157 auto firstiov = sorted_iovs.front();
158 auto lastiov = sorted_iovs.back();
160 std::shared_ptr<SiStripPedestals> last_payload = fetchPayload(std::get<1>(lastiov));
161 std::shared_ptr<SiStripPedestals> first_payload = fetchPayload(std::get<1>(firstiov));
163 SiStripPedestalContainer* l_objContainer =
new SiStripPedestalContainer(last_payload, lastiov,
"");
164 SiStripPedestalContainer* f_objContainer =
new SiStripPedestalContainer(first_payload, firstiov,
"");
166 l_objContainer->compare(f_objContainer);
168 TCanvas
canvas(
"Partition summary",
"partition summary", 1200, 1200);
169 l_objContainer->fillCorrelationByPartition(
canvas, 100, 0., 300.);
182 class SiStripPedestalsTest :
public Histogram1D<SiStripPedestals, SINGLE_IOV> {
184 SiStripPedestalsTest()
189 bool fill()
override {
190 auto tag = PlotBase::getTag<0>();
191 for (
auto const& iov :
tag.iovs) {
192 std::shared_ptr<SiStripPedestals>
payload = Base::fetchPayload(std::get<1>(iov));
196 std::stringstream
ss;
197 ss <<
"Summary of strips pedestals:" << std::endl;
200 payload->printSummary(
ss, &m_trackerTopo);
202 std::vector<uint32_t> detid;
229 class SiStripPedestalPerDetId :
public PlotImage<SiStripPedestals, SINGLE_IOV> {
235 bool fill()
override {
236 auto tag = PlotBase::getTag<0>();
237 auto iov =
tag.iovs.front();
239 std::shared_ptr<SiStripPedestals>
payload = fetchPayload(std::get<1>(iov));
241 std::vector<uint32_t> the_detids = {};
244 auto ip = paramValues.find(
"DetIds");
245 if (ip != paramValues.end()) {
246 auto input = ip->second;
247 typedef boost::tokenizer<boost::char_separator<char>> tokenizer;
248 boost::char_separator<char> sep{
","};
249 tokenizer tok{
input, sep};
250 for (
const auto&
t : tok) {
251 the_detids.push_back(atoi(
t.c_str()));
255 <<
"\n WARNING!!!! \n The needed parameter DetIds has not been passed. Will use all Strip DetIds! \n\n";
256 the_detids.push_back(0xFFFFFFFF);
259 size_t ndets = the_detids.size();
260 std::vector<std::shared_ptr<TH1F>> hpedestal;
261 std::vector<std::shared_ptr<TLegend>>
legends;
262 std::vector<unsigned int> v_nAPVs;
263 std::vector<std::vector<std::shared_ptr<TLine>>>
lines;
264 hpedestal.reserve(ndets);
267 auto sides = getClosestFactors(the_detids.size());
268 edm::LogPrint(
"SiStripPedestalPerDetId") <<
"Aspect ratio: " << sides.first <<
":" << sides.second << std::endl;
272 TCanvas
canvas(
"ByDetId",
"ByDetId", sides.second * 800, sides.first * 600);
273 canvas.Divide(sides.second, sides.first);
276 for (
const auto& the_detid : the_detids) {
277 edm::LogPrint(
"SiStripNoisePerDetId") <<
"DetId:" << the_detid << std::endl;
279 unsigned int nAPVs = detInfo.getNumberOfApvsAndStripLength(the_detid).first;
282 v_nAPVs.push_back(nAPVs);
284 auto histo = std::make_shared<TH1F>(
286 Form(
"SiStrip Pedestal profile for DetId: %s;Strip number;SiStrip Pedestal [ADC counts]",
292 histo->SetStats(
false);
295 if (the_detid != 0xFFFFFFFF) {
298 auto allDetIds = detInfo.getAllDetIds();
299 for (
const auto&
id : allDetIds) {
305 histo->GetYaxis()->SetTitleOffset(1.0);
306 hpedestal.push_back(
histo);
315 hpedestal.at(
index)->Draw();
316 hpedestal.at(
index)->GetYaxis()->SetRangeUser(0, hpedestal.at(
index)->GetMaximum() * 1.2);
319 std::vector<int> boundaries;
320 for (
size_t b = 0;
b < v_nAPVs.at(
index);
b++) {
324 std::vector<std::shared_ptr<TLine>> linesVec;
325 for (
const auto& bound : boundaries) {
326 auto line = std::make_shared<TLine>(hpedestal.at(
index)->GetBinLowEdge(bound),
328 hpedestal.at(
index)->GetBinLowEdge(bound),
330 line->SetLineWidth(1);
331 line->SetLineStyle(9);
332 line->SetLineColor(2);
333 linesVec.push_back(
line);
335 lines.push_back(linesVec);
345 ltx.SetTextSize(0.05);
346 ltx.SetTextAlign(11);
347 ltx.DrawLatexNDC(gPad->GetLeftMargin(),
348 1 - gPad->GetTopMargin() + 0.01,
349 Form(
"SiStrip Pedestals profile for DetId %s",
std::to_string(the_detids[
index]).c_str()));
351 legends.push_back(std::make_shared<TLegend>(0.45, 0.83, 0.95, 0.93));
366 int nextPerfectSquare(
int N) {
return std::floor(
sqrt(
N)) + 1; }
368 std::pair<int, int> getClosestFactors(
int input) {
374 while (
input % testNum != 0) {
377 return std::make_pair(testNum,
input / testNum);
380 void fillHisto(
const std::shared_ptr<SiStripPedestals>
payload, std::shared_ptr<TH1F>&
histo, uint32_t the_detid) {
383 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
396 class SiStripPedestalsValue :
public Histogram1D<SiStripPedestals, SINGLE_IOV> {
398 SiStripPedestalsValue()
400 "SiStrip Pedestals values",
"SiStrip Pedestals values", 300, 0.0, 300.0) {}
402 bool fill()
override {
403 auto tag = PlotBase::getTag<0>();
404 for (
auto const& iov :
tag.iovs) {
405 std::shared_ptr<SiStripPedestals>
payload = Base::fetchPayload(std::get<1>(iov));
407 std::vector<uint32_t> detid;
410 for (
const auto&
d : detid) {
412 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
429 class SiStripPedestalsValuePerDetId :
public Histogram1D<SiStripPedestals, SINGLE_IOV> {
431 SiStripPedestalsValuePerDetId()
433 "SiStrip Pedestal values per DetId",
"SiStrip Pedestal values per DetId", 100, 0.0, 10.0) {
437 bool fill()
override {
438 auto tag = PlotBase::getTag<0>();
439 for (
auto const& iov :
tag.iovs) {
440 std::shared_ptr<SiStripPedestals>
payload = Base::fetchPayload(std::get<1>(iov));
441 unsigned int the_detid(0xFFFFFFFF);
443 auto ip = paramValues.find(
"DetId");
444 if (ip != paramValues.end()) {
445 the_detid = std::stoul(ip->second);
450 for (
int it = 0; it < (
range.second -
range.first) * 8 / 9; ++it) {
453 fillWithValue(
noise);
466 template <SiStripPI::OpMode op_mode_>
467 class SiStripPedestalDistribution :
public PlotImage<SiStripPedestals, SINGLE_IOV> {
471 bool fill()
override {
472 auto tag = PlotBase::getTag<0>();
473 auto iov =
tag.iovs.front();
474 TGaxis::SetMaxDigits(3);
475 gStyle->SetOptStat(
"emr");
477 std::shared_ptr<SiStripPedestals>
payload = fetchPayload(std::get<1>(iov));
482 Form(
"#LT Pedestal #GT per %s for IOV [%s];#LTStrip Pedestal per %s#GT [ADC counts];n. %ss",
483 opType(op_mode_).c_str(),
485 opType(op_mode_).c_str(),
486 opType(op_mode_).c_str()),
491 unsigned int prev_det = 0, prev_apv = 0;
494 std::vector<uint32_t> detids;
498 for (
const auto&
d : detids) {
501 unsigned int istrip = 0;
503 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
511 flush = (prev_det != 0 && prev_det !=
d);
514 flush = (istrip != 0);
519 mon1D->Fill(prev_apv, prev_det, epedestal.
mean());
531 TCanvas
canvas(
"Partion summary",
"partition summary", 1200, 1000);
533 canvas.SetBottomMargin(0.11);
534 canvas.SetTopMargin(0.07);
535 canvas.SetLeftMargin(0.13);
536 canvas.SetRightMargin(0.05);
539 auto hist = mon1D->getHist();
541 hist.SetStats(kTRUE);
542 hist.SetFillColorAlpha(kRed, 0.35);
547 TPaveStats* st = (TPaveStats*)
hist.GetListOfFunctions()->FindObject(
"stats");
548 st->SetLineColor(kRed);
549 st->SetTextColor(kRed);
555 TLegend
legend = TLegend(0.13, 0.83, 0.43, 0.93);
556 legend.SetHeader(Form(
"SiStrip Pedestal values per %s", opType(op_mode_).c_str()),
559 legend.SetTextSize(0.025);
574 typedef SiStripPedestalDistribution<SiStripPI::STRIP_BASED> SiStripPedestalValuePerStrip;
575 typedef SiStripPedestalDistribution<SiStripPI::APV_BASED> SiStripPedestalValuePerAPV;
576 typedef SiStripPedestalDistribution<SiStripPI::MODULE_BASED> SiStripPedestalValuePerModule;
584 template <SiStripPI::OpMode op_mode_,
int ntags, IOVMultiplicity nIOVs>
585 class SiStripPedestalDistributionComparisonBase :
public PlotImage<SiStripPedestals, nIOVs, ntags> {
587 SiStripPedestalDistributionComparisonBase()
590 bool fill()
override {
591 TGaxis::SetExponentOffset(-0.1, 0.01,
"y");
594 auto theIOVs = PlotBase::getTag<0>().iovs;
595 auto tagname1 = PlotBase::getTag<0>().
name;
597 auto firstiov = theIOVs.front();
601 assert(this->m_plotAnnotations.ntags < 3);
603 if (this->m_plotAnnotations.ntags == 2) {
604 auto tag2iovs = PlotBase::getTag<1>().iovs;
605 tagname2 = PlotBase::getTag<1>().
name;
606 lastiov = tag2iovs.front();
608 lastiov = theIOVs.back();
611 std::shared_ptr<SiStripPedestals> f_payload = this->fetchPayload(std::get<1>(firstiov));
612 std::shared_ptr<SiStripPedestals> l_payload = this->fetchPayload(std::get<1>(lastiov));
617 Form(
";#LTStrip Pedestal per %s#GT [ADC counts];n. %ss", opType(op_mode_).c_str(), opType(op_mode_).c_str()),
625 Form(
";#LTStrip Pedestal per %s#GT [ADC counts];n. %ss", opType(op_mode_).c_str(), opType(op_mode_).c_str()),
630 unsigned int prev_det = 0, prev_apv = 0;
633 std::vector<uint32_t> f_detid;
634 f_payload->getDetIds(f_detid);
637 for (
const auto&
d : f_detid) {
640 unsigned int istrip = 0;
641 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
651 flush = (prev_det != 0 && prev_det !=
d);
654 flush = (istrip != 0);
659 f_mon->Fill(prev_apv, prev_det, epedestal.
mean());
669 prev_det = 0, prev_apv = 0;
672 std::vector<uint32_t> l_detid;
673 l_payload->getDetIds(l_detid);
676 for (
const auto&
d : l_detid) {
679 unsigned int istrip = 0;
680 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
689 flush = (prev_det != 0 && prev_det !=
d);
692 flush = (istrip != 0);
697 l_mon->Fill(prev_apv, prev_det, epedestal.
mean());
708 auto h_first = f_mon->getHist();
709 h_first.SetStats(kFALSE);
710 auto h_last = l_mon->getHist();
711 h_last.SetStats(kFALSE);
716 h_first.GetYaxis()->CenterTitle(
true);
717 h_last.GetYaxis()->CenterTitle(
true);
719 h_first.GetXaxis()->CenterTitle(
true);
720 h_last.GetXaxis()->CenterTitle(
true);
722 h_first.SetLineWidth(2);
723 h_last.SetLineWidth(2);
725 h_first.SetLineColor(kBlack);
726 h_last.SetLineColor(kBlue);
729 TCanvas
canvas(
"Partion summary",
"partition summary", 1200, 1000);
731 canvas.SetTopMargin(0.06);
732 canvas.SetBottomMargin(0.10);
733 canvas.SetLeftMargin(0.13);
734 canvas.SetRightMargin(0.05);
737 float theMax = (h_first.GetMaximum() > h_last.GetMaximum()) ? h_first.GetMaximum() : h_last.GetMaximum();
739 h_first.SetMaximum(theMax * 1.20);
740 h_last.SetMaximum(theMax * 1.20);
743 h_last.SetFillColorAlpha(kBlue, 0.15);
746 TLegend
legend = TLegend(0.13, 0.83, 0.95, 0.94);
747 if (this->m_plotAnnotations.ntags == 2) {
748 legend.SetHeader(
"#bf{Two Tags Comparison}",
"C");
749 legend.AddEntry(&h_first, (tagname1 +
" : " +
std::to_string(std::get<0>(firstiov))).c_str(),
"F");
750 legend.AddEntry(&h_last, (tagname2 +
" : " +
std::to_string(std::get<0>(lastiov))).c_str(),
"F");
752 legend.SetHeader((
"tag: #bf{" + tagname1 +
"}").c_str(),
"C");
753 legend.AddEntry(&h_first, (
"IOV since: " +
std::to_string(std::get<0>(firstiov))).c_str(),
"F");
756 legend.SetTextSize(0.025);
761 ltx.SetTextSize(0.05);
762 ltx.SetTextAlign(11);
763 ltx.DrawLatexNDC(gPad->GetLeftMargin(),
764 1 - gPad->GetTopMargin() + 0.01,
765 Form(
"#LTSiStrip Pedestals#GT Comparison per %s", opType(op_mode_).c_str()));
779 template <SiStripPI::OpMode op_mode_>
780 using SiStripPedestalDistributionComparisonSingleTag =
781 SiStripPedestalDistributionComparisonBase<op_mode_, 1, MULTI_IOV>;
783 template <SiStripPI::OpMode op_mode_>
784 using SiStripPedestalDistributionComparisonTwoTags =
785 SiStripPedestalDistributionComparisonBase<op_mode_, 2, SINGLE_IOV>;
787 typedef SiStripPedestalDistributionComparisonSingleTag<SiStripPI::STRIP_BASED>
788 SiStripPedestalValueComparisonPerStripSingleTag;
789 typedef SiStripPedestalDistributionComparisonSingleTag<SiStripPI::APV_BASED>
790 SiStripPedestalValueComparisonPerAPVSingleTag;
791 typedef SiStripPedestalDistributionComparisonSingleTag<SiStripPI::MODULE_BASED>
792 SiStripPedestalValueComparisonPerModuleSingleTag;
794 typedef SiStripPedestalDistributionComparisonTwoTags<SiStripPI::STRIP_BASED>
795 SiStripPedestalValueComparisonPerStripTwoTags;
796 typedef SiStripPedestalDistributionComparisonTwoTags<SiStripPI::APV_BASED> SiStripPedestalValueComparisonPerAPVTwoTags;
797 typedef SiStripPedestalDistributionComparisonTwoTags<SiStripPI::MODULE_BASED>
798 SiStripPedestalValueComparisonPerModuleTwoTags;
805 class SiStripZeroPedestalsFraction_TrackerMap :
public PlotImage<SiStripPedestals, SINGLE_IOV> {
807 SiStripZeroPedestalsFraction_TrackerMap()
810 bool fill()
override {
811 auto tag = PlotBase::getTag<0>();
812 auto iov =
tag.iovs.front();
813 std::shared_ptr<SiStripPedestals>
payload = fetchPayload(std::get<1>(iov));
819 "Tracker Map of Zero SiStrip Pedestals fraction per module (payload : " + std::get<1>(iov) +
")";
821 std::unique_ptr<TrackerMap> tmap = std::make_unique<TrackerMap>(
"SiStripPedestals");
822 tmap->setTitle(titleMap);
825 std::vector<uint32_t> detid;
828 std::map<uint32_t, int> zeropeds_per_detid;
830 for (
const auto&
d : detid) {
833 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
837 zeropeds_per_detid[
d] += 1;
844 std::cout <<
"detid: " <<
d <<
" (n. APVs=" << detInfo.getNumberOfApvsAndStripLength(
d).first <<
") has " 845 << std::setw(4) << zeropeds_per_detid[
d]
846 <<
" zero-pedestals strips (i.e. a fraction:" << std::setprecision(5) <<
fraction <<
")" 862 template <SiStripPI::estimator est>
863 class SiStripPedestalsTrackerMap :
public PlotImage<SiStripPedestals, SINGLE_IOV> {
865 SiStripPedestalsTrackerMap()
869 bool fill()
override {
870 auto tag = PlotBase::getTag<0>();
871 auto iov =
tag.iovs.front();
872 std::shared_ptr<SiStripPedestals>
payload = fetchPayload(std::get<1>(iov));
875 "Tracker Map of SiStrip Pedestals " +
estimatorType(est) +
" per module (payload : " + std::get<1>(iov) +
")";
877 std::unique_ptr<TrackerMap> tmap = std::make_unique<TrackerMap>(
"SiStripPedestals");
878 tmap->setTitle(titleMap);
881 std::vector<uint32_t> detid;
884 std::map<unsigned int, float> info_per_detid;
886 for (
const auto&
d : detid) {
890 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
910 info_per_detid[
d] =
min;
913 info_per_detid[
d] =
max;
916 info_per_detid[
d] =
mean;
919 info_per_detid[
d] =
rms;
927 for (
const auto&
d : detid) {
928 tmap->fill(
d, info_per_detid[
d]);
938 typedef SiStripPedestalsTrackerMap<SiStripPI::min> SiStripPedestalsMin_TrackerMap;
939 typedef SiStripPedestalsTrackerMap<SiStripPI::max> SiStripPedestalsMax_TrackerMap;
940 typedef SiStripPedestalsTrackerMap<SiStripPI::mean> SiStripPedestalsMean_TrackerMap;
941 typedef SiStripPedestalsTrackerMap<SiStripPI::rms> SiStripPedestalsRMS_TrackerMap;
947 template <SiStripPI::estimator est>
948 class SiStripPedestalsByRegion :
public PlotImage<SiStripPedestals, SINGLE_IOV> {
950 SiStripPedestalsByRegion()
955 bool fill()
override {
956 auto tag = PlotBase::getTag<0>();
957 auto iov =
tag.iovs.front();
958 std::shared_ptr<SiStripPedestals>
payload = fetchPayload(std::get<1>(iov));
961 std::vector<uint32_t> detid;
964 for (
const auto&
d : detid) {
968 for (
int it = 0; it < (
range.second -
range.first) * 8 / 10; ++it) {
988 summaryPedestals.add(
d,
min);
991 summaryPedestals.add(
d,
max);
994 summaryPedestals.add(
d,
mean);
997 summaryPedestals.add(
d,
rms);
1005 std::map<unsigned int, SiStripDetSummary::Values>
map = summaryPedestals.getCounts();
1008 TCanvas
canvas(
"Partion summary",
"partition summary", 1200, 1000);
1010 auto h1 = std::unique_ptr<TH1F>(
new TH1F(
1012 Form(
"Average by partition of %s SiStrip Pedestals per module;;average SiStrip Pedestals %s [ADC counts]",
1018 h1->SetStats(
false);
1019 canvas.SetBottomMargin(0.18);
1020 canvas.SetLeftMargin(0.17);
1021 canvas.SetRightMargin(0.05);
1024 std::vector<int> boundaries;
1025 unsigned int iBin = 0;
1030 for (
const auto& element :
map) {
1032 int count = element.second.count;
1033 double mean = (element.second.mean) /
count;
1041 if (currentDetector.empty())
1042 currentDetector =
"TIB";
1044 switch ((element.first) / 1000) {
1059 h1->SetBinContent(iBin,
mean);
1061 h1->GetXaxis()->LabelsOption(
"v");
1064 boundaries.push_back(iBin);
1069 h1->SetMarkerStyle(20);
1070 h1->SetMarkerSize(1);
1071 h1->SetMaximum(h1->GetMaximum() * 1.1);
1077 TLine
l[boundaries.size()];
1079 for (
const auto&
line : boundaries) {
1081 l[
i].SetLineWidth(1);
1082 l[
i].SetLineStyle(9);
1083 l[
i].SetLineColor(2);
1088 TLegend
legend = TLegend(0.52, 0.82, 0.95, 0.9);
1089 legend.SetHeader((std::get<1>(iov)).c_str(),
"C");
1091 legend.SetTextSize(0.025);
1104 typedef SiStripPedestalsByRegion<SiStripPI::mean> SiStripPedestalsMeanByRegion;
1105 typedef SiStripPedestalsByRegion<SiStripPI::min> SiStripPedestalsMinByRegion;
1106 typedef SiStripPedestalsByRegion<SiStripPI::max> SiStripPedestalsMaxByRegion;
1107 typedef SiStripPedestalsByRegion<SiStripPI::rms> SiStripPedestalsRMSByRegion;
std::pair< int, const char * > regionType(int index)
std::string to_string(const V &value)
std::pair< ContainerIterator, ContainerIterator > Range
static std::string const input
std::tuple< cond::Time_t, cond::Hash > MetaData
#define PAYLOAD_INSPECTOR_CLASS(CLASS_NAME)
void makeNicePlotStyle(TH1 *hist)
SiStripDetInfo read(std::string filePath)
#define PAYLOAD_INSPECTOR_MODULE(PAYLOAD_TYPENAME)
std::string estimatorType(SiStripPI::estimator e)
Log< level::Warning, true > LogPrint
const std::map< std::string, std::string > & inputParamValues() const
void addInputParam(const std::string ¶mName)
static const uint16_t STRIPS_PER_APV
TrackerTopology fromTrackerParametersXMLFile(const std::string &xmlFileName)
static constexpr char const *const kDefaultFile
Log< level::Warning, false > LogWarning