The command TF1::FixParameter does not seem to work. E.g.,:aroot [3] TH1F* h=gDirectory->FindObject("deltamgood") root [4] h (class TH1F*)0x975a090 root [5] TF1* f=gROOT->GetFunction("gaus") root [6] f->SetParameter(1 tab completion not implemented for this context root [6] f->SetParameter(1,0.15) root [7] f->SetParameter(2,0.001) root [8] f->FixParameter(2) root [10] f->Print() gaus : gaus Ndim= 1, Npar= 3, Noper= 1 fExpr[0] = gaus fOper = 2001 Par 0 Constant = 1 Par 1 Mean = 0.15 Par 2 Sigma = 0.001 root [11] h->Fit(f) FCN=15572.3 FROM MIGRAD STATUS=CONVERGED 65 CALLS 66 TOTAL EDM=1.89405e-08 STRATEGY= 1 ERROR MATRIX ACCURATE EXT PARAMETER STEP FIRST NO. NAME VALUE ERROR SIZE DERIVATIVE 1 Constant 4.53561e+03 3.22550e+01 1.16184e+00 -9.02437e-06 2 Mean 1.45671e-01 fixed 3 Sigma 7.46547e-04 4.27946e-06 4.88547e-05 -2.40157e-01 (Int_t)0 root [12] f->Print() gaus : gaus Ndim= 1, Npar= 3, Noper= 1 fExpr[0] = gaus fOper = 2001 Par 0 Constant = 4535.61 Par 1 Mean = 0.145671 Par 2 Sigma = 0.000746547 root [13] --so you can see it has gone ahead and fit for the nominally fixed parameters. --the limits have in fact been set by FixParameters (see blow), but the fit doesn't seems to ignore it .. Minuit even thinks the parameter is "fixed" (see Minuit output above), but doesn't treat it has fixed. root [13] Double_t l,u root [14] f->GetParLimits(1,l,u) root [15] u (Double_t)1.49999999999999994e-01 root [16] l (Double_t)1.49999999999999994e-01 The error assigned to parameter 1 is 0, but it moved it! --Is this a known problem? Looks like a bug to me. -Art A.E. Snyder, Group EC \!c*p?/ SLAC Mail Stop #95 ((. .)) Box 4349 | Stanford, Ca, USA, 94309 '\|/` e-mail:snyder@slac.stanford.edu o phone:650-926-2701 _ http://www.slac.stanford.edu/~snyder BaBar FAX:650-926-2657 Collaboration On Wed, 22 Sep 2004, Chris Crawford wrote: > Hi Victor, > Thanks! I replaced gPad with TVirtualPad::Pad(), and it works just > fine in CINT. > --Chris > > Victor Perevoztchikov wrote: > > >>> Could anyone please tell me what is wrong with the following little > >>>piece of code? I am using v4.00/08, linux redhat 8.0. I'm not sure it > >>> > >>> > >gPad is not a variable. It is macro. > >#define gPad (TVirtualPad::Pad()) > >CINT does not work with macros. For C++ your code is valid. > >Victor > > > > > > > >Victor M. Perevoztchikov perev@bnl.gov > >Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000 > >tel office : 631-344-7894; fax 631-344-4206; > > > >----- Original Message ----- > >From: "Axel Naumann" <axel-naumann@gmx.de> > >To: "Chris Crawford" <chris2@lns.mit.edu> > >Cc: <roottalk@pcroot.cern.ch> > >Sent: Wednesday, September 22, 2004 5:51 PM > >Subject: Re: [ROOT] for + if + gPad problem? > > > > > > > > > >>Hi Chris, > >>this is due to cint's loop optimization. .O 0 prevents it. > >>Axel. > >> > >>Chris Crawford wrote: > >> > >> > >>>Hello, > >>> Could anyone please tell me what is wrong with the following little > >>>piece of code? I am using v4.00/08, linux redhat 8.0. I'm not sure it > >>>really has to do with gPad, that's just what I ran across. > >>>--thanks, > >>>Chris Crawford > >>> > >>>{ > >>> new TCanvas("cv1","cv1"); > >>> for (int x=0;x<2;x++) { //x=1;x<2;x++ > >>> cout<<"gPad1="<<gPad<<endl; > >>> if (!x) cout<<"gPad2="<<gPad<<endl; > >>> if (x) cout<<"gPad3="<<gPad<<endl; > >>> } > >>>} > >>> > >>> > >>> > >>> > >
This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:09 MET