[Rivet] Fwd: Memory error

David Bjergaard david.bjergaard at gmail.com
Mon Oct 24 13:29:23 BST 2016


Hi Alan,

The AIDA framework was replaced with Yoda, so you may have to tweak some of
those headers/remove them if you are using root to just dump the tree.  

    David
    

Alan Kaptanoglu <alank2 at alumni.stanford.edu> writes:

> ---------- Forwarded message ----------
> From: Alan Kaptanoglu <alank2 at alumni.stanford.edu>
> Date: Mon, Oct 24, 2016 at 11:07 AM
> Subject: Re: [Rivet] Memory error
> To: andy.buckley at cern.ch
>
> Thanks. Do I need some of the header files from the example file? I am compiling with the --with-root flag but it is not accepting my #ifndef HAVE_ROOT. Perhaps I
> need the AIDA namespace? I do not appear to have RivetAIDA.hh in my include directory.
>
> Best,
> Alan
>
> On Mon, Oct 24, 2016 at 10:55 AM, Andy Buckley <andy.buckley at cern.ch> wrote:
>
>  Ok, thanks. Well, something like that old analysis should still be usable: just create a ROOT tree in the init(), fill in analyze(), and close/write in finalize().
>
>  To do the linking against ROOT, you should be able to compile your plugin with something like rivet-buildplugin --with-root MY_ANALYSIS.cc
>
>  Cheers,
>  Andy
>
>  On 24/10/16 09:35, Alan Kaptanoglu wrote:
>
>  Thanks for the replies. Exactly as David said. I would like to dump
>  trees from rivet and use a multivariate analysis tool like tvma. I found
>  an admittedly ancient rivet script that seems to do this but I am unsure
>  if something like this is still supported in the newer rivet versions (I
>  am running 2.5.1.).
>  https://rivet.hepforge.org/trac/attachment/ticket/95/ExampleTree.cc
>
>  Let me know if there is something that can be done. Thanks again!
>
>  Best,
>  Alan
>
>  On Sat, Oct 22, 2016 at 1:29 AM, Andy Buckley <andy.buckley at cern.ch
>  <mailto:andy.buckley at cern.ch>> wrote:
>
>  I know... not asking about whether ROOT in general has uses (!), but
>  what Alan specifically wanted it for. It's possible that we have
>  something built-in but not well-advertised...
>
>  Andy
>
>  On 21/10/16 23:02, David Bjergaard wrote:
>
>  Hi Andy,
>
>  Not to hijack the thread, but using ROOT to dump a tree of
>  events from a rivet
>  analysis is useful when you're doing exploratory analyses and
>  want to see how
>  things are correlated at the generator level.
>
>  David
>
>  Andy Buckley <andy.buckley at cern.ch
>  <mailto:andy.buckley at cern.ch>> writes:
>
>  Exactly what it says: Rivet's configure doesn't have an
>  --enable-root
>  option. Maybe you're thinking of YODA?
>
>  You can pass linker flags for ROOT to the rivet-buildplugin
>  script if
>  you want, but we don't have any "official" support for it.
>
>  Out of interest, what ROOT features do you require?
>
>  Andy
>
>  On 21/10/16 17:28, Alan Kaptanoglu wrote:
>
>  I have tried just --enable-root as well.
>
>  On Fri, Oct 21, 2016 at 6:28 PM, Alan Kaptanoglu
>  <alank2 at alumni.stanford.edu
>  <mailto:alank2 at alumni.stanford.edu>
>  <mailto:alank2 at alumni.stanford.edu
>  <mailto:alank2 at alumni.stanford.edu>>> wrote:
>
>  Another question, this time regarding linking rivet
>  with ROOT. I
>  have tried adding the line --enable-root to my
>  configure file and
>  re-installing but it complains:
>  configure: WARNING: unrecognized options:
>  --enable-root, --with-root
>  and I am unsure how to proceed.
>
>  Best,
>  Alan
>
>  On Mon, Oct 17, 2016 at 5:38 PM, Alan Kaptanoglu
>  <alank2 at alumni.stanford.edu
>  <mailto:alank2 at alumni.stanford.edu>
>  <mailto:alank2 at alumni.stanford.edu
>  <mailto:alank2 at alumni.stanford.edu>>> wrote:
>
>  Thank you very much! I read that in useJetArea()
>  but was not
>  sure how to get around it. Your line "
>  fj.useJetArea(new
>
>  fastjet::AreaDefinition(fastjet::VoronoiAreaSpec()));" works
>  perfectly. Passing it by value was a typo!
>
>  Cheers,
>  Alan
>
>  On Mon, Oct 17, 2016 at 4:47 PM, Andy Buckley
>  <andy.buckley at cern.ch
>  <mailto:andy.buckley at cern.ch>
>  <mailto:andy.buckley at cern.ch
>
>  <mailto:andy.buckley at cern.ch>>> wrote:
>
>  On 17/10/16 15:29, Alan Kaptanoglu wrote:
>
>  Hello,
>
>  I am trying to declare jets with area in the
>  initialization section of
>  my Rivet Analysis. I originally tried:
>
>  fastjet::GhostedAreaSpec
>  areaspec(2.5,1,0.01);
>  fastjet::AreaDefinition
>
>  area_def(fastjet::active_area_explicit_ghosts,areaspec);
>  FastJets jets(vfs,
>  FastJets::ANTIKT, Rsmall);
>  jets.useJetArea(area_def);
>
>  jets.useInvisibles(JetAlg::ALL_INVISIBLES);
>  jets.useMuons(JetAlg::DECAY_MUONS);
>  declare(jets, "jets");
>
>  but this definition goes out of scope so
>  when I ask for
>  jet areas in my
>  "analysis" section of my code, it
>  complains the jets
>  have no valid jet
>  area associated with them. I next tried
>  several versions of:
>
>  areaspec = new
>  fastjet::GhostedAreaSpec(2.5,1,0.01);
>  area_def = new
>
>  fastjet::AreaDefinition(fastjet::active_area_explicit_ghosts,*areaspec);
>  FastJets jets(vfs,
>  FastJets::ANTIKT, Rsmall);
>  jets.useJetArea(area_def);
>
>  jets.useInvisibles(JetAlg::ALL_INVISIBLES);
>  jets.useMuons(JetAlg::DECAY_MUONS);
>  declare(jets, "jets");
>
>  where areaspec and area_def are private
>  members of my
>  Analysis class. I
>  also tried initializing these variables
>  in my
>  constructor using
>  initialization lists, as well as
>  declaring them global
>  variables (and
>  yes, to my knowledge, I am also deleting
>  them correctly
>  if I use "new").
>  In all these cases, the code runs
>  correctly but
>  complains at the end of
>  a memory error, which is attached in a
>  text file. Any
>  idea why this is
>  happening or how to fix?
>
>  Hi Alan,
>
>  The AreaDefinition provided to FastJets must
>  be a
>  heap-allocated pointer whose ownership is
>  then taken over by
>  the FastJets object: it will delete the
>  pointer at the end
>  of the run so you shouldn't try to do that
>  yourself. (This
>  is documented on the useJetArea() function)
>
>  To this end I usually make sure that I don't
>  have a variable
>  of my own pointing at that area def objects,
>  e.g.
>  fj.useJetArea(new
>
>  fastjet::AreaDefinition(fastjet::VoronoiAreaSpec()));
>
>  As you noticed, if you pass in a locally
>  allocated object,
>  it goes out of scope and you get a crash.
>  Although I'm not
>  sure how you're able to pass it in by value
>  rather than by
>  pointer!
>
>  I would like, if possible, to avoid this
>  pointer ownership
>  stuff in the FastJets interface... I'm sure
>  it's possible,
>  just needs a bit of care and thought about
>  backward
>  compatibility. Pointers were used
>  historically because we
>  need the option of a null AreaDefinition,
>  and there's no
>  such thing as a null reference in C++.
>
>  Hope that helps,
>  Andy
>
>  --
>  Dr Andy Buckley, Lecturer / Royal Society
>  University
>  Research Fellow
>  Particle Physics Expt Group, University of
>  Glasgow
>
>  --
>  Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
>  Particle Physics Expt Group, University of Glasgow
>
>  -- 
>  Dr Andy Buckley, Lecturer / Royal Society University Research Fellow
>  Particle Physics Expt Group, University of Glasgow


More information about the Rivet mailing list