TFancyHistogramCanvas Class Reference

#include <TFancyHistogramCanvas.hxx>

Inheritance diagram for TFancyHistogramCanvas:
Inheritance graph
[legend]
Collaboration diagram for TFancyHistogramCanvas:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 TFancyHistogramCanvas (THistogramArrayBase *histoArray, std::string name, int numberChannelsInGroups=-1, bool disableAutoUpdate=false)
 ~TFancyHistogramCanvas ()
void ResetCanvasHistograms ()
 Reset the histograms for this canvas.
void UpdateCanvasHistograms (TDataContainer &dataContainer)
 Update the histograms for this canvas.
void PlotCanvas (TDataContainer &dataContainer, TRootEmbeddedCanvas *embedCanvas)
 Plot the histograms for this canvas.
void BeginRun (int transition, int run, int time)
 Take actions at begin run.
void EndRun (int transition, int run, int time)
 Take actions at end run.
void SetUpCompositeFrame (TGCompositeFrame *compFrame, TRootanaDisplay *display)
 This is the complicated part, where we create a bunch of buttons and widgets.
void ActivateMultiCanvasButton ()
void ActivateOverlayButton ()
void SetGroupName (std::string groupName)
 Allow the user to set explicitly the group name.
void SetChannelName (std::string channelName)
 Allow the user to set explicitly the channel name.
std::string GetTabName ()
TRootEmbeddedCanvas * GetEmbeddedCanvas ()
 This method is only.

Private Member Functions

void CheckExtraButtons ()
 Helper function to remove extra buttons if not needed anymore.
 TFancyHistogramCanvas ()

Private Attributes

THistogramArrayBasefHistoArray
 Pointer to the THistogramArrayBase class; memory is not owned by TFancyHistogramCanvas.
bool fDisableAutoUpdate
int fNumberChannelsInGroups
TGHorizontalFrame * fLabelframe
 Overall frame in which we will add buttons and widgets.
TGNumberEntry * fChannelCounterButton
 Button for the histogram number.
TGLabel * fLabelChannels
 A label for the histogram number button.
std::string fChannelName
 Name for the channel button.
TGNumberEntry * fGroupCounterButton
 Button for the group number.
TGLabel * fLabelGroup
 A label for the group button.
std::string fGroupName
 Name for the group button.
TGCheckButton * fMultiCanvasButton
 This button controls whether to display mutliple sub-canvases.
TGHButtonGroup * fNCanvasButtonGroup
 Button group to select how many canvases to show.
TGRadioButton * fNCanvasButtons [4]
TGCheckButton * fOverlayHistoButton
 This button controls whether to display overlaid histograms.
TGNumberEntry * fNHistoButton
 Button group to select how many histograms to show.
TGLabel * labelNHisto
TLegend * fNHistoLegend
TRootanaDisplayfDisplay

Detailed Description

A canvas that plots THistogramArrayBase type histograms in a nice way. The basic idea is to allow the user to easily plot an array of histograms in three different ways: 1) They can scroll through the histograms one by one, using the "Histogram Number" button. 2) They can have a set of NNN different canvases, each with a different histogram, where NNN can be 2, 4, 8 or 16. 3) They can have multiple histograms overlaid on the same canvas; the user can choose how many histograms to overlay.

Definition at line 28 of file TFancyHistogramCanvas.hxx.


Constructor & Destructor Documentation

TFancyHistogramCanvas::TFancyHistogramCanvas ( THistogramArrayBase histoArray,
std::string  name,
int  numberChannelsInGroups = -1,
bool  disableAutoUpdate = false 
)

Pass the THistogramArrayBase pointer during constructor; does not pass ownership (TFancyHistogramCanvas will not delete histoArray); parameters: 'histoArray': this is the pointer to the class derived from THistogramArrayBase base;

  • does not assume ownership of pointer memory. 'name' is the name that the histogram will have. 'numberChannelsInGroups': if this value is greater than 1, then the fancy canvas will have an additional button allowing the user to specify particular groups; the histograms will be organized into size/fNumberChannelsInGroups of groups, with each group having fNumberChannelsInGroups entries. will have an additional button allowing the user to specify particular groups. 'disableAutoUpdate' will tell fancy histogram to not call histoArray->UpdateHistograms() -> the assumption is that the user will take care of calling this function.
TFancyHistogramCanvas::~TFancyHistogramCanvas (  ) 

Definition at line 53 of file TFancyHistogramCanvas.cxx.

00053                                              {
00054 
00055 }

TFancyHistogramCanvas::TFancyHistogramCanvas (  )  [private]

Member Function Documentation

void TFancyHistogramCanvas::ActivateMultiCanvasButton (  ) 

These methods are callbacks to ensure that multi-canvas and overlay-histo modes are used exclusively.

Definition at line 300 of file TFancyHistogramCanvas.cxx.

References fMultiCanvasButton, fNCanvasButtonGroup, fNHistoButton, and fOverlayHistoButton.

00300                                                      {
00301   if(fMultiCanvasButton->IsOn()){
00302     fOverlayHistoButton->SetDown(false); // Deactivate overlay button
00303     fNCanvasButtonGroup->SetState(true); // Enable the set of Ncanvas buttons
00304     fNHistoButton->SetState(false);
00305   }else{
00306     fNCanvasButtonGroup->SetState(false);// Disable the set of Ncanvas buttons
00307 
00308   }
00309 }

void TFancyHistogramCanvas::ActivateOverlayButton (  ) 

Definition at line 310 of file TFancyHistogramCanvas.cxx.

References fMultiCanvasButton, fNCanvasButtonGroup, fNHistoButton, and fOverlayHistoButton.

00310                                                  {
00311   if(fOverlayHistoButton->IsOn()){
00312     fMultiCanvasButton->SetDown(false); // Deactivate multi-canvas button
00313     fNCanvasButtonGroup->SetState(false); // Disable the set of Ncanvas buttons
00314     fNHistoButton->SetState(true);
00315   }else{
00316     fNHistoButton->SetState(false);
00317   }
00318 
00319   
00320 
00321 }

void TFancyHistogramCanvas::BeginRun ( int  transition,
int  run,
int  time 
) [virtual]

Take actions at begin run.

Reimplemented from TCanvasHandleBase.

Definition at line 290 of file TFancyHistogramCanvas.cxx.

References THistogramArrayBase::BeginRun(), and fHistoArray.

00290                                                                    {
00291   fHistoArray->BeginRun(transition, run, time);
00292 };

Here is the call graph for this function:

void TFancyHistogramCanvas::CheckExtraButtons (  )  [private]

Helper function to remove extra buttons if not needed anymore.

void TFancyHistogramCanvas::EndRun ( int  transition,
int  run,
int  time 
) [virtual]

Take actions at end run.

Reimplemented from TCanvasHandleBase.

Definition at line 295 of file TFancyHistogramCanvas.cxx.

References THistogramArrayBase::EndRun(), and fHistoArray.

00295                                                                  {
00296   fHistoArray->EndRun(transition, run, time);  
00297 };

Here is the call graph for this function:

TRootEmbeddedCanvas* TCanvasHandleBase::GetEmbeddedCanvas (  )  [inline, inherited]

This method is only.

Definition at line 41 of file TCanvasHandleBase.hxx.

00041                                           {
00042     std::cerr<< "Not implemented for base class; exiting." << std::endl;
00043     exit(0);
00044     return 0;
00045   }

std::string TCanvasHandleBase::GetTabName (  )  [inline, inherited]

Definition at line 38 of file TCanvasHandleBase.hxx.

References TCanvasHandleBase::fTabName.

Referenced by TRootanaDisplay::AddSingleCanvas().

00038 {return fTabName;}

Here is the caller graph for this function:

void TFancyHistogramCanvas::PlotCanvas ( TDataContainer dataContainer,
TRootEmbeddedCanvas *  embedCanvas 
) [virtual]

Plot the histograms for this canvas.

Implements TCanvasHandleBase.

Definition at line 193 of file TFancyHistogramCanvas.cxx.

References fChannelCounterButton, fGroupCounterButton, fHistoArray, fMultiCanvasButton, fNCanvasButtons, fNHistoButton, fNHistoLegend, fNumberChannelsInGroups, and fOverlayHistoButton.

00193                                                                                                      {
00194 
00195 
00196   TCanvas* c1 = embedCanvas->GetCanvas();
00197   c1->Clear();
00198 
00199   int channel = fChannelCounterButton->GetNumberEntry()->GetIntNumber();
00200   if(fNumberChannelsInGroups > 1)
00201     channel = fGroupCounterButton->GetNumberEntry()->GetIntNumber() * fNumberChannelsInGroups
00202       + fChannelCounterButton->GetNumberEntry()->GetIntNumber();
00203   
00204   // Choose the display pattern based on which buttons have been pushed.
00205 
00206   // Multiple canvas option
00207   if(fMultiCanvasButton->IsOn()){
00208 
00209     int ncanvas = 1;
00210     if(fNCanvasButtons[0]->IsOn()){
00211       c1->Divide(1,2);
00212       ncanvas = 2;
00213     }
00214     if(fNCanvasButtons[1]->IsOn()){
00215       c1->Divide(2,2);
00216       ncanvas = 4;
00217     }
00218     if(fNCanvasButtons[2]->IsOn()){
00219       c1->Divide(2,4);
00220       ncanvas = 8;
00221     }
00222     if(fNCanvasButtons[3]->IsOn()){
00223       c1->Divide(4,4);
00224       ncanvas = 16;
00225     }
00226 
00227     for(int i = 0; i < ncanvas; i++){
00228       c1->cd(i+1);
00229       int index = i + channel;
00230       if(index >=0 && index < (int)fHistoArray->size() && (*fHistoArray)[index]){
00231         (*fHistoArray)[index]->Draw();
00232         (*fHistoArray)[index]->SetLineColor(1);
00233       }
00234     }
00235 
00236   }else if(fOverlayHistoButton->IsOn()){ // Show multiple histograms on same canvas.
00237 
00238     int nhisto = fNHistoButton->GetNumberEntry()->GetIntNumber();
00239 
00240     // Kind of annoying; need to do two loops through the data in order to check which is 
00241     // the maximum histogram.
00242     int first_channel = channel;
00243     int last_channel = channel + nhisto;
00244     if(last_channel > (int)fHistoArray->size())
00245       last_channel = fHistoArray->size();
00246 
00247     // find the maximum histogram;
00248     TH1 *max_histo = 0;
00249     for(int ichan = first_channel; ichan < last_channel; ichan++){
00250       if(max_histo == 0)
00251         max_histo = (*fHistoArray)[ichan];
00252       else if((*fHistoArray)[ichan]->GetMaximum() > max_histo->GetMaximum())
00253         max_histo = (*fHistoArray)[ichan];
00254       
00255     }
00256 
00257     // New loop again and draw as we go.
00258     max_histo->Draw();
00259     fNHistoLegend->Clear(); 
00260     char name[100];
00261     for(int ichan = first_channel; ichan < last_channel; ichan++){
00262 
00263       (*fHistoArray)[ichan]->SetLineColor(ichan-channel+1);
00264       sprintf(name,"Histogram # %i",ichan);
00265       fNHistoLegend->AddEntry((*fHistoArray)[ichan],(*fHistoArray)[ichan]->GetTitle());
00266 
00267       if((*fHistoArray)[ichan] == max_histo) continue;      
00268       (*fHistoArray)[ichan]->Draw("SAME");      
00269     }
00270 
00271     fNHistoLegend->Draw("SAME");
00272   
00273   }else{ // Default: single canvas, single histogram.
00274 
00275 
00276     if(channel >=0 && channel < (int) fHistoArray->size() && (*fHistoArray)[channel]){
00277       (*fHistoArray)[channel]->Draw();
00278       (*fHistoArray)[channel]->SetLineColor(1);
00279     }
00280 
00281   }
00282   c1->Modified();
00283   c1->Update();
00284 
00285 }

void TFancyHistogramCanvas::ResetCanvasHistograms (  )  [virtual]

Reset the histograms for this canvas.

Reset the histograms in fHistoArray.

Implements TCanvasHandleBase.

Definition at line 177 of file TFancyHistogramCanvas.cxx.

References fHistoArray.

00177                                                  {
00178   for(unsigned int i = 0; i < fHistoArray->size(); i++)
00179     (*fHistoArray)[i]->Reset();
00180 }

void TFancyHistogramCanvas::SetChannelName ( std::string  channelName  ) 

Allow the user to set explicitly the channel name.

Definition at line 336 of file TFancyHistogramCanvas.cxx.

References fChannelName, fHistoArray, fLabelChannels, and fNumberChannelsInGroups.

Referenced by SetUpCompositeFrame().

00336                                                                {
00337 
00338   fChannelName = channelName;
00339 
00340   if(!fLabelChannels) return;
00341   int numberChannels = fHistoArray->size();
00342   if(fNumberChannelsInGroups > 1){
00343     numberChannels = fNumberChannelsInGroups;    
00344   }
00345 
00346   char tlabel[100];
00347   sprintf(tlabel,"%s# (0-%i)",channelName.c_str(),(int)numberChannels-1);    
00348 
00349   fLabelChannels->SetText(tlabel);//TGLabel
00350 
00351 
00352 }

Here is the caller graph for this function:

void TFancyHistogramCanvas::SetGroupName ( std::string  groupName  ) 

Allow the user to set explicitly the group name.

Definition at line 324 of file TFancyHistogramCanvas.cxx.

References fGroupName, fHistoArray, fLabelGroup, and fNumberChannelsInGroups.

Referenced by SetUpCompositeFrame().

00324                                                            {
00325 
00326   fGroupName = groupName;
00327   
00328   if(!fLabelGroup) return;
00329   int numberGroups = (int)(((double)fHistoArray->size())/((double)fNumberChannelsInGroups));
00330   char tlabel[100];
00331   sprintf(tlabel,"%s# (0-%i)",groupName.c_str(),(int)numberGroups-1);    
00332 
00333   fLabelGroup->SetText(tlabel);//TGLabel
00334 }

Here is the caller graph for this function:

void TFancyHistogramCanvas::SetUpCompositeFrame ( TGCompositeFrame *  compFrame,
TRootanaDisplay display 
) [virtual]

This is the complicated part, where we create a bunch of buttons and widgets.

Cached pointer to rootana display; needed so that we can create new buttons with correct callbacks.

Add the button group to control how many sub-canvases to plot.

Add the button to control how many histograns to plot to plot.

Reimplemented from TCanvasHandleBase.

Definition at line 58 of file TFancyHistogramCanvas.cxx.

References fChannelCounterButton, fChannelName, fDisplay, fGroupCounterButton, fGroupName, fHistoArray, fLabelChannels, fLabelframe, fLabelGroup, fMultiCanvasButton, fNCanvasButtonGroup, fNCanvasButtons, fNHistoButton, fNumberChannelsInGroups, fOverlayHistoButton, labelNHisto, SetChannelName(), and SetGroupName().

00058                                                                                                     {
00059 
00060   /// Cached pointer to rootana display; needed so that we can 
00061   /// create new buttons with correct callbacks.
00062   fDisplay = display;
00063   
00064   // Now create my embedded canvas, along with the various buttons for this canvas.  
00065   // Sub-frame, to reduce space used
00066   fLabelframe = new TGHorizontalFrame(compFrame,200,40);
00067   compFrame->AddFrame(fLabelframe, new TGLayoutHints(kLHintsCenterX,2,2,2,2));
00068   
00069   // ________________________________________________________________________________
00070   // Add a button for the groups, if we are using groups
00071   if(fNumberChannelsInGroups > 1){
00072     
00073     TGVerticalFrame *hframe1 = new TGVerticalFrame(fLabelframe, 120, 40, kFixedWidth);
00074     fLabelframe->AddFrame(hframe1, new TGLayoutHints(kLHintsLeft,2,2,2,2));
00075     int numberGroups = (int)(((double)fHistoArray->size())/((double)fNumberChannelsInGroups));
00076 
00077     fGroupCounterButton = new TGNumberEntry(hframe1, 0, 9,999, TGNumberFormat::kNESInteger,
00078                                               TGNumberFormat::kNEANonNegative, 
00079                                               TGNumberFormat::kNELLimitMinMax,
00080                                               0, numberGroups-1);
00081     
00082     hframe1->AddFrame(fGroupCounterButton, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
00083     // Add call-backs to update plots if widget is used
00084     fGroupCounterButton->Connect("ValueSet(Long_t)", "TRootanaDisplay", display, "UpdatePlotsAction()");
00085     fGroupCounterButton->GetNumberEntry()->Connect("ReturnPressed()", "TRootanaDisplay", display, "UpdatePlotsAction()");
00086     
00087     // Add a label for channel selector    
00088     fLabelGroup = new TGLabel(hframe1, "");
00089     hframe1->AddFrame(fLabelGroup, new TGLayoutHints(kLHintsLeft , 1, 1, 1, 1));
00090     SetGroupName(fGroupName);
00091   }
00092 
00093   // ________________________________________________________________________________
00094   // Create the default set of widgets used for all display options: namely a counter
00095   // that keeps track of which channel to start from.
00096 
00097   // Sub-frame, to reduce space used
00098   TGVerticalFrame *hframe2 = new TGVerticalFrame(fLabelframe, 120, 40, kFixedWidth);
00099   fLabelframe->AddFrame(hframe2, new TGLayoutHints(kLHintsLeft,2,2,2,2));
00100   int numberChannels = fHistoArray->size();
00101   if(fNumberChannelsInGroups > 1){
00102     numberChannels = fNumberChannelsInGroups;    
00103   }
00104   fChannelCounterButton = new TGNumberEntry(hframe2, 0, 9,999, TGNumberFormat::kNESInteger,
00105                                          TGNumberFormat::kNEANonNegative, 
00106                                          TGNumberFormat::kNELLimitMinMax,
00107                                          0, numberChannels-1);
00108   
00109   hframe2->AddFrame(fChannelCounterButton, new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
00110   // Add call-backs to update plots if widget is used
00111   fChannelCounterButton->Connect("ValueSet(Long_t)", "TRootanaDisplay", display, "UpdatePlotsAction()");
00112   fChannelCounterButton->GetNumberEntry()->Connect("ReturnPressed()", "TRootanaDisplay", display, "UpdatePlotsAction()");
00113 
00114   // Add a label for channel selector
00115   fLabelChannels = new TGLabel(hframe2, "");
00116   hframe2->AddFrame(fLabelChannels, new TGLayoutHints(kLHintsLeft, 5, 5, 5, 5));
00117   SetChannelName(fChannelName);
00118 
00119   // ________________________________________________________________________________
00120   // Create a button to control whether to use multiple canvases
00121   fMultiCanvasButton = new TGCheckButton(fLabelframe, new TGHotString("Multi-Canvas"));
00122   fLabelframe->AddFrame(fMultiCanvasButton, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
00123 
00124   // Add call-backs to update plots if button is used; ensure both not all modes are simultaneously active
00125   fMultiCanvasButton->Connect("Toggled(Bool_t)", "TFancyHistogramCanvas", this, "ActivateMultiCanvasButton()");
00126   fMultiCanvasButton->Connect("Toggled(Bool_t)", "TRootanaDisplay", display, "UpdatePlotsAction()");
00127 
00128   /// Add the button group to control how many sub-canvases to plot.
00129   fNCanvasButtonGroup = new TGHButtonGroup(fLabelframe, "Number of Canvases:");
00130   fNCanvasButtons[0] = new TGRadioButton(fNCanvasButtonGroup, new TGHotString("2 | "),1);
00131   fNCanvasButtons[1] = new TGRadioButton(fNCanvasButtonGroup, new TGHotString("4 | "),2);
00132   fNCanvasButtons[2] = new TGRadioButton(fNCanvasButtonGroup, new TGHotString("8 | "),3);
00133   fNCanvasButtons[3] = new TGRadioButton(fNCanvasButtonGroup, new TGHotString("16 | "),4);
00134   fNCanvasButtons[0]->SetOn();
00135   for(int i = 0; i < 4; i++)
00136     fNCanvasButtons[i]->Connect("Toggled(Bool_t)", "TRootanaDisplay", fDisplay, "UpdatePlotsAction()");
00137   
00138   fNCanvasButtonGroup->SetRadioButtonExclusive(kTRUE);
00139   
00140   fNCanvasButtonGroup->Show();
00141   fLabelframe->AddFrame(fNCanvasButtonGroup, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
00142   fNCanvasButtonGroup->SetState(false);
00143   
00144   // ________________________________________________________________________________
00145   // Create a button to control whether to overlay histograms in a single canvas
00146   fOverlayHistoButton  = new TGCheckButton(fLabelframe, new TGHotString("Overlay-Histo"));
00147   fLabelframe->AddFrame(fOverlayHistoButton, new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 5, 5, 5));
00148 
00149   // Add call-backs to update plots if button is used; ensure both not all modes are simultaneously active
00150   fOverlayHistoButton->Connect("Toggled(Bool_t)", "TFancyHistogramCanvas", this, "ActivateOverlayButton()");
00151   fOverlayHistoButton->Connect("Toggled(Bool_t)", "TRootanaDisplay", display, "UpdatePlotsAction()");
00152 
00153   /// Add the button to control how many histograns to plot to plot.
00154   
00155   // Sub-frame, to reduce space used
00156   TGVerticalFrame *hframe3 = new TGVerticalFrame(fLabelframe, 120, 40, kFixedWidth);
00157   fLabelframe->AddFrame(hframe3, new TGLayoutHints(kLHintsLeft,2,2,2,2));
00158 
00159   fNHistoButton = new TGNumberEntry(hframe3, 2, 9,999, TGNumberFormat::kNESInteger,
00160                                     TGNumberFormat::kNEANonNegative, 
00161                                     TGNumberFormat::kNELLimitMinMax,
00162                                     2, 20);
00163   hframe3->AddFrame(fNHistoButton, new TGLayoutHints(kLHintsLeft, 5, 5, 5, 5));
00164   // Add call-backs to update plots if widget is used
00165   fNHistoButton->Connect("ValueSet(Long_t)", "TRootanaDisplay", display, "UpdatePlotsAction()");
00166   fNHistoButton->GetNumberEntry()->Connect("ReturnPressed()", "TRootanaDisplay", display, "UpdatePlotsAction()");
00167   fNHistoButton->SetState(false);
00168   // Add a label
00169   labelNHisto = new TGLabel(hframe3, "# Histo in Canvas");
00170   hframe3->AddFrame(labelNHisto, new TGLayoutHints(kLHintsLeft, 5, 5, 5, 5));
00171    
00172 }

Here is the call graph for this function:

void TFancyHistogramCanvas::UpdateCanvasHistograms ( TDataContainer dataContainer  )  [virtual]

Update the histograms for this canvas.

Implements TCanvasHandleBase.

Definition at line 183 of file TFancyHistogramCanvas.cxx.

References fDisableAutoUpdate, fHistoArray, and THistogramArrayBase::UpdateHistograms().

00183                                                                                {
00184 
00185   // If this variable is set, then skip calling the histogram updating;
00186   // histogram updating will happen elsewhere.
00187   if(fDisableAutoUpdate) return;
00188 
00189   fHistoArray->UpdateHistograms(dataContainer);
00190 }

Here is the call graph for this function:


Member Data Documentation

Button for the histogram number.

Definition at line 99 of file TFancyHistogramCanvas.hxx.

Referenced by PlotCanvas(), and SetUpCompositeFrame().

std::string TFancyHistogramCanvas::fChannelName [private]

Name for the channel button.

Definition at line 105 of file TFancyHistogramCanvas.hxx.

Referenced by SetChannelName(), and SetUpCompositeFrame().

'disableAutoUpdate' will tell fancy histogram to not call histoArray->UpdateHistograms() -> the assumption is that the user will take care of calling this function.

Definition at line 87 of file TFancyHistogramCanvas.hxx.

Referenced by UpdateCanvasHistograms().

Cached pointer to rootana display; needed so that we can create new buttons with correct callbacks.

Definition at line 136 of file TFancyHistogramCanvas.hxx.

Referenced by SetUpCompositeFrame().

Button for the group number.

Definition at line 108 of file TFancyHistogramCanvas.hxx.

Referenced by PlotCanvas(), and SetUpCompositeFrame().

std::string TFancyHistogramCanvas::fGroupName [private]

Name for the group button.

Definition at line 114 of file TFancyHistogramCanvas.hxx.

Referenced by SetGroupName(), and SetUpCompositeFrame().

A label for the histogram number button.

Definition at line 102 of file TFancyHistogramCanvas.hxx.

Referenced by SetChannelName(), and SetUpCompositeFrame().

TGHorizontalFrame* TFancyHistogramCanvas::fLabelframe [private]

Overall frame in which we will add buttons and widgets.

Definition at line 96 of file TFancyHistogramCanvas.hxx.

Referenced by SetUpCompositeFrame().

A label for the group button.

Definition at line 111 of file TFancyHistogramCanvas.hxx.

Referenced by SetGroupName(), and SetUpCompositeFrame().

This button controls whether to display mutliple sub-canvases.

Definition at line 117 of file TFancyHistogramCanvas.hxx.

Referenced by ActivateMultiCanvasButton(), ActivateOverlayButton(), PlotCanvas(), and SetUpCompositeFrame().

TGHButtonGroup* TFancyHistogramCanvas::fNCanvasButtonGroup [private]

Button group to select how many canvases to show.

Definition at line 120 of file TFancyHistogramCanvas.hxx.

Referenced by ActivateMultiCanvasButton(), ActivateOverlayButton(), and SetUpCompositeFrame().

TGRadioButton* TFancyHistogramCanvas::fNCanvasButtons[4] [private]

Definition at line 121 of file TFancyHistogramCanvas.hxx.

Referenced by PlotCanvas(), and SetUpCompositeFrame().

TGNumberEntry* TFancyHistogramCanvas::fNHistoButton [private]

Button group to select how many histograms to show.

Definition at line 127 of file TFancyHistogramCanvas.hxx.

Referenced by ActivateMultiCanvasButton(), ActivateOverlayButton(), PlotCanvas(), and SetUpCompositeFrame().

Definition at line 129 of file TFancyHistogramCanvas.hxx.

Referenced by PlotCanvas().

'fNumberChannelsInGroups': if this value is greater than 1, then the fancy canvas will have an additional button allowing the user to specify particular groups; the histograms will be organized into size/fNumberChannelsInGroups of groups, with each group having fNumberChannelsInGroups entries.

Definition at line 93 of file TFancyHistogramCanvas.hxx.

Referenced by PlotCanvas(), SetChannelName(), SetGroupName(), and SetUpCompositeFrame().

This button controls whether to display overlaid histograms.

Definition at line 124 of file TFancyHistogramCanvas.hxx.

Referenced by ActivateMultiCanvasButton(), ActivateOverlayButton(), PlotCanvas(), and SetUpCompositeFrame().

Definition at line 128 of file TFancyHistogramCanvas.hxx.

Referenced by SetUpCompositeFrame().


The documentation for this class was generated from the following files:

Generated on 12 Feb 2016 for ROOT Analyzer by  doxygen 1.6.1