1 #ifndef DQMServices_Core_DQMStore_h 2 #define DQMServices_Core_DQMStore_h 4 #if __GNUC__ && !defined DQM_DEPRECATED 24 #include <classlib/utils/Regexp.h> 64 class DQMStoreExample;
93 std::unique_ptr<lat::Regexp> regexp_{
nullptr};
103 enum SaveReferenceTag { SaveWithoutReference, SaveWithReference, SaveWithReferenceForQTest };
110 MonitorElement* bookInt(TString
const&
name);
111 MonitorElement* bookFloat(TString
const&
name);
112 MonitorElement* bookString(TString
const&
name, TString
const&
value);
113 MonitorElement* book1D(
114 TString
const&
name, TString
const&
title,
int const nchX,
double const lowX,
double const highX);
115 MonitorElement* book1D(TString
const&
name, TString
const&
title,
int nchX,
float const* xbinsize);
116 MonitorElement* book1D(TString
const&
name, TH1F*
object);
117 MonitorElement* book1S(TString
const&
name, TString
const&
title,
int nchX,
double lowX,
double highX);
118 MonitorElement* book1S(TString
const&
name, TH1S*
object);
119 MonitorElement* book1DD(TString
const&
name, TString
const&
title,
int nchX,
double lowX,
double highX);
120 MonitorElement* book1DD(TString
const&
name, TH1D*
object);
121 MonitorElement* book2D(TString
const&
name,
122 TString
const&
title,
129 MonitorElement* book2D(
130 TString
const&
name, TString
const&
title,
int nchX,
float const* xbinsize,
int nchY,
float const* ybinsize);
131 MonitorElement* book2D(TString
const&
name, TH2F*
object);
132 MonitorElement* book2S(TString
const&
name,
133 TString
const&
title,
140 MonitorElement* book2S(
141 TString
const&
name, TString
const&
title,
int nchX,
float const* xbinsize,
int nchY,
float const* ybinsize);
142 MonitorElement* book2S(TString
const&
name, TH2S*
object);
143 MonitorElement* book2DD(TString
const&
name,
144 TString
const&
title,
151 MonitorElement* book2DD(TString
const&
name, TH2D*
object);
152 MonitorElement* book3D(TString
const&
name,
153 TString
const&
title,
163 MonitorElement* book3D(TString
const&
name, TH3F*
object);
164 MonitorElement* bookProfile(TString
const&
name,
165 TString
const&
title,
172 char const*
option =
"s");
173 MonitorElement* bookProfile(TString
const&
name,
174 TString
const&
title,
180 char const*
option =
"s");
181 MonitorElement* bookProfile(TString
const&
name,
182 TString
const&
title,
184 double const* xbinsize,
188 char const*
option =
"s");
189 MonitorElement* bookProfile(TString
const&
name,
190 TString
const&
title,
192 double const* xbinsize,
195 char const*
option =
"s");
196 MonitorElement* bookProfile(TString
const&
name, TProfile*
object);
197 MonitorElement* bookProfile2D(TString
const&
name,
198 TString
const&
title,
207 char const*
option =
"s");
208 MonitorElement* bookProfile2D(TString
const&
name,
209 TString
const&
title,
219 char const*
option =
"s");
220 MonitorElement* bookProfile2D(TString
const&
name, TProfile2D*
object);
245 template <
typename... Args>
247 return owner_->getContents(std::forward<Args>(
args)...);
256 std::vector<std::string> getSubdirs();
257 std::vector<std::string> getMEs();
258 bool containsAnyMonitorable(
std::string const& path);
283 template <
typename iFunc>
285 std::lock_guard<std::mutex> guard(book_mutex_);
287 if (enableMultiThread_) {
289 moduleId_ = moduleId;
290 canSaveByLumi_ = canSaveByLumi;
296 if (enableMultiThread_) {
299 canSaveByLumi_ =
false;
305 template <
typename iFunc>
307 std::lock_guard<std::mutex> guard(book_mutex_);
309 if (enableMultiThread_) {
312 canSaveByLumi_ =
false;
318 if (enableMultiThread_) {
321 canSaveByLumi_ =
false;
330 template <
typename iFunc>
344 void setVerbose(
unsigned level);
365 operator char const*()
const {
return data_.c_str(); }
376 MonitorElement* book1D(
395 float const* xbinsize,
397 float const* ybinsize);
410 float const* xbinsize,
412 float const* ybinsize);
443 char const*
option =
"s");
451 char const*
option =
"s");
455 double const* xbinsize,
459 char const*
option =
"s");
463 double const* xbinsize,
466 char const*
option =
"s");
478 char const*
option =
"s");
490 char const*
option =
"s");
495 std::vector<std::string> getSubdirs()
const;
496 std::vector<std::string> getMEs()
const;
497 bool containsAnyMonitorable(
std::string const& path)
const;
500 std::vector<MonitorElement*> getContents(
std::string const& path)
const;
501 void getContents(std::vector<std::string>& into,
bool showContents =
true)
const;
516 bool overwrite =
false,
520 bool fileMustExist =
true);
527 void showDirStructure()
const;
530 bool isCollate()
const;
546 bool isCollateME(MonitorElement*
me)
const;
550 bool overwrite =
false,
554 bool fileMustExist =
true);
556 bool overwrite =
false,
560 bool fileMustExist =
true);
562 unsigned int readDirectory(TFile*
file,
569 MonitorElement* findObject(
575 std::vector<MonitorElement*> getAllContents(
std::string const& path,
577 uint32_t lumi = 0)
const;
578 std::vector<MonitorElement*> getMatchingContents(
std::string const& pattern,
579 lat::Regexp::Syntax syntaxType = lat::Regexp::Wildcard)
const;
582 void cloneLumiHistograms(uint32_t run, uint32_t lumi, uint32_t moduleId);
583 void cloneRunHistograms(uint32_t run, uint32_t moduleId);
585 void deleteUnusedLumiHistograms(uint32_t run, uint32_t lumi);
601 MonitorElement* initialise(MonitorElement* me,
std::string const& path);
603 template <
class HISTO,
class COLLATE>
624 static bool checkBinningMatches(MonitorElement* me, TH1* h,
unsigned verbose);
626 static void collate1D(MonitorElement* me, TH1F* h,
unsigned verbose);
627 static void collate1S(MonitorElement* me, TH1S* h,
unsigned verbose);
628 static void collate1DD(MonitorElement* me, TH1D* h,
unsigned verbose);
629 static void collate2D(MonitorElement* me, TH2F* h,
unsigned verbose);
630 static void collate2S(MonitorElement* me, TH2S* h,
unsigned verbose);
631 static void collate2DD(MonitorElement* me, TH2D* h,
unsigned verbose);
632 static void collate3D(MonitorElement* me, TH3F* h,
unsigned verbose);
633 static void collateProfile(MonitorElement* me, TProfile* h,
unsigned verbose);
634 static void collateProfile2D(MonitorElement* me, TProfile2D* h,
unsigned verbose);
642 using MEMap = std::set<MonitorElement>;
643 using QCMap = std::map<std::string, QCriterion*>;
644 using QAMap = std::map<std::string, QCriterion* (*)(std::string const&)>;
648 void saveMonitorElementRangeToPB(
std::string const& dir,
650 MEMap::const_iterator
begin,
651 MEMap::const_iterator
end,
654 void saveMonitorElementToROOT(MonitorElement
const& me, TFile& file);
655 void saveMonitorElementRangeToROOT(
std::string const& dir,
660 MEMap::const_iterator
begin,
661 MEMap::const_iterator
end,
665 unsigned verbose_{1};
666 unsigned verboseQT_{1};
669 bool collateHistograms_{
false};
670 bool enableMultiThread_{
false};
672 bool forceResetOnBeginLumi_{
false};
675 uint32_t moduleId_{};
677 bool canSaveByLumi_{
false};
679 bool doSaveByLumi_{
false};
680 std::unique_ptr<std::ostream> stream_{
nullptr};
715 #endif // DQMServices_Core_DQMStore_h static boost::mutex mutex
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
void bookConcurrentTransaction(iFunc f, uint32_t run)
char_string(char const *str)
static void get_info(const dqmstorepb::ROOTFilePB::Histo &h, std::string &dirname, std::string &objname, TObject **obj)
void meBookerGetter(iFunc f)
char_string(std::string const &str)
TObject * extractNextObject(TBufferFile &buf)
char_string(TString const &str)
std::vector< MonitorElement * > getContents(Args &&...args)
void bookTransaction(iFunc f, uint32_t run, uint32_t moduleId, bool canSaveByLumi)
dqm::dqmstoreimpl::DQMStore DQMStore
static std::string const input
MatchingHeuristicEnum matching_
std::set< MonitorElement > MEMap
friend DQMRootOutputModule
std::pair< fastmatch *, QCriterion * > QTestSpec
int extract(std::vector< int > *output, const std::string &dati)
std::list< QTestSpec > QTestSpecs
dqm::legacy::MonitorElement MonitorElement
std::set< std::string > dirs_
std::map< std::string, QCriterion *(*)(std::string const &)> QAMap
static const int STATUS_OK
void reset(double vett[256])
def getElement(obj, name)
std::map< std::string, QCriterion * > QCMap
std::string match(BranchDescription const &a, BranchDescription const &b, std::string const &fileName)