Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-10766

Missing overload in LHCb's FuncOps__::__le__

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Blocker
    • 6.22/00, 6.20/06
    • 6.20/06
    • Cling, PyROOT
    • None
    • Configured with:
      . /afs/cern.ch/work/m/marcocle/LHCBPS-1856/setup.sh

      e.g. on lxplus

    Description

      Reported by Marco Clemencic:

      The reproducer script /afs/cern.ch/work/m/marcocle/LHCBPS-1856/reproducer.sh should print

      >>> from LoKiArrayFunctors.decorators import ANUM
      >>> from LoKiPhys.decorators import ALL
      >>> print ANUM(ALL) < 1
       (ANUM(ALL)<1) 
      >>> print ANUM(ALL) <= 1
       (ANUM(ALL)<=1) 
      

      but it prints:

      >>> from LoKiArrayFunctors.decorators import ANUM
      >>> from LoKiPhys.decorators import ALL
      >>> print ANUM(ALL) < 1
       (ANUM(ALL)<1) 
      >>> print ANUM(ALL) <= 1
      Traceback (most recent call last):
        File "<stdin>", line 8, in <module>
        File "/workspace/build/LHCb/InstallArea/x86_64-centos7-gcc9-dbg/python/LoKiCore/decorators.py", line 567, in _le_
      TypeError: none of the 4 overloaded methods succeeded. Full details:
        static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun2) =>
          could not convert argument 2
        static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, LoKi::Functor<void,double>& fun2) =>
          could not convert argument 2
        static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, const LoKi::Param& fun2) =>
          could not convert argument 2
        static LoKi::FunctorFromFunctor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,bool> LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>& fun1, double fun2) =>
          could not resolve LoKi::Dicts::FuncOps__<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > > >::__le__(LoKi::Functor<Gaudi::Range_<vector<const LHCb::Particle*>,__gnu_cxx::__normal_iterator<const LHCb::Particle*const*,vector<const LHCb::Particle*> > >,double>&, double)
      

      The function that should be invoked is in /afs/cern.ch/work/m/marcocle/LHCBPS-1856/lhcb-lcg-test/30/LHCb/InstallArea/x86_64-centos7-gcc9-dbg/include/LoKi/FuncOps.h:81 (https://gitlab.cern.ch/lhcb/LHCb/-/blob/master/Phys/LoKiCore/LoKi/FuncOps.h#L81).

      What is weird (for us at least) is that the __lt__ function a few lines above works nicely.

      The only hint I have is the "could not resolve" message, which suggests that the overload is correctly picked up, but the function cannot be found.

      We are tracking the progress in https://its.cern.ch/jira/browse/LHCBPS-1856.

      Attachments

        Activity

          People

            axel Axel Naumann
            clemenci Marco Clemencic
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: