GammaWare  Head Version for release 0.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
CanvasVisu.C
Go to the documentation of this file.
1 #include <iostream>
2 #include <iomanip>
3 
4 #include "TSystem.h"
5 #include "TROOT.h"
6 #include "TStyle.h"
7 #include "TObject.h"
8 #include "TCanvas.h"
9 #include "TGTab.h"
10 #include "TPavesText.h"
11 #include "TImage.h"
12 #include "TBrowser.h"
13 #include "TRootBrowser.h"
14 #include "TH1.h"
15 #include "TF1.h"
16 #include "TGraph.h"
17 #include "TMath.h"
18 #include "TVirtualFitter.h"
19 #include "TList.h"
20 #include "TContextMenu.h"
21 #include "TClass.h"
22 
23 #include "BashColor.h"
24 #include "LoupeOnPad.h"
25 #include "CrystalFrame.h"
26 
27 #include "CanvasVisu.h"
28 
29 CanvasVisu::CanvasVisu(const char* name, const char *title)
30 {
31  fObservableName = name;
32  fObservableTitle = title;
33 
34  fNPadsX = 7;
35  fNPadsY = 6;
36 
37  TString SegLetters[6] = {"A","B","C","D","E","F"};
38 
39  for(int i=0 ; i< fNPadsX-1 ; i++)
40  {
41  for(int j=0 ; j<fNPadsY ; j++)
42  {
43  PadPos toto;
44  toto.PadNmbr = (fNPadsY-j-1)*fNPadsX + i+1;
45  TString aname = SegLetters[i] + Form("%d",j+1);
46  toto.SegName = aname;
47  fHistPositionList.push_back(toto);
48  }
49  }
50  PadPos PadPosCore;
51  PadPosCore.PadNmbr = 42;
52  PadPosCore.SegName = "Core HG";
53  fHistPositionList.push_back(PadPosCore);
54  PadPosCore.PadNmbr = 35;
55  PadPosCore.SegName = "Core LG";
56  fHistPositionList.push_back(PadPosCore);
57 
58 
59 
60  for(int i=0 ; i<= fNPadsX*fNPadsY ; i++)
61  {
62  HistPos HPos;
63  HPos.HistNbr=-1;
64  HPos.SegName="";
65  if(i==0)
66  {
67  fPadPositionList.push_back(HPos);
68  continue;
69  }
70  for(UInt_t j=0 ; j<fHistPositionList.size() ; j++)
71  {
72  PadPos toto = fHistPositionList[j];
73  if(toto.PadNmbr==i)
74  {
75  HPos.HistNbr = j;
76  HPos.SegName = toto.SegName;
77  }
78  }
79  fPadPositionList.push_back(HPos);
80  }
81 
82  Color_t c[12] = {kBlue-6, kCyan-6, kGreen-6, kYellow-6 , kRed-6, kMagenta-6, kAzure, kTeal, kSpring, kOrange, kPink, kViolet};
83  for(int i=0 ; i<48 ; i++) fColor[i] = c[i%12] - (int)i/12;
84 
85 
87 
88  gStyle->SetTextFont(132);
89  gStyle->SetTitleFont(132,"t");
90  gStyle->SetTitleFontSize(0.4);
91  gStyle->SetTitleH(0.1);
92  gStyle->SetTitleFont(132,"XY");
93  gStyle->SetLabelFont(132,"XY");
94  gStyle->SetLegendFont(132);
95  gStyle->SetStatFont(132);
96  gROOT->UseCurrentStyle();
97 
98  fCanvas = 0x0;
99  fBashColor = new BashColor();
100 }
101 
102 TCanvas *CanvasVisu::NewCanvas(TString cname, TString ctitle)
103 {
104  TCanvas *cnew = 0x0;
105  TBrowser *Browser = (TBrowser*)((TList*)gROOT->GetListOfBrowsers())->At(0);
106 
107  if(gROOT->GetListOfCanvases()->FindObject(cname))
108  {
109  TRootBrowser *RootBrowser = (TRootBrowser *) Browser->GetBrowserImp();
110  ((TGTab*)RootBrowser->GetTabRight())->SetTab(cname);
111  RootBrowser->GetTabRight()->CloseTab(RootBrowser->GetTabRight()->GetCurrent());
112  }
113 
114  TString cmd;
115  cmd = Form("new TCanvas(\"%s\",\"%s\")",cname.Data(),ctitle.Data());
116 
117  Browser->ExecPlugin(cname.Data(), 0, cmd.Data()) ;
118  cnew = (TCanvas *)gROOT->GetListOfCanvases()->FindObject(cname.Data());
119 
120  if(!cnew->GetShowToolBar()) cnew->ToggleToolBar();
121 
122  return cnew;
123 }
124 
125 TCanvas *CanvasVisu::BuildSegmentedCanvas(TString CanvasName, TString CanvasTitle)
126 {
127  TCanvas *SegmentedCanvas = NewCanvas(CanvasName,CanvasTitle);
128 
129  if(SegmentedCanvas==0x0) return SegmentedCanvas;
130 
131  SegmentedCanvas->cd();
132 
133  SegmentedCanvas->Divide(fNPadsX,fNPadsY,0.001,0.001);
134  SegmentedCanvas->SetCrosshair(true);
135 
136  double ReduceMargin = 0.;
137  double AxisMargin = 0.1;
138 
139  int ColNbr[6] = {2000,2001,2002,2003,2004,2005};
140 
141  if(gROOT->GetColor(ColNbr[0]) == 0x0)
142  {
143 
144  TColor *CrystCol[6];
145  CrystCol[0] = new TColor(ColNbr[0],19./256.,19./256.,21./256.);
146  CrystCol[1] = new TColor(ColNbr[1],40./256.,45./256.,82./256.);
147  CrystCol[2] = new TColor(ColNbr[2],43./256.,51./256.,145./256.);
148  CrystCol[3] = new TColor(ColNbr[3],53./256.,98./256.,183./256.);
149  CrystCol[4] = new TColor(ColNbr[4],116./256.,66./256.,165./256.);
150  CrystCol[5] = new TColor(ColNbr[5],168./256.,47./256.,157./256.);
151  }
152 
154  {
155  PadPos HistPosition = fHistPositionList[i];
156 
157  SegmentedCanvas->cd(HistPosition.PadNmbr);
158 
159  gPad->SetTopMargin(ReduceMargin);
160  gPad->SetRightMargin(ReduceMargin);
161  gPad->SetBottomMargin(ReduceMargin);
162  gPad->SetLeftMargin(ReduceMargin);
163 
164  if(HistPosition.SegName.BeginsWith("A")) gPad->SetLeftMargin(AxisMargin);
165  if(HistPosition.SegName.EndsWith("1") || HistPosition.SegName.EndsWith("HG")) gPad->SetBottomMargin(AxisMargin);
166 
167  TPaveText *PavText = new TPaveText(0.8,0.7,0.92,0.99,"NDC");
168  PavText->SetTextSize(0.13);
169  PavText->SetTextFont(32);
170  int Prof = (fNPadsX*fNPadsY-HistPosition.PadNmbr)/fNPadsX;
171  PavText->SetTextColor(ColNbr[Prof]);
172  PavText->SetName("InfoPad");
173  PavText->AddText(HistPosition.SegName);
174  PavText->AddText(Form("ID = %d",i));
175  PavText->SetBorderSize(0);
176  PavText->SetFillColor(0);
177  PavText->SetFillStyle(0);
178  PavText->Draw();
179 
180  gStyle->SetOptTitle(0);
181  }
182 
183  double X1 = SegmentedCanvas->cd(fNPadsX*4)->GetXlowNDC();
184  double Y1 = SegmentedCanvas->cd(fNPadsX*4)->GetYlowNDC();
185 
186  double X2 = SegmentedCanvas->cd(fNPadsX)->GetXlowNDC()+SegmentedCanvas->cd(fNPadsX)->GetWNDC();
187  double Y2 = SegmentedCanvas->cd(fNPadsX)->GetYlowNDC()+SegmentedCanvas->cd(fNPadsX)->GetHNDC();
188 
189  gPad->GetCanvas()->cd();
190  TPad *CrystalPad = new TPad("CrystalPadBase","CrystalPadBase",X1,Y1,X2,Y2);
191  CrystalPad->Draw();
192  CrystalPad->cd();
193  TPad *PadBidon = new TPad("CrystalPad","CrystalPad",0.1,0.1,0.9,0.9);
194  PadBidon->Draw();
195  PadBidon->cd();
196 
197  TImage *img = TImage::Open("Macros/Pictures/Crystal.png");
198  if(img->IsValid())
199  {
200  img->SetConstRatio(1);
201  img->SetImageQuality(TAttImage::kImgBest);
202  img->Draw("xxx");
203  img->SetEditable(1);
204  }
205  CrystalPad->SetEditable(false);
206 
207  return SegmentedCanvas;
208 }
209 
210 void CanvasVisu::ShowHist(int HistNumber, int LibraryNumber, bool same)
211 {
212 
213  if(LibraryNumber+1 > fListOfLibrairies->GetSize()){
214  Warning("ShowCanvas","Only %d libraries available, library 0 selected",fListOfLibrairies->GetSize());
215  LibraryNumber=0;
216  }
217 
218  TList *ListOfHists = (TList*)fListOfLibrairies->At(LibraryNumber);
219 
220  TString CanvasName = fCrystalName + Form("_%s_Hist%d_Lib%d",fObservableName.Data(),HistNumber,LibraryNumber);
221  TString CanvasTitle = fObservableTitle + " spectra for crystal" + fCrystalName + Form(",hist %d, library %d",HistNumber,LibraryNumber);
222 
223  TCanvas *CurrentCanvas= 0x0;
224 
225  if(same)
226  {
227  CurrentCanvas = TVirtualPad::Pad()->GetCanvas();
228  CurrentCanvas->cd();
229  }
230  else
231  {
232  if ( (CurrentCanvas = (TCanvas *)gROOT->GetListOfCanvases()->FindObject(CanvasName)) ) {
233  }
234  else {
235  CurrentCanvas = NewCanvas(CanvasName,CanvasTitle);
236  CurrentCanvas->cd();
237  }
238  if ( CurrentCanvas == 0x0 )
239  return;
240  }
241  if(!same)
242  {
243  CurrentCanvas->SetCrosshair(true);
244 
245  PadPos HistPosition = fHistPositionList[HistNumber];
246 
247  double ReduceMargin = 0.01;
248  double AxisMargin = 0.05;
249 
250  gPad->SetTopMargin(ReduceMargin);
251  gPad->SetRightMargin(ReduceMargin);
252  gPad->SetBottomMargin(AxisMargin);
253  gPad->SetLeftMargin(AxisMargin);
254 
255  TH1 *h = (TH1*)ListOfHists->At(HistNumber)->Clone();
256  h->SetStats(false);
257  h->Draw();
258 
259  TPaveText *PavText = new TPaveText(0.8,0.7,1.-ReduceMargin,1.-ReduceMargin,"NDC");
260  PavText->AddText(HistPosition.SegName);
261  PavText->AddText(Form("Hist_%d",HistNumber));
262  PavText->SetBorderSize(0);
263  PavText->SetFillColor(0);
264  PavText->SetFillStyle(0);
265  PavText->Draw();
266 
267  gStyle->SetOptTitle(0);
268  }
269  else
270  {
271  PadPos HistPosition = fHistPositionList[HistNumber];
272  CurrentCanvas->cd(HistPosition.PadNmbr);
273 
274  int LastColor = 0;
275 
276  TList *l = gPad->GetListOfPrimitives();
277  for(int j=l->GetSize()-1 ; j>=0 ; j--)
278  {
279  TObject *o = (TObject*)l->At(j);
280  if(o->InheritsFrom("TH1"))
281  {
282  LastColor = (int)((TH1*)o)->GetLineColor();
283  if(LastColor == 602) LastColor = 0;
284  break;
285  }
286  }
287 
288  TH1 *h = (TH1*)ListOfHists->At(HistNumber);
289  h->SetLineColor(LastColor+1);
290  h->DrawClone("same");
291 
292  FullRangeSelectedPad("x_y");
293  }
294 
295  CurrentCanvas->Paint();
296  CurrentCanvas->Update();
297 }
298 
299 void CanvasVisu::Unzoom(const char *x_y_xy)
300 {
301  TCanvas *CurrentCanvas = gPad->GetCanvas();
302  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
303 
304  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
305  {
306  CurrentCanvas->cd(i);
307  UnzoomSelected(x_y_xy);
308  }
309 }
310 
311 void CanvasVisu::UnzoomSelected(const char *x_y_xy)
312 {
313  TString opt = x_y_xy;
314 
315  opt.ToLower();
316 
317  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
318 
319  if(ListOfPrimitives->GetSize())
320  {
321  TIter iter(ListOfPrimitives);
322  TObject *o;
323  TH1 *h = 0x0;
324  while( (o = iter()) )
325  {
326  if(o->InheritsFrom("TH1")||o->InheritsFrom("TH2")||o->InheritsFrom("TH3")||o->InheritsFrom("MyGraph"))
327  {
328  if(o->InheritsFrom("MyGraph"))
329  {
330  TObject *obj = ((MyGraph*)o)->GetGraph();
331  if(obj->InheritsFrom("TGraph")) h = ((TGraph*)obj)->GetHistogram();
332  else h = (TH1*)obj;
333  }
334  else h = (TH1*)o;
335 
336  break;
337  }
338  }
339 
340  if(!h) return;
341 
342  if(opt.Contains("x")) h->GetXaxis()->UnZoom();
343  if(opt.Contains("y")) h->GetYaxis()->UnZoom();
344  if(opt.Contains("z")) h->GetZaxis()->UnZoom();
345  }
346 
347  gPad->Modified();
348  gPad->Update();
349 }
350 
352 {
353  TCanvas *CurrentCanvas = gPad->GetCanvas();
354  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
355 
356  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
357  {
358  CurrentCanvas->cd(i);
359  gPad->SetLogx(!gPad->GetLogx());
360 
361  gPad->Update();
362  gPad->Modified();
363  }
364 
365  CurrentCanvas->cd();
366  CurrentCanvas->Update();
367  CurrentCanvas->Modified();
368 }
369 
371 {
372  TCanvas *CurrentCanvas = gPad->GetCanvas();
373  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
374 
375  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
376  {
377  CurrentCanvas->cd(i);
378  gPad->SetLogy(!gPad->GetLogy());
379 
380  gPad->Update();
381  gPad->Modified();
382  }
383 
384  CurrentCanvas->cd();
385  CurrentCanvas->Update();
386  CurrentCanvas->Modified();
387 }
388 
390 {
391  TCanvas *CurrentCanvas = gPad->GetCanvas();
392  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
393 
394  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
395  {
396  CurrentCanvas->cd(i);
397  gPad->SetLogz(!gPad->GetLogz());
398 
399  gPad->Update();
400  gPad->Modified();
401  }
402 
403  CurrentCanvas->cd();
404  CurrentCanvas->Update();
405  CurrentCanvas->Modified();
406 }
407 
408 void CanvasVisu::SetRange(double min, double max, const char *x_y)
409 {
410  TString opt = x_y;
411 
412  opt.ToLower();
413 
414  TCanvas *CurrentCanvas = gPad->GetCanvas();
415  if(!CurrentCanvas) return;
416 
417  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
418 
419  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
420  {
421  CurrentCanvas->cd(i);
422 
423  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
424 
425  if(ListOfPrimitives->GetSize())
426  {
427  TIter iter(ListOfPrimitives);
428  TObject *o;
429  TH1 *h = 0x0;
430 
431  while( (o = iter()) )
432  {
433  if(o->InheritsFrom("TH1")||o->InheritsFrom("TH2")||o->InheritsFrom("TH3")||o->InheritsFrom("MyGraph"))
434  {
435  if(o->InheritsFrom("MyGraph"))
436  {
437  TObject *obj = ((MyGraph*)o)->GetGraph();
438  if(obj->InheritsFrom("TGraph"))
439  {
440  TGraph *g = ((MyGraph*)o)->GetGraph();
441  if(opt.Contains("x")) g->GetXaxis()->SetLimits(min,max);
442  h = g->GetHistogram();
443  }
444  else h = (TH1*)obj;
445  }
446  else h = (TH1*)o;
447 
448  break;
449  }
450  }
451 
452  if(h==0x0) continue;
453 
454  if(opt.Contains("x"))h->GetXaxis()->SetRangeUser(min,max);
455  if(opt.Contains("y"))h->GetYaxis()->SetRangeUser(min,max);
456  if(opt.Contains("z"))h->GetZaxis()->SetRangeUser(min,max);
457  }
458  }
459 
460  CurrentCanvas->Paint();
461  CurrentCanvas->Update();
462 }
463 
464 void CanvasVisu::FullRangeAll(const char *x_y)
465 {
466  TString opt = x_y;
467 
468  opt.ToLower();
469 
470  int BinMax = 1;
471  double ymax = 0.;
472 
473  TCanvas *CurrentCanvas = gPad->GetCanvas();
474  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
475 
476  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
477  {
478  CurrentCanvas->cd(i);
479 
480  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
481 
482  if(ListOfPrimitives->GetSize())
483  {
484  TIter iter(ListOfPrimitives);
485  TObject *o;
486  TH1 *h;
487  while( (o = iter()) )
488  {
489  if(o->InheritsFrom("TH1")||o->InheritsFrom("MyGraph"))
490  {
491  if(o->InheritsFrom("MyGraph"))
492  {
493  TObject *obj = ((MyGraph*)o)->GetGraph();
494  if(obj->InheritsFrom("TGraph")) h = ((TGraph*)obj)->GetHistogram();
495  else h = (TH1*)obj;
496  }
497  else h = (TH1*)o;
498 
499  int LastBin = h->FindLastBinAbove(1);
500  if(h->GetBinLowEdge(LastBin)>BinMax) BinMax = LastBin;
501  if(h->GetMaximum()>ymax) ymax = h->GetMaximum();
502  }
503  }
504  }
505  }
506 
507  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
508  {
509  CurrentCanvas->cd(i);
510 
511  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
512 
513  if(ListOfPrimitives->GetSize())
514  {
515  TIter iter(ListOfPrimitives);
516  TObject *o;
517  TH1 *h = 0x0;
518  while( (o = iter()) )
519  {
520  if(o->InheritsFrom("TH1")||o->InheritsFrom("MyGraph"))
521  {
522  if(o->InheritsFrom("MyGraph"))
523  {
524  TObject *obj = ((MyGraph*)o)->GetGraph();
525  if(obj->InheritsFrom("TGraph")) h = ((TGraph*)obj)->GetHistogram();
526  else h = (TH1*)obj;
527  }
528  else h = (TH1*)o;
529 
530  break;
531  }
532  }
533 
534  if(h==0x0) break;
535 
536  UnzoomSelected(x_y);
537 
538  if(opt.Contains("x")) h->GetXaxis()->SetRange(1,BinMax);
539 
540  if(opt.Contains("y"))
541  {
542  h->SetMinimum(1);
543  h->SetMaximum(ymax);
544  }
545 
546  gPad->Update();
547  gPad->Modified();
548  }
549  }
550 
551  CurrentCanvas->cd();
552  CurrentCanvas->Update();
553  CurrentCanvas->Modified();
554 }
555 
556 void CanvasVisu::FullRangePerPad(const char *x_y)
557 {
558  TString opt = x_y;
559 
560  opt.ToLower();
561 
562  TCanvas *CurrentCanvas = gPad->GetCanvas();
563  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
564 
565  Unzoom(x_y);
566 
567  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
568  {
569  CurrentCanvas->cd(i);
571  }
572 
573  CurrentCanvas->cd();
574  CurrentCanvas->Update();
575  CurrentCanvas->Modified();
576 }
577 
578 void CanvasVisu::FullRangeSelectedPad(const char *x_y)
579 {
580  TString opt = x_y;
581 
582  opt.ToLower();
583 
584  int BinMax = 1;
585  double ymax = 0.;
586 
587  TH1 *FirstHist = 0x0;
588 
589  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
590 
591  if(ListOfPrimitives->GetSize())
592  {
593  TIter iter(ListOfPrimitives);
594  TObject *o;
595  TH1 *h = 0x0;
596  while( (o = iter()) )
597  {
598  if(o->InheritsFrom("TH1")||o->InheritsFrom("MyGraph"))
599  {
600  if(o->InheritsFrom("MyGraph"))
601  {
602  TObject *obj = ((MyGraph*)o)->GetGraph();
603  if(obj->InheritsFrom("TGraph")) h = ((TGraph*)obj)->GetHistogram();
604  else h = (TH1*)obj;
605  }
606  else h = (TH1*)o;
607 
608  if(FirstHist==0x0)FirstHist = h;
609  int LastBin = h->FindLastBinAbove(1);
610  if(h->GetBinLowEdge(LastBin)>BinMax) BinMax = LastBin;
611  if(h->GetMaximum()>ymax) ymax = h->GetMaximum();
612  }
613  }
614 
615  if(FirstHist==0x0) return;
616 
617  UnzoomSelected(x_y);
618 
619  if(opt.Contains("x"))
620  {
621  FirstHist->GetXaxis()->SetRange(1,BinMax);
622  }
623 
624  if(opt.Contains("y"))
625  {
626  h->SetMinimum(1);
627  FirstHist->SetMaximum(ymax);
628  }
629  }
630 
631  gPad->Update();
632  gPad->Modified();
633 }
634 
635 
637 {
638  int ClusterNbr = (int)ID/3;
639  TString Letter[3] = {"A","B","C"};
640 
641  TString name = Form("%.2d",ClusterNbr) + Letter[ID%3];
642 
643  return name;
644 }
645 
646 void CanvasVisu::SetLoupe(bool loupeon)
647 {
648  LoupeOnPad *loupe = (LoupeOnPad*) gPad->GetCanvas()->GetListOfPrimitives()->FindObject("LoupeOnPad");
649 
650  if(loupe)
651  {
652  loupe->SetLoupeActive(loupeon);
653  }
654 
655  return;
656 }
657 
658 Bool_t CanvasVisu::OpenContextMenu(const char* method, TObject* obj, const char *alt_method_name)
659 {
660  // Open context menu for given method of object *obj.
661  // By default title of menu is 'obj->ClassName()::method'
662  // You can give an alternative method name in 'alt_method_name'
663  // Returns kFALSE if the given method is not defined for the class of object in question.
664  //
665  // WARNING: even if this method returns kTRUE, this is no guarantee that the method
666  // has indeed been executed. The user may have pressed the 'Cancel' button...
667 
668  TMethod* m = obj->IsA()->GetMethodAllAny(method);
669 
670  if(!m)
671  {
672  obj->Warning("OpenContextMenu","%s is not a method of %s",method,obj->ClassName());
673  return kFALSE;
674  }
675  TString Method=alt_method_name;
676  if(Method=="") Method=method;
677  TContextMenu * cm = new TContextMenu(Method, Form("%s::%s",obj->ClassName(),Method.Data()));
678  cm->Action(obj,m);
679  delete cm;
680  return kTRUE;
681 }
682 
683 
684 
686 {
687  TList *ListOfGraphs;
688  ListOfGraphs = new TList();
689  ListOfGraphs->SetOwner(false);
690 
691  TString Name = GetName();
692  Name.Remove(Name.Length()-3);
693 
694  TCanvas *CurrentCanvas = gPad->GetCanvas();
695  int NbrOfPadInCurrentCanvas = CurrentCanvas->GetListOfPrimitives()->GetSize();
696 
697  for(int i=1 ; i<= NbrOfPadInCurrentCanvas ; i++)
698  {
699 
700  CurrentCanvas->cd(i);
701 
702  TList *ListOfPrimitives = (TList*) gPad->GetListOfPrimitives();
703 
704  if(ListOfPrimitives->GetSize())
705  {
706  TIter iter(ListOfPrimitives);
707  TObject *o;
708  while( (o = iter()) )
709  {
710  if(o->InheritsFrom("MyGraph")&&((TString)o->GetName()).BeginsWith(Name)) ListOfGraphs->Add(o);
711  }
712  }
713  }
714 
715  return ListOfGraphs;
716 }
717 
718 void MyGraph::SetFillColor(Color_t fcolor)
719 {
720  TList *ListOfGraphs = GetListOfGraphs();
721  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
722  {
723  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
724  MyG->SetFC(fcolor);
725  MyG->GetGraph()->SetFillColor(fcolor);
726  }
727  gPad->GetCanvas()->Paint();
728  gPad->GetCanvas()->Update();
729 }
730 
731 void MyGraph::SetFillStyle(Style_t fstyle)
732 {
733  TList *ListOfGraphs = GetListOfGraphs();
734  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
735  {
736  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
737  MyG->SetFS(fstyle);
738  MyG->GetGraph()->SetFillStyle(fstyle);
739  }
740  gPad->GetCanvas()->Paint();
741  gPad->GetCanvas()->Update();
742 }
743 
744 void MyGraph::SetLineColor(Color_t lcolor)
745 {
746  TList *ListOfGraphs = GetListOfGraphs();
747  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
748  {
749  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
750  MyG->SetLC(lcolor);
751  MyG->GetGraph()->SetLineColor(lcolor);
752  }
753  gPad->GetCanvas()->Paint();
754  gPad->GetCanvas()->Update();
755 }
756 
757 void MyGraph::SetLineStyle(Style_t lstyle)
758 {
759  TList *ListOfGraphs = GetListOfGraphs();
760  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
761  {
762  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
763  MyG->SetLS(lstyle);
764  MyG->GetGraph()->SetLineStyle(lstyle);
765  }
766  gPad->GetCanvas()->Paint();
767  gPad->GetCanvas()->Update();
768 }
769 
770 void MyGraph::SetLineWidth(Width_t lwidth)
771 {
772  TList *ListOfGraphs = GetListOfGraphs();
773  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
774  {
775  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
776  MyG->SetLW(lwidth);
777  MyG->GetGraph()->SetLineWidth(lwidth);
778  }
779  gPad->GetCanvas()->Paint();
780  gPad->GetCanvas()->Update();
781 }
782 
783 void MyGraph::SetMarkerColor(Color_t mcolor)
784 {
785  TList *ListOfGraphs = GetListOfGraphs();
786  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
787  {
788  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
789  MyG->SetMC(mcolor);
790  MyG->GetGraph()->SetMarkerColor(mcolor);
791  }
792  gPad->GetCanvas()->Paint();
793  gPad->GetCanvas()->Update();
794 }
795 
796 void MyGraph::SetMarkerSize(Size_t msize)
797 {
798  TList *ListOfGraphs = GetListOfGraphs();
799  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
800  {
801  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
802  MyG->SetMSi(msize);
803  MyG->GetGraph()->SetMarkerSize(msize);
804  }
805  gPad->GetCanvas()->Paint();
806  gPad->GetCanvas()->Update();
807 }
808 
809 void MyGraph::SetMarkerStyle(Style_t mstyle)
810 {
811  TList *ListOfGraphs = GetListOfGraphs();
812  for(int i=0 ; i<ListOfGraphs->GetSize() ; i++)
813  {
814  MyGraph *MyG = ((MyGraph*)ListOfGraphs->At(i));
815  MyG->SetMSt(mstyle);
816  MyG->GetGraph()->SetMarkerStyle(mstyle);
817  }
818  gPad->GetCanvas()->Paint();
819  gPad->GetCanvas()->Update();
820 }
821 
823 
TString fObservableName
Definition: CanvasVisu.h:31
BashColor * fBashColor
Definition: CanvasVisu.h:34
void SetMSi(Size_t msize)
Definition: CanvasVisu.h:135
TString GetCrystalNameFromID(int ID)
Definition: CanvasVisu.C:636
TList * GetListOfGraphs()
Definition: CanvasVisu.C:685
virtual void SetMarkerSize(Size_t msize=1)
Definition: CanvasVisu.C:796
virtual void ShowHist(int HistNumber, int LibraryNumber=1, bool same=false)
Definition: CanvasVisu.C:210
vector< PadPos > fHistPositionList
Definition: CanvasVisu.h:44
virtual void UnzoomSelected(const char *x_y_xy="xy")
Definition: CanvasVisu.C:311
static const UShort_t kNbCores
Definition: CrystalFrame.h:110
virtual void LogX()
Definition: CanvasVisu.C:351
virtual void SetLineColor(Color_t lcolor)
Definition: CanvasVisu.C:744
void SetFC(Color_t fcolor)
Definition: CanvasVisu.h:121
TCanvas * NewCanvas(TString cname, TString ctitle)
Definition: CanvasVisu.C:102
virtual void SetMarkerStyle(Style_t mstyle=1)
Definition: CanvasVisu.C:809
CanvasVisu(const char *name, const char *title)
Definition: CanvasVisu.C:29
header file for CrystalFrame.cpp
TString fCrystalName
Definition: CanvasVisu.h:67
void SetLW(Width_t lwidth)
Definition: CanvasVisu.h:130
virtual void SetLineWidth(Width_t lwidth)
Definition: CanvasVisu.C:770
TGraph * GetGraph()
Definition: CanvasVisu.h:103
virtual void LogZ()
Definition: CanvasVisu.C:389
virtual void FullRangePerPad(const char *x_y="xy")
Definition: CanvasVisu.C:556
TList * fListOfLibrairies
Definition: CanvasVisu.h:64
virtual void SetRange(double min, double max, const char *x_y="x")
Definition: CanvasVisu.C:408
virtual void FullRangeAll(const char *x_y="xy")
Definition: CanvasVisu.C:464
int fNPadsX
Definition: CanvasVisu.h:41
LoupOnPad, a class to Loupe on a Pad in a Canvas with many pads in it.
Definition: LoupeOnPad.h:76
static Bool_t OpenContextMenu(const char *method, TObject *obj, const char *alt_method_name="")
Definition: CanvasVisu.C:658
virtual void SetFillColor(Color_t fcolor)
Definition: CanvasVisu.C:718
TCanvas * fCanvas
Definition: CanvasVisu.h:47
TCanvas * BuildSegmentedCanvas(TString CanvasName, TString CanvasTitle)
Definition: CanvasVisu.C:125
void SetMSt(Style_t mstyle)
Definition: CanvasVisu.h:137
virtual void FullRangeSelectedPad(const char *x_y="xy")
Definition: CanvasVisu.C:578
TString fObservableTitle
Definition: CanvasVisu.h:32
virtual void LogY()
Definition: CanvasVisu.C:370
void SetLoupeActive(Bool_t b=true)
Enable/Disable the Loupe on the pad.
Definition: LoupeOnPad.h:115
virtual void SetFillStyle(Style_t fstyle)
Definition: CanvasVisu.C:731
void SetMC(Color_t mcolor)
Definition: CanvasVisu.h:133
virtual void Unzoom(const char *x_y_xy="xy")
Definition: CanvasVisu.C:299
virtual void SetLineStyle(Style_t lstyle)
Definition: CanvasVisu.C:757
void SetLS(Style_t lstyle)
Definition: CanvasVisu.h:128
void SetLC(Color_t lcolor)
Definition: CanvasVisu.h:126
ClassImp(CanvasVisu)
virtual void SetMarkerColor(Color_t mcolor=1)
Definition: CanvasVisu.C:783
static const UShort_t kNbSegments
Definition: CrystalFrame.h:110
vector< HistPos > fPadPositionList
Definition: CanvasVisu.h:45
void SetFS(Style_t fstyle)
Definition: CanvasVisu.h:123
int fNPadsY
Definition: CanvasVisu.h:42
virtual void SetLoupe(bool loupeon=true)
Definition: CanvasVisu.C:646