Hi everyone,
Just thought I'd let you know that I just declared my fitting class
outside the body of my macro, along with a simple dummy function:
//define my fitting class out here
func_fit fclass;
//this is just an interface to class func_fit
Double_t dummy_func(Double_t *x, Double_t *par) {
return fclass.func_val(x,par);
}
void jgo() {
...all my code...assign histograms to fclass, etc...
//play shell game with dummy_func
TF1 *fitFcn = new TF1("fitFcn",dummy_func,-600.,-1.,fclass.get_nparam());
myhisto->Fit("fitFcn","V+","ep");
}
It seems to be working...
- John
Dr. John Krane wrote:
> Hi Philippe,
>
> The owner is a modified version of MakeClass, that is generic enough
> to read branches/variables from nearly-identical trees. Although I at
> first tried to mimic the destructor with
>
> delete fChain->GetCurrentFile();
>
> as you suggest, this didn't work so I tried numerous other things with
> poor results. You see, with the above solution, I still have what
> appears to be the old files in the TBrowser, but they are just the
> branches I actually used in the code, not the branches I didn't use.
> All branches are empty.
>
> If the branches need to be "freed" one by one, shouldn't this be in
> the default destructor for MakeClass? Yet it is not. (I assumed,
> with all dangers of assuming, that there existed a well-known way of
> closing the file and associated objects that I just didn't know about...)
>
> - John
>
> Philippe Canal wrote:
>
>> Hi John,
>>
>> It all depends on how you allocated the TFile containing the TTree.
>>
>> A guess would be that you should replace
>> fChain->Delete();
>> by
>> delete fChain;
>>
>> You may also have to do:
>> if (fChain) delete fChain->GetCurrentFile();
>>
>> But both are wild guesses :) ... The bottom line is that you have to
>> insure
>> that the 'owner' of the file of the tree closes and delete its file.
>>
>> Cheers,
>> Philippe.
>>
>> -----Original Message-----
>> From: owner-roottalk@pcroot.cern.ch
>> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Dr. John Krane
>> Sent: Thursday, July 17, 2003 4:36 PM
>> To: roottalk@pcroot.cern.ch
>> Subject: [ROOT] closing TTree files
>>
>>
>> Hi,
>>
>> I want to open a Tree, loop over it creating histograms, close the histo
>> file, close the Tree. Without leaving Root, I want to repeat the entire
>> process with a different Tree and make a separate histo file.
>>
>> I have most of what I need I think, but I don't know how to close the
>> Tree when I'm done with it. I do:
>>
>> // Write histos to disk. Close all files.
>> histofile->Write();
>> histofile->Close();
>> delete histofile;
>>
>> fChain->Delete();
>>
>> And this works as I expect with the histofile but not with the Tree. I
>> get through my loop twice and then seg fault. When I check the
>> TBrowser, I see both the first and second trees in there, which would
>> cause a seg fault in my code all right. Can anybody tell me how to get
>> rid of the first Tree?
>>
>> - John
>>
>>
>>
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET