|
|
|
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 240 of file DQMGenericClient.cc.
242 typedef std::vector<edm::ParameterSet>
VPSet;
243 typedef std::vector<std::string>
vstring;
244 typedef boost::escaped_list_separator<char> elsc;
246 elsc commonEscapes(
"\\",
" \t",
"\'");
248 verbose_ =
pset.getUntrackedParameter<
unsigned int>(
"verbose", 0);
255 for (vstring::const_iterator effCmd = effCmds.begin(); effCmd != effCmds.end(); ++effCmd) {
259 boost::tokenizer<elsc> tokens(*effCmd, commonEscapes);
262 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
265 args.push_back(*iToken);
268 if (
args.size() < 4) {
269 LogInfo(
"DQMGenericClient") <<
"Wrong input to effCmds\n";
278 opt.isProfile =
false;
296 opt.name =
efficSet->getUntrackedParameter<
string>(
"name");
297 opt.title =
efficSet->getUntrackedParameter<
string>(
"title");
298 opt.numerator =
efficSet->getUntrackedParameter<
string>(
"numerator");
299 opt.denominator =
efficSet->getUntrackedParameter<
string>(
"denominator");
300 opt.isProfile =
false;
302 const string typeName =
efficSet->getUntrackedParameter<
string>(
"typeName",
"eff");
317 for (vstring::const_iterator effProfileCmd = effProfileCmds.begin(); effProfileCmd != effProfileCmds.end();
319 if (effProfileCmd->empty())
322 boost::tokenizer<elsc> tokens(*effProfileCmd, commonEscapes);
325 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
328 args.push_back(*iToken);
331 if (
args.size() < 4) {
332 LogInfo(
"DQMGenericClient") <<
"Wrong input to effProfileCmds\n";
341 opt.isProfile =
true;
356 VPSet effProfileSets =
pset.getUntrackedParameter<
VPSet>(
"efficiencyProfileSets",
VPSet());
357 for (VPSet::const_iterator effProfileSet = effProfileSets.begin(); effProfileSet != effProfileSets.end();
360 opt.name = effProfileSet->getUntrackedParameter<
string>(
"name");
361 opt.title = effProfileSet->getUntrackedParameter<
string>(
"title");
362 opt.numerator = effProfileSet->getUntrackedParameter<
string>(
"numerator");
363 opt.denominator = effProfileSet->getUntrackedParameter<
string>(
"denominator");
364 opt.isProfile =
true;
366 const string typeName = effProfileSet->getUntrackedParameter<
string>(
"typeName",
"eff");
381 for (vstring::const_iterator resCmd = resCmds.begin(); resCmd != resCmds.end(); ++resCmd) {
384 boost::tokenizer<elsc> tokens(*resCmd, commonEscapes);
387 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
390 args.push_back(*iToken);
393 if (
args.size() != 3) {
394 LogInfo(
"DQMGenericClient") <<
"Wrong input to resCmds\n";
407 for (VPSet::const_iterator resolSet = resolSets.begin(); resolSet != resolSets.end(); ++resolSet) {
409 opt.namePrefix = resolSet->getUntrackedParameter<
string>(
"namePrefix");
410 opt.titlePrefix = resolSet->getUntrackedParameter<
string>(
"titlePrefix");
411 opt.srcName = resolSet->getUntrackedParameter<
string>(
"srcName");
418 for (
const auto& profileCmd : profileCmds) {
419 boost::tokenizer<elsc> tokens(profileCmd, commonEscapes);
422 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
425 args.push_back(*iToken);
428 if (
args.size() != 3) {
429 LogInfo(
"DQMGenericClient") <<
"Wrong input to profileCmds\n";
442 for (
const auto& profileSet : profileSets) {
444 opt.name = profileSet.getUntrackedParameter<
string>(
"name");
445 opt.title = profileSet.getUntrackedParameter<
string>(
"title");
446 opt.srcName = profileSet.getUntrackedParameter<
string>(
"srcName");
453 for (vstring::const_iterator normCmd = normCmds.begin(); normCmd != normCmds.end(); ++normCmd) {
454 if (normCmd->empty())
456 boost::tokenizer<elsc> tokens(*normCmd, commonEscapes);
459 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
462 args.push_back(*iToken);
466 LogInfo(
"DQMGenericClient") <<
"Wrong input to normCmds\n";
478 for (VPSet::const_iterator normSet = normSets.begin(); normSet != normSets.end(); ++normSet) {
480 opt.name = normSet->getUntrackedParameter<
string>(
"name");
481 opt.normHistName = normSet->getUntrackedParameter<
string>(
"normalizedTo",
opt.name);
488 for (vstring::const_iterator cdCmd = cdCmds.begin(); cdCmd != cdCmds.end(); ++cdCmd) {
491 boost::tokenizer<elsc> tokens(*cdCmd, commonEscapes);
494 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
497 args.push_back(*iToken);
500 if (
args.empty() ||
args.size() > 2) {
501 LogInfo(
"DQMGenericClient") <<
"Wrong input to cdCmds\n";
507 opt.ascending =
args.size() == 2 ? (
args[1] !=
"descending") :
true;
513 for (VPSet::const_iterator cdSet = cdSets.begin(); cdSet != cdSets.end(); ++cdSet) {
515 opt.name = cdSet->getUntrackedParameter<
string>(
"name");
516 opt.ascending = cdSet->getUntrackedParameter<
bool>(
"ascending",
true);
523 for (vstring::const_iterator noFlowCmd = noFlowCmds.begin(); noFlowCmd != noFlowCmds.end(); ++noFlowCmd) {
524 if (noFlowCmd->empty())
526 boost::tokenizer<elsc> tokens(*noFlowCmd, commonEscapes);
529 for (boost::tokenizer<elsc>::const_iterator iToken = tokens.begin(); iToken != tokens.end(); ++iToken) {
532 args.push_back(*iToken);
535 if (
args.empty() ||
args.size() > 2) {
536 LogInfo(
"DQMGenericClient") <<
"Wrong input to noFlowCmds\n";
547 for (VPSet::const_iterator noFlowSet = noFlowSets.begin(); noFlowSet != noFlowSets.end(); ++noFlowSet) {
549 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 671 of file DQMGenericClient.cc.
682 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
683 <<
"Cannot find sub-directory " << startDir << endl;
690 ME* simME = igetter.
get(startDir +
"/" + simMEName);
691 ME* recoME = igetter.
get(startDir +
"/" + recoMEName);
695 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
696 <<
"No sim-ME '" << simMEName <<
"' found\n";
703 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
704 <<
"No reco-ME '" << recoMEName <<
"' found\n";
711 TH1* hSim = simME->getTH1();
712 TH1* hReco = recoME->getTH1();
714 if (!hSim || !hReco) {
716 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
717 <<
"Cannot create TH1 from ME\n";
722 string efficDir = startDir;
723 string newEfficMEName = efficMEName;
725 if (string::npos != (shiftPos = efficMEName.rfind(
'/'))) {
726 efficDir +=
"/" + efficMEName.substr(0, shiftPos);
727 newEfficMEName.erase(0, shiftPos + 1);
732 TProfile* efficHist = (hReco->GetXaxis()->GetXbins()->GetSize() == 0)
733 ?
new TProfile(newEfficMEName.c_str(),
734 efficMETitle.c_str(),
735 hReco->GetXaxis()->GetNbins(),
736 hReco->GetXaxis()->GetXmin(),
737 hReco->GetXaxis()->GetXmax())
738 :
new TProfile(newEfficMEName.c_str(),
739 efficMETitle.c_str(),
740 hReco->GetXaxis()->GetNbins(),
741 hReco->GetXaxis()->GetXbins()->GetArray());
743 efficHist->GetXaxis()->SetTitle(hSim->GetXaxis()->GetTitle());
744 efficHist->GetYaxis()->SetTitle(hSim->GetYaxis()->GetTitle());
746 for (
int i = 1;
i <= hReco->GetNbinsX();
i++) {
747 const double nReco = hReco->GetBinContent(
i);
748 const double nSim = hSim->GetBinContent(
i);
751 efficHist->GetXaxis()->SetBinLabel(
i, hSim->GetXaxis()->GetBinLabel(
i));
753 if (nSim == 0
or nReco < 0 or nReco > nSim)
755 const double effVal = nReco / nSim;
756 const double errLo = TEfficiency::ClopperPearson(nSim, nReco, 0.683,
false);
757 const double errUp = TEfficiency::ClopperPearson(nSim, nReco, 0.683,
true);
758 const double errVal = (effVal - errLo > errUp - effVal) ? effVal - errLo : errUp - effVal;
759 efficHist->SetBinContent(
i, effVal);
760 efficHist->SetBinEntries(
i, 1);
761 efficHist->SetBinError(
i, std::hypot(effVal, errVal));
768 TH1* efficHist = (TH1*)hSim->Clone(newEfficMEName.c_str());
769 efficHist->SetTitle(efficMETitle.c_str());
774 ME* efficME =
nullptr;
778 TClass* myHistClass = efficHist->IsA();
779 TString histClassName = myHistClass->GetName();
781 if (histClassName ==
"TH1F") {
782 efficME = ibooker.
book1D(newEfficMEName, (TH1F*)efficHist);
783 }
else if (histClassName ==
"TH2F") {
784 efficME = ibooker.
book2D(newEfficMEName, (TH2F*)efficHist);
785 }
else if (histClassName ==
"TH3F") {
786 efficME = ibooker.
book3D(newEfficMEName, (TH3F*)efficHist);
792 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
793 <<
"Cannot book effic-ME from the DQM\n";
814 efficME->setEntries(simME->getEntries());
819 ME* globalEfficME = igetter.
get(efficDir +
"/globalEfficiencies");
821 globalEfficME = ibooker.
book1D(
"globalEfficiencies",
"Global efficiencies", 1, 0, 1);
822 if (!globalEfficME) {
823 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
824 <<
"Cannot book globalEffic-ME from the DQM\n";
827 globalEfficME->setEfficiencyFlag();
828 TH1F* hGlobalEffic = globalEfficME->getTH1F();
830 LogInfo(
"DQMGenericClient") <<
"computeEfficiency() : "
831 <<
"Cannot create TH1F from ME, globalEfficME\n";
835 const float nSimAll = hSim->GetEntries();
836 const float nRecoAll = hReco->GetEntries();
839 efficAll = nSimAll ? nRecoAll / nSimAll : 0;
841 efficAll = nSimAll ? 1 - nRecoAll / nSimAll : 0;
845 const float x = nRecoAll / nSimAll;
849 errorAll = nSimAll && efficAll < 1 ?
sqrt(efficAll * (1 - efficAll) / nSimAll) : 0;
851 const int iBin = hGlobalEffic->Fill(newEfficMEName.c_str(), 0);
852 hGlobalEffic->SetBinContent(iBin, efficAll);
853 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 857 of file DQMGenericClient.cc.
865 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
866 <<
"Cannot find sub-directory " << startDir << endl;
876 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
877 <<
"No source ME '" <<
srcName <<
"' found\n";
882 TH2F* hSrc = srcME->getTH2F();
885 LogInfo(
"DQMGenericClient") <<
"computeResolution() : "
886 <<
"Cannot create TH2F from source-ME\n";
891 const int nBin = hSrc->GetNbinsX();
893 string newDir = startDir;
896 if (string::npos != (shiftPos =
namePrefix.rfind(
'/'))) {
897 newDir +=
"/" +
namePrefix.substr(0, shiftPos);
898 newPrefix.erase(0, shiftPos + 1);
903 float* lowedgesfloats =
new float[
nBin + 1];
906 if (hSrc->GetXaxis()->GetXbins()->GetSize()) {
907 for (
int j = 0;
j <
nBin + 1; ++
j)
908 lowedgesfloats[
j] = (
float)hSrc->GetXaxis()->GetXbins()->GetAt(
j);
913 newPrefix +
"_Mean",
titlePrefix +
" Mean",
nBin, hSrc->GetXaxis()->GetXmin(), hSrc->GetXaxis()->GetXmax());
915 newPrefix +
"_Sigma",
titlePrefix +
" Sigma",
nBin, hSrc->GetXaxis()->GetXmin(), hSrc->GetXaxis()->GetXmax());
918 if (meanME && sigmaME) {
919 meanME->setEfficiencyFlag();
920 sigmaME->setEfficiencyFlag();
924 fitTool.getFittedMeanWithError(meanME);
925 fitTool.getFittedSigmaWithError(sigmaME);
931 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 1190 of file DQMGenericClient.cc.
1197 LogError(
"DQMGenericClient") <<
" DQMGenericClient::findAllSubdirectories ==> Missing folder " <<
dir <<
" !!!";
1202 pattern.ReplaceAll(
"*",
".*");
1205 vector<string> foundDirs = igetter.
getSubdirs();
1206 for (vector<string>::const_iterator iDir = foundDirs.begin(); iDir != foundDirs.end(); ++iDir) {
1207 TString
dirName = iDir->substr(iDir->rfind(
'/') + 1, iDir->length());
1222 LogInfo(
"DQMGenericClient") <<
"Trying to find sub-directories of " <<
dir <<
" failed because " <<
dir
1223 <<
" 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 1228 of file DQMGenericClient.cc.
1229 for (
int iBinX = 1; iBinX <
denom->GetNbinsX() + 1; iBinX++) {
1230 for (
int iBinY = 1; iBinY <
denom->GetNbinsY() + 1; iBinY++) {
1231 for (
int iBinZ = 1; iBinZ <
denom->GetNbinsZ() + 1; iBinZ++) {
1232 int globalBinNum =
denom->GetBin(iBinX, iBinY, iBinZ);
1234 float numerVal = numer->GetBinContent(globalBinNum);
1235 float denomVal =
denom->GetBinContent(globalBinNum);
1241 effVal = denomVal ? (1 - numerVal / denomVal) : 0;
1243 effVal = denomVal ? numerVal / denomVal : 0;
1249 float numerErr = numer->GetBinError(globalBinNum);
1250 float denomErr =
denom->GetBinError(globalBinNum);
1251 float denomsq = denomVal * denomVal;
1252 errVal = denomVal ?
sqrt(
pow(1.
f / denomVal * numerErr, 2.0) +
pow(numerVal / denomsq * denomErr, 2)) : 0;
1254 errVal = (denomVal && (effVal <= 1)) ?
sqrt(effVal * (1 - effVal) / denomVal) : 0;
1257 LogDebug(
"DQMGenericClient") <<
"(iBinX, iBinY, iBinZ) = " << iBinX <<
", " << iBinY <<
", " << iBinZ
1258 <<
"), global bin = " << globalBinNum <<
"eff = " << numerVal <<
" / "
1259 << denomVal <<
" = " << effVal <<
" ... setting the error for that bin ... "
1264 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 1137 of file DQMGenericClient.cc.
1144 double cont_min = 100;
1145 Int_t binx =
histo->GetXaxis()->GetNbins();
1147 for (
int i = 1;
i <= binx;
i++) {
1149 TH1* histoY =
histo->ProjectionY(
" ",
i,
i);
1150 double cont = histoY->GetEntries();
1152 if (
cont >= cont_min) {
1153 float minfit = histoY->GetMean() - histoY->GetRMS();
1154 float maxfit = histoY->GetMean() + histoY->GetRMS();
1156 TF1* fitFcn =
new TF1(TString(
"g") +
histo->GetName() + iString,
"gaus", minfit, maxfit);
1158 fitFcn->GetRange(
x1,
x2);
1160 histoY->Fit(fitFcn,
"QR0 SERIAL",
"",
x1,
x2);
1163 double* par = fitFcn->GetParameters();
1164 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(), tools::TF1, testProducerWithPsetDescEmpty_cfi::x1, and testProducerWithPsetDescEmpty_cfi::x2.
Referenced by computeResolution().
◆ makeAllPlots()
Definition at line 598 of file DQMGenericClient.cc.
599 typedef vector<string>
vstring;
602 set<string> subDirSet;
604 for (vstring::const_iterator iSubDir =
subDirs_.begin(); iSubDir !=
subDirs_.end(); ++iSubDir) {
614 const string searchPath =
subDir.substr(0, shiftPos);
625 for (set<string>::const_iterator iSubDir = subDirSet.begin(); iSubDir != subDirSet.end(); ++iSubDir) {
626 const string&
dirName = *iSubDir;
636 for (vector<NoFlowOption>::const_iterator noFlowOption =
noFlowOptions_.begin();
642 for (vector<CDOption>::const_iterator cdOption =
cdOptions_.begin(); cdOption !=
cdOptions_.end(); ++cdOption) {
653 efficOption->numerator,
654 efficOption->denominator,
656 efficOption->isProfile);
662 ibooker, igetter,
dirName, resolOption->namePrefix, resolOption->titlePrefix, resolOption->srcName);
666 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