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 "AliMUONPainterDataSourceItem.h"

#include "AliMUONPainterEnv.h"
#include "AliMUONPainterHelper.h"
#include "AliMUONPainterDataRegistry.h"
#include "AliMUONVTrackerDataMaker.h"
#include "AliMUONVTrackerData.h"
#include "AliLog.h"
#include <TFile.h>
#include <TGFileDialog.h>
#include <TGLabel.h>
#include <TGButton.h>
#include <TSystem.h>
#include <TThread.h>
#include <Riostream.h>

///\class AliMUONPainterDataSourceItem
///
/// Widget to show one data source, and allow to run/stop/rewind/remove it
///
/// WARNING : the thread business is not really working yet (AliRawReaders are
/// not really thread-safe for the moment). So please use a single raw data
/// source at a time, otherwise you'll get a crash !
///
///\author Laurent Aphecetche, Subatech

///\cond CLASSIMP
ClassImp(AliMUONPainterDataSourceItem)
///\endcond

namespace
{
  void* RunFunction(void* args)
  {
    Long_t* params = (Long_t*)(args);
    
    AliMUONPainterDataSourceItem* calling = reinterpret_cast<AliMUONPainterDataSourceItem*>(params[0]);
    AliMUONVTrackerDataMaker* reader = reinterpret_cast<AliMUONVTrackerDataMaker*> (params[1]);
    
    Bool_t ok(kTRUE);
    
    while ( ok ) 
    {
      ok = reader->NextEvent();
      if ( reader->IsZombie() ) 
      {
        AliMUONPainterDataRegistry::Instance()->DeleteZombies();
        return 0x0;
      }
      if ( !reader->IsRunning() ) gSystem->Sleep(1000);
    }
    
    calling->Rewind();
    
    return 0x0;
  }
}

//_____________________________________________________________________________
AliMUONPainterDataSourceItem::AliMUONPainterDataSourceItem(const TGWindow* p,
                                                           UInt_t w, UInt_t h,
                                                           AliMUONVTrackerDataMaker* maker)
: TGCompositeFrame(p,w,h,kHorizontalFrame),
  fDataMaker(maker),
  fSourceName(new TGLabel(this,maker->Data()->Name())),
  fSource(new TGLabel(this,maker->Source().Data())),
  fNumberOfEvents(new TGLabel(this,Form("%10d",0))),
  fRun(0x0),
  fStop(0x0),
  fRewind(0x0),
  fRemove(new TGTextButton(this,"Remove")),
  fSave(new TGTextButton(this,"Save")),
  fSaveAs(new TGTextButton(this,"Save As...")),
  fThread(0x0),
  fShouldReset(kFALSE)
{
    /// ctor
 
    SetCleanup(kDeepCleanup);
    
    Update();
    
    AddFrame(fSourceName, new TGLayoutHints(kLHintsNormal | kLHintsCenterY,5,5,5,5));
    AddFrame(fSource,new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,5,5,5,5));
    AddFrame(fNumberOfEvents,new TGLayoutHints(kLHintsNormal | kLHintsCenterY,5,5,5,5));

    if ( fDataMaker->IsRunnable() ) 
    {
      fRun = new TGTextButton(this,"Run");
      fStop = new TGTextButton(this,"Stop");
      fRewind = new TGTextButton(this,"Rewind");
      
      fRun->SetEnabled(!maker->Data()->IsSingleEvent());
      fRun->Connect("Clicked()",
                    "AliMUONPainterDataSourceItem",
                    this,
                    "Run()");
      
      fStop->SetEnabled(kFALSE);
      fStop->Connect("Clicked()",
                     "AliMUONPainterDataSourceItem",
                     this,
                     "Stop()");
      
      fRewind->SetEnabled(kFALSE);
      fRewind->Connect("Clicked()",
                       "AliMUONPainterDataSourceItem",
                       this,
                       "Rewind()");
      
      AddFrame(fRun,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));
      AddFrame(fStop,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));
      AddFrame(fRewind,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));    
    }

    AddFrame(fRemove,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));    

    AddFrame(fSave,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));    

    AddFrame(fSaveAs,new TGLayoutHints(kLHintsCenterY | kLHintsCenterY,5,5,5,5));    

    maker->Data()->Connect("NumberOfEventsChanged()",
                            "AliMUONPainterDataSourceItem",
                            this,
                            "Update()");
    
    fRemove->Connect("Clicked()",
                     "AliMUONPainterDataSourceItem",
                     this,
                     "Remove()");
    
    fSave->Connect("Clicked()",
                   "AliMUONPainterDataSourceItem",
                   this,
                   "Save()");

    fSaveAs->Connect("Clicked()",
                   "AliMUONPainterDataSourceItem",
                   this,
                   "SaveWithDialog()");
    
    Resize();
}

//_____________________________________________________________________________
AliMUONPainterDataSourceItem::~AliMUONPainterDataSourceItem()
{
  /// dtor
  TThread::Delete(fThread);
  delete fThread;
}


//_____________________________________________________________________________
void 
AliMUONPainterDataSourceItem::EnableRun() 
{ 
  /// Enable run button
  if ( fRun ) 
  {
    fRun->SetEnabled(kTRUE); 
  }
}
  
//_____________________________________________________________________________
void 
AliMUONPainterDataSourceItem::DisableRun() 
{ 
  /// Disable run button
  if ( fRun )
  {
    fRun->SetEnabled(kFALSE); 
  }
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Remove()
{
  /// Remove
  
  MakeZombie();
  AliMUONPainterDataRegistry::Instance()->Unregister(fDataMaker);
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Reset()
{
  /// Reset the data
  fDataMaker->Data()->Clear();
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Rewind()
{
  /// Rewind button was clicked
  
  fRewind->SetEnabled(kTRUE);
  
  Stop();
  
  TThread::Delete(fThread);
  delete fThread;
  fThread = 0x0;
  
  if ( fRun && fStop && fRewind ) 
  {
    fRun->SetEnabled(kTRUE);
    fStop->SetEnabled(kFALSE);
    fRewind->SetEnabled(kFALSE);
  }
  
  fDataMaker->Rewind();
  
  fShouldReset = kTRUE;
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Run()
{
  /// Run button was clicked
  
  StartRunning();
  
  if ( fShouldReset ) 
  {
    Reset();
    fShouldReset = kFALSE;
  }
  
  fRemove->SetEnabled(kFALSE);
  
  if (!fThread)
  {
    fParams[0] = (Long_t)(this);
    fParams[1] = (Long_t)(fDataMaker);
    fThread = new TThread(RunFunction,(void*)(&fParams[0]));
    fThread->Run();
  }
  
  fDataMaker->SetRunning(kTRUE);
  
  if ( fRun && fStop )
  {
    fRun->SetEnabled(kFALSE);
    fStop->SetEnabled(kTRUE);
  }
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Save(const char* filename)
{
  /// Save the data maker
  
  TFile* f = TFile::Open(filename,"RECREATE");
  
  fDataMaker->Write();
  
  f->Write();
  f->Close();
  
  delete f;
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Save()
{
  /// Save the data maker (filename is fixed)
  
  TString dname(fDataMaker->Data()->GetName());
  dname.ToLower();
  
  TString outputDir(AliMUONPainterHelper::Instance()->Env()->String("LastSaveDir","."));

  TString filename(Form("%s/mchview.%s.root",gSystem->ExpandPathName(outputDir.Data()),dname.Data()));
  
  Save(filename.Data());
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::SaveWithDialog()
{
  /// Save the data maker (filename given by dialog)
  
  TGFileInfo fileInfo;
  
//  fileInfo.fFileTypes = fgkFileTypes;
  
  delete[] fileInfo.fIniDir;
  
  AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
  
  fileInfo.fIniDir = StrDup(env->String("LastSaveDir","."));
  
  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
                   kFDSave,&fileInfo);
  
  env->Set("LastSaveDir",fileInfo.fIniDir);
  env->Save();  
  
  Save(fileInfo.fFilename);  
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Stop()
{
  /// Stop button was clicked
  
  StopRunning();
  
  fDataMaker->SetRunning(kFALSE);
  
  if ( fStop && fRun ) 
  {
    fStop->SetEnabled(kFALSE);
    fRun->SetEnabled(kTRUE);
  }
  
  fRemove->SetEnabled(kTRUE);
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::Update()
{
  /// Update ourselves
  
  fNumberOfEvents->SetText(Form("%10d",fDataMaker->Data()->NumberOfEvents(-1)));
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceItem::StartRunning()
{
  /// Signal we start to run
  Emit("StartRunning()");
}  

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