I do not see anything a priori wrong with your script.
Unfortunatly, you do not mention which version/OS you are using.
You will find below a small variant of your script and I checked
that it runs correctly.
Rene Brun
void sutton(){
TH1F *h1 = new TH1F("h1","zeus",100,-3,3);
h1->FillRandom("gaus",10000);
h1->SetMarkerStyle(21);
h1->SetMarkerColor(1);
TH1F *h2 = new TH1F("h2","h2",100,-3,3);
h2->FillRandom("gaus",5000);
h2->SetFillColor(38);
TH1F *h3 = new TH1F("h3","h3",100,-3,3);
h3->FillRandom("gaus",3000);
h3->SetFillColor(44);
h1->Draw("ep");
h2->Draw("same");
h3->Draw("same");
TLegend *tleg = new TLegend(0.15,0.65,0.40,0.85);
cout << "ptr: " << tleg << endl;
tleg->SetFillColor(0);
tleg->SetBorderSize(0);
tleg->AddEntry(h1,"ZEUS 96+97","p");
tleg->AddEntry(h2,"HERWIG (dir + res)","f");
tleg->AddEntry(h3,"HERWIG direct","f");
tleg->Draw();
}
M.R.Sutton wrote:
>
> Why might this be giving me a segmentation violation?
>
> TLegend *tleg = new TLegend(0.2,0.65,0.45,0.85);
> cout << "ptr: " << tleg << endl;
> tleg->SetFillColor(0);
> tleg->SetBorderSize(0);
> tleg->AddEntry(data_dist,"ZEUS 96+97","p");
> tleg->AddEntry(res_dist,"HERWIG (dir + res)","f");
> tleg->AddEntry(dir_dist,"HERWIG direct","f");
> tleg->Draw();
>
> the pointers {data,dir,res}_dist *are* all defined and plotable
> and the objects pointed to *are* in scope as is the pointer
> tleg after the declaration, yet still the segmentation violation
> occurs.
>
> I have traced it to the Draw command following the AddEntry.
> If I *DO NOT* use AddEntry, then the segmentation violation
> does NOT occur. Does this not suggest a problem with the
> TList of the TLegend?
>
> Surely if everything properly conforms to the data hiding
> paradigm etc then nothing I have done previously should be
> able to stop the TLegend behaving properly and suggests some
> hidden dependence on some additional global object which
> isn't in the right state?
>
> Or maybe I am just a victim of ignorance and am doing
> something wrong?
>
> Unnecessary Dependence on Global Objects? JUST SAY NO!!!!!
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET