ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

#include "AliMUONPainterInterfaceHelper.h"

///\class AliMUONPainterInterfaceHelper
///
/// Helper class to work with TGButtonGroup
///
/// This class only works if the buttons in the TGButtonGroup have contiguous
/// ids, and if those ids start at ButtonStartingId().
/// Not bullet-proof, I admit, but this is the only way I've found with
/// the current TGButtonGroup implementation which does not allow to loop
/// easily on all buttons.
///
// Author Laurent Aphecetche, Subatech

#include "AliMUONPainterEnv.h"
#include "AliMUONPainterHelper.h"
#include "AliLog.h"
#include <Riostream.h>
#include <TClass.h>
#include <TGButtonGroup.h>
#include <TGButton.h>
#include <TGClient.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TString.h>
#include <RVersion.h>
#include <cassert>

using std::cout;
using std::endl;
///\cond CLASSIMP
ClassImp(AliMUONPainterInterfaceHelper)
///\endcond

//_____________________________________________________________________________
AliMUONPainterInterfaceHelper::AliMUONPainterInterfaceHelper() : TObject()
{
  /// ctor
}

//_____________________________________________________________________________
AliMUONPainterInterfaceHelper::~AliMUONPainterInterfaceHelper()
{
  /// dtor
}

//_____________________________________________________________________________
void
AliMUONPainterInterfaceHelper::AddRadioButton(TGButtonGroup& bg,
                                              const TString& name,
                                              void* userData,
                                              Bool_t select)
{
  /// Add a radio button to a group
  Int_t n = bg.GetCount();
  
  TGButton* button = new TGRadioButton(&bg,
                                       name.Data(),
                                       n+ButtonStartingId());
  button->SetUserData(userData);
  button->SetOn(select,kFALSE);  
}

//_____________________________________________________________________________
void
AliMUONPainterInterfaceHelper::AddCheckButton(TGButtonGroup& bg,
                                              const TString& name,
                                              void* userData,
                                              Bool_t select)
{
  /// Add a check button to a group
  Int_t n = bg.GetCount();
  
  TGButton* button = new TGCheckButton(&bg,
                                       name.Data(),
                                       n+ButtonStartingId());
  button->SetUserData(userData);
  button->SetOn(select,kFALSE);
}

//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::ClearButtons(TGButtonGroup& bg)
{
  /// Remove all buttons from group.
  /// Bear in mind that you're thus disconnecting the group from
  /// any signals it might have. So you must re-connect them after
  /// a call to this method, if you want to.
  
  while ( bg.GetCount() > 0 )
  {
    TGTextButton* button = (TGTextButton*)(bg.GetButton(bg.GetCount()));
    if ( !button ) 
    {
      AliFatalClass(Form("Got a null button for bg.Count()=%d",bg.GetCount()));
    }
    bg.Remove(button);
#if ROOT_VERSION_CODE <= ROOT_VERSION(5,16,0)
    button->DestroyWindow();
#endif
    delete button;
  }
}

//_____________________________________________________________________________
void
AliMUONPainterInterfaceHelper::Copy(const TGButtonGroup& src, TGButtonGroup& dest)
{
  /// Copy a button group into another one
  AliDebugClass(1,Form("src=%p (%s) count=%d dest=%p (%s) count=%d",
                       &src,src.GetTitle(),src.GetCount(),
                       &dest,dest.GetTitle(),dest.GetCount()));

  StdoutToAliDebugClass(1,cout << "---copying:" << endl; Dump(src);
                        cout << "---to:" << endl; Dump(dest));
  
  ClearButtons(dest);
  
  dest.SetTitle(src.GetTitle());
  
  if ( &src != &dest )
  {
    for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + src.GetCount(); ++i )
    {
      TGTextButton* tb = static_cast<TGTextButton*>(src.GetButton(i));
      TGButton* button = new TGRadioButton(&dest,tb->GetTitle(),tb->WidgetId());
      assert(tb->WidgetId()==i);
      button->SetUserData(tb->GetUserData());
      button->SetOn(tb->IsOn(),kFALSE);
    }
  }
}

//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::Dump(const TGButtonGroup& bg)
{
  /// Printout
  cout << Form("ButtonGroup %s %s",bg.GetName(),bg.GetTitle()) << endl;
  
  for ( Int_t i = ButtonStartingId(); i < bg.GetCount() + ButtonStartingId(); ++i ) 
  {
    TGTextButton* button = static_cast<TGTextButton*>(bg.GetButton(i));
    if ( button ) 
    {
      cout << Form("i %2d button %s id %lu wid %d ON %d",
                 i,button->GetTitle(),button->GetId(),
                 button->WidgetId(),
                 button->IsOn()) << endl;
    }
    else
    {
      cout << Form("i %2d button = 0x0",i) << endl;
    }
  }
}

//_____________________________________________________________________________
TGButton* 
AliMUONPainterInterfaceHelper::FindButtonByName(const TGButtonGroup& bg, 
                                                const TString& name)
{
  /// Find a button by name
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i )
  {
    TGTextButton* button = static_cast<TGTextButton*>(bg.GetButton(i));
    if (!button)
    {
      AliErrorClass(Form("(%s) : Something wrong",name.Data()));
      Dump(bg);
    }
    else
    {
      if ( name == button->GetTitle() )
      {
        return button;
      }
    }
  }
  return 0x0;
}

//_____________________________________________________________________________
TGButton* 
AliMUONPainterInterfaceHelper::FindButtonByUserData(const TGButtonGroup& bg, 
                                                    const void* userData)
{
  /// Find a button by userData
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i )
  {
    TGButton* button = bg.GetButton(i);
    if ( button->GetUserData() == userData )
    {
      return button;
    }
  }
  return 0x0;
}

//_____________________________________________________________________________
TGButton* 
AliMUONPainterInterfaceHelper::FindDownButton(const TGButtonGroup& bg)
{
  /// Find which button is down (in a radio group)
  
  AliDebugClass(1,Form("bg %s",bg.GetTitle()));
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i )
  {
    TGButton* button = bg.GetButton(i);
    if ( button->IsOn() ) 
    {
      AliDebugClass(1,Form("button %s",button->GetTitle()));
      return button;
    }
  }
  return 0x0;
}


//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::SetBackgroundColor(const char* resourceBaseName, 
                                                  TGWindow& window)
{
  /// Set the background color of the window
  TString rs(Form("%s.BackgroundColor",resourceBaseName));
  TString colorName = AliMUONPainterHelper::Instance()->Env()->String(rs.Data(),"#c0c0c0");

  Pixel_t color;
  Bool_t ok = gClient->GetColorByName(colorName, color);
  if ( ok ) 
  {
    window.SetBackgroundColor(color);
    AliDebugClass(1,Form("Setting %s color to %s",rs.Data(),colorName.Data()));
  }
}

//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::SetState(TGButtonGroup& bg, Bool_t state)
{
  /// should not be needed with root > 5.16/00 as there's a TGButtonGroup::SetState
  /// method now...

#if ROOT_VERSION_CODE > ROOT_VERSION(5,16,0)
  bg.SetState(state);
#else
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i ) 
  {
    TGTextButton* button = (TGTextButton*)(bg.GetButton(i));
    if ( state ) 
    {
      button->SetState(kButtonUp);
    }
    else
    {
      button->SetState(kButtonDisabled);
    }
  }
#endif  
}

//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::Select(TGButtonGroup& bg, 
                                      const TString& buttonName,
                                      Bool_t emit)
{
  /// Select which button should be on
  
  AliDebugClass(1,Form("bg %s buttonName %s",bg.GetTitle(),buttonName.Data()));
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i ) 
  {
    TGTextButton* button = (TGTextButton*)(bg.GetButton(i));
    if ( buttonName == button->GetTitle() || buttonName == "*" ) 
    {
      if ( emit ) 
      {
        button->Clicked();
      }
      else
      {        
        button->SetOn(kTRUE);
      }
    }
  }  
}

//_____________________________________________________________________________
void 
AliMUONPainterInterfaceHelper::Unselect(TGButtonGroup& bg, 
                                        const TString& buttonName,
                                        Bool_t emit)
{
  /// Unselect a given button
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i ) 
  {
    TGTextButton* button = (TGTextButton*)(bg.GetButton(i));
    if ( buttonName == button->GetTitle() || buttonName == "*" ) 
    {
      if ( emit ) 
      {
        button->Released();
      }
      else
      {        
        button->SetOn(kFALSE);
      }
    }
  }  
}

//_____________________________________________________________________________
void
AliMUONPainterInterfaceHelper::RemoveButton(TGButtonGroup& bg,
                                            const TGButton* button)
{
  /// Remove a button
  
  // need to redo it from scratch in order not the leave holes in the
  // id numbering
  
  TGButtonGroup bgtmp(bg.GetParent(),bg.GetTitle());
  
  Int_t id(ButtonStartingId());
  
  for ( Int_t i = ButtonStartingId(); i < ButtonStartingId() + bg.GetCount(); ++i ) 
  {
    TGTextButton* b = static_cast<TGTextButton*>(bg.GetButton(i));

    if ( b != button ) 
    {
      TGButton* bc = new TGRadioButton(&bgtmp,b->GetTitle(),id);
      ++id;
      bc->SetUserData(b->GetUserData());
      bc->SetOn(b->IsOn());
    }    
  }    

  ClearButtons(bg);

  Copy(bgtmp,bg);
  
  bg.Show();
}
 AliMUONPainterInterfaceHelper.cxx:1
 AliMUONPainterInterfaceHelper.cxx:2
 AliMUONPainterInterfaceHelper.cxx:3
 AliMUONPainterInterfaceHelper.cxx:4
 AliMUONPainterInterfaceHelper.cxx:5
 AliMUONPainterInterfaceHelper.cxx:6
 AliMUONPainterInterfaceHelper.cxx:7
 AliMUONPainterInterfaceHelper.cxx:8
 AliMUONPainterInterfaceHelper.cxx:9
 AliMUONPainterInterfaceHelper.cxx:10
 AliMUONPainterInterfaceHelper.cxx:11
 AliMUONPainterInterfaceHelper.cxx:12
 AliMUONPainterInterfaceHelper.cxx:13
 AliMUONPainterInterfaceHelper.cxx:14
 AliMUONPainterInterfaceHelper.cxx:15
 AliMUONPainterInterfaceHelper.cxx:16
 AliMUONPainterInterfaceHelper.cxx:17
 AliMUONPainterInterfaceHelper.cxx:18
 AliMUONPainterInterfaceHelper.cxx:19
 AliMUONPainterInterfaceHelper.cxx:20
 AliMUONPainterInterfaceHelper.cxx:21
 AliMUONPainterInterfaceHelper.cxx:22
 AliMUONPainterInterfaceHelper.cxx:23
 AliMUONPainterInterfaceHelper.cxx:24
 AliMUONPainterInterfaceHelper.cxx:25
 AliMUONPainterInterfaceHelper.cxx:26
 AliMUONPainterInterfaceHelper.cxx:27
 AliMUONPainterInterfaceHelper.cxx:28
 AliMUONPainterInterfaceHelper.cxx:29
 AliMUONPainterInterfaceHelper.cxx:30
 AliMUONPainterInterfaceHelper.cxx:31
 AliMUONPainterInterfaceHelper.cxx:32
 AliMUONPainterInterfaceHelper.cxx:33
 AliMUONPainterInterfaceHelper.cxx:34
 AliMUONPainterInterfaceHelper.cxx:35
 AliMUONPainterInterfaceHelper.cxx:36
 AliMUONPainterInterfaceHelper.cxx:37
 AliMUONPainterInterfaceHelper.cxx:38
 AliMUONPainterInterfaceHelper.cxx:39
 AliMUONPainterInterfaceHelper.cxx:40
 AliMUONPainterInterfaceHelper.cxx:41
 AliMUONPainterInterfaceHelper.cxx:42
 AliMUONPainterInterfaceHelper.cxx:43
 AliMUONPainterInterfaceHelper.cxx:44
 AliMUONPainterInterfaceHelper.cxx:45
 AliMUONPainterInterfaceHelper.cxx:46
 AliMUONPainterInterfaceHelper.cxx:47
 AliMUONPainterInterfaceHelper.cxx:48
 AliMUONPainterInterfaceHelper.cxx:49
 AliMUONPainterInterfaceHelper.cxx:50
 AliMUONPainterInterfaceHelper.cxx:51
 AliMUONPainterInterfaceHelper.cxx:52
 AliMUONPainterInterfaceHelper.cxx:53
 AliMUONPainterInterfaceHelper.cxx:54
 AliMUONPainterInterfaceHelper.cxx:55
 AliMUONPainterInterfaceHelper.cxx:56
 AliMUONPainterInterfaceHelper.cxx:57
 AliMUONPainterInterfaceHelper.cxx:58
 AliMUONPainterInterfaceHelper.cxx:59
 AliMUONPainterInterfaceHelper.cxx:60
 AliMUONPainterInterfaceHelper.cxx:61
 AliMUONPainterInterfaceHelper.cxx:62
 AliMUONPainterInterfaceHelper.cxx:63
 AliMUONPainterInterfaceHelper.cxx:64
 AliMUONPainterInterfaceHelper.cxx:65
 AliMUONPainterInterfaceHelper.cxx:66
 AliMUONPainterInterfaceHelper.cxx:67
 AliMUONPainterInterfaceHelper.cxx:68
 AliMUONPainterInterfaceHelper.cxx:69
 AliMUONPainterInterfaceHelper.cxx:70
 AliMUONPainterInterfaceHelper.cxx:71
 AliMUONPainterInterfaceHelper.cxx:72
 AliMUONPainterInterfaceHelper.cxx:73
 AliMUONPainterInterfaceHelper.cxx:74
 AliMUONPainterInterfaceHelper.cxx:75
 AliMUONPainterInterfaceHelper.cxx:76
 AliMUONPainterInterfaceHelper.cxx:77
 AliMUONPainterInterfaceHelper.cxx:78
 AliMUONPainterInterfaceHelper.cxx:79
 AliMUONPainterInterfaceHelper.cxx:80
 AliMUONPainterInterfaceHelper.cxx:81
 AliMUONPainterInterfaceHelper.cxx:82
 AliMUONPainterInterfaceHelper.cxx:83
 AliMUONPainterInterfaceHelper.cxx:84
 AliMUONPainterInterfaceHelper.cxx:85
 AliMUONPainterInterfaceHelper.cxx:86
 AliMUONPainterInterfaceHelper.cxx:87
 AliMUONPainterInterfaceHelper.cxx:88
 AliMUONPainterInterfaceHelper.cxx:89
 AliMUONPainterInterfaceHelper.cxx:90
 AliMUONPainterInterfaceHelper.cxx:91
 AliMUONPainterInterfaceHelper.cxx:92
 AliMUONPainterInterfaceHelper.cxx:93
 AliMUONPainterInterfaceHelper.cxx:94
 AliMUONPainterInterfaceHelper.cxx:95
 AliMUONPainterInterfaceHelper.cxx:96
 AliMUONPainterInterfaceHelper.cxx:97
 AliMUONPainterInterfaceHelper.cxx:98
 AliMUONPainterInterfaceHelper.cxx:99
 AliMUONPainterInterfaceHelper.cxx:100
 AliMUONPainterInterfaceHelper.cxx:101
 AliMUONPainterInterfaceHelper.cxx:102
 AliMUONPainterInterfaceHelper.cxx:103
 AliMUONPainterInterfaceHelper.cxx:104
 AliMUONPainterInterfaceHelper.cxx:105
 AliMUONPainterInterfaceHelper.cxx:106
 AliMUONPainterInterfaceHelper.cxx:107
 AliMUONPainterInterfaceHelper.cxx:108
 AliMUONPainterInterfaceHelper.cxx:109
 AliMUONPainterInterfaceHelper.cxx:110
 AliMUONPainterInterfaceHelper.cxx:111
 AliMUONPainterInterfaceHelper.cxx:112
 AliMUONPainterInterfaceHelper.cxx:113
 AliMUONPainterInterfaceHelper.cxx:114
 AliMUONPainterInterfaceHelper.cxx:115
 AliMUONPainterInterfaceHelper.cxx:116
 AliMUONPainterInterfaceHelper.cxx:117
 AliMUONPainterInterfaceHelper.cxx:118
 AliMUONPainterInterfaceHelper.cxx:119
 AliMUONPainterInterfaceHelper.cxx:120
 AliMUONPainterInterfaceHelper.cxx:121
 AliMUONPainterInterfaceHelper.cxx:122
 AliMUONPainterInterfaceHelper.cxx:123
 AliMUONPainterInterfaceHelper.cxx:124
 AliMUONPainterInterfaceHelper.cxx:125
 AliMUONPainterInterfaceHelper.cxx:126
 AliMUONPainterInterfaceHelper.cxx:127
 AliMUONPainterInterfaceHelper.cxx:128
 AliMUONPainterInterfaceHelper.cxx:129
 AliMUONPainterInterfaceHelper.cxx:130
 AliMUONPainterInterfaceHelper.cxx:131
 AliMUONPainterInterfaceHelper.cxx:132
 AliMUONPainterInterfaceHelper.cxx:133
 AliMUONPainterInterfaceHelper.cxx:134
 AliMUONPainterInterfaceHelper.cxx:135
 AliMUONPainterInterfaceHelper.cxx:136
 AliMUONPainterInterfaceHelper.cxx:137
 AliMUONPainterInterfaceHelper.cxx:138
 AliMUONPainterInterfaceHelper.cxx:139
 AliMUONPainterInterfaceHelper.cxx:140
 AliMUONPainterInterfaceHelper.cxx:141
 AliMUONPainterInterfaceHelper.cxx:142
 AliMUONPainterInterfaceHelper.cxx:143
 AliMUONPainterInterfaceHelper.cxx:144
 AliMUONPainterInterfaceHelper.cxx:145
 AliMUONPainterInterfaceHelper.cxx:146
 AliMUONPainterInterfaceHelper.cxx:147
 AliMUONPainterInterfaceHelper.cxx:148
 AliMUONPainterInterfaceHelper.cxx:149
 AliMUONPainterInterfaceHelper.cxx:150
 AliMUONPainterInterfaceHelper.cxx:151
 AliMUONPainterInterfaceHelper.cxx:152
 AliMUONPainterInterfaceHelper.cxx:153
 AliMUONPainterInterfaceHelper.cxx:154
 AliMUONPainterInterfaceHelper.cxx:155
 AliMUONPainterInterfaceHelper.cxx:156
 AliMUONPainterInterfaceHelper.cxx:157
 AliMUONPainterInterfaceHelper.cxx:158
 AliMUONPainterInterfaceHelper.cxx:159
 AliMUONPainterInterfaceHelper.cxx:160
 AliMUONPainterInterfaceHelper.cxx:161
 AliMUONPainterInterfaceHelper.cxx:162
 AliMUONPainterInterfaceHelper.cxx:163
 AliMUONPainterInterfaceHelper.cxx:164
 AliMUONPainterInterfaceHelper.cxx:165
 AliMUONPainterInterfaceHelper.cxx:166
 AliMUONPainterInterfaceHelper.cxx:167
 AliMUONPainterInterfaceHelper.cxx:168
 AliMUONPainterInterfaceHelper.cxx:169
 AliMUONPainterInterfaceHelper.cxx:170
 AliMUONPainterInterfaceHelper.cxx:171
 AliMUONPainterInterfaceHelper.cxx:172
 AliMUONPainterInterfaceHelper.cxx:173
 AliMUONPainterInterfaceHelper.cxx:174
 AliMUONPainterInterfaceHelper.cxx:175
 AliMUONPainterInterfaceHelper.cxx:176
 AliMUONPainterInterfaceHelper.cxx:177
 AliMUONPainterInterfaceHelper.cxx:178
 AliMUONPainterInterfaceHelper.cxx:179
 AliMUONPainterInterfaceHelper.cxx:180
 AliMUONPainterInterfaceHelper.cxx:181
 AliMUONPainterInterfaceHelper.cxx:182
 AliMUONPainterInterfaceHelper.cxx:183
 AliMUONPainterInterfaceHelper.cxx:184
 AliMUONPainterInterfaceHelper.cxx:185
 AliMUONPainterInterfaceHelper.cxx:186
 AliMUONPainterInterfaceHelper.cxx:187
 AliMUONPainterInterfaceHelper.cxx:188
 AliMUONPainterInterfaceHelper.cxx:189
 AliMUONPainterInterfaceHelper.cxx:190
 AliMUONPainterInterfaceHelper.cxx:191
 AliMUONPainterInterfaceHelper.cxx:192
 AliMUONPainterInterfaceHelper.cxx:193
 AliMUONPainterInterfaceHelper.cxx:194
 AliMUONPainterInterfaceHelper.cxx:195
 AliMUONPainterInterfaceHelper.cxx:196
 AliMUONPainterInterfaceHelper.cxx:197
 AliMUONPainterInterfaceHelper.cxx:198
 AliMUONPainterInterfaceHelper.cxx:199
 AliMUONPainterInterfaceHelper.cxx:200
 AliMUONPainterInterfaceHelper.cxx:201
 AliMUONPainterInterfaceHelper.cxx:202
 AliMUONPainterInterfaceHelper.cxx:203
 AliMUONPainterInterfaceHelper.cxx:204
 AliMUONPainterInterfaceHelper.cxx:205
 AliMUONPainterInterfaceHelper.cxx:206
 AliMUONPainterInterfaceHelper.cxx:207
 AliMUONPainterInterfaceHelper.cxx:208
 AliMUONPainterInterfaceHelper.cxx:209
 AliMUONPainterInterfaceHelper.cxx:210
 AliMUONPainterInterfaceHelper.cxx:211
 AliMUONPainterInterfaceHelper.cxx:212
 AliMUONPainterInterfaceHelper.cxx:213
 AliMUONPainterInterfaceHelper.cxx:214
 AliMUONPainterInterfaceHelper.cxx:215
 AliMUONPainterInterfaceHelper.cxx:216
 AliMUONPainterInterfaceHelper.cxx:217
 AliMUONPainterInterfaceHelper.cxx:218
 AliMUONPainterInterfaceHelper.cxx:219
 AliMUONPainterInterfaceHelper.cxx:220
 AliMUONPainterInterfaceHelper.cxx:221
 AliMUONPainterInterfaceHelper.cxx:222
 AliMUONPainterInterfaceHelper.cxx:223
 AliMUONPainterInterfaceHelper.cxx:224
 AliMUONPainterInterfaceHelper.cxx:225
 AliMUONPainterInterfaceHelper.cxx:226
 AliMUONPainterInterfaceHelper.cxx:227
 AliMUONPainterInterfaceHelper.cxx:228
 AliMUONPainterInterfaceHelper.cxx:229
 AliMUONPainterInterfaceHelper.cxx:230
 AliMUONPainterInterfaceHelper.cxx:231
 AliMUONPainterInterfaceHelper.cxx:232
 AliMUONPainterInterfaceHelper.cxx:233
 AliMUONPainterInterfaceHelper.cxx:234
 AliMUONPainterInterfaceHelper.cxx:235
 AliMUONPainterInterfaceHelper.cxx:236
 AliMUONPainterInterfaceHelper.cxx:237
 AliMUONPainterInterfaceHelper.cxx:238
 AliMUONPainterInterfaceHelper.cxx:239
 AliMUONPainterInterfaceHelper.cxx:240
 AliMUONPainterInterfaceHelper.cxx:241
 AliMUONPainterInterfaceHelper.cxx:242
 AliMUONPainterInterfaceHelper.cxx:243
 AliMUONPainterInterfaceHelper.cxx:244
 AliMUONPainterInterfaceHelper.cxx:245
 AliMUONPainterInterfaceHelper.cxx:246
 AliMUONPainterInterfaceHelper.cxx:247
 AliMUONPainterInterfaceHelper.cxx:248
 AliMUONPainterInterfaceHelper.cxx:249
 AliMUONPainterInterfaceHelper.cxx:250
 AliMUONPainterInterfaceHelper.cxx:251
 AliMUONPainterInterfaceHelper.cxx:252
 AliMUONPainterInterfaceHelper.cxx:253
 AliMUONPainterInterfaceHelper.cxx:254
 AliMUONPainterInterfaceHelper.cxx:255
 AliMUONPainterInterfaceHelper.cxx:256
 AliMUONPainterInterfaceHelper.cxx:257
 AliMUONPainterInterfaceHelper.cxx:258
 AliMUONPainterInterfaceHelper.cxx:259
 AliMUONPainterInterfaceHelper.cxx:260
 AliMUONPainterInterfaceHelper.cxx:261
 AliMUONPainterInterfaceHelper.cxx:262
 AliMUONPainterInterfaceHelper.cxx:263
 AliMUONPainterInterfaceHelper.cxx:264
 AliMUONPainterInterfaceHelper.cxx:265
 AliMUONPainterInterfaceHelper.cxx:266
 AliMUONPainterInterfaceHelper.cxx:267
 AliMUONPainterInterfaceHelper.cxx:268
 AliMUONPainterInterfaceHelper.cxx:269
 AliMUONPainterInterfaceHelper.cxx:270
 AliMUONPainterInterfaceHelper.cxx:271
 AliMUONPainterInterfaceHelper.cxx:272
 AliMUONPainterInterfaceHelper.cxx:273
 AliMUONPainterInterfaceHelper.cxx:274
 AliMUONPainterInterfaceHelper.cxx:275
 AliMUONPainterInterfaceHelper.cxx:276
 AliMUONPainterInterfaceHelper.cxx:277
 AliMUONPainterInterfaceHelper.cxx:278
 AliMUONPainterInterfaceHelper.cxx:279
 AliMUONPainterInterfaceHelper.cxx:280
 AliMUONPainterInterfaceHelper.cxx:281
 AliMUONPainterInterfaceHelper.cxx:282
 AliMUONPainterInterfaceHelper.cxx:283
 AliMUONPainterInterfaceHelper.cxx:284
 AliMUONPainterInterfaceHelper.cxx:285
 AliMUONPainterInterfaceHelper.cxx:286
 AliMUONPainterInterfaceHelper.cxx:287
 AliMUONPainterInterfaceHelper.cxx:288
 AliMUONPainterInterfaceHelper.cxx:289
 AliMUONPainterInterfaceHelper.cxx:290
 AliMUONPainterInterfaceHelper.cxx:291
 AliMUONPainterInterfaceHelper.cxx:292
 AliMUONPainterInterfaceHelper.cxx:293
 AliMUONPainterInterfaceHelper.cxx:294
 AliMUONPainterInterfaceHelper.cxx:295
 AliMUONPainterInterfaceHelper.cxx:296
 AliMUONPainterInterfaceHelper.cxx:297
 AliMUONPainterInterfaceHelper.cxx:298
 AliMUONPainterInterfaceHelper.cxx:299
 AliMUONPainterInterfaceHelper.cxx:300
 AliMUONPainterInterfaceHelper.cxx:301
 AliMUONPainterInterfaceHelper.cxx:302
 AliMUONPainterInterfaceHelper.cxx:303
 AliMUONPainterInterfaceHelper.cxx:304
 AliMUONPainterInterfaceHelper.cxx:305
 AliMUONPainterInterfaceHelper.cxx:306
 AliMUONPainterInterfaceHelper.cxx:307
 AliMUONPainterInterfaceHelper.cxx:308
 AliMUONPainterInterfaceHelper.cxx:309
 AliMUONPainterInterfaceHelper.cxx:310
 AliMUONPainterInterfaceHelper.cxx:311
 AliMUONPainterInterfaceHelper.cxx:312
 AliMUONPainterInterfaceHelper.cxx:313
 AliMUONPainterInterfaceHelper.cxx:314
 AliMUONPainterInterfaceHelper.cxx:315
 AliMUONPainterInterfaceHelper.cxx:316
 AliMUONPainterInterfaceHelper.cxx:317
 AliMUONPainterInterfaceHelper.cxx:318
 AliMUONPainterInterfaceHelper.cxx:319
 AliMUONPainterInterfaceHelper.cxx:320
 AliMUONPainterInterfaceHelper.cxx:321
 AliMUONPainterInterfaceHelper.cxx:322
 AliMUONPainterInterfaceHelper.cxx:323
 AliMUONPainterInterfaceHelper.cxx:324
 AliMUONPainterInterfaceHelper.cxx:325
 AliMUONPainterInterfaceHelper.cxx:326
 AliMUONPainterInterfaceHelper.cxx:327
 AliMUONPainterInterfaceHelper.cxx:328
 AliMUONPainterInterfaceHelper.cxx:329
 AliMUONPainterInterfaceHelper.cxx:330
 AliMUONPainterInterfaceHelper.cxx:331
 AliMUONPainterInterfaceHelper.cxx:332
 AliMUONPainterInterfaceHelper.cxx:333
 AliMUONPainterInterfaceHelper.cxx:334
 AliMUONPainterInterfaceHelper.cxx:335
 AliMUONPainterInterfaceHelper.cxx:336
 AliMUONPainterInterfaceHelper.cxx:337
 AliMUONPainterInterfaceHelper.cxx:338
 AliMUONPainterInterfaceHelper.cxx:339
 AliMUONPainterInterfaceHelper.cxx:340
 AliMUONPainterInterfaceHelper.cxx:341
 AliMUONPainterInterfaceHelper.cxx:342
 AliMUONPainterInterfaceHelper.cxx:343
 AliMUONPainterInterfaceHelper.cxx:344
 AliMUONPainterInterfaceHelper.cxx:345
 AliMUONPainterInterfaceHelper.cxx:346
 AliMUONPainterInterfaceHelper.cxx:347
 AliMUONPainterInterfaceHelper.cxx:348
 AliMUONPainterInterfaceHelper.cxx:349
 AliMUONPainterInterfaceHelper.cxx:350
 AliMUONPainterInterfaceHelper.cxx:351
 AliMUONPainterInterfaceHelper.cxx:352
 AliMUONPainterInterfaceHelper.cxx:353
 AliMUONPainterInterfaceHelper.cxx:354
 AliMUONPainterInterfaceHelper.cxx:355
 AliMUONPainterInterfaceHelper.cxx:356
 AliMUONPainterInterfaceHelper.cxx:357
 AliMUONPainterInterfaceHelper.cxx:358
 AliMUONPainterInterfaceHelper.cxx:359
 AliMUONPainterInterfaceHelper.cxx:360
 AliMUONPainterInterfaceHelper.cxx:361
 AliMUONPainterInterfaceHelper.cxx:362
 AliMUONPainterInterfaceHelper.cxx:363
 AliMUONPainterInterfaceHelper.cxx:364
 AliMUONPainterInterfaceHelper.cxx:365
 AliMUONPainterInterfaceHelper.cxx:366
 AliMUONPainterInterfaceHelper.cxx:367