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",
"\'");
45 vstring effCmds = pset.
getParameter<vstring>(
"efficiency");
46 for ( vstring::const_iterator effCmd = effCmds.begin();
47 effCmd != effCmds.end(); ++effCmd )
49 if ( effCmd->empty() )
continue;
51 boost::tokenizer<elsc> tokens(*effCmd, commonEscapes);
54 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
55 iToken != tokens.end(); ++iToken) {
56 if ( iToken->empty() )
continue;
57 args.push_back(*iToken);
60 if ( args.size() < 4 ) {
61 LogInfo(
"DQMGenericClient") <<
"Wrong input to effCmds\n";
68 opt.numerator = args[2];
69 opt.denominator = args[3];
70 opt.isProfile =
false;
72 const string typeName = args.size() == 4 ?
"eff" : args[4];
82 for ( VPSet::const_iterator
efficSet = efficSets.begin();
86 opt.name =
efficSet->getUntrackedParameter<
string>(
"name");
87 opt.title =
efficSet->getUntrackedParameter<
string>(
"title");
88 opt.numerator =
efficSet->getUntrackedParameter<
string>(
"numerator");
89 opt.denominator =
efficSet->getUntrackedParameter<
string>(
"denominator");
90 opt.isProfile =
false;
92 const string typeName =
efficSet->getUntrackedParameter<
string>(
"typeName",
"eff");
103 for ( vstring::const_iterator effProfileCmd = effProfileCmds.begin();
104 effProfileCmd != effProfileCmds.end(); ++effProfileCmd )
106 if ( effProfileCmd->empty() )
continue;
108 boost::tokenizer<elsc> tokens(*effProfileCmd, commonEscapes);
111 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
112 iToken != tokens.end(); ++iToken) {
113 if ( iToken->empty() )
continue;
114 args.push_back(*iToken);
117 if ( args.size() < 4 ) {
118 LogInfo(
"DQMGenericClient") <<
"Wrong input to effProfileCmds\n";
125 opt.numerator = args[2];
126 opt.denominator = args[3];
127 opt.isProfile =
true;
129 const string typeName = args.size() == 4 ?
"eff" : args[4];
139 for ( VPSet::const_iterator effProfileSet = effProfileSets.begin();
140 effProfileSet != effProfileSets.end(); ++effProfileSet )
143 opt.name = effProfileSet->getUntrackedParameter<
string>(
"name");
144 opt.title = effProfileSet->getUntrackedParameter<
string>(
"title");
145 opt.numerator = effProfileSet->getUntrackedParameter<
string>(
"numerator");
146 opt.denominator = effProfileSet->getUntrackedParameter<
string>(
"denominator");
147 opt.isProfile =
true;
149 const string typeName = effProfileSet->getUntrackedParameter<
string>(
"typeName",
"eff");
159 vstring resCmds = pset.
getParameter<vstring>(
"resolution");
160 for ( vstring::const_iterator resCmd = resCmds.begin();
161 resCmd != resCmds.end(); ++resCmd )
163 if ( resCmd->empty() )
continue;
164 boost::tokenizer<elsc> tokens(*resCmd, commonEscapes);
167 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
168 iToken != tokens.end(); ++iToken) {
169 if ( iToken->empty() )
continue;
170 args.push_back(*iToken);
173 if ( args.size() != 3 ) {
174 LogInfo(
"DQMGenericClient") <<
"Wrong input to resCmds\n";
179 opt.namePrefix = args[0];
180 opt.titlePrefix = args[1];
181 opt.srcName = args[2];
187 for ( VPSet::const_iterator resolSet = resolSets.begin();
188 resolSet != resolSets.end(); ++resolSet )
191 opt.namePrefix = resolSet->getUntrackedParameter<
string>(
"namePrefix");
192 opt.titlePrefix = resolSet->getUntrackedParameter<
string>(
"titlePrefix");
193 opt.srcName = resolSet->getUntrackedParameter<
string>(
"srcName");
200 for(
const auto& profileCmd: profileCmds) {
201 boost::tokenizer<elsc> tokens(profileCmd, commonEscapes);
204 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
205 iToken != tokens.end(); ++iToken) {
206 if ( iToken->empty() )
continue;
207 args.push_back(*iToken);
210 if ( args.size() != 3 ) {
211 LogInfo(
"DQMGenericClient") <<
"Wrong input to profileCmds\n";
218 opt.srcName = args[2];
224 for(
const auto& profileSet: profileSets) {
226 opt.name = profileSet.getUntrackedParameter<
string>(
"name");
227 opt.title = profileSet.getUntrackedParameter<
string>(
"title");
228 opt.srcName = profileSet.getUntrackedParameter<
string>(
"srcName");
235 for ( vstring::const_iterator normCmd = normCmds.begin();
236 normCmd != normCmds.end(); ++normCmd )
238 if ( normCmd->empty() )
continue;
239 boost::tokenizer<elsc> tokens(*normCmd, commonEscapes);
242 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
243 iToken != tokens.end(); ++iToken) {
244 if ( iToken->empty() )
continue;
245 args.push_back(*iToken);
248 if ( args.empty()
or args.size() > 2 ) {
249 LogInfo(
"DQMGenericClient") <<
"Wrong input to normCmds\n";
255 opt.normHistName = args.size() == 2 ? args[1] : args[0];
261 for ( VPSet::const_iterator normSet = normSets.begin();
262 normSet != normSets.end(); ++normSet )
265 opt.name = normSet->getUntrackedParameter<
string>(
"name");
266 opt.normHistName = normSet->getUntrackedParameter<
string>(
"normalizedTo", opt.name);
273 for ( vstring::const_iterator cdCmd = cdCmds.begin();
274 cdCmd != cdCmds.end(); ++cdCmd )
276 if ( cdCmd->empty() )
continue;
277 boost::tokenizer<elsc> tokens(*cdCmd, commonEscapes);
280 for(boost::tokenizer<elsc>::const_iterator iToken = tokens.begin();
281 iToken != tokens.end(); ++iToken) {
282 if ( iToken->empty() )
continue;
283 args.push_back(*iToken);
286 if ( args.empty() || args.size() > 2) {
287 LogInfo(
"DQMGenericClient") <<
"Wrong input to cdCmds\n";
293 opt.ascending = args.size() == 2 ? (args[1] !=
"descending") :
true;
299 for ( VPSet::const_iterator cdSet = cdSets.begin();
300 cdSet != cdSets.end(); ++cdSet )
303 opt.name = cdSet->getUntrackedParameter<
string>(
"name");
304 opt.ascending = cdSet->getUntrackedParameter<
bool>(
"ascending",
true);
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_
def efficSet(nameIn, titleIn, numeratorIn, denominatorIn, typeIn="eff")
std::vector< NormOption > normOptions_