[Rivet] Fwd: Memory error

Andy Buckley andy.buckley at cern.ch
Mon Oct 24 14:33:17 BST 2016


Also, there's no need for a WITH_ROOT preprocessor variable if you're 
writing your own ROOT-using analysis. rivet-buildplugin doesn't provide 
any such variable, and we removed it from the Rivet core along with the 
move from AIDA -> YODA a few years ago.

Andy


On 24/10/16 13:29, David Bjergaard wrote:
> 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
> _______________________________________________
> 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