Re: [ROOT] Ntuples in programs

From: Valeri Fine (Faine) (fine@bnl.gov)
Date: Thu Oct 26 2000 - 19:56:58 MEST


Hello Marc,

I would suspect speaking:

"If I add more and more files to the  project, without"

you did mean  you was adding new and new class implementations.
At this point I might suspect one of those implementations creates some
global object. The constructor of that global screw things. Since you present
no information to clarify what you did add to your project causing its corruption
no one can help you now.

Please tell us what you did insert into your project to corrupt it .

  With my regards,
                                 Valery

----- Original Message -----
From: kamps <kamps@fsw.leidenuniv.nl>
To: <roottalk@pcroot.cern.ch>
Sent: 26 октября 2000 г. 9:18
Subject: [ROOT] Ntuples in programs


> Hello,
>
> I use ROOT version 2.25/03, using MSVC++ 6.0 under WinNT. The program below
> runs fine
> in principle. If I throw in a couple of events, with Tuple::Addevent, I can
> plot them
> from the n-tuple that is produced. If I add more and more files to the
> project, without
> changing main.cpp at all, none of the extra files using ROOT related code,
> the program will fail in Tuple::CloseTuple, in the line p_file->Write().
>
> The message I get is then:
> --------------------------------------------------------------------
> <CustomRealloc2>: passed oldsize 1032, should be 18415747
> Fatal in <CustomReAlloc2>: unreasonable size (18415747)
> aborting
> Warning in <TWinNTSystem::StackTrace>: this method must be overriden!
> --------------------------------------------------------------------
>
> I know that linking root into C++ programs sometimes involves subtleties
> that are
> not present in macros, so I probably have overlooked something simple. I
> want to use
> the buffering and compression facilities of n-tuples in my program, however.
> I hope you can tell from this information what goes wrong.
> Thanks,
> Marc
>
> --------------------- main.cpp -----------------------------------
> #include "D:/code/libs/neuronlib/tuple.h"
>
> int main()
> {
> Tuple tup;
> tup.OpenTuple("bla");
> tup.CloseTuple();
>
>
> return 0;
> }
> ------------------------ tuple.h -----------------------------------
> class Tuple {
> public:
>
> Tuple();
>
> bool OpenTuple(const char*p);
> void CloseTuple();
> void AddEvent( int, int, float);
> };
>
> ------------------------ tuple.cpp ---------------------------------------
> #include "tuple.h"
>
> #include <TRoot.h>
> #include <TNtuple.h>
> #include <TFile.h>
>
> TROOT root("root","tup");
>
> TFile*   p_file;
> TNtuple* p_tuple;
>
> Tuple::Tuple()
> {
> }
>
> bool Tuple::OpenTuple(const char* p)
> {
> p_file  = new TFile(p,"RECREATE","spike simulation run");
> p_tuple = new TNtuple("ntuple","events","in:out:time");
>
> return true;
> }
>
> void Tuple::CloseTuple()
> {
> p_file->Write();
> p_file->Close();
> delete p_file;
> }
>
> void Tuple::AddEvent( int i, int j, float f)
> {
> p_tuple->Fill((float)i,(float)j,f);
> }
>
> ----------------------------------------------------------------------------
> ----
>
>



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET