Re: [ROOT] Printing 2 pads with 2 fits of the same histo

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue Aug 06 2002 - 19:48:54 MEST


Hi Sabine,

You were using option "O" instead of "0".
Anyhow, I have simplified your macro. See extract below.

Rene Brun


TFile f50("fit50.root");


//===> fit intercryostat gauche et droite
TF1 *fitetad1= new TF1("fitetad1","exp(12*x+[0])+[1]*x",0.0,1.5); 
TF1 *fitetad2= new TF1("fitetad2","exp(-15*x+[0])+[1]*x",1.3,5.0); 



myc->Divide(1,2);
myc->cd(1);
TH1F *pr_Evsetad = (TH1F*)f50.Get("pr_Evsetad");
TH1F *prsave = (TH1F*)pr_Evsetad->Clone("prsave");
prsave->Fit("fitetad1","","",0.0,1.2);
myc->cd(2);
pr_Evsetad->Fit("fitetad2","","",1.3,3.0);
myc->Update(); 
myc->Print("fit1etaphicutetacor50.eps");


On Tue, 6 Aug 2002, Sabine Crepe-Renaudin wrote:

> 
> 	Thanks Rene, it works on the small routine I sent to you but not
> on fitest.c I have attached to this mail (you need the fit50.root file)
> and which is quite similar ...
> I don't see why ? because it's profile histos ?
> (I'm using version 3.01/06).
> 
> 			Sabine.
> 
> On Tue, 6 Aug 2002, Rene Brun wrote:
> 
> > Hi Sabine,
> > 
> > Look at the two lines modified below
> > 
> > Rene Brun
> > 
> > 
> > {
> >    gROOT->Reset();
> >    const Int_t np = 49;
> >    Float_t x[np] = {1.913521, 1.953769, 2.347435, 2.883654,
> > 3.493567,4.047560,4.337210, 4.364347, 4.563004, 5.054247,5.194183,
> > 5.380521, 5.303213, 5.384578, 5.563983,5.728500, 5.685752, 5.080029,
> > 4.251809, 3.372246,2.207432, 1.227541, 0.8597788,0.8220503,
> > 0.8046592,0.7684097,0.7469761,0.8019787,0.8362375,0.8744895,0.9143721,0.9462768,0.9285364,0.8954604,0.8410891,0.7853871,0.7100883,
> > 0.6938808,0.7363682,0.7032954,0.6029015,0.5600163,0.7477068,1.188785,
> > 1.938228,2.602717, 3.472962, 4.465014, 5.177035};
> > 
> >    h = new TH1F("g1","Example of several fits in subranges",np,85,134);
> >    h->SetMaximum(7);
> > 
> >    for (int i=0;i<np;i++) {
> >       h->SetBinContent(i+1,x[i]);
> >    }
> > 
> >    Double_t par[9];
> >    g1    = new TF1("g1","gaus",85,95);
> >    g2    = new TF1("g2","gaus",98,108);
> > 
> > 
> >    TCanvas *myc = new TCanvas("myc","myc_titre",0,0,360,520); 
> >    myc->Clear();
> >    myc->Divide(1,2);
> >    myc->cd(1);
> >    h->Fit("g1","","0",85,95);  //<=========
> >    h->DrawCopy();              //<=========
> >    myc->cd(2);
> >    h->Fit("g2","","",98,108);
> >    myc->Update();
> > 
> >    myc->Print("fit.eps");
> > }
> > 
> > 
> > On Tue, 6 Aug 2002, Sabine Crepe-Renaudin wrote:
> > 
> > > 
> > > 
> > > 	Hello,
> > > 
> > > 
> > > 		I'm using something equivalent to the following routine
> > > which simply fit an histo in two ranges and display each fit in 2 pads.
> > > Everything is OK till I try to print the result.
> > > 
> > > 	You can try the routine below to see the effect. If the print
> > > command is commented, you see the 2 fits, if you uncomment the last line,
> > > then the first fit is overwritten with the second and this is what is
> > > saved in the postscript file ...
> > > 
> > > 	Have I done something wrong ? is it possible to print the results
> > > correctly without copying the histo in an other one and fit 2 different
> > > histos ???
> > > 
> > > 		Thanks in advance for any suggestion,
> > > 
> > > 				Sabine.
> > > 
> > > 
> > > {
> > >    gROOT->Reset();
> > >    const Int_t np = 49;
> > >    Float_t x[np] = {1.913521, 1.953769, 2.347435, 2.883654, 3.493567,4.047560,4.337210, 4.364347, 4.563004, 5.054247,5.194183, 5.380521, 5.303213, 5.384578, 5.563983,5.728500, 5.685752, 5.080029, 4.251809, 3.372246,2.207432, 1.227541, 0.8597788,0.8220503,
> > > 0.8046592,0.7684097,0.7469761,0.8019787,0.8362375,0.8744895,0.9143721,0.9462768,0.9285364,0.8954604,0.8410891,0.7853871,0.7100883,0.6938808,0.7363682,0.7032954,0.6029015,0.5600163,0.7477068,1.188785, 1.938228,2.602717, 3.472962, 4.465014, 5.177035};
> > > 
> > >    h = new TH1F("g1","Example of several fits in subranges",np,85,134);
> > >    h->SetMaximum(7);
> > > 
> > >    for (int i=0;i<np;i++) {
> > >       h->SetBinContent(i+1,x[i]);
> > >    }
> > > 
> > >    Double_t par[9];
> > >    g1    = new TF1("g1","gaus",85,95);
> > >    g2    = new TF1("g2","gaus",98,108);
> > > 
> > > 
> > >    TCanvas *myc = new TCanvas("myc","myc_titre",0,0,360,520); 
> > >    myc->Clear();
> > >    myc->Divide(1,2);
> > >    myc->cd(1);
> > >    h->Fit("g1","","",85,95);
> > >    myc->Update();
> > >    myc->cd(2);
> > >    h->Fit("g2","","",98,108);
> > >    myc->Update();
> > > 
> > > // myc->Print("fit.eps");
> > > }
> > > 
> > > 
> > > 
> > >   --------------------------------------------------------------------
> > >       Sabine Crépé-Renaudin   
> > >       Expérience D0 (Fermilab)              
> > >       ISN                                       
> > >   --------------------------------------------------------------------
> > > 
> > > 
> > 
> > 
> 
> 
>   --------------------------------------------------------------------
>       Sabine Crépé-Renaudin   
>       Expérience D0 (Fermilab)              Tel +33 4 76 28 40 72
>       ISN                                       
>       53 avenue des Martyrs                 Fax +33 4 76 28 40 04 
>       38026 GRENOBLE CEDEX - FRANCE             
>   --------------------------------------------------------------------
> 
> 



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:03 MET