Truncated exponential in stat box

Hello Everyone,

I have a simple macro that makes a pol1 fit on a histogram and prints chi2/ndf, p0 with p0_error and p1 with p1_error in the statistics box. The resulting p1_error is small, 3.19438e-05. However, the number that is printed in the statistics box is 3.19438e-0, i.g. 5 is cut off. How can I fix this?
I have included the code bellow and have attached the data file and the resulting figure here for completeness.

Thanks,

Jose.

[code]{
//gROOT->Reset();
gStyle->SetOptFit(111111);
gStyle->SetOptStat(00);
gROOT->SetStyle(“Plain”);

TCanvas *c0=new TCanvas(“c0”,"plots Vana - VANA ",900,600);
c0.Divide(1,1);

TCanvas *c1=new TCanvas(“c1”, "plot IVana :VDIG ",900,600);
c1.Divide(1,1);

// Llama los Datos de Vdig
ifstream infile_chip1("/Users/joselazoflores/Downloads/IVsf.txt",ios::in);

//Numero de eventos
Int_t n=10;

//VANA value
Int_t col1[n];

//Variables
Float_t col2[n];
Float_t col3[n];
Float_t col4[n];
Float_t col5[n];
Float_t col6[n];
Float_t col7[n];
Float_t col8[n];

// Valores Iniciales de las Columnas 0.
for (int i=0; i<n; i++){
col1[i]=0;
col2[i]=0.;
col3[i]=0.;
col4[i]=0.;
col5[i]=0.;
col6[i]=0.;
col7[i]=0.;
col8[i]=0.;
}

if (!infile_chip1){
cout << “El archivo no se abrio” << endl;
exit(1);
}

// Lee los Datos de las Columnas
while (!infile_chip1.eof()){

for (int j=0; j<n ;j++){
infile_chip1 >> col1[j] >> col2[j] >> col3[j]>>col4[j]>>col5[j]>>col6[j]>>col7[j]>>col8[j];
}
}

// Definicion de las Variables.
Double_t VSF[n];
Double_t Vsf[n];
Double_t Isf_0[n];
Double_t Isf_50[n];
Double_t Isf_100[n];
Double_t Isf_150[n];
Double_t Isf_200[n];
Double_t Isf_250[n];

// Valores Iniciales de las Variables 0.
for (int i=0; i<n; i++){

VSF[i]=0;
Vsf[i]=0.;
Isf_0[i]=0.;
Isf_50[i]=0.;
Isf_100[i]=0.;
Isf_150[i]=0.;
Isf_200[i]=0.;
Isf_250[i]=0.;
}

//Asigna a cada Variable la correspondiente Columna
for (int i=0; i<n; i++){

VSF[i]=col1[i];
Vsf[i]=col2[i];
Isf_0[i]=col3[i];
Isf_50[i]=col4[i];
Isf_100[i]=col5[i];
Isf_150[i]=col6[i];
Isf_200[i]=col7[i];
Isf_250[i]=col8[i];
}

// Cierra los Datos de vdig1
infile_chip1.close();

Double_t VSF_dac[n];
Double_t vsf[n];
Double_t isf_0[n];
Double_t isf_50[n];
Double_t isf_100[n];
Double_t isf_150[n];
Double_t isf_200[n];
Double_t isf_250[n];

TH2F *VSF_vsf= new TH2F("",“Vsf - VSF DAC;VSF[DAC];Vsf [V]”,256,0,256,200,1,2.5);
TH2F *ivsf_vana_0= new TH2F("",“IV sf curve: VANA;VSF[DAC];Isf[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_50= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_100= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_150= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_200= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_250= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);

Int_t n1=10;

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
vsf[i]=Vsf[i];
cout<<VSF_dac[i]<<"\t"<<vsf[i]<<endl;
VSF_vsf->Fill(VSF_dac[i],vsf[i]);

}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_0[i]=Isf_0[i];
cout<<VSF_dac[i]<<"\t"<<isf_0[i]<<endl;
ivsf_vana_0->Fill(VSF_dac[i],isf_0[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_50[i]=Isf_50[i];
cout<<VSF_dac[i]<<"\t"<<isf_50[i]<<endl;
ivsf_vana_50->Fill(VSF_dac[i],isf_50[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_100[i]=Isf_100[i];
cout<<VSF_dac[i]<<"\t"<<isf_100[i]<<endl;
ivsf_vana_100->Fill(VSF_dac[i],isf_100[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_150[i]=Isf_150[i];
cout<<VSF_dac[i]<<"\t"<<isf_150[i]<<endl;
ivsf_vana_150->Fill(VSF_dac[i],isf_150[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_200[i]=Isf_200[i];
cout<<VSF_dac[i]<<"\t"<<isf_200[i]<<endl;
ivsf_vana_200->Fill(VSF_dac[i],isf_200[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_250[i]=Isf_250[i];
cout<<VSF_dac[i]<<"\t"<<isf_250[i]<<endl;
ivsf_vana_250->Fill(VSF_dac[i],isf_250[i]);
}

c0->cd(1);

VSF_vsf->SetMarkerStyle(21);
VSF_vsf->SetMarkerSize(0.5);
VSF_vsf->SetMarkerColor(2);
VSF_vsf->Draw();

TF1 fit1= new TF1(“fit1”,"[0]+ x[1]", 0,210);
VSF_vsf->Fit(“fit1”,“R”);

c1->cd(1);
ivsf_vana_0->SetMarkerStyle(25);
ivsf_vana_0->SetMarkerSize(0.8);
ivsf_vana_0->SetMarkerColor(2);
ivsf_vana_0->Draw();
leg1 = new TLegend(0.15,0.35,0.3,0.9);
leg1->AddEntry(ivsf_vana_0,“VANA=0”);
leg1->Draw();

c1->cd(1);
ivsf_vana_50->SetMarkerStyle(26);
ivsf_vana_50->SetMarkerSize(0.8);
ivsf_vana_50->SetMarkerColor(6);
ivsf_vana_50->Draw(“SAME”);
leg1->AddEntry(ivsf_vana_50,“VANA=50”);
leg1->Draw();

c1->cd(1);
ivsf_vana_100->SetMarkerStyle(27);
ivsf_vana_100->SetMarkerSize(0.8);
ivsf_vana_100->SetMarkerColor(7);
ivsf_vana_100->Draw(“SAME”);
leg1->AddEntry(ivsf_vana_100,“VANA=100”);
leg1->Draw();

c1->cd(1);
ivsf_vana_150->SetMarkerStyle(28);
ivsf_vana_150->SetMarkerSize(0.8);
ivsf_vana_150->SetMarkerColor(8);
ivsf_vana_150->Draw(“SAME”);
leg1->AddEntry(ivsf_vana_150,“VANA=150”);
leg1->Draw();

c1->cd(1);
ivsf_vana_200->SetMarkerStyle(29);
ivsf_vana_200->SetMarkerSize(0.8);
ivsf_vana_200->SetMarkerColor(9);
ivsf_vana_200->Draw(“SAME”);
leg1->AddEntry(ivsf_vana_200,“VANA=200”);
leg1->Draw();

c1->cd(1);
ivsf_vana_250->SetMarkerStyle(31);
ivsf_vana_250->SetMarkerSize(0.8);
ivsf_vana_250->SetMarkerColor(11);
ivsf_vana_250->Draw(“SAME”);
leg1->AddEntry(ivsf_vana_250,“VANA=250”);
leg1->Draw();
}
[/code]



IVsf.txt (551 Bytes)

Your macro gives:

root [0] .x laflores.C
El archivo no se abrio

… and nothing displayed … can you send something running ?

Hello,

Yes, I neglected to change the location of the data file in the macro I submitted. Please use the code bellow.
Sorry about that and thanks for your help,

Jose.

[code]{
//gROOT->Reset();
gStyle->SetOptFit(111111);
gStyle->SetOptStat(00);
gROOT->SetStyle(“Plain”);

TCanvas *c0=new TCanvas(“c0”,"plots Vana - VANA ",900,600);
c0.Divide(1,1);

ifstream infile_chip1(“IVsf.txt”,ios::in);

// numb of events
Int_t n=10;

Int_t col1[n];

//Variables
Float_t col2[n];
Float_t col3[n];
Float_t col4[n];
Float_t col5[n];
Float_t col6[n];
Float_t col7[n];
Float_t col8[n];

for (int i=0; i<n; i++){
col1[i]=0;
col2[i]=0.;
col3[i]=0.;
col4[i]=0.;
col5[i]=0.;
col6[i]=0.;
col7[i]=0.;
col8[i]=0.;
}

if (!infile_chip1){
cout << “The data file is missing!!!” << endl;
exit(1);
}

// Get the data
while (!infile_chip1.eof()){

for (int j=0; j<n ;j++){
infile_chip1 >> col1[j] >> col2[j] >> col3[j]>>col4[j]>>col5[j]>>col6[j]>>col7[j]>>col8[j];
}
}

Double_t VSF[n];
Double_t Vsf[n];
Double_t Isf_0[n];
Double_t Isf_50[n];
Double_t Isf_100[n];
Double_t Isf_150[n];
Double_t Isf_200[n];
Double_t Isf_250[n];

for (int i=0; i<n; i++){

VSF[i]=0;
Vsf[i]=0.;
Isf_0[i]=0.;
Isf_50[i]=0.;
Isf_100[i]=0.;
Isf_150[i]=0.;
Isf_200[i]=0.;
Isf_250[i]=0.;
}

for (int i=0; i<n; i++){

VSF[i]=col1[i];
Vsf[i]=col2[i];
Isf_0[i]=col3[i];
Isf_50[i]=col4[i];
Isf_100[i]=col5[i];
Isf_150[i]=col6[i];
Isf_200[i]=col7[i];
Isf_250[i]=col8[i];
}

infile_chip1.close();

Double_t VSF_dac[n];
Double_t vsf[n];
Double_t isf_0[n];
Double_t isf_50[n];
Double_t isf_100[n];
Double_t isf_150[n];
Double_t isf_200[n];
Double_t isf_250[n];

TH2F *VSF_vsf= new TH2F("",“Vsf - VSF DAC;VSF[DAC];Vsf [V]”,256,0,256,200,1,2.5);
TH2F *ivsf_vana_0= new TH2F("",“IV sf curve: VANA;VSF[DAC];Isf[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_50= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_100= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_150= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_200= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);
TH2F *ivsf_vana_250= new TH2F("",“IV sf curve: VANA;VSF[DAC];Iana[mA]”,256,0,260,200,-1,90);

Int_t n1=10;

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
vsf[i]=Vsf[i];
cout<<VSF_dac[i]<<"\t"<<vsf[i]<<endl;
VSF_vsf->Fill(VSF_dac[i],vsf[i]);

}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_0[i]=Isf_0[i];
cout<<VSF_dac[i]<<"\t"<<isf_0[i]<<endl;
ivsf_vana_0->Fill(VSF_dac[i],isf_0[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_50[i]=Isf_50[i];
cout<<VSF_dac[i]<<"\t"<<isf_50[i]<<endl;
ivsf_vana_50->Fill(VSF_dac[i],isf_50[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_100[i]=Isf_100[i];
cout<<VSF_dac[i]<<"\t"<<isf_100[i]<<endl;
ivsf_vana_100->Fill(VSF_dac[i],isf_100[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_150[i]=Isf_150[i];
cout<<VSF_dac[i]<<"\t"<<isf_150[i]<<endl;
ivsf_vana_150->Fill(VSF_dac[i],isf_150[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_200[i]=Isf_200[i];
cout<<VSF_dac[i]<<"\t"<<isf_200[i]<<endl;
ivsf_vana_200->Fill(VSF_dac[i],isf_200[i]);
}

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
isf_250[i]=Isf_250[i];
cout<<VSF_dac[i]<<"\t"<<isf_250[i]<<endl;
ivsf_vana_250->Fill(VSF_dac[i],isf_250[i]);
}

c0->cd(1);

VSF_vsf->SetMarkerStyle(21);
VSF_vsf->SetMarkerSize(0.5);
VSF_vsf->SetMarkerColor(2);
VSF_vsf->Draw();

TF1 fit1= new TF1(“fit1”,"[0]+ x[1]", 0,210);
VSF_vsf->Fit(“fit1”,“R”);

}
[/code]

the macro you sent gives:


Hello again,

OK, there are two problems then. You have to run the macro twice for the statistics box to be redrawn with the fit parameters. I tried to fix this problem in the new code bellow but I was unsuccessful.

Thanks again for your help,

Jose.

[code]{
gROOT->Reset();
gStyle->SetOptFit(111111);
gStyle->SetOptStat(00);
gROOT->SetStyle(“Plain”);

TCanvas *c0=new TCanvas(“c0”,"plots Vana - VANA ",900,600);

ifstream infile_chip1(“IVsf.txt”,ios::in);

Int_t n=10;

//VANA value
Int_t col1[n];

//Variables
Float_t col2[n];
Float_t col3[n];
Float_t col4[n];
Float_t col5[n];
Float_t col6[n];
Float_t col7[n];
Float_t col8[n];

for (int i=0; i<n; i++){
col1[i]=0;
col2[i]=0.;
col3[i]=0.;
col4[i]=0.;
col5[i]=0.;
col6[i]=0.;
col7[i]=0.;
col8[i]=0.;
}

if (!infile_chip1){
cout << “The data file does not exist!!!” << endl;
exit(1);
}

while (!infile_chip1.eof()){

for (int j=0; j<n ;j++){
infile_chip1 >> col1[j] >> col2[j] >> col3[j]>>col4[j]>>col5[j]>>col6[j]>>col7[j]>>col8[j];
}
}

Double_t VSF[n];
Double_t Vsf[n];
Double_t Isf_0[n];
Double_t Isf_50[n];
Double_t Isf_100[n];
Double_t Isf_150[n];
Double_t Isf_200[n];
Double_t Isf_250[n];

for (int i=0; i<n; i++){

VSF[i]=0;
Vsf[i]=0.;
Isf_0[i]=0.;
Isf_50[i]=0.;
Isf_100[i]=0.;
Isf_150[i]=0.;
Isf_200[i]=0.;
Isf_250[i]=0.;
}

for (int i=0; i<n; i++){

VSF[i]=col1[i];
Vsf[i]=col2[i];
Isf_0[i]=col3[i];
Isf_50[i]=col4[i];
Isf_100[i]=col5[i];
Isf_150[i]=col6[i];
Isf_200[i]=col7[i];
Isf_250[i]=col8[i];
}

infile_chip1.close();

Double_t VSF_dac[n];
Double_t vsf[n];
Double_t isf_0[n];
Double_t isf_50[n];
Double_t isf_100[n];
Double_t isf_150[n];
Double_t isf_200[n];
Double_t isf_250[n];

TH2F *VSF_vsf= new TH2F("",“Vsf - VSF DAC;VSF[DAC];Vsf [V]”,256,0,256,200,1,2.5);

Int_t n1=10;

for(int i=0;i<n1;i++){
VSF_dac[i]=VSF[i];
vsf[i]=Vsf[i];
cout<<VSF_dac[i]<<"\t"<<vsf[i]<<endl;
VSF_vsf->Fill(VSF_dac[i],vsf[i]);

}

VSF_vsf->SetMarkerStyle(21);
VSF_vsf->SetMarkerSize(0.5);
VSF_vsf->SetMarkerColor(2);
//VSF_vsf->Draw();

TF1 fit1= new TF1(“fit1”,"[0]+ x[1]", 0,210);
VSF_vsf->Fit(“fit1”,“R”);

c0->Update();
VSF_vsf->Draw();

}
[/code]

the attached macro needs to be run only once.
I am looking at the precision problem.
laflores.C (3.74 KB)

Now fixed in the trunk and in 5.34