[Rivet] analysis

Andy Buckley andy.buckley at cern.ch
Sat May 2 12:39:08 BST 2015


Hi Frank,

I don't know what the timescale is for that -- I know of no indication
that the experiments are pushing for a move to SL/CC7, since our
software is anyway all layered on top of the defaults (rendering the
whole concept of SL largely pointless) and no-one wants to cause
disruption at the start of Run 2. I think it could have been done 6
months ago, but since it wasn't we could be waiting years for that to
happen.

The benefits of C++11 to Rivet are, from my point of view, that the
syntax improvements would allow yet more simplification of analysis
code: always good. I think there's also a very strong chance that it
would enable us to completely drop the Boost dependence, which is not
essential but would be a very nice bonus. So nothing essential, but I
don't know where the acceptable line is between compatibility with an
out-of-date GCC that's installed on HEP systems for dumb reasons, and
taking advantage of undoubted language improvements that have been
supported on other platforms for several years and which are already
being used in the LHC experiments' code.

A sticking point may arrive along with HepMC3, which we will want to
support as soon as possible after its beta release (soon). Since it
requires C++11, Rivet will certainly need to compile with it... and that
_could_ mean requiring use of C++11 smart pointers in the guts of the
Rivet code. I guess we'll find out when I get round to trying!

Andy


On 02/05/15 09:14, Frank Siegert wrote:
> Hi Andy, all,
> 
> are there any immediate advantages to requiring C++11, beyond that new
> C++ constructs become available to us developers? Is there any feature
> that would save us a lot of work such that it would be worth doing the
> extra support work to explain/help the probably many people who will
> still try to compile on SL6? If not, I would favour waiting at least
> until lxplus becomes SL7 by default (+ a few months to allow
> people/institutes to switch as well).
> 
> Cheers,
> Frank
> 
> 
> 
> On 1 May 2015 at 17:34, Andy Buckley <andy.buckley at cern.ch> wrote:
>> Yes, we need to add that to our procedure.
>>
>> The theorist use of vanilla SLC6 systems (it'd be better to just use
>> Ubuntu or Fedora...) is our main blocker on moving Rivet "properly" to
>> C++11: the relevant experiment software builds are all using up-to-date
>> compilers. But SLC7 / CC7 is available now, and lxplus7 is available,
>> with the vanilla compiler being the fully C++11-compatible GCC 4.8.3...
>> so maybe we *are* now at the point where we could match that switch, say
>> with Rivet 2.3.0. Opinions?
>>
>> Andy
>>
>>
>> On 30/04/15 16:19, kirsanov wrote:
>>>  Thanks a lot, Andy,
>>>  You are going to test it with and without c++11 before releasing?
>>>                   Cheers, Mikhail
>>>
>>> On 4/30/15 8:09 PM, Andy Buckley wrote:
>>>> I have removed all these from the Rivet trunk. In fact, we already
>>>> import the Boost assign comma override, which is C++11 safe (at least,
>>>> if it wasn't you'd have seen a lot more problems) and so I just
>>>> converted these to the somevector += 1,2,3,4; syntax. We'll make a
>>>> release containing this in the not-too-distant future.
>>>>
>>>> Andy
>>>>
>>>>
>>>>
>>>> On 27/04/15 12:07, Andy Buckley wrote:
>>>>> We are planning to remove uses of this Boost assign list_of from the
>>>>> next minor Rivet release because of the C++98/03/11 compatibility issues
>>>>> while using it.
>>>>>
>>>>> We'd like to move to requiring C++11, but aren't sure that this is an
>>>>> option yet, both because of the build settings of the LHC experiments,
>>>>> and because the system compiler on SLC6 isn't capable of many important
>>>>> C++11 features. LCG and the experiments don't use the system compiler,
>>>>> of course, but for what I think are largely accidental / cargo cult
>>>>> reasons, there are many "vanilla" SLC6 systems in use, particularly by
>>>>> theorists :-/
>>>>>
>>>>> Andy
>>>>>
>>>>>
>>>>> On 27/04/15 10:41, James Robinson wrote:
>>>>>> Dear Mikhail,
>>>>>>
>>>>>> Sorry, the code was originally written using C++11 features, assuming
>>>>>> forward-compatibility. It then got changed to use Boost for C++03
>>>>>> compatibility. Hopefully, in future, we can either switch to using
>>>>>> C++11
>>>>>> throughout or Boost will patch this (known) ambiguity bug.
>>>>>>
>>>>>> Thanks,
>>>>>> James
>>>>>>
>>>>>> On 27 April 2015 at 11:37, kirsanov <Mikhail.Kirsanov at cern.ch
>>>>>> <mailto:Mikhail.Kirsanov at cern.ch>> wrote:
>>>>>>
>>>>>>       Hello, Andy, James,
>>>>>>       So, after some unforeseen education about the new c++11
>>>>>> syntax, the
>>>>>>      patch looks like this:
>>>>>>
>>>>>>       /afs/cern.ch/user/m/mkirsano/public/rivet-2.2.1.patch
>>>>>>      <http://cern.ch/user/m/mkirsano/public/rivet-2.2.1.patch>
>>>>>>
>>>>>>       It will not compile without c++11.
>>>>>>       So, for the next rivet version one should introduce some
>>>>>>      preprocessor if or rewrite the code in a simple manner, without
>>>>>> boost.
>>>>>>                                      Cheers, Mikhail
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>>
>> --
>> Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
>> Particle Physics Expt Group, University of Glasgow
>> _______________________________________________
>> Rivet mailing list
>> Rivet at projects.hepforge.org
>> https://www.hepforge.org/lists/listinfo/rivet


-- 
Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
Particle Physics Expt Group, University of Glasgow


More information about the Rivet mailing list