Hello!
I’m currently working on a program which supposed to evaluate about 40000 histograms from one root file, first making some minor checks and then, after finding some special requirements met, making linear and gaus fits over some selected Bins (happens for ~90% of histograms).
The code looks like:
TH1F *histo;
////several other variables
for (int i =1;i<(#Histograms);i++)
{
histo=(TH1F*)infile->Get(path);
////////set my predefined variables to dummy values
////////make some minor checks
if (all previous checks ok)
{
TF1 *gfunc= new TF1("gfunc","gaus",(range));
histo->Fit("gfunc","QN","",(range));
////////////take fitparameters and write them to predefined variables
gfunc->SetBit(kMustCleanup);
gfunc->Clear();
delete gfunc;
TF1 *lfunc= new TF1("gfunc","pol1",(range));
histo->Fit("lfunc","QN","",(range));
////////////take fitparameters and write them to predefined variables
lfunc->SetBit(kMustCleanup);
lfunc->Clear();
delete gfunc;
}
////write my variables to a tree
}
The program is already running and the output looks ok, but the problem is that it occupies far too much memory. In my example, the inputfile is about 250MB, the output only some KB, however the memory used by the program increases continually, to a top value of ~630 MB. By taking out the part with the fits, I already found out, that this is the part, where my problem should be. Some collegues already suggested that my Fit TF1"s are not properly cleared from the memory.
Cheers,
Axel