Re: reducing TMinuit printout

From: Tom Roberts <tjrob_at_fnal.gov>
Date: Fri, 1 May 2009 14:44:37 -0500


OK. In my case, evaluating FCN is much more expensive than the new, and is done ~100 times more often. So the new is negligible.

Tom Roberts

Arthur E. Snyder wrote:
> You might want to make only one TMinuit for another reason, if you're
> using it a lot as would be indicated by your desire to reduce print.
> That is "new" is rather expensive in C++ and if your fit is pretty
> simple and you're just doing the fit many times, the "new" many times
> might be a big contributor to the CPU used. Using a single instance
> should not be a problem as long as you reset parameters to appropriate
> initial values before each fit.
>
> -Art S.
>
> A.E. Snyder, Group EC \!c*p?/
> SLAC Mail Stop #95 ((. .))
> Box 4349 |
> Stanford, Ca, USA, 94309 '\|/`
> e-mail:snyder_at_slac.stanford.edu o
> phone:650-926-2701 _
> http://www.slac.stanford.edu/~snyder BaBar
> FAX:650-926-2657 Collaboration
>
>
>
> On Fri, 1 May 2009, Tom Roberts wrote:
>

>> I am using TMinuit for a special fitting task, and am creating a 
>> TMinuit object and calling Migrad() thousands of times. This 
>> completely overwhelms the output, because it prints a page per call. 
>> This is a large C++ simulation program linked with the Root libraries.
>>
>> How can I avoid ALL printout from TMinuit() and Migrad() ?
>>
>> I'm now doing this:
>>     TMinuit *tm = new Tminuit();
>>     tm->SetPrintLevel(0);
>>     tm->Command("SET PRINTOUT -1");
>>     ... use tm
>>
>> But I still get 3 lines per instance:
>> **********
>> **    1 **SET PRINT           0
>> **********
>>
>> How can I avoid that? It seems to be using the global function 
>> Printf(), which I could not find in the reference manual and there's 
>> no source file Printf.cxx. I am willing to omit even warnings and 
>> error messages, so how can I turn Printf() off?
>>
>> I tried:
>>     stderr = stdout = fopen("/dev/null","w");
>> but that did not stop the output (!).
>>
>>
>> Perhaps I could just create a single TMinuit object and re-use it, 
>> thus reducing this to 3 rather strange lines of output. But that 
>> requires changing a lot of code, and I'd rather not do it (how much 
>> state from the previous fit does TMinuit keep? -- I don't know, and 
>> would rather not make my program depend on the answer).
>>
>>
>> Tom Roberts
>>
>>
Received on Fri May 01 2009 - 21:44:42 CEST

This archive was generated by hypermail 2.2.0 : Fri May 01 2009 - 23:50:01 CEST