remove the "a" from the gROOT->Reset("a") call.
If it still gives problems (or if you are running 2.00/05)
let me know.
Cheers, Fons.
Jayoung Wu wrote:
>
> Hi,
> I am trying executing a macro("ytrack.C") that has a subroutine call.
> When I type ".x ytrack.C" in root environment it works:
> root[0] .x ytrack.C
>
> Hpwever, if I use controlbar, it gives sigmentation violation:
> {
> gROOT->Reset("a");
> bar = new TControlBar("vertical");
>
> ...
> bar->AddButton("Track",".x ytrack.C",
> "Tracking Incident X(Y) position");
>
> ...
>
> bar->Show();
> gROOT->SaveContext();
> }
>
> ---------------- ytrack.C ----------------------
> void sfit(Int_t n,Float_t *x,Float_t *y,Float_t *w,Float_t *pb0,Float_t
> *pb1);
> void sfit(Int_t n,Float_t *x,Float_t *y,Float_t *w,Float_t *pb0,Float_t
> *pb1)
> {
>
> Float_t tt1,tt2,tt3,tt4,tt5,ss;
>
> tt1 = tt2 = tt3 = tt4 = tt5 = 0.;
>
> for (Int_t i=0; i<n; i++) {
> tt1 = tt1 + 1*w[i]*w[i];
> tt2 = tt2 + x[i]*x[i]*w[i]*w[i];
> tt3 = tt3 + x[i]*w[i]*w[i];
> tt4 = tt4 + y[i]*w[i]*w[i];
> tt5 = tt5 + y[i]*x[i]*w[i]*w[i];
> }
>
> ss = tt1*tt2 - tt3*tt3;
>
> if (ss == 0) {
> *pb0 = -999;
> *pb1 = -999;
> }
> else {
> *pb0 = (tt2*tt4 - tt5*tt3)/ss;
> *pb1 = (tt1*tt5 - tt3*tt4)/ss;
> }
> }
>
> void ytrack()
> {
> ...
>
>
> sfit(fbnx,fbxz,fbxx,fbxe,&fbb0x,&fbb1x);
>
> ...
> }
>
> ---------------------------------------------------------------------
>
> Thanks in advance!
> Jayoung
-- Org: CERN, European Laboratory for Particle Physics. Mail: 1211 Geneve 23, Switzerland Phone: +41 22 7679248 E-Mail: Fons.Rademakers@cern.ch Fax: +41 22 7677910