|
[Rivet] Memory errorAndy Buckley andy.buckley at cern.chFri Oct 21 22:31:37 BST 2016
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>> 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>> 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>> 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
More information about the Rivet mailing list |