14 unsigned minReplacements,
15 unsigned maxReplacements,
18 unsigned numReplacements = 0;
19 while (modSrc.find(keyword) != std::string::npos) {
20 modSrc.replace(modSrc.find(keyword), keyword.length(),
parameter);
23 if ((numReplacements < minReplacements) || (numReplacements > maxReplacements)) {
25 <<
" numReplacements = " << numReplacements <<
" (min = " << minReplacements
26 <<
", max = " << maxReplacements <<
") !!";
37 std::ostringstream os;
42 for (
unsigned iEntry = 0; iEntry <
numEntries; ++iEntry) {
84 histogram->SetName(histogram->GetName());
85 if (TH1F*
h = dynamic_cast<TH1F*>(histogram)) {
88 }
else if (TH1S*
h = dynamic_cast<TH1S*>(histogram)) {
91 }
else if (TH2F*
h = dynamic_cast<TH2F*>(histogram)) {
94 }
else if (TH2S*
h = dynamic_cast<TH2S*>(histogram)) {
97 }
else if (TH3F*
h = dynamic_cast<TH3F*>(histogram)) {
100 }
else if (TProfile*
h = dynamic_cast<TProfile*>(histogram)) {
103 }
else if (TProfile2D*
h = dynamic_cast<TProfile2D*>(histogram)) {
114 bool rmInputDirectory) {
121 dqmStore.setCurrentFolder(inputDirectory);
122 std::vector<std::string> meNames =
dqmStore.getMEs();
123 for (std::vector<std::string>::const_iterator meName = meNames.begin(); meName != meNames.end(); ++meName) {
127 dqmStore.setCurrentFolder(inputDirectory);
131 edm::LogError(
"copyRecursively") <<
" Failed to access meName = " << (*meName) <<
" in DQMStore" 132 <<
" --> skipping !!";
136 TH1* histogram = meInput->
getTH1();
139 edm::LogError(
"copyRecursively") <<
" Failed to access histogram associated to meName = " << (*meName)
141 <<
" --> skipping !!";
145 std::unique_ptr<TH1>
clone(dynamic_cast<TH1*>(histogram->Clone()));
148 dqmStore.setCurrentFolder(outputDirectory);
156 <<
" meName = " << (*meName) <<
" already exists in outputDirectory = " << outputDirectory
157 <<
" --> skipping !!";
171 dqmStore.setCurrentFolder(inputDirectory);
172 std::vector<std::string> dirNames =
dqmStore.getSubdirs();
173 for (std::vector<std::string>::const_iterator
dirName = dirNames.begin();
dirName != dirNames.end(); ++
dirName) {
200 if (dqmRootDirectoryPos != std::string::npos) {
212 }
while (nextPos != std::string::npos);
215 directoryName = (lastPos != std::string::npos) ?
std::string(tempName, 0, lastPos) :
"";
void dqmRegisterHistogram(dqm::legacy::DQMStore &dqmStore, TH1 *histogram, const std::string &name)
std::string replace_string(const std::string &src, const std::string &keyword, const std::string ¶meter, unsigned minReplacements, unsigned maxReplacements, int &errorFlag)
Log< level::Error, false > LogError
std::string dqmSubDirectoryName_merged(const std::string &directory, const std::string &subdirectory)
Long64_t numEntries(TFile *hdl, std::string const &trname)
constexpr G4double scaleFactor
void separateHistogramFromDirectoryName(const std::string &histogramAndDirectoryName, std::string &histogramName, std::string &directoryName)
void dqmCopyRecursively(dqm::legacy::DQMStore &dqmStore, const std::string &inputDirectory, const std::string &outputDirectory, double scaleFactor, int mode, bool rmInputDirectory)
std::string dqmDirectoryName(const std::string &directory)
std::string format_vstring(const std::vector< std::string > &vs)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
virtual TH1 * getTH1() const
const std::string dqmRootDirectory
const std::string dqmSeparator
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.