121 register_factory (
"alternate_regions", std::make_unique<AltRegionsFactory>());
298 std::cout <<
"RegionFactory::idd_start>" << std::endl;
301 parser.m_region = std::make_unique<IdDictRegion> (
get_value (
node,
"name"),
307 parser.m_region->set_next_abs_eta_name (
get_value (
node,
"next_abs_eta"));
313 std::string::size_type pos = 0;
315 std::string::size_type next;
316 next = names.find_first_not_of (
" ", pos);
317 if (next == std::string::npos)
break;
319 next = names.find_first_of (
" ", pos);
321 name = names.substr (pos, next - pos);
322 parser.m_region->add_prev_samp_name (name);
323 if (next == std::string::npos) {
333 std::string::size_type pos = 0;
335 std::string::size_type next;
337 next = names.find_first_not_of (
" ", pos);
338 if (next == std::string::npos)
break;
340 next = names.find_first_of (
" ", pos);
343 name = names.substr (pos, next - pos);
344 parser.m_region->add_next_samp_name (name);
346 if (next == std::string::npos) {
356 std::string::size_type pos = 0;
358 std::string::size_type prev;
359 prev = names.find_first_not_of (
" ", pos);
360 if (prev == std::string::npos)
break;
362 prev = names.find_first_of (
" ", pos);
364 name = names.substr (pos, prev - pos);
365 parser.m_region->add_prev_subdet_name (name);
366 if (prev == std::string::npos) {
376 std::string::size_type pos = 0;
378 std::string::size_type next;
379 next = names.find_first_not_of (
" ", pos);
380 if (next == std::string::npos)
break;
382 next = names.find_first_of (
" ", pos);
384 name = names.substr (pos, next - pos);
385 parser.m_region->add_next_subdet_name (name);
386 if (next == std::string::npos) {
401 std::cout <<
"RegionFactory::idd_start> name, group, tag, next eta, prev/next samp, prev/next subdet "
402 << parser.m_region->name() <<
" "
403 << parser.m_region->group_name() <<
" "
404 << parser.m_region->tag() <<
" "
405 << parser.m_region->next_abs_eta() <<
" ";
406 for (
const std::string& s : parser.m_region->prev_samp_names()) {
407 std::cout << s <<
" ";
409 for (
const std::string& s : parser.m_region->next_samp_names()) {
410 std::cout << s <<
" ";
412 for (
const std::string& s : parser.m_region->prev_subdet_names()) {
413 std::cout << s <<
" ";
415 for (
const std::string& s : parser.m_region->next_subdet_names()) {
416 std::cout << s <<
" ";
418 std::cout << parser.m_region->eta0() <<
" "
419 << parser.m_region->deta() <<
" "
420 << parser.m_region->phi0() <<
" "
421 << parser.m_region->dphi() <<
" "
430 std::cout <<
"RegionFactory::idd_end>" << std::endl;
432 if (parser.m_region != 0){
433 if (parser.m_dictionary != 0) parser.m_dictionary->add_region (parser.m_region.get());
436 if (parser.m_region->n_entries() == 0) {
437 parser.m_region->set_is_empty();
440 if (parser.m_altregions != 0) {
441 parser.m_altregions->add_region (std::move(parser.m_region));
442 }
else if (parser.m_dictionary != 0) {
443 parser.m_dictionary->add_dictentry (std::move(parser.m_region));
445 parser.m_region.reset();
496 std::cout <<
"RangeFactory::idd_start>" << std::endl;
498 auto range = std::make_unique<IdDictRange> (
get_value (
node,
"field"));
503 std::string::size_type pos = 0;
504 std::vector<std::string> label_vec;
506 std::string::size_type next;
507 next = labels.find_first_not_of (
" ", pos);
508 if (next == std::string::npos)
break;
510 next = labels.find_first_of (
" ", pos);
511 label_vec.push_back (labels.substr (pos, next - pos));
512 if (next == std::string::npos) {
518 range->set_range (label_vec);
522 if (hasMin and hasMax) {
531 if (wraparound) range->set_wrap_around();
539 parser.m_regionentry = std::move(range);
virtual void idd_start(IdDictParser &parser, const XMLCoreNode &node)
virtual void idd_end(IdDictParser &parser, const XMLCoreNode &node)