Hi Vincent, I have modified/simplified your loop in your code below. See comments Rene Brun Vincent =?iso-8859-15?q?R=E9gnard?= wrote: > > Hi, > I have 1D histos stored in a .root files and I would like to plot them in > different pads within a canvas. I manage to do so (see how in the following > lines). I am running into trouble when I want to modify the pads properties. > I would like to set xlogscale and ylogscale for each pad and modify the > xaxislabelsize but cannot manage to obtain the pads pointers. > I have been trying using the GetSelected() method but it > revealed unsuccessfull leading to the following error message in cint: > > "Error: illegal pointer to class object tmpcan 0x0 331 FILE:multiview.C > LINE:40 > *** Interpreter error recovered ***" > I saw GetSelcted() returns a TVirtualPad , I did not understand the goal of > this class, is there a way to convert such an object into a standard TPad ? > > If you have any idea how I could sort out this I would be thankfull. > > _______________________________________________ > { > > /* multiview.C*/ > int entires; > NB_MAX_HIST0 = 25; > int index = 0; > int i; > TH1F * h1_array[25]; > /*executable statements*/ > TIter nextkey( f->GetListOfKeys() ); > TKey * key; > > printf("Max number of histo : %d\n",25); > > while ( (key = (TKey*)nextkey()) && (index < 25)) > {/*store histos in an array*/ > h1_array[index] = (TH1F*)key->ReadObj(); > > index ++; > } > > /*set the number of pads*/ > nb_x = (int)sqrt(index); > nb_y = (int)sqrt(index); > printf("nb_x * nb_y = %d \n",nb_x*nb_y); > if ((nb_x * nb_y) < index) {nb_y+=1;}; > printf("nb_x * nb_y = %d \n",nb_x*nb_y); > if ((nb_x * nb_y) < index) {nb_x+=1;}; > printf("Creating a %d * %d pad\n",nb_x,nb_y); > > TCanvas * can = new TCanvas("can","canvas"); > can->Divide(nb_x,nb_y); > > /*draw stuff in different pads*/ > for (i=1;i<=index;i++) > { //TPad * tmpcan = new TPad(); WHY DO YOU CREATE A NEW PAD ? can->cd(i); //AFTER cd, gPad points to the current pad gPad->SetLogx(); h1_array[i-1]->Draw(); > } > > printf("Read %d histos\n",index); > > printf("Exiting \n"); > /*end of program*/ > } > > _____________________________________________ > -- > > , , > / \ > ((__-^^-,-^^-__)) > `-_---' `---_-' > `--|o` 'o|--' > \ ` / > ): :( > :o_o: > "-" http://www.gnu.org
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:53 MET