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

Missing overload in LHCb's FuncOps__::__le__

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 6.20/06
    • Fix Version/s: 6.22/00, 6.20/06
    • Component/s: Cling, PyROOT
    • Labels:
      None
    • Environment:

      Configured with:
      . /afs/cern.ch/work/m/marcocle/LHCBPS-1856/setup.sh

      e.g. on lxplus

    • Development:

      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

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

              Dates

              • Created:
                Updated:
                Resolved: