36 typedef std::vector<edm::ParameterSet>
VPSet;
37 typedef std::vector<std::string>
vstring;
38 typedef boost::escaped_list_separator<char> elsc;
40 elsc commonEscapes(
"\\",
" \t",
"\'");
48 vstring effCmds = pset.
getParameter<vstring>(
"efficiency");
49 for ( vstring::const_iterator effCmd = effCmds.begin();
50 effCmd != effCmds.end(); ++effCmd )
52 if ( effCmd->empty() )
continue;
54 boost::tokenizer<elsc> tokens(*effCmd, commonEscapes);
57 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
58 iToken != tokens.end(); ++iToken) {
59 if ( iToken->empty() )
continue;
60 args.push_back(*iToken);
63 if ( args.size() < 4 ) {
64 LogInfo(
"DQMGenericClient") <<
"Wrong input to effCmds\n";
71 opt.numerator = args[2];
72 opt.denominator = args[3];
73 opt.isProfile =
false;
75 const string typeName = args.size() == 4 ?
"eff" : args[4];
85 for ( VPSet::const_iterator
efficSet = efficSets.begin();
89 opt.name =
efficSet->getUntrackedParameter<
string>(
"name");
90 opt.title =
efficSet->getUntrackedParameter<
string>(
"title");
91 opt.numerator =
efficSet->getUntrackedParameter<
string>(
"numerator");
92 opt.denominator =
efficSet->getUntrackedParameter<
string>(
"denominator");
93 opt.isProfile =
false;
95 const string typeName =
efficSet->getUntrackedParameter<
string>(
"typeName",
"eff");
106 for ( vstring::const_iterator effProfileCmd = effProfileCmds.begin();
107 effProfileCmd != effProfileCmds.end(); ++effProfileCmd )
109 if ( effProfileCmd->empty() )
continue;
111 boost::tokenizer<elsc> tokens(*effProfileCmd, commonEscapes);
114 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
115 iToken != tokens.end(); ++iToken) {
116 if ( iToken->empty() )
continue;
117 args.push_back(*iToken);
120 if ( args.size() < 4 ) {
121 LogInfo(
"DQMGenericClient") <<
"Wrong input to effProfileCmds\n";
128 opt.numerator = args[2];
129 opt.denominator = args[3];
130 opt.isProfile =
true;
132 const string typeName = args.size() == 4 ?
"eff" : args[4];
142 for ( VPSet::const_iterator effProfileSet = effProfileSets.begin();
143 effProfileSet != effProfileSets.end(); ++effProfileSet )
146 opt.name = effProfileSet->getUntrackedParameter<
string>(
"name");
147 opt.title = effProfileSet->getUntrackedParameter<
string>(
"title");
148 opt.numerator = effProfileSet->getUntrackedParameter<
string>(
"numerator");
149 opt.denominator = effProfileSet->getUntrackedParameter<
string>(
"denominator");
150 opt.isProfile =
true;
152 const string typeName = effProfileSet->getUntrackedParameter<
string>(
"typeName",
"eff");
162 vstring resCmds = pset.
getParameter<vstring>(
"resolution");
163 for ( vstring::const_iterator resCmd = resCmds.begin();
164 resCmd != resCmds.end(); ++resCmd )
166 if ( resCmd->empty() )
continue;
167 boost::tokenizer<elsc> tokens(*resCmd, commonEscapes);
170 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
171 iToken != tokens.end(); ++iToken) {
172 if ( iToken->empty() )
continue;
173 args.push_back(*iToken);
176 if ( args.size() != 3 ) {
177 LogInfo(
"DQMGenericClient") <<
"Wrong input to resCmds\n";
182 opt.namePrefix = args[0];
183 opt.titlePrefix = args[1];
184 opt.srcName = args[2];
190 for ( VPSet::const_iterator resolSet = resolSets.begin();
191 resolSet != resolSets.end(); ++resolSet )
194 opt.namePrefix = resolSet->getUntrackedParameter<
string>(
"namePrefix");
195 opt.titlePrefix = resolSet->getUntrackedParameter<
string>(
"titlePrefix");
196 opt.srcName = resolSet->getUntrackedParameter<
string>(
"srcName");
203 for(
const auto& profileCmd: profileCmds) {
204 boost::tokenizer<elsc> tokens(profileCmd, commonEscapes);
207 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
208 iToken != tokens.end(); ++iToken) {
209 if ( iToken->empty() )
continue;
210 args.push_back(*iToken);
213 if ( args.size() != 3 ) {
214 LogInfo(
"DQMGenericClient") <<
"Wrong input to profileCmds\n";
221 opt.srcName = args[2];
227 for(
const auto& profileSet: profileSets) {
229 opt.name = profileSet.getUntrackedParameter<
string>(
"name");
230 opt.title = profileSet.getUntrackedParameter<
string>(
"title");
231 opt.srcName = profileSet.getUntrackedParameter<
string>(
"srcName");
238 for ( vstring::const_iterator normCmd = normCmds.begin();
239 normCmd != normCmds.end(); ++normCmd )
241 if ( normCmd->empty() )
continue;
242 boost::tokenizer<elsc> tokens(*normCmd, commonEscapes);
245 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
246 iToken != tokens.end(); ++iToken) {
247 if ( iToken->empty() )
continue;
248 args.push_back(*iToken);
251 if ( args.empty()
or args.size() > 2 ) {
252 LogInfo(
"DQMGenericClient") <<
"Wrong input to normCmds\n";
258 opt.normHistName = args.size() == 2 ? args[1] : args[0];
264 for ( VPSet::const_iterator normSet = normSets.begin();
265 normSet != normSets.end(); ++normSet )
268 opt.name = normSet->getUntrackedParameter<
string>(
"name");
269 opt.normHistName = normSet->getUntrackedParameter<
string>(
"normalizedTo", opt.name);
276 for ( vstring::const_iterator cdCmd = cdCmds.begin();
277 cdCmd != cdCmds.end(); ++cdCmd )
279 if ( cdCmd->empty() )
continue;
280 boost::tokenizer<elsc> tokens(*cdCmd, commonEscapes);
283 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
284 iToken != tokens.end(); ++iToken) {
285 if ( iToken->empty() )
continue;
286 args.push_back(*iToken);
289 if ( args.empty() || args.size() > 2) {
290 LogInfo(
"DQMGenericClient") <<
"Wrong input to cdCmds\n";
296 opt.ascending = args.size() == 2 ? (args[1] !=
"descending") :
true;
302 for ( VPSet::const_iterator cdSet = cdSets.begin();
303 cdSet != cdSets.end(); ++cdSet )
306 opt.name = cdSet->getUntrackedParameter<
string>(
"name");
307 opt.ascending = cdSet->getUntrackedParameter<
bool>(
"ascending",
true);
314 for ( vstring::const_iterator noFlowCmd = noFlowCmds.begin();
315 noFlowCmd != noFlowCmds.end(); ++noFlowCmd )
317 if ( noFlowCmd->empty() )
continue;
318 boost::tokenizer<elsc> tokens(*noFlowCmd, commonEscapes);
321 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
322 iToken != tokens.end(); ++iToken) {
323 if ( iToken->empty() )
continue;
324 args.push_back(*iToken);
327 if ( args.empty() || args.size() > 2) {
328 LogInfo(
"DQMGenericClient") <<
"Wrong input to noFlowCmds\n";
339 for ( VPSet::const_iterator noFlowSet = noFlowSets.begin();
340 noFlowSet != noFlowSets.end(); ++noFlowSet )
343 opt.name = noFlowSet->getUntrackedParameter<
string>(
"name");
std::vector< EfficOption > efficOptions_
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< ProfileOption > profileOptions_
std::vector< ResolOption > resolOptions_
std::vector< std::string > subDirs_
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
std::string outputFileName_
std::vector< CDOption > cdOptions_
std::vector< NoFlowOption > noFlowOptions_
def efficSet(nameIn, titleIn, numeratorIn, denominatorIn, typeIn="eff")
std::vector< NormOption > normOptions_