|
|
|
void | computeEfficiency (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &efficMEName, const std::string &efficMETitle, const std::string &recoMEName, const std::string &simMEName, const EfficType type=EfficType::efficiency, const bool makeProfile=false) |
|
void | computeProfile (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &profileMEName, const std::string &profileMETitle, const std::string &srcMEName) |
|
void | computeResolution (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &fitMEPrefix, const std::string &fitMETitlePrefix, const std::string &srcMEName) |
|
void | dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &) override |
|
void | dqmEndLuminosityBlock (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c) override |
|
void | dqmEndRun (DQMStore::IBooker &, DQMStore::IGetter &, edm::Run const &, edm::EventSetup const &) override |
|
| DQMGenericClient (const edm::ParameterSet &pset) |
|
void | limitedFit (MonitorElement *srcME, MonitorElement *meanME, MonitorElement *sigmaME) |
|
void | makeCumulativeDist (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &cdName, bool ascending=true) |
|
void | makeNoFlowDist (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &cdName) |
|
void | normalizeToEntries (DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &histName, const std::string &normHistName) |
|
| ~DQMGenericClient () override |
|
Definition at line 35 of file DQMGenericClient.cc.
◆ EfficType
◆ DQMGenericClient()
Definition at line 241 of file DQMGenericClient.cc.
243 typedef std::vector<edm::ParameterSet>
VPSet;
244 typedef std::vector<std::string>
vstring;
245 typedef boost::escaped_list_separator<char> elsc;
247 elsc commonEscapes(
"\\",
" \t",
"\'");
249 verbose_ =
pset.getUntrackedParameter<
unsigned int>(
"verbose", 0);
256 for (vstring::const_iterator effCmd = effCmds.begin(); effCmd != effCmds.end(); ++effCmd) {
260 boost::tokenizer<elsc> tokens(*effCmd, commonEscapes);
263 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
266 args.push_back(*iToken);
269 if (
args.size() < 4) {
270 LogInfo(
"DQMGenericClient") <<
"Wrong input to effCmds\n";
279 opt.isProfile =
false;
297 opt.name =
efficSet->getUntrackedParameter<
string>(
"name");
298 opt.title =
efficSet->getUntrackedParameter<
string>(
"title");
299 opt.numerator =
efficSet->getUntrackedParameter<
string>(
"numerator");
300 opt.denominator =
efficSet->getUntrackedParameter<
string>(
"denominator");
301 opt.isProfile =
false;
303 const string typeName =
efficSet->getUntrackedParameter<
string>(
"typeName",
"eff");
318 for (vstring::const_iterator effProfileCmd = effProfileCmds.begin(); effProfileCmd != effProfileCmds.end();
320 if (effProfileCmd->empty())
323 boost::tokenizer<elsc> tokens(*effProfileCmd, commonEscapes);
326 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
329 args.push_back(*iToken);
332 if (
args.size() < 4) {
333 LogInfo(
"DQMGenericClient") <<
"Wrong input to effProfileCmds\n";
342 opt.isProfile =
true;
357 VPSet effProfileSets =
pset.getUntrackedParameter<
VPSet>(
"efficiencyProfileSets",
VPSet());
358 for (VPSet::const_iterator effProfileSet = effProfileSets.begin(); effProfileSet != effProfileSets.end();
361 opt.name = effProfileSet->getUntrackedParameter<
string>(
"name");
362 opt.title = effProfileSet->getUntrackedParameter<
string>(
"title");
363 opt.numerator = effProfileSet->getUntrackedParameter<
string>(
"numerator");
364 opt.denominator = effProfileSet->getUntrackedParameter<
string>(
"denominator");
365 opt.isProfile =
true;
367 const string typeName = effProfileSet->getUntrackedParameter<
string>(
"typeName",
"eff");
382 for (vstring::const_iterator resCmd = resCmds.begin(); resCmd != resCmds.end(); ++resCmd) {
385 boost::tokenizer<elsc> tokens(*resCmd, commonEscapes);
388 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
391 args.push_back(*iToken);
394 if (
args.size() != 3) {
395 LogInfo(
"DQMGenericClient") <<
"Wrong input to resCmds\n";
408 for (VPSet::const_iterator resolSet = resolSets.begin(); resolSet != resolSets.end(); ++resolSet) {
410 opt.namePrefix = resolSet->getUntrackedParameter<
string>(
"namePrefix");
411 opt.titlePrefix = resolSet->getUntrackedParameter<
string>(
"titlePrefix");
412 opt.srcName = resolSet->getUntrackedParameter<
string>(
"srcName");
419 for (
const auto& profileCmd : profileCmds) {
420 boost::tokenizer<elsc> tokens(profileCmd, commonEscapes);
423 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
426 args.push_back(*iToken);
429 if (
args.size() != 3) {
430 LogInfo(
"DQMGenericClient") <<
"Wrong input to profileCmds\n";
443 for (
const auto& profileSet : profileSets) {
445 opt.name = profileSet.getUntrackedParameter<
string>(
"name");
446 opt.title = profileSet.getUntrackedParameter<
string>(
"title");
447 opt.srcName = profileSet.getUntrackedParameter<
string>(
"srcName");
454 for (vstring::const_iterator normCmd = normCmds.begin(); normCmd != normCmds.end(); ++normCmd) {
455 if (normCmd->empty())
457 boost::tokenizer<elsc> tokens(*normCmd, commonEscapes);
460 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
463 args.push_back(*iToken);
467 LogInfo(
"DQMGenericClient") <<
"Wrong input to normCmds\n";
479 for (VPSet::const_iterator normSet = normSets.begin(); normSet != normSets.end(); ++normSet) {
481 opt.name = normSet->getUntrackedParameter<
string>(
"name");
482 opt.normHistName = normSet->getUntrackedParameter<
string>(
"normalizedTo",
opt.name);
489 for (vstring::const_iterator cdCmd = cdCmds.begin(); cdCmd != cdCmds.end(); ++cdCmd) {
492 boost::tokenizer<elsc> tokens(*cdCmd, commonEscapes);
495 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
498 args.push_back(*iToken);
501 if (
args.empty() ||
args.size() > 2) {
502 LogInfo(
"DQMGenericClient") <<
"Wrong input to cdCmds\n";
508 opt.ascending =
args.size() == 2 ? (
args[1] !=
"descending") :
true;
514 for (VPSet::const_iterator cdSet = cdSets.begin(); cdSet != cdSets.end(); ++cdSet) {
516 opt.name = cdSet->getUntrackedParameter<
string>(
"name");
517 opt.ascending = cdSet->getUntrackedParameter<
bool>(
"ascending",
true);
524 for (vstring::const_iterator noFlowCmd = noFlowCmds.begin(); noFlowCmd != noFlowCmds.end(); ++noFlowCmd) {
525 if (noFlowCmd->empty())
527 boost::tokenizer<elsc> tokens(*noFlowCmd, commonEscapes);
530 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
533 args.push_back(*iToken);
536 if (
args.empty() ||
args.size() > 2) {
537 LogInfo(
"DQMGenericClient") <<
"Wrong input to noFlowCmds\n";
548 for (VPSet::const_iterator noFlowSet = noFlowSets.begin(); noFlowSet != noFlowSets.end(); ++noFlowSet) {
550 opt.name = noFlowSet->getUntrackedParameter<
string>(
"name");
References writedatasetfile::args, cdOptions_, efficiency, efficOptions_, postValidation_cfi::efficSet(), fakerate, isWildcardUsed_, makeGlobalEffPlot_, noFlowOptions_, none, normOptions_, runTheMatrix::opt, or, outputFileName_, profileOptions_, muonDTDigis_cfi::pset, resLimitedFit_, resolOptions_, runOnEndJob_, runOnEndLumi_, simpleratio, subDirs_, dqmiodumpindices::typeName, verbose_, and HistogramManager_cfi::VPSet().
◆ ~DQMGenericClient()
DQMGenericClient::~DQMGenericClient |
( |
| ) |
|
|
inlineoverride |
◆ computeEfficiency()
void DQMGenericClient::computeEfficiency |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
const std::string & |
startDir, |
|
|
const std::string & |
efficMEName, |
|
|
const std::string & |
efficMETitle, |
|
|
const std::string & |
recoMEName, |
|
|
const std::string & |
simMEName, |
|
|
const EfficType |
type = EfficType::efficiency , |
|
|
const bool |
makeProfile = false |
|
) |
| |
Definition at line 672 of file DQMGenericClient.cc.
683 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
684 <<
"Cannot find sub-directory " << startDir << endl;
691 ME* simME = igetter.
get(startDir +
"/" + simMEName);
692 ME* recoME = igetter.
get(startDir +
"/" + recoMEName);
696 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
697 <<
"No sim-ME '" << simMEName <<
"' found\n";
704 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
705 <<
"No reco-ME '" << recoMEName <<
"' found\n";
712 TH1* hSim = simME->getTH1();
713 TH1* hReco = recoME->getTH1();
715 if (!hSim || !hReco) {
717 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
718 <<
"Cannot create TH1 from ME\n";
723 string efficDir = startDir;
724 string newEfficMEName = efficMEName;
726 if (string::npos != (shiftPos = efficMEName.rfind(
'/'))) {
727 efficDir +=
"/" + efficMEName.substr(0, shiftPos);
728 newEfficMEName.erase(0, shiftPos + 1);
733 TProfile* efficHist = (hReco->GetXaxis()->GetXbins()->GetSize() == 0)
734 ?
new TProfile(newEfficMEName.c_str(),
735 efficMETitle.c_str(),
736 hReco->GetXaxis()->GetNbins(),
737 hReco->GetXaxis()->GetXmin(),
738 hReco->GetXaxis()->GetXmax())
739 :
new TProfile(newEfficMEName.c_str(),
740 efficMETitle.c_str(),
741 hReco->GetXaxis()->GetNbins(),
742 hReco->GetXaxis()->GetXbins()->GetArray());
744 efficHist->GetXaxis()->SetTitle(hSim->GetXaxis()->GetTitle());
745 efficHist->GetYaxis()->SetTitle(hSim->GetYaxis()->GetTitle());
747 for (
int i = 1;
i <= hReco->GetNbinsX();
i++) {
748 const double nReco = hReco->GetBinContent(
i);
749 const double nSim = hSim->GetBinContent(
i);
752 efficHist->GetXaxis()->SetBinLabel(
i, hSim->GetXaxis()->GetBinLabel(
i));
754 if (nSim == 0
or nReco < 0 or nReco > nSim)
756 const double effVal = nReco / nSim;
757 const double errLo = TEfficiency::ClopperPearson(nSim, nReco, 0.683,
false);
758 const double errUp = TEfficiency::ClopperPearson(nSim, nReco, 0.683,
true);
759 const double errVal = (effVal - errLo > errUp - effVal) ? effVal - errLo : errUp - effVal;
760 efficHist->SetBinContent(
i, effVal);
761 efficHist->SetBinEntries(
i, 1);
762 efficHist->SetBinError(
i, std::hypot(effVal, errVal));
769 TH1* efficHist = (TH1*)hSim->Clone(newEfficMEName.c_str());
770 efficHist->SetTitle(efficMETitle.c_str());
775 ME* efficME =
nullptr;
779 TClass* myHistClass = efficHist->IsA();
780 TString histClassName = myHistClass->GetName();
782 if (histClassName ==
"TH1F") {
783 efficME = ibooker.
book1D(newEfficMEName, (TH1F*)efficHist);
784 }
else if (histClassName ==
"TH2F") {
785 efficME = ibooker.
book2D(newEfficMEName, (TH2F*)efficHist);
786 }
else if (histClassName ==
"TH3F") {
787 efficME = ibooker.
book3D(newEfficMEName, (TH3F*)efficHist);
793 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
794 <<
"Cannot book effic-ME from the DQM\n";
815 efficME->setEntries(simME->getEntries());
820 ME* globalEfficME = igetter.
get(efficDir +
"/globalEfficiencies");
822 globalEfficME = ibooker.
book1D(
"globalEfficiencies",
"Global efficiencies", 1, 0, 1);
823 if (!globalEfficME) {
824 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
825 <<
"Cannot book globalEffic-ME from the DQM\n";
828 globalEfficME->setEfficiencyFlag();
829 TH1F* hGlobalEffic = globalEfficME->getTH1F();
831 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
832 <<
"Cannot create TH1F from ME, globalEfficME\n";
836 const float nSimAll = hSim->GetEntries();
837 const float nRecoAll = hReco->GetEntries();
840 efficAll = nSimAll ? nRecoAll / nSimAll : 0;
842 efficAll = nSimAll ? 1 - nRecoAll / nSimAll : 0;
846 const float x = nRecoAll / nSimAll;
850 errorAll = nSimAll && efficAll < 1 ?
sqrt(efficAll * (1 - efficAll) / nSimAll) : 0;
852 const int iBin = hGlobalEffic->Fill(newEfficMEName.c_str(), 0);
853 hGlobalEffic->SetBinContent(iBin, efficAll);
854 hGlobalEffic->SetBinError(iBin, errorAll);
References dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::book2D(), dqm::implementation::IBooker::book3D(), dqm::implementation::IBooker::bookProfile(), dqm::implementation::NavigatorBase::cd(), dqm::implementation::IGetter::dirExists(), efficiency, relativeConstraints::empty, f, fakerate, generic_eff(), dqm::implementation::IGetter::get(), mps_fire::i, isWildcardUsed_, makeGlobalEffPlot_, or, dqm::implementation::NavigatorBase::setCurrentFolder(), simpleratio, mathSSE::sqrt(), AlCaHLTBitMon_QueryRunRegistry::string, verbose_, and x.
Referenced by makeAllPlots().
◆ computeProfile()
void DQMGenericClient::computeProfile |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
const std::string & |
startDir, |
|
|
const std::string & |
profileMEName, |
|
|
const std::string & |
profileMETitle, |
|
|
const std::string & |
srcMEName |
|
) |
| |
◆ computeResolution()
void DQMGenericClient::computeResolution |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
const std::string & |
startDir, |
|
|
const std::string & |
fitMEPrefix, |
|
|
const std::string & |
fitMETitlePrefix, |
|
|
const std::string & |
srcMEName |
|
) |
| |
Definition at line 858 of file DQMGenericClient.cc.
866 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
867 <<
"Cannot find sub-directory " << startDir << endl;
877 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
878 <<
"No source ME '" <<
srcName <<
"' found\n";
883 TH2F* hSrc = srcME->getTH2F();
886 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
887 <<
"Cannot create TH2F from source-ME\n";
892 const int nBin = hSrc->GetNbinsX();
894 string newDir = startDir;
897 if (string::npos != (shiftPos =
namePrefix.rfind(
'/'))) {
898 newDir +=
"/" +
namePrefix.substr(0, shiftPos);
899 newPrefix.erase(0, shiftPos + 1);
904 float* lowedgesfloats =
new float[
nBin + 1];
907 if (hSrc->GetXaxis()->GetXbins()->GetSize()) {
908 for (
int j = 0;
j <
nBin + 1; ++
j)
909 lowedgesfloats[
j] = (
float)hSrc->GetXaxis()->GetXbins()->GetAt(
j);
914 newPrefix +
"_Mean",
titlePrefix +
" Mean",
nBin, hSrc->GetXaxis()->GetXmin(), hSrc->GetXaxis()->GetXmax());
916 newPrefix +
"_Sigma",
titlePrefix +
" Sigma",
nBin, hSrc->GetXaxis()->GetXmin(), hSrc->GetXaxis()->GetXmax());
919 if (meanME && sigmaME) {
920 meanME->setEfficiencyFlag();
921 sigmaME->setEfficiencyFlag();
925 fitTool.getFittedMeanWithError(meanME);
926 fitTool.getFittedSigmaWithError(sigmaME);
932 delete[] lowedgesfloats;
References dqm::implementation::IBooker::book1D(), dqm::implementation::NavigatorBase::cd(), dqm::implementation::IGetter::dirExists(), dqm::implementation::IGetter::get(), FitSlicesYTool::getFittedMeanWithError(), FitSlicesYTool::getFittedSigmaWithError(), isWildcardUsed_, dqmiolumiharvest::j, limitedFit(), postValidation_cfi::namePrefix, PFElectronDQMAnalyzer_cfi::nBin, resLimitedFit_, dqm::implementation::NavigatorBase::setCurrentFolder(), postValidation_cfi::srcName, L1TdeStage2uGMT_cff::titlePrefix, and verbose_.
Referenced by makeAllPlots().
◆ dqmEndJob()
◆ dqmEndLuminosityBlock()
◆ dqmEndRun()
◆ findAllSubdirectories()
void DQMGenericClient::findAllSubdirectories |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
std::string |
dir, |
|
|
std::set< std::string > * |
myList, |
|
|
const TString & |
pattern = TString("") |
|
) |
| |
|
private |
Definition at line 1193 of file DQMGenericClient.cc.
1200 LogError(
"DQMGenericClient") <<
" DQMGenericClient::findAllSubdirectories ==> Missing folder " <<
dir <<
" !!!";
1205 pattern.ReplaceAll(
"*",
".*");
1208 vector<string> foundDirs = igetter.
getSubdirs();
1209 for (vector<string>::const_iterator iDir = foundDirs.begin(); iDir != foundDirs.end(); ++iDir) {
1210 TString
dirName = iDir->substr(iDir->rfind(
'/') + 1, iDir->length());
1225 LogInfo(
"DQMGenericClient") <<
"Trying to find sub-directories of " <<
dir <<
" failed because " <<
dir
1226 <<
" does not exist";
References dqm::implementation::NavigatorBase::cd(), DeadROC_duringRun::dir, dqm::implementation::IGetter::dirExists(), TrackerOfflineValidation_Dqm_cff::dirName, dqm::implementation::IGetter::getSubdirs(), PatBasicFWLiteJetAnalyzer_Selector_cfg::myList, nonPerlWildcard_, topSingleLeptonDQM_PU_cfi::pattern, and fetchall_from_DQM_v2::regexp.
Referenced by makeAllPlots().
◆ generic_eff()
Definition at line 1231 of file DQMGenericClient.cc.
1232 for (
int iBinX = 1; iBinX <
denom->GetNbinsX() + 1; iBinX++) {
1233 for (
int iBinY = 1; iBinY <
denom->GetNbinsY() + 1; iBinY++) {
1234 for (
int iBinZ = 1; iBinZ <
denom->GetNbinsZ() + 1; iBinZ++) {
1235 int globalBinNum =
denom->GetBin(iBinX, iBinY, iBinZ);
1237 float numerVal = numer->GetBinContent(globalBinNum);
1238 float denomVal =
denom->GetBinContent(globalBinNum);
1244 effVal = denomVal ? (1 - numerVal / denomVal) : 0;
1246 effVal = denomVal ? numerVal / denomVal : 0;
1252 float numerErr = numer->GetBinError(globalBinNum);
1253 float denomErr =
denom->GetBinError(globalBinNum);
1254 float denomsq = denomVal * denomVal;
1255 errVal = denomVal ?
sqrt(
pow(1.
f / denomVal * numerErr, 2.0) +
pow(numerVal / denomsq * denomErr, 2)) : 0;
1257 errVal = (denomVal && (effVal <= 1)) ?
sqrt(effVal * (1 - effVal) / denomVal) : 0;
1260 LogDebug(
"DQMGenericClient") <<
"(iBinX, iBinY, iBinZ) = " << iBinX <<
", " << iBinY <<
", " << iBinZ
1261 <<
"), global bin = " << globalBinNum <<
"eff = " << numerVal <<
" / "
1262 << denomVal <<
" = " << effVal <<
" ... setting the error for that bin ... "
1267 efficiencyHist->
setBinError(globalBinNum, errVal);
References makePileupJSON::denom, f, fakerate, LogDebug, funct::pow(), dqm::impl::MonitorElement::setBinContent(), dqm::impl::MonitorElement::setBinError(), dqm::impl::MonitorElement::setEfficiencyFlag(), simpleratio, and mathSSE::sqrt().
Referenced by computeEfficiency().
◆ limitedFit()
Definition at line 1138 of file DQMGenericClient.cc.
1145 double cont_min = 100;
1146 Int_t binx =
histo->GetXaxis()->GetNbins();
1148 for (
int i = 1;
i <= binx;
i++) {
1150 TH1* histoY =
histo->ProjectionY(
" ",
i,
i);
1151 double cont = histoY->GetEntries();
1153 if (
cont >= cont_min) {
1154 float minfit = histoY->GetMean() - histoY->GetRMS();
1155 float maxfit = histoY->GetMean() + histoY->GetRMS();
1157 TF1* fitFcn =
new TF1(TString(
"g") +
histo->GetName() + iString,
"gaus", minfit, maxfit);
1159 fitFcn->GetRange(
x1,
x2);
1161 fitFcn->SetParameters(histoY->Integral(), histoY->GetMean(), histoY->GetRMS());
1163 histoY->Fit(fitFcn,
"QR0 SERIAL",
"",
x1,
x2);
1166 double* par = fitFcn->GetParameters();
1167 const double*
err = fitFcn->GetParErrors();
References generateEDF::cont, submitPVResolutionJobs::err, dqm::legacy::MonitorElement::getTH2F(), timingPdfMaker::histo, mps_fire::i, dqm::impl::MonitorElement::setBinContent(), dqm::impl::MonitorElement::setBinError(), testProducerWithPsetDescEmpty_cfi::x1, and testProducerWithPsetDescEmpty_cfi::x2.
Referenced by computeResolution().
◆ makeAllPlots()
Definition at line 599 of file DQMGenericClient.cc.
600 typedef vector<string>
vstring;
603 set<string> subDirSet;
605 for (vstring::const_iterator iSubDir =
subDirs_.begin(); iSubDir !=
subDirs_.end(); ++iSubDir) {
615 const string searchPath =
subDir.substr(0, shiftPos);
626 for (set<string>::const_iterator iSubDir = subDirSet.begin(); iSubDir != subDirSet.end(); ++iSubDir) {
627 const string&
dirName = *iSubDir;
637 for (vector<NoFlowOption>::const_iterator noFlowOption =
noFlowOptions_.begin();
643 for (vector<CDOption>::const_iterator cdOption =
cdOptions_.begin(); cdOption !=
cdOptions_.end(); ++cdOption) {
654 efficOption->numerator,
655 efficOption->denominator,
657 efficOption->isProfile);
663 ibooker, igetter,
dirName, resolOption->namePrefix, resolOption->titlePrefix, resolOption->srcName);
667 computeProfile(ibooker, igetter,
dirName, profileOption.name, profileOption.title, profileOption.srcName);
References cdOptions_, computeEfficiency(), computeProfile(), computeResolution(), TrackerOfflineValidation_Dqm_cff::dirName, efficOptions_, findAllSubdirectories(), isWildcardUsed_, makeCumulativeDist(), makeNoFlowDist(), metacharacters_, noFlowOptions_, normalizeToEntries(), normOptions_, topSingleLeptonDQM_PU_cfi::pattern, profileOptions_, resolOptions_, PostProcessorHcalIsoTrack_cfi::subDir, and subDirs_.
Referenced by dqmEndLuminosityBlock(), and dqmEndRun().
◆ makeCumulativeDist()
void DQMGenericClient::makeCumulativeDist |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
const std::string & |
startDir, |
|
|
const std::string & |
cdName, |
|
|
bool |
ascending = true |
|
) |
| |
◆ makeNoFlowDist()
◆ normalizeToEntries()
void DQMGenericClient::normalizeToEntries |
( |
DQMStore::IBooker & |
ibooker, |
|
|
DQMStore::IGetter & |
igetter, |
|
|
const std::string & |
startDir, |
|
|
const std::string & |
histName, |
|
|
const std::string & |
normHistName |
|
) |
| |
◆ removeMEIfBooked()
void DQMGenericClient::removeMEIfBooked |
( |
const std::string & |
meName, |
|
|
DQMStore::IGetter & |
igetter |
|
) |
| |
|
private |
◆ cdOptions_
std::vector<CDOption> DQMGenericClient::cdOptions_ |
|
private |
◆ efficOptions_
std::vector<EfficOption> DQMGenericClient::efficOptions_ |
|
private |
◆ isWildcardUsed_
bool DQMGenericClient::isWildcardUsed_ |
|
private |
◆ makeGlobalEffPlot_
bool DQMGenericClient::makeGlobalEffPlot_ |
|
private |
◆ metacharacters_
TPRegexp DQMGenericClient::metacharacters_ |
|
private |
◆ noFlowOptions_
◆ nonPerlWildcard_
TPRegexp DQMGenericClient::nonPerlWildcard_ |
|
private |
◆ normOptions_
std::vector<NormOption> DQMGenericClient::normOptions_ |
|
private |
◆ outputFileName_
std::string DQMGenericClient::outputFileName_ |
|
private |
◆ profileOptions_
◆ resLimitedFit_
bool DQMGenericClient::resLimitedFit_ |
|
private |
◆ resolOptions_
std::vector<ResolOption> DQMGenericClient::resolOptions_ |
|
private |
◆ runOnEndJob_
bool DQMGenericClient::runOnEndJob_ |
|
private |
◆ runOnEndLumi_
bool DQMGenericClient::runOnEndLumi_ |
|
private |
◆ subDirs_
std::vector<std::string> DQMGenericClient::subDirs_ |
|
private |
◆ theDQM
◆ verbose_
unsigned int DQMGenericClient::verbose_ |
|
private |
std::vector< ProfileOption > profileOptions_
void computeEfficiency(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &efficMEName, const std::string &efficMETitle, const std::string &recoMEName, const std::string &simMEName, const EfficType type=EfficType::efficiency, const bool makeProfile=false)
void makeAllPlots(DQMStore::IBooker &, DQMStore::IGetter &)
virtual void setCurrentFolder(std::string const &fullpath)
cont
load Luminosity info ##
std::vector< NoFlowOption > noFlowOptions_
virtual DQM_DEPRECATED std::vector< std::string > getSubdirs() const
Log< level::Info, false > LogInfo
std::vector< EfficOption > efficOptions_
std::string outputFileName_
std::vector< std::string > subDirs_
void makeCumulativeDist(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &cdName, bool ascending=true)
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
std::vector< ResolOption > resolOptions_
std::vector< CDOption > cdOptions_
void normalizeToEntries(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &histName, const std::string &normHistName)
TPRegexp nonPerlWildcard_
Log< level::Error, false > LogError
def efficSet(nameIn, titleIn, numeratorIn, denominatorIn, typeIn="eff")
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
void findAllSubdirectories(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string dir, std::set< std::string > *myList, const TString &pattern)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
MonitorElement * book3D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, FUNC onbooking=NOOP())
void computeResolution(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &fitMEPrefix, const std::string &fitMETitlePrefix, const std::string &srcMEName)
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
virtual MonitorElement * get(std::string const &fullpath) const
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
void generic_eff(TH1 *denom, TH1 *numer, MonitorElement *efficiencyHist, const EfficType type=EfficType::efficiency)
Power< A, B >::type pow(const A &a, const B &b)
void makeNoFlowDist(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &cdName)
virtual bool dirExists(std::string const &path) const
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
void limitedFit(MonitorElement *srcME, MonitorElement *meanME, MonitorElement *sigmaME)
std::vector< NormOption > normOptions_
void computeProfile(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, const std::string &startDir, const std::string &profileMEName, const std::string &profileMETitle, const std::string &srcMEName)
virtual TH2F * getTH2F() const