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 <cstdlib>
#include "AliMUONPainterDataSourceFrame.h"

#include "AliLog.h"
#include "AliCDBEntry.h"
#include "AliCDBManager.h"
#include "AliMUONChamberPainter.h"
#include "AliMUONMchViewApplication.h"
#include "AliMUONPainterDataRegistry.h"
#include "AliMUONPainterDataSourceItem.h"
#include "AliMUONPainterEnv.h"
#include "AliMUONPainterHelper.h"
#include "AliMUONPainterMatrix.h"
#include "AliMUONPainterRegistry.h"
#include "AliMUONRecoParam.h"
#include "AliMUONTrackerConditionDataMaker.h"
#include "AliMUONTrackerDataMaker.h"
#include "AliRawReader.h"
#include <TCanvas.h>
#include <TGButton.h>
#include <TGComboBox.h>
#include <TGFileDialog.h>
#include <TGNumberEntry.h>
#include <TGTextEntry.h>
#include <TGrid.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TMath.h>
#include <TRegexp.h>
#include <TString.h>
#include <TSystem.h>

///\class AliMUONPainterDataSourceFrame
///
/// A complete frame to select and display various data sources to 
/// be displayed : either raw data or OCDB data. 
/// Later on we might add digits and clusters for instance.
///
///\author Laurent Aphecetche, Subatech

const char* AliMUONPainterDataSourceFrame::fgkNumberOfDataSourcesKey = "NumberOfDataSources";
const char* AliMUONPainterDataSourceFrame::fgkDataSourceURIKey = "DataSourceURI.%d";

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

//_____________________________________________________________________________
AliMUONPainterDataSourceFrame::AliMUONPainterDataSourceFrame(const TGWindow* p, UInt_t w, UInt_t h)
: TGCompositeFrame(p,w,h,kVerticalFrame),
  fRecentSourceSelector(new TGGroupFrame(this,"Recent sources",kHorizontalFrame)),
  fRawSelector(new TGGroupFrame(this,"Raw file URI",kHorizontalFrame)),
  fRawSelector2(new TGCompositeFrame(fRawSelector,w,h,kVerticalFrame)),
  fRawSelector21(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
  fRawSelector22(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
  fRawSelector24(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
  fRawSelector23(new TGCompositeFrame(fRawSelector2,w,h,kHorizontalFrame)),
  fCalibrateNoGain(new TGCheckButton(fRawSelector22,"Ped sub")),
  fCalibrateGainConstantCapa(new TGCheckButton(fRawSelector22,"Ped sub+gain (capa cste)")),
  fCalibrateGain(new TGCheckButton(fRawSelector22,"Full calib (Ped sub+gain w/ capa)")),
  fCalibrateEmelecGain(new TGCheckButton(fRawSelector22,"Full calib (Ped sub+inj gain w/ capa)")),
  fHistogramButton(new TGCheckButton(fRawSelector23,"Histogram")),
  fHistoMin(new TGNumberEntry(fRawSelector23,0)),
  fHistoMax(new TGNumberEntry(fRawSelector23,4096)),
  fEventRangeButton(new TGCheckButton(fRawSelector23,"Event range")),
  fEventMin(new TGNumberEntry(fRawSelector23,-1,10)),
  fEventMax(new TGNumberEntry(fRawSelector23,-1,10)),
  fRawOCDBPath(new TGTextEntry(fRawSelector24,"alien://folder=/alice/data/2013/OCDB")),
  fOCDBSelector(new TGGroupFrame(this,"OCDB Path",kHorizontalFrame)),
  fDataReaders(new TGGroupFrame(this,"Data sources")),
  fFilePath(new TGTextEntry(fRawSelector21,"")),
  fOCDBPath(new TGTextEntry(fOCDBSelector,"alien://folder=/alice/data/2013/OCDB")),
  fRunSelector(new TGNumberEntry(fOCDBSelector,0,10)),
  fOCDBTypes(new TGComboBox(fOCDBSelector)),
  fRecentSources(new TGComboBox(fRecentSourceSelector)),
  fItems(new TObjArray),
  fACFSelector(new TGGroupFrame(this,"ASCII Calib File",kHorizontalFrame)),
  fACFPath(new TGTextEntry(fACFSelector,"")),
  fACFTypes(new TGComboBox(fACFSelector))
{
  /// Ctor
  
    AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
    
    reg->Connect("DataMakerWasRegistered(AliMUONVTrackerDataMaker*)",
                 "AliMUONPainterDataSourceFrame",
                 this,
                 "DataMakerWasRegistered(AliMUONVTrackerDataMaker*)");
    
    reg->Connect("DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)",
                 "AliMUONPainterDataSourceFrame",
                 this,
                 "DataMakerWasUnregistered(AliMUONVTrackerDataMaker*)");
    
    fItems->SetOwner(kFALSE);
    
    /// Recent source selection
    
    AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
    
    Int_t nsources = env->Integer(fgkNumberOfDataSourcesKey);
    
    for ( Int_t i = 0; i < nsources; ++i )
    {
      AddRecentSource(env->String(Form(fgkDataSourceURIKey,i)));
    }

    fRecentSources->Resize(100,20);
    
    TGButton* createRecentButton = new TGTextButton(fRecentSourceSelector,"Create data source");
    createRecentButton->Connect("Clicked()",
                                "AliMUONPainterDataSourceFrame",
                                this,
                                "OpenRecentSource()");
    
    fRecentSourceSelector->AddFrame(fRecentSources,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
    fRecentSourceSelector->AddFrame(createRecentButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
                     
    /// Raw file selection
    
    TGButton* openButton = new TGPictureButton(fRawSelector21,
                                           gClient->GetPicture("fileopen.xpm"));
    openButton->SetToolTipText("Click to open file dialog");
                                        
    fRawSelector2->AddFrame(fRawSelector21, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
    fRawSelector2->AddFrame(fRawSelector22, new TGLayoutHints(kLHintsExpandX,5,5,5,5));
    fRawSelector2->AddFrame(fRawSelector24, new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector2->AddFrame(fRawSelector23, new TGLayoutHints(kLHintsExpandX,5,5,5,5));

    fRawSelector21->AddFrame(openButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector21->AddFrame(fFilePath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));

    fRawSelector22->AddFrame(fCalibrateNoGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector22->AddFrame(fCalibrateGainConstantCapa, new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector22->AddFrame(fCalibrateGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector22->AddFrame(fCalibrateEmelecGain, new TGLayoutHints(kLHintsTop,5,5,5,5));
  
    fRawSelector24->AddFrame(fRawOCDBPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
    fRawOCDBPath->SetEnabled(kFALSE);
    
    fRawSelector23->AddFrame(fHistogramButton,new TGLayoutHints(kLHintsTop,5,5,5,5));    
    fHistogramButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"HistogramButtonClicked()");
    fHistoMin->SetState(kFALSE);
    fHistoMax->SetState(kFALSE);    
    fRawSelector23->AddFrame(fHistoMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
    fRawSelector23->AddFrame(fHistoMax,new TGLayoutHints(kLHintsTop,5,5,5,5));
    

  fRawSelector23->AddFrame(fEventRangeButton,new TGLayoutHints(kLHintsTop,5,5,5,5));    
  fEventRangeButton->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"EventRangeButtonClicked()");
  fEventMin->SetState(kFALSE);
  fEventMax->SetState(kFALSE);      
  
  fEventMin->SetFormat(TGNumberFormat::kNESInteger);
  fEventMax->SetFormat(TGNumberFormat::kNESInteger);

  fRawSelector23->AddFrame(fEventMin,new TGLayoutHints(kLHintsTop,5,5,5,5));
  fRawSelector23->AddFrame(fEventMax,new TGLayoutHints(kLHintsTop,5,5,5,5));
  
    TGButton* createRawButton = new TGTextButton(fRawSelector,"Create data source");
    
    fRawSelector->AddFrame(fRawSelector2, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
    fRawSelector->AddFrame(createRawButton, new TGLayoutHints(kLHintsCenterY,5,5,5,5));
        
    fCalibrateNoGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
    fCalibrateGainConstantCapa->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
    fCalibrateGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");
  fCalibrateEmelecGain->Connect("Clicked()","AliMUONPainterDataSourceFrame",this,"CalibrateButtonClicked()");

    openButton->Connect("Clicked()",
                        "AliMUONPainterDataSourceFrame",
                        this,
                        "OpenFileDialog()");

    createRawButton->Connect("Clicked()",
                        "AliMUONPainterDataSourceFrame",
                        this,
                        "CreateRawDataSource()");
    
    /// OCDB selection
    
  fOCDBTypes->AddEntry("Config",7);
  fOCDBTypes->AddEntry("Occupancy",4);
  fOCDBTypes->AddEntry("HV",3);
  fOCDBTypes->AddEntry("Pedestals",0);
  fOCDBTypes->AddEntry("Gains",1);
  fOCDBTypes->AddEntry("StatusMap",5);
  fOCDBTypes->AddEntry("Status",6);
  fOCDBTypes->AddEntry("Capacitances",2);
  fOCDBTypes->AddEntry("RejectList",8);
  fOCDBTypes->Select(0);
  fOCDBTypes->Resize(80,20);
    
    TGButton* createOCDBButton = new TGTextButton(fOCDBSelector,"Create data source");
    createOCDBButton->Connect("Clicked()",
                             "AliMUONPainterDataSourceFrame",
                             this,
                             "CreateOCDBDataSource()");

  const char* ocdbToolTip = "Use URL style for either alien or local OCDB (foo://bar). For example :\n"
  "alien://folder=/alice/data.../OCDB\n"
  "or\nlocal:///home/user/aliroot (mind the 3 slashes there !)";
  
  fRawOCDBPath->SetToolTipText(ocdbToolTip);
  fOCDBPath->SetToolTipText(ocdbToolTip);
  
    fOCDBSelector->AddFrame(fOCDBPath,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));    
    fOCDBSelector->AddFrame(fRunSelector,new TGLayoutHints(kLHintsTop,5,5,5,5));
    fOCDBSelector->AddFrame(fOCDBTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
    fOCDBSelector->AddFrame(createOCDBButton,new TGLayoutHints(kLHintsTop,5,5,5,5));
    
    
    /// ASCII calibration file selection
    
    TGButton* openButtonACF = new TGPictureButton(fACFSelector,
                                                  gClient->GetPicture("fileopen.xpm"));
    openButtonACF->SetToolTipText("Click to open file dialog");

  fACFTypes->AddEntry("Config",7);
  fACFTypes->AddEntry("Occupancy",4);
  fACFTypes->AddEntry("Pedestals",0);
  fACFTypes->AddEntry("Gains",1);
  fACFTypes->AddEntry("Capacitances",2);
  fACFTypes->Select(0);
  fACFTypes->Resize(100,20);
    
    fACFSelector->AddFrame(openButtonACF,new TGLayoutHints(kLHintsTop,5,5,5,5));                                      
    fACFSelector->AddFrame(fACFPath, new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));
    fACFSelector->AddFrame(fACFTypes,new TGLayoutHints(kLHintsExpandX | kLHintsTop,5,5,5,5));

    TGButton* createACFButton = new TGTextButton(fACFSelector,"Create data source");
    createACFButton->Connect("Clicked()",
                              "AliMUONPainterDataSourceFrame",
                              this,                              
                             "CreateACFDataSource()");
    
    openButtonACF->Connect("Clicked()",
                           "AliMUONPainterDataSourceFrame",
                           this,
                           "OpenFileDialogACF()");
    
    fACFSelector->AddFrame(createACFButton,new TGLayoutHints(kLHintsTop,5,5,5,5));

    AddFrame(fRecentSourceSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));

    AddFrame(fRawSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));

    AddFrame(fOCDBSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));

    AddFrame(fACFSelector,new TGLayoutHints(kLHintsExpandX,10,10,10,10));
    
    AddFrame(fDataReaders, new TGLayoutHints(kLHintsExpandX,10,10,10,10));
    
}

//_____________________________________________________________________________
AliMUONPainterDataSourceFrame::~AliMUONPainterDataSourceFrame()
{
  /// dtor
  
  delete fItems;
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::AddRecentSource(const char* name)
{  
  /// Add a source to the list of recently used sources
  
  TGListBox* lb = fRecentSources->GetListBox();
  
  for ( Int_t i = 0; i < lb->GetNumberOfEntries(); ++i ) 
  {
    TGTextLBEntry* t = (TGTextLBEntry*)lb->GetEntry(i);
    TString s(t->GetText()->GetString());
    if ( s == name ) 
    {
      return;
    }
  }
  
  fRecentSources->AddEntry(name,lb->GetNumberOfEntries());
  fRecentSources->MapSubwindows();
  fRecentSources->Layout();
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CalibrateButtonClicked()
{
  /// Calibrate button was clicked.
  
  if ( fCalibrateNoGain->IsOn() ||
       fCalibrateGainConstantCapa->IsOn() ||
       fCalibrateGain->IsOn() || 
       fCalibrateEmelecGain->IsOn() ) 
  {
    fRawOCDBPath->SetEnabled(kTRUE);
    fRawOCDBPath->SetFocus();
  }
  else
  {
    fRawOCDBPath->SetEnabled(kFALSE);
  }
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::HistogramButtonClicked()
{
  /// Histogram button was clicked.
  
  if ( fHistogramButton->IsOn() )
  {
    fHistoMin->SetState(kTRUE);
    fHistoMax->SetState(kTRUE);
  }
  else
  {
    fHistoMin->SetState(kFALSE);
    fHistoMax->SetState(kFALSE);
  }
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::EventRangeButtonClicked()
{
  /// EventRange button was clicked.
  
  if ( fEventRangeButton->IsOn() )
  {
    fEventMin->SetState(kTRUE);
    fEventMax->SetState(kTRUE);
  }
  else
  {
    fEventMin->SetIntNumber(-1);
    fEventMax->SetIntNumber(-1);
    fEventMin->SetState(kFALSE);
    fEventMax->SetState(kFALSE);
  }
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateACFDataSource()
{
  /// Create an ACF data source (using information from the widgets)
  
  TString acfPath = fACFPath->GetText();
  TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fACFTypes->GetSelectedEntry());
  TString type = t->GetText()->GetString();
  
  CreateACFDataSource(acfPath,type);
  
  fACFPath->SetText("");
}


//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource()
{
  /// Create an OCDB data source (using information from the widgets)
  
  TString cdbPath = fOCDBPath->GetText();
  Int_t runNumber = fRunSelector->GetIntNumber();
  TGTextLBEntry* t = static_cast<TGTextLBEntry*>(fOCDBTypes->GetSelectedEntry());
  TString type = t->GetText()->GetString();
  
  CreateOCDBDataSource(cdbPath,runNumber,type);  
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& uri)
{
  /// Create an ACF data source, given it's URI
  
  TObjArray* a = uri.Tokenize(";");
  TString acfPath = static_cast<TObjString*>(a->At(1))->String();
  TString type = static_cast<TObjString*>(a->At(2))->String();
  
  CreateACFDataSource(acfPath,type);
  
  delete a;
}


//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& uri)
{
  /// Create an OCDB data source, given it's URI
  
  TObjArray* a = uri.Tokenize(";");
  TString cdbPath = static_cast<TObjString*>(a->At(1))->String();
  TString srun = static_cast<TObjString*>(a->At(2))->String();
  TString type = static_cast<TObjString*>(a->At(3))->String();
  
  CreateOCDBDataSource(cdbPath,atoi(srun.Data()),type);
  
  delete a;
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::RegisterDataSource(AliMUONVTrackerDataMaker* reader,
                                                  const char* dsName)
{
  /// Register a new data source
 
  if ( reader && reader->IsValid() ) 
  {
    AliMUONMchViewApplication* app = dynamic_cast<AliMUONMchViewApplication*>(gApplication);
    if (!app)
    {
      AliError("Could not cast application to the expected type ! CHECK THAT !");
    }
    
    AliMUONPainterDataRegistry::Instance()->Register(reader);
    
    AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
    
    Int_t n = env->Integer(fgkNumberOfDataSourcesKey);
    
    env->Set(fgkNumberOfDataSourcesKey,n+1);
    
    env->Set(Form(fgkDataSourceURIKey,n),dsName);
    
    env->Save();
    
    AddRecentSource(dsName);
    
    if ( app ) 
    {
      
      TString name(dsName);
      name.ToUpper();
      
      if ( name.Contains("PED") )
      {
        CreatePedestalCanvases(reader->Data());
      }
    }
  }  
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreatePedestalCanvases(AliMUONVTrackerData* data,
                                                      Double_t pedMin, Double_t pedMax,
                                                      Double_t sigmaMin, Double_t sigmaMax)
{
  /// Create 4 canvases with the pedestals contained in data
  /// to show mean and sigma, for bending and non bending, with given limits
                                                 
  TList matrices;
  
  AliMUONAttPainter att[2];
  
  att[0].SetViewPoint(kTRUE,kFALSE);
  att[0].SetCathode(kFALSE,kFALSE);
  att[0].SetPlane(kTRUE,kFALSE);
  
  att[1].SetViewPoint(kTRUE,kFALSE);
  att[1].SetCathode(kFALSE,kFALSE);
  att[1].SetPlane(kFALSE,kTRUE);
  
  for ( Int_t iatt = 0; iatt < 2; ++iatt ) 
  {
    matrices.Add(CreateFullTracker(data,0,pedMin,pedMax,att[iatt]));
    matrices.Add(CreateFullTracker(data,1,sigmaMin,sigmaMax,att[iatt]));
  }
  
  TIter next(&matrices);
  AliMUONPainterMatrix* matrix;
  
  Int_t w = TMath::Nint(gClient->GetDisplayWidth()*0.9);
  Int_t h = TMath::Nint(gClient->GetDisplayHeight()*0.9);
  
  Int_t x[] = { 0, 0, 20 + w/2, 20 + w/2 };
  Int_t y[] = { 0, h/2+30, 0, h/2+30 };
  
  Int_t i(0);
  
  while ( ( matrix = static_cast<AliMUONPainterMatrix*>(next())) )
  {
    TCanvas* c = matrix->CreateCanvas(x[i],y[i],w/2,h/2);
    c->Draw();
    c->SaveAs(Form("%s.png",c->GetName()));
    ++i;
  }
}

//_____________________________________________________________________________
AliMUONPainterMatrix*
AliMUONPainterDataSourceFrame::CreateFullTracker(AliMUONVTrackerData* data, 
                                                 Int_t dim, 
                                                 Double_t xmin, Double_t xmax,
                                                 const AliMUONAttPainter& att)
{
  /// Generate, draw and register a matrix of 10 painters to show all the tracker
  /// chambers
    
  AliMUONPainterMatrix* matrix = new AliMUONPainterMatrix("Tracker",5,2);
  
  for ( Int_t ichamber = 0; ichamber < 10; ++ichamber )
  {
    AliMUONVPainter* painter = new AliMUONChamberPainter(att,ichamber);
    
    painter->SetResponder("BUSPATCH");
    
    painter->SetOutlined("*",kFALSE);
    
    matrix->Adopt(painter);    
  }
  
  matrix->SetData("MANU",data,dim);    
  matrix->SetDataRange(xmin,xmax);    
  
  AliMUONPainterRegistry::Instance()->Register(matrix);
    
  return matrix;
}


//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateACFDataSource(const TString& acfPath, const TString& type)
{
  /// Create an ACF data source for a given (path,type) 

  AliMUONVTrackerDataMaker* reader = new AliMUONTrackerConditionDataMaker(acfPath.Data(),
                                                                          type.Data());
  
  RegisterDataSource(reader,Form("ACF;%s;%s",acfPath.Data(),type.Data()));
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::CreateOCDBDataSource(const TString& cdbPath,
                                                    Int_t runNumber,
                                                    const TString& type)
{
  /// Create an OCDB data source for a given (path,runnumber,type) triplet
  
  AliMUONVTrackerDataMaker* reader = new AliMUONTrackerConditionDataMaker(runNumber,
                                                                          cdbPath.Data(),
                                                                          type.Data());
  
  RegisterDataSource(reader,Form("OCDB;%s;%d;%s",cdbPath.Data(),runNumber,type.Data()));
}

//_____________________________________________________________________________
void 
AliMUONPainterDataSourceFrame::CreateRawDataSource()
{
  /// Create a new raw data source (using info from the widgets)
  
  TString uri(gSystem->ExpandPathName(fFilePath->GetText()));

  TString name("RAW");
  Bool_t fromMemory(kFALSE);
  
  if ( uri.Contains(TRegexp("^mem")) )
  {
    fromMemory = kTRUE;
  }
  else
  {
    if ( gSystem->AccessPathName(uri.Data()) )
    {
      AliError(Form("File %s does not exist",uri.Data()));
      fFilePath->SetText("");
      return;
    }
  }

  TString calibMode("");
  
  if ( fCalibrateGain->IsOn() ) 
  {
    calibMode = "GAIN";
    name = "CALC";
  }
  
  if ( fCalibrateGainConstantCapa->IsOn() ) 
  {
    calibMode = "GAINCONSTANTCAPA";
    name = "CALG";
  }

  if ( fCalibrateEmelecGain->IsOn() ) 
  {
    calibMode = "INJECTIONGAIN";
    name = "CALE";
  }
  
  if ( fCalibrateNoGain->IsOn() ) 
  {
    calibMode = "NOGAIN";
    name = "CALZ";
  }
  
  uri = Form("%s%s%s;%s;%s;%s;%s;%s;%s;%s",
             ( fHistogramButton->IsOn() ? "H":""),
             ( fromMemory ? "M" : ""),
             name.Data(),uri.Data(),
             ( strlen(fRawOCDBPath->GetText()) > 0 ? fRawOCDBPath->GetText() : " "),
             ( calibMode.Length() > 0 ? calibMode.Data() : " "),
             Form("%e",fHistoMin->GetNumber()),
             Form("%e",fHistoMax->GetNumber()),
             Form("%d",(Int_t)(fEventMin->GetIntNumber())),
             Form("%d",(Int_t)(fEventMax->GetIntNumber())));
  
  if ( CreateRawDataSource(uri) )
  {
    fFilePath->SetText("");
    fRawOCDBPath->SetText("");
  }
}

//_____________________________________________________________________________
Bool_t 
AliMUONPainterDataSourceFrame::CreateRawDataSource(const TString& uri)
{
  /// Create a new raw data source, given its URI
  
  TString filename;
  TString ocdbPath;
  TString calibMode;
  TString sxmin("0.0");
  TString sxmax("4096.0");
  TString emin("-1");
  TString emax("-1");
  
  TObjArray* a = uri.Tokenize(";");
  
  filename = static_cast<TObjString*>(a->At(1))->String();
  
  if ( a->GetLast() > 1 ) 
  {
    ocdbPath = static_cast<TObjString*>(a->At(2))->String();
    if ( ocdbPath == " " ) ocdbPath = "";
  }

  if ( a->GetLast() > 2 ) 
  {
    calibMode = static_cast<TObjString*>(a->At(3))->String();
    if ( calibMode == " " ) calibMode = "";
  }

  if ( a->GetLast() > 3 ) 
  {
    sxmin = static_cast<TObjString*>(a->At(4))->String();
  }

  if ( a->GetLast() > 4 ) 
  {
    sxmax = static_cast<TObjString*>(a->At(5))->String();
  }
  
  if ( a->GetLast() > 5 )
  {
    emin = static_cast<TObjString*>(a->At(6))->String();
  }

  if ( a->GetLast() > 6 )
  {
    emax = static_cast<TObjString*>(a->At(7))->String();
  }
  
  delete a;
  
  AliRawReader* rawReader = 0x0;

  if ( filename.Contains(TRegexp("^alien")) )
  {
    // insure we've initialized the grid...
    if (!gGrid)
    {
      TGrid::Connect("alien://");
    }
  }
  
  rawReader = AliRawReader::Create(filename.Data());

  if (!rawReader)
  {
    AliError(Form("Could not open file %s",filename.Data()));
    fFilePath->SetText("");
    return kFALSE;
  }
  
  /// Basic test to see if the file is correct
  /// and to get run numbre
  Int_t runNumber(-1);
  Bool_t ok = rawReader->NextEvent();
  if (!ok)
  {
    AliError(Form("File %s does not seem to be a raw data file",filename.Data()));    
    fFilePath->SetText("");
    return kFALSE;
  }
  else
  {
    runNumber = rawReader->GetRunNumber();    
  }

  rawReader->RewindEvents();
  
  AliMUONVTrackerDataMaker* reader(0x0);
  Bool_t histogram(kFALSE);
  
  if ( uri.Contains(TRegexp("^H")) ) histogram = kTRUE;

  if ( ocdbPath.Length() > 0 ) 
  {
        
    AliMUONRecoParam* recoParam(0x0);
    
    AliCDBEntry* e = AliCDBManager::Instance()->Get("MUON/Calib/RecoParam",runNumber);
    if (e)
    {
      TObject* o = e->GetObject();
      if ( o->IsA() == TObjArray::Class() )
      {
        TIter next(static_cast<TObjArray*>(o));
        AliMUONRecoParam* p;
        while ( ( p = static_cast<AliMUONRecoParam*>(next()) ))
        {
          if ( p->IsDefault()) recoParam = p;
        }
      }
      else
      {
        recoParam = static_cast<AliMUONRecoParam*>(o);
      }
    }
    
    reader = new AliMUONTrackerDataMaker(recoParam,
                                         rawReader,
                                         ocdbPath.Data(),
                                         calibMode.Data(),
                                         histogram,
                                         sxmin.Atof(),
                                         sxmax.Atof());
  }
  else
  {
    reader = new AliMUONTrackerDataMaker(rawReader,histogram);
  }

  reader->SetEventRange(emin.Atoi(),emax.Atoi());
  
  reader->SetSource(filename.Data());

  TString dsName(uri);
  
  if ( emin.Atoi() <= emax.Atoi() )
  {
    // we have an event range
    if ( emin.Atoi() == emax.Atoi())
    {
      dsName += Form("[%d]",emin.Atoi());
    }
    else
    {
      dsName += Form("[%d,%d]",emin.Atoi(),emax.Atoi());
    }
  }
  
  RegisterDataSource(reader,dsName.Data());
                       
  return kTRUE;
}

//_____________________________________________________________________________
void 
AliMUONPainterDataSourceFrame::DataMakerWasRegistered(AliMUONVTrackerDataMaker* reader)
{
  /// Update ourselves as a new data reader was created
  
  AliMUONPainterDataSourceItem* item = new AliMUONPainterDataSourceItem(fDataReaders,100,20,reader);
      
  item->Connect("StartRunning()",
                "AliMUONPainterDataSourceFrame",
                this,
                "StartRunning()");

  item->Connect("StopRunning()",
                "AliMUONPainterDataSourceFrame",
                this,
                "StopRunning()");
  
  fDataReaders->AddFrame(item);
  
  fItems->Add(item);

  fDataReaders->MapSubwindows();
  fDataReaders->Resize();
}

//_____________________________________________________________________________
void 
AliMUONPainterDataSourceFrame::DataMakerWasUnregistered(const AliMUONVTrackerDataMaker* maker)
{
  /// Update ourselves as a data reader was deleted
  
  AliMUONPainterDataSourceItem* theItem(0x0);
  
  TIter next(fItems);
  AliMUONPainterDataSourceItem* item;
  
  while ( ( item = static_cast<AliMUONPainterDataSourceItem*>(next()) ) && !theItem )
  {
    if ( item->DataMaker() == maker ) 
    {
      theItem = item;
    }
  }
  
  if  (!theItem) return;
  
  fDataReaders->RemoveFrame(theItem);
  fItems->Remove(theItem);
  theItem->DestroyWindow();
  delete theItem;
  
  fDataReaders->MapSubwindows();
  fDataReaders->Resize();

}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::OpenFileDialog()
{
  /// Open a file dialog to select a file to be read
  
  TGFileInfo fileInfo;
  
  const char* fileTypes[] = { 
    "ROOT files","*.root",
    "DATE files","*.raw",
    "All files","*",
    0,0 };
  
  fileInfo.fFileTypes = fileTypes;
  delete[] fileInfo.fIniDir;

  AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
  
  fileInfo.fIniDir = StrDup(env->String("LastOpenDir","."));
  
  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
                   kFDOpen,&fileInfo);
  
  fFilePath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
  
  env->Set("LastOpenDir",fileInfo.fIniDir);
  env->Save();  
}


//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::OpenFileDialogACF()
{
  /// Open a file dialog to select an ASCII calibration file to be read
  
  TGFileInfo fileInfo;
  
  const char* fileTypes[] = { 
    "All files","*",
    0,0 };
  
  fileInfo.fFileTypes = fileTypes;
  delete[] fileInfo.fIniDir;
  
  AliMUONPainterEnv* env = AliMUONPainterHelper::Instance()->Env();
  
  fileInfo.fIniDir = StrDup(env->String("LastOpenDirACF","."));
  
  new TGFileDialog(gClient->GetRoot(),gClient->GetRoot(),
                   kFDOpen,&fileInfo);
  
  fACFPath->SetText(gSystem->ExpandPathName(Form("%s",fileInfo.fFilename)));
  
  env->Set("LastOpenDirACF",fileInfo.fIniDir);
  env->Save();  
}


//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::OpenRecentSource()
{
  /// Open one source from the recently used ones
  
  TGTextLBEntry* t = (TGTextLBEntry*)fRecentSources->GetSelectedEntry();

  TString uri(t->GetText()->GetString());
  
  if ( uri.Contains(TRegexp("^RAW")) || uri.Contains(TRegexp("^HRAW")) || 
       uri.Contains(TRegexp("^CAL")) || uri.Contains(TRegexp("^HCAL")) ||
       uri.Contains(TRegexp("^MEM")) )
  {
    CreateRawDataSource(uri);
  }
  else if ( uri.Contains(TRegexp("^OCDB")) )
  {
    CreateOCDBDataSource(uri);
  }
  else if ( uri.Contains(TRegexp("^ACF")) )
  {
    CreateACFDataSource(uri);
  }
  
  fRecentSources->Select(-1);
}

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::StartRunning()
{
  /// One data source starts running. Disable the Run button of the other ones
  
  AliMUONPainterDataSourceItem* item = reinterpret_cast<AliMUONPainterDataSourceItem*> (gTQSender);
  
  AliInfo("");
  
  TIter next(fItems);
  AliMUONPainterDataSourceItem* o;
  while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
  {
    if ( o != item ) 
    {
      o->DisableRun();
    }
  }
}  

//_____________________________________________________________________________
void
AliMUONPainterDataSourceFrame::StopRunning()
{
  /// One data source stops running. Enable the Run button of all items
  
  TIter next(fItems);
  AliMUONPainterDataSourceItem* o;
  while ( ( o = static_cast<AliMUONPainterDataSourceItem*>(next()) ) )
  {
    o->EnableRun();
  }
}
  
 AliMUONPainterDataSourceFrame.cxx:1
 AliMUONPainterDataSourceFrame.cxx:2
 AliMUONPainterDataSourceFrame.cxx:3
 AliMUONPainterDataSourceFrame.cxx:4
 AliMUONPainterDataSourceFrame.cxx:5
 AliMUONPainterDataSourceFrame.cxx:6
 AliMUONPainterDataSourceFrame.cxx:7
 AliMUONPainterDataSourceFrame.cxx:8
 AliMUONPainterDataSourceFrame.cxx:9
 AliMUONPainterDataSourceFrame.cxx:10
 AliMUONPainterDataSourceFrame.cxx:11
 AliMUONPainterDataSourceFrame.cxx:12
 AliMUONPainterDataSourceFrame.cxx:13
 AliMUONPainterDataSourceFrame.cxx:14
 AliMUONPainterDataSourceFrame.cxx:15
 AliMUONPainterDataSourceFrame.cxx:16
 AliMUONPainterDataSourceFrame.cxx:17
 AliMUONPainterDataSourceFrame.cxx:18
 AliMUONPainterDataSourceFrame.cxx:19
 AliMUONPainterDataSourceFrame.cxx:20
 AliMUONPainterDataSourceFrame.cxx:21
 AliMUONPainterDataSourceFrame.cxx:22
 AliMUONPainterDataSourceFrame.cxx:23
 AliMUONPainterDataSourceFrame.cxx:24
 AliMUONPainterDataSourceFrame.cxx:25
 AliMUONPainterDataSourceFrame.cxx:26
 AliMUONPainterDataSourceFrame.cxx:27
 AliMUONPainterDataSourceFrame.cxx:28
 AliMUONPainterDataSourceFrame.cxx:29
 AliMUONPainterDataSourceFrame.cxx:30
 AliMUONPainterDataSourceFrame.cxx:31
 AliMUONPainterDataSourceFrame.cxx:32
 AliMUONPainterDataSourceFrame.cxx:33
 AliMUONPainterDataSourceFrame.cxx:34
 AliMUONPainterDataSourceFrame.cxx:35
 AliMUONPainterDataSourceFrame.cxx:36
 AliMUONPainterDataSourceFrame.cxx:37
 AliMUONPainterDataSourceFrame.cxx:38
 AliMUONPainterDataSourceFrame.cxx:39
 AliMUONPainterDataSourceFrame.cxx:40
 AliMUONPainterDataSourceFrame.cxx:41
 AliMUONPainterDataSourceFrame.cxx:42
 AliMUONPainterDataSourceFrame.cxx:43
 AliMUONPainterDataSourceFrame.cxx:44
 AliMUONPainterDataSourceFrame.cxx:45
 AliMUONPainterDataSourceFrame.cxx:46
 AliMUONPainterDataSourceFrame.cxx:47
 AliMUONPainterDataSourceFrame.cxx:48
 AliMUONPainterDataSourceFrame.cxx:49
 AliMUONPainterDataSourceFrame.cxx:50
 AliMUONPainterDataSourceFrame.cxx:51
 AliMUONPainterDataSourceFrame.cxx:52
 AliMUONPainterDataSourceFrame.cxx:53
 AliMUONPainterDataSourceFrame.cxx:54
 AliMUONPainterDataSourceFrame.cxx:55
 AliMUONPainterDataSourceFrame.cxx:56
 AliMUONPainterDataSourceFrame.cxx:57
 AliMUONPainterDataSourceFrame.cxx:58
 AliMUONPainterDataSourceFrame.cxx:59
 AliMUONPainterDataSourceFrame.cxx:60
 AliMUONPainterDataSourceFrame.cxx:61
 AliMUONPainterDataSourceFrame.cxx:62
 AliMUONPainterDataSourceFrame.cxx:63
 AliMUONPainterDataSourceFrame.cxx:64
 AliMUONPainterDataSourceFrame.cxx:65
 AliMUONPainterDataSourceFrame.cxx:66
 AliMUONPainterDataSourceFrame.cxx:67
 AliMUONPainterDataSourceFrame.cxx:68
 AliMUONPainterDataSourceFrame.cxx:69
 AliMUONPainterDataSourceFrame.cxx:70
 AliMUONPainterDataSourceFrame.cxx:71
 AliMUONPainterDataSourceFrame.cxx:72
 AliMUONPainterDataSourceFrame.cxx:73
 AliMUONPainterDataSourceFrame.cxx:74
 AliMUONPainterDataSourceFrame.cxx:75
 AliMUONPainterDataSourceFrame.cxx:76
 AliMUONPainterDataSourceFrame.cxx:77
 AliMUONPainterDataSourceFrame.cxx:78
 AliMUONPainterDataSourceFrame.cxx:79
 AliMUONPainterDataSourceFrame.cxx:80
 AliMUONPainterDataSourceFrame.cxx:81
 AliMUONPainterDataSourceFrame.cxx:82
 AliMUONPainterDataSourceFrame.cxx:83
 AliMUONPainterDataSourceFrame.cxx:84
 AliMUONPainterDataSourceFrame.cxx:85
 AliMUONPainterDataSourceFrame.cxx:86
 AliMUONPainterDataSourceFrame.cxx:87
 AliMUONPainterDataSourceFrame.cxx:88
 AliMUONPainterDataSourceFrame.cxx:89
 AliMUONPainterDataSourceFrame.cxx:90
 AliMUONPainterDataSourceFrame.cxx:91
 AliMUONPainterDataSourceFrame.cxx:92
 AliMUONPainterDataSourceFrame.cxx:93
 AliMUONPainterDataSourceFrame.cxx:94
 AliMUONPainterDataSourceFrame.cxx:95
 AliMUONPainterDataSourceFrame.cxx:96
 AliMUONPainterDataSourceFrame.cxx:97
 AliMUONPainterDataSourceFrame.cxx:98
 AliMUONPainterDataSourceFrame.cxx:99
 AliMUONPainterDataSourceFrame.cxx:100
 AliMUONPainterDataSourceFrame.cxx:101
 AliMUONPainterDataSourceFrame.cxx:102
 AliMUONPainterDataSourceFrame.cxx:103
 AliMUONPainterDataSourceFrame.cxx:104
 AliMUONPainterDataSourceFrame.cxx:105
 AliMUONPainterDataSourceFrame.cxx:106
 AliMUONPainterDataSourceFrame.cxx:107
 AliMUONPainterDataSourceFrame.cxx:108
 AliMUONPainterDataSourceFrame.cxx:109
 AliMUONPainterDataSourceFrame.cxx:110
 AliMUONPainterDataSourceFrame.cxx:111
 AliMUONPainterDataSourceFrame.cxx:112
 AliMUONPainterDataSourceFrame.cxx:113
 AliMUONPainterDataSourceFrame.cxx:114
 AliMUONPainterDataSourceFrame.cxx:115
 AliMUONPainterDataSourceFrame.cxx:116
 AliMUONPainterDataSourceFrame.cxx:117
 AliMUONPainterDataSourceFrame.cxx:118
 AliMUONPainterDataSourceFrame.cxx:119
 AliMUONPainterDataSourceFrame.cxx:120
 AliMUONPainterDataSourceFrame.cxx:121
 AliMUONPainterDataSourceFrame.cxx:122
 AliMUONPainterDataSourceFrame.cxx:123
 AliMUONPainterDataSourceFrame.cxx:124
 AliMUONPainterDataSourceFrame.cxx:125
 AliMUONPainterDataSourceFrame.cxx:126
 AliMUONPainterDataSourceFrame.cxx:127
 AliMUONPainterDataSourceFrame.cxx:128
 AliMUONPainterDataSourceFrame.cxx:129
 AliMUONPainterDataSourceFrame.cxx:130
 AliMUONPainterDataSourceFrame.cxx:131
 AliMUONPainterDataSourceFrame.cxx:132
 AliMUONPainterDataSourceFrame.cxx:133
 AliMUONPainterDataSourceFrame.cxx:134
 AliMUONPainterDataSourceFrame.cxx:135
 AliMUONPainterDataSourceFrame.cxx:136
 AliMUONPainterDataSourceFrame.cxx:137
 AliMUONPainterDataSourceFrame.cxx:138
 AliMUONPainterDataSourceFrame.cxx:139
 AliMUONPainterDataSourceFrame.cxx:140
 AliMUONPainterDataSourceFrame.cxx:141
 AliMUONPainterDataSourceFrame.cxx:142
 AliMUONPainterDataSourceFrame.cxx:143
 AliMUONPainterDataSourceFrame.cxx:144
 AliMUONPainterDataSourceFrame.cxx:145
 AliMUONPainterDataSourceFrame.cxx:146
 AliMUONPainterDataSourceFrame.cxx:147
 AliMUONPainterDataSourceFrame.cxx:148
 AliMUONPainterDataSourceFrame.cxx:149
 AliMUONPainterDataSourceFrame.cxx:150
 AliMUONPainterDataSourceFrame.cxx:151
 AliMUONPainterDataSourceFrame.cxx:152
 AliMUONPainterDataSourceFrame.cxx:153
 AliMUONPainterDataSourceFrame.cxx:154
 AliMUONPainterDataSourceFrame.cxx:155
 AliMUONPainterDataSourceFrame.cxx:156
 AliMUONPainterDataSourceFrame.cxx:157
 AliMUONPainterDataSourceFrame.cxx:158
 AliMUONPainterDataSourceFrame.cxx:159
 AliMUONPainterDataSourceFrame.cxx:160
 AliMUONPainterDataSourceFrame.cxx:161
 AliMUONPainterDataSourceFrame.cxx:162
 AliMUONPainterDataSourceFrame.cxx:163
 AliMUONPainterDataSourceFrame.cxx:164
 AliMUONPainterDataSourceFrame.cxx:165
 AliMUONPainterDataSourceFrame.cxx:166
 AliMUONPainterDataSourceFrame.cxx:167
 AliMUONPainterDataSourceFrame.cxx:168
 AliMUONPainterDataSourceFrame.cxx:169
 AliMUONPainterDataSourceFrame.cxx:170
 AliMUONPainterDataSourceFrame.cxx:171
 AliMUONPainterDataSourceFrame.cxx:172
 AliMUONPainterDataSourceFrame.cxx:173
 AliMUONPainterDataSourceFrame.cxx:174
 AliMUONPainterDataSourceFrame.cxx:175
 AliMUONPainterDataSourceFrame.cxx:176
 AliMUONPainterDataSourceFrame.cxx:177
 AliMUONPainterDataSourceFrame.cxx:178
 AliMUONPainterDataSourceFrame.cxx:179
 AliMUONPainterDataSourceFrame.cxx:180
 AliMUONPainterDataSourceFrame.cxx:181
 AliMUONPainterDataSourceFrame.cxx:182
 AliMUONPainterDataSourceFrame.cxx:183
 AliMUONPainterDataSourceFrame.cxx:184
 AliMUONPainterDataSourceFrame.cxx:185
 AliMUONPainterDataSourceFrame.cxx:186
 AliMUONPainterDataSourceFrame.cxx:187
 AliMUONPainterDataSourceFrame.cxx:188
 AliMUONPainterDataSourceFrame.cxx:189
 AliMUONPainterDataSourceFrame.cxx:190
 AliMUONPainterDataSourceFrame.cxx:191
 AliMUONPainterDataSourceFrame.cxx:192
 AliMUONPainterDataSourceFrame.cxx:193
 AliMUONPainterDataSourceFrame.cxx:194
 AliMUONPainterDataSourceFrame.cxx:195
 AliMUONPainterDataSourceFrame.cxx:196
 AliMUONPainterDataSourceFrame.cxx:197
 AliMUONPainterDataSourceFrame.cxx:198
 AliMUONPainterDataSourceFrame.cxx:199
 AliMUONPainterDataSourceFrame.cxx:200
 AliMUONPainterDataSourceFrame.cxx:201
 AliMUONPainterDataSourceFrame.cxx:202
 AliMUONPainterDataSourceFrame.cxx:203
 AliMUONPainterDataSourceFrame.cxx:204
 AliMUONPainterDataSourceFrame.cxx:205
 AliMUONPainterDataSourceFrame.cxx:206
 AliMUONPainterDataSourceFrame.cxx:207
 AliMUONPainterDataSourceFrame.cxx:208
 AliMUONPainterDataSourceFrame.cxx:209
 AliMUONPainterDataSourceFrame.cxx:210
 AliMUONPainterDataSourceFrame.cxx:211
 AliMUONPainterDataSourceFrame.cxx:212
 AliMUONPainterDataSourceFrame.cxx:213
 AliMUONPainterDataSourceFrame.cxx:214
 AliMUONPainterDataSourceFrame.cxx:215
 AliMUONPainterDataSourceFrame.cxx:216
 AliMUONPainterDataSourceFrame.cxx:217
 AliMUONPainterDataSourceFrame.cxx:218
 AliMUONPainterDataSourceFrame.cxx:219
 AliMUONPainterDataSourceFrame.cxx:220
 AliMUONPainterDataSourceFrame.cxx:221
 AliMUONPainterDataSourceFrame.cxx:222
 AliMUONPainterDataSourceFrame.cxx:223
 AliMUONPainterDataSourceFrame.cxx:224
 AliMUONPainterDataSourceFrame.cxx:225
 AliMUONPainterDataSourceFrame.cxx:226
 AliMUONPainterDataSourceFrame.cxx:227
 AliMUONPainterDataSourceFrame.cxx:228
 AliMUONPainterDataSourceFrame.cxx:229
 AliMUONPainterDataSourceFrame.cxx:230
 AliMUONPainterDataSourceFrame.cxx:231
 AliMUONPainterDataSourceFrame.cxx:232
 AliMUONPainterDataSourceFrame.cxx:233
 AliMUONPainterDataSourceFrame.cxx:234
 AliMUONPainterDataSourceFrame.cxx:235
 AliMUONPainterDataSourceFrame.cxx:236
 AliMUONPainterDataSourceFrame.cxx:237
 AliMUONPainterDataSourceFrame.cxx:238
 AliMUONPainterDataSourceFrame.cxx:239
 AliMUONPainterDataSourceFrame.cxx:240
 AliMUONPainterDataSourceFrame.cxx:241
 AliMUONPainterDataSourceFrame.cxx:242
 AliMUONPainterDataSourceFrame.cxx:243
 AliMUONPainterDataSourceFrame.cxx:244
 AliMUONPainterDataSourceFrame.cxx:245
 AliMUONPainterDataSourceFrame.cxx:246
 AliMUONPainterDataSourceFrame.cxx:247
 AliMUONPainterDataSourceFrame.cxx:248
 AliMUONPainterDataSourceFrame.cxx:249
 AliMUONPainterDataSourceFrame.cxx:250
 AliMUONPainterDataSourceFrame.cxx:251
 AliMUONPainterDataSourceFrame.cxx:252
 AliMUONPainterDataSourceFrame.cxx:253
 AliMUONPainterDataSourceFrame.cxx:254
 AliMUONPainterDataSourceFrame.cxx:255
 AliMUONPainterDataSourceFrame.cxx:256
 AliMUONPainterDataSourceFrame.cxx:257
 AliMUONPainterDataSourceFrame.cxx:258
 AliMUONPainterDataSourceFrame.cxx:259
 AliMUONPainterDataSourceFrame.cxx:260
 AliMUONPainterDataSourceFrame.cxx:261
 AliMUONPainterDataSourceFrame.cxx:262
 AliMUONPainterDataSourceFrame.cxx:263
 AliMUONPainterDataSourceFrame.cxx:264
 AliMUONPainterDataSourceFrame.cxx:265
 AliMUONPainterDataSourceFrame.cxx:266
 AliMUONPainterDataSourceFrame.cxx:267
 AliMUONPainterDataSourceFrame.cxx:268
 AliMUONPainterDataSourceFrame.cxx:269
 AliMUONPainterDataSourceFrame.cxx:270
 AliMUONPainterDataSourceFrame.cxx:271
 AliMUONPainterDataSourceFrame.cxx:272
 AliMUONPainterDataSourceFrame.cxx:273
 AliMUONPainterDataSourceFrame.cxx:274
 AliMUONPainterDataSourceFrame.cxx:275
 AliMUONPainterDataSourceFrame.cxx:276
 AliMUONPainterDataSourceFrame.cxx:277
 AliMUONPainterDataSourceFrame.cxx:278
 AliMUONPainterDataSourceFrame.cxx:279
 AliMUONPainterDataSourceFrame.cxx:280
 AliMUONPainterDataSourceFrame.cxx:281
 AliMUONPainterDataSourceFrame.cxx:282
 AliMUONPainterDataSourceFrame.cxx:283
 AliMUONPainterDataSourceFrame.cxx:284
 AliMUONPainterDataSourceFrame.cxx:285
 AliMUONPainterDataSourceFrame.cxx:286
 AliMUONPainterDataSourceFrame.cxx:287
 AliMUONPainterDataSourceFrame.cxx:288
 AliMUONPainterDataSourceFrame.cxx:289
 AliMUONPainterDataSourceFrame.cxx:290
 AliMUONPainterDataSourceFrame.cxx:291
 AliMUONPainterDataSourceFrame.cxx:292
 AliMUONPainterDataSourceFrame.cxx:293
 AliMUONPainterDataSourceFrame.cxx:294
 AliMUONPainterDataSourceFrame.cxx:295
 AliMUONPainterDataSourceFrame.cxx:296
 AliMUONPainterDataSourceFrame.cxx:297
 AliMUONPainterDataSourceFrame.cxx:298
 AliMUONPainterDataSourceFrame.cxx:299
 AliMUONPainterDataSourceFrame.cxx:300
 AliMUONPainterDataSourceFrame.cxx:301
 AliMUONPainterDataSourceFrame.cxx:302
 AliMUONPainterDataSourceFrame.cxx:303
 AliMUONPainterDataSourceFrame.cxx:304
 AliMUONPainterDataSourceFrame.cxx:305
 AliMUONPainterDataSourceFrame.cxx:306
 AliMUONPainterDataSourceFrame.cxx:307
 AliMUONPainterDataSourceFrame.cxx:308
 AliMUONPainterDataSourceFrame.cxx:309
 AliMUONPainterDataSourceFrame.cxx:310
 AliMUONPainterDataSourceFrame.cxx:311
 AliMUONPainterDataSourceFrame.cxx:312
 AliMUONPainterDataSourceFrame.cxx:313
 AliMUONPainterDataSourceFrame.cxx:314
 AliMUONPainterDataSourceFrame.cxx:315
 AliMUONPainterDataSourceFrame.cxx:316
 AliMUONPainterDataSourceFrame.cxx:317
 AliMUONPainterDataSourceFrame.cxx:318
 AliMUONPainterDataSourceFrame.cxx:319
 AliMUONPainterDataSourceFrame.cxx:320
 AliMUONPainterDataSourceFrame.cxx:321
 AliMUONPainterDataSourceFrame.cxx:322
 AliMUONPainterDataSourceFrame.cxx:323
 AliMUONPainterDataSourceFrame.cxx:324
 AliMUONPainterDataSourceFrame.cxx:325
 AliMUONPainterDataSourceFrame.cxx:326
 AliMUONPainterDataSourceFrame.cxx:327
 AliMUONPainterDataSourceFrame.cxx:328
 AliMUONPainterDataSourceFrame.cxx:329
 AliMUONPainterDataSourceFrame.cxx:330
 AliMUONPainterDataSourceFrame.cxx:331
 AliMUONPainterDataSourceFrame.cxx:332
 AliMUONPainterDataSourceFrame.cxx:333
 AliMUONPainterDataSourceFrame.cxx:334
 AliMUONPainterDataSourceFrame.cxx:335
 AliMUONPainterDataSourceFrame.cxx:336
 AliMUONPainterDataSourceFrame.cxx:337
 AliMUONPainterDataSourceFrame.cxx:338
 AliMUONPainterDataSourceFrame.cxx:339
 AliMUONPainterDataSourceFrame.cxx:340
 AliMUONPainterDataSourceFrame.cxx:341
 AliMUONPainterDataSourceFrame.cxx:342
 AliMUONPainterDataSourceFrame.cxx:343
 AliMUONPainterDataSourceFrame.cxx:344
 AliMUONPainterDataSourceFrame.cxx:345
 AliMUONPainterDataSourceFrame.cxx:346
 AliMUONPainterDataSourceFrame.cxx:347
 AliMUONPainterDataSourceFrame.cxx:348
 AliMUONPainterDataSourceFrame.cxx:349
 AliMUONPainterDataSourceFrame.cxx:350
 AliMUONPainterDataSourceFrame.cxx:351
 AliMUONPainterDataSourceFrame.cxx:352
 AliMUONPainterDataSourceFrame.cxx:353
 AliMUONPainterDataSourceFrame.cxx:354
 AliMUONPainterDataSourceFrame.cxx:355
 AliMUONPainterDataSourceFrame.cxx:356
 AliMUONPainterDataSourceFrame.cxx:357
 AliMUONPainterDataSourceFrame.cxx:358
 AliMUONPainterDataSourceFrame.cxx:359
 AliMUONPainterDataSourceFrame.cxx:360
 AliMUONPainterDataSourceFrame.cxx:361
 AliMUONPainterDataSourceFrame.cxx:362
 AliMUONPainterDataSourceFrame.cxx:363
 AliMUONPainterDataSourceFrame.cxx:364
 AliMUONPainterDataSourceFrame.cxx:365
 AliMUONPainterDataSourceFrame.cxx:366
 AliMUONPainterDataSourceFrame.cxx:367
 AliMUONPainterDataSourceFrame.cxx:368
 AliMUONPainterDataSourceFrame.cxx:369
 AliMUONPainterDataSourceFrame.cxx:370
 AliMUONPainterDataSourceFrame.cxx:371
 AliMUONPainterDataSourceFrame.cxx:372
 AliMUONPainterDataSourceFrame.cxx:373
 AliMUONPainterDataSourceFrame.cxx:374
 AliMUONPainterDataSourceFrame.cxx:375
 AliMUONPainterDataSourceFrame.cxx:376
 AliMUONPainterDataSourceFrame.cxx:377
 AliMUONPainterDataSourceFrame.cxx:378
 AliMUONPainterDataSourceFrame.cxx:379
 AliMUONPainterDataSourceFrame.cxx:380
 AliMUONPainterDataSourceFrame.cxx:381
 AliMUONPainterDataSourceFrame.cxx:382
 AliMUONPainterDataSourceFrame.cxx:383
 AliMUONPainterDataSourceFrame.cxx:384
 AliMUONPainterDataSourceFrame.cxx:385
 AliMUONPainterDataSourceFrame.cxx:386
 AliMUONPainterDataSourceFrame.cxx:387
 AliMUONPainterDataSourceFrame.cxx:388
 AliMUONPainterDataSourceFrame.cxx:389
 AliMUONPainterDataSourceFrame.cxx:390
 AliMUONPainterDataSourceFrame.cxx:391
 AliMUONPainterDataSourceFrame.cxx:392
 AliMUONPainterDataSourceFrame.cxx:393
 AliMUONPainterDataSourceFrame.cxx:394
 AliMUONPainterDataSourceFrame.cxx:395
 AliMUONPainterDataSourceFrame.cxx:396
 AliMUONPainterDataSourceFrame.cxx:397
 AliMUONPainterDataSourceFrame.cxx:398
 AliMUONPainterDataSourceFrame.cxx:399
 AliMUONPainterDataSourceFrame.cxx:400
 AliMUONPainterDataSourceFrame.cxx:401
 AliMUONPainterDataSourceFrame.cxx:402
 AliMUONPainterDataSourceFrame.cxx:403
 AliMUONPainterDataSourceFrame.cxx:404
 AliMUONPainterDataSourceFrame.cxx:405
 AliMUONPainterDataSourceFrame.cxx:406
 AliMUONPainterDataSourceFrame.cxx:407
 AliMUONPainterDataSourceFrame.cxx:408
 AliMUONPainterDataSourceFrame.cxx:409
 AliMUONPainterDataSourceFrame.cxx:410
 AliMUONPainterDataSourceFrame.cxx:411
 AliMUONPainterDataSourceFrame.cxx:412
 AliMUONPainterDataSourceFrame.cxx:413
 AliMUONPainterDataSourceFrame.cxx:414
 AliMUONPainterDataSourceFrame.cxx:415
 AliMUONPainterDataSourceFrame.cxx:416
 AliMUONPainterDataSourceFrame.cxx:417
 AliMUONPainterDataSourceFrame.cxx:418
 AliMUONPainterDataSourceFrame.cxx:419
 AliMUONPainterDataSourceFrame.cxx:420
 AliMUONPainterDataSourceFrame.cxx:421
 AliMUONPainterDataSourceFrame.cxx:422
 AliMUONPainterDataSourceFrame.cxx:423
 AliMUONPainterDataSourceFrame.cxx:424
 AliMUONPainterDataSourceFrame.cxx:425
 AliMUONPainterDataSourceFrame.cxx:426
 AliMUONPainterDataSourceFrame.cxx:427
 AliMUONPainterDataSourceFrame.cxx:428
 AliMUONPainterDataSourceFrame.cxx:429
 AliMUONPainterDataSourceFrame.cxx:430
 AliMUONPainterDataSourceFrame.cxx:431
 AliMUONPainterDataSourceFrame.cxx:432
 AliMUONPainterDataSourceFrame.cxx:433
 AliMUONPainterDataSourceFrame.cxx:434
 AliMUONPainterDataSourceFrame.cxx:435
 AliMUONPainterDataSourceFrame.cxx:436
 AliMUONPainterDataSourceFrame.cxx:437
 AliMUONPainterDataSourceFrame.cxx:438
 AliMUONPainterDataSourceFrame.cxx:439
 AliMUONPainterDataSourceFrame.cxx:440
 AliMUONPainterDataSourceFrame.cxx:441
 AliMUONPainterDataSourceFrame.cxx:442
 AliMUONPainterDataSourceFrame.cxx:443
 AliMUONPainterDataSourceFrame.cxx:444
 AliMUONPainterDataSourceFrame.cxx:445
 AliMUONPainterDataSourceFrame.cxx:446
 AliMUONPainterDataSourceFrame.cxx:447
 AliMUONPainterDataSourceFrame.cxx:448
 AliMUONPainterDataSourceFrame.cxx:449
 AliMUONPainterDataSourceFrame.cxx:450
 AliMUONPainterDataSourceFrame.cxx:451
 AliMUONPainterDataSourceFrame.cxx:452
 AliMUONPainterDataSourceFrame.cxx:453
 AliMUONPainterDataSourceFrame.cxx:454
 AliMUONPainterDataSourceFrame.cxx:455
 AliMUONPainterDataSourceFrame.cxx:456
 AliMUONPainterDataSourceFrame.cxx:457
 AliMUONPainterDataSourceFrame.cxx:458
 AliMUONPainterDataSourceFrame.cxx:459
 AliMUONPainterDataSourceFrame.cxx:460
 AliMUONPainterDataSourceFrame.cxx:461
 AliMUONPainterDataSourceFrame.cxx:462
 AliMUONPainterDataSourceFrame.cxx:463
 AliMUONPainterDataSourceFrame.cxx:464
 AliMUONPainterDataSourceFrame.cxx:465
 AliMUONPainterDataSourceFrame.cxx:466
 AliMUONPainterDataSourceFrame.cxx:467
 AliMUONPainterDataSourceFrame.cxx:468
 AliMUONPainterDataSourceFrame.cxx:469
 AliMUONPainterDataSourceFrame.cxx:470
 AliMUONPainterDataSourceFrame.cxx:471
 AliMUONPainterDataSourceFrame.cxx:472
 AliMUONPainterDataSourceFrame.cxx:473
 AliMUONPainterDataSourceFrame.cxx:474
 AliMUONPainterDataSourceFrame.cxx:475
 AliMUONPainterDataSourceFrame.cxx:476
 AliMUONPainterDataSourceFrame.cxx:477
 AliMUONPainterDataSourceFrame.cxx:478
 AliMUONPainterDataSourceFrame.cxx:479
 AliMUONPainterDataSourceFrame.cxx:480
 AliMUONPainterDataSourceFrame.cxx:481
 AliMUONPainterDataSourceFrame.cxx:482
 AliMUONPainterDataSourceFrame.cxx:483
 AliMUONPainterDataSourceFrame.cxx:484
 AliMUONPainterDataSourceFrame.cxx:485
 AliMUONPainterDataSourceFrame.cxx:486
 AliMUONPainterDataSourceFrame.cxx:487
 AliMUONPainterDataSourceFrame.cxx:488
 AliMUONPainterDataSourceFrame.cxx:489
 AliMUONPainterDataSourceFrame.cxx:490
 AliMUONPainterDataSourceFrame.cxx:491
 AliMUONPainterDataSourceFrame.cxx:492
 AliMUONPainterDataSourceFrame.cxx:493
 AliMUONPainterDataSourceFrame.cxx:494
 AliMUONPainterDataSourceFrame.cxx:495
 AliMUONPainterDataSourceFrame.cxx:496
 AliMUONPainterDataSourceFrame.cxx:497
 AliMUONPainterDataSourceFrame.cxx:498
 AliMUONPainterDataSourceFrame.cxx:499
 AliMUONPainterDataSourceFrame.cxx:500
 AliMUONPainterDataSourceFrame.cxx:501
 AliMUONPainterDataSourceFrame.cxx:502
 AliMUONPainterDataSourceFrame.cxx:503
 AliMUONPainterDataSourceFrame.cxx:504
 AliMUONPainterDataSourceFrame.cxx:505
 AliMUONPainterDataSourceFrame.cxx:506
 AliMUONPainterDataSourceFrame.cxx:507
 AliMUONPainterDataSourceFrame.cxx:508
 AliMUONPainterDataSourceFrame.cxx:509
 AliMUONPainterDataSourceFrame.cxx:510
 AliMUONPainterDataSourceFrame.cxx:511
 AliMUONPainterDataSourceFrame.cxx:512
 AliMUONPainterDataSourceFrame.cxx:513
 AliMUONPainterDataSourceFrame.cxx:514
 AliMUONPainterDataSourceFrame.cxx:515
 AliMUONPainterDataSourceFrame.cxx:516
 AliMUONPainterDataSourceFrame.cxx:517
 AliMUONPainterDataSourceFrame.cxx:518
 AliMUONPainterDataSourceFrame.cxx:519
 AliMUONPainterDataSourceFrame.cxx:520
 AliMUONPainterDataSourceFrame.cxx:521
 AliMUONPainterDataSourceFrame.cxx:522
 AliMUONPainterDataSourceFrame.cxx:523
 AliMUONPainterDataSourceFrame.cxx:524
 AliMUONPainterDataSourceFrame.cxx:525
 AliMUONPainterDataSourceFrame.cxx:526
 AliMUONPainterDataSourceFrame.cxx:527
 AliMUONPainterDataSourceFrame.cxx:528
 AliMUONPainterDataSourceFrame.cxx:529
 AliMUONPainterDataSourceFrame.cxx:530
 AliMUONPainterDataSourceFrame.cxx:531
 AliMUONPainterDataSourceFrame.cxx:532
 AliMUONPainterDataSourceFrame.cxx:533
 AliMUONPainterDataSourceFrame.cxx:534
 AliMUONPainterDataSourceFrame.cxx:535
 AliMUONPainterDataSourceFrame.cxx:536
 AliMUONPainterDataSourceFrame.cxx:537
 AliMUONPainterDataSourceFrame.cxx:538
 AliMUONPainterDataSourceFrame.cxx:539
 AliMUONPainterDataSourceFrame.cxx:540
 AliMUONPainterDataSourceFrame.cxx:541
 AliMUONPainterDataSourceFrame.cxx:542
 AliMUONPainterDataSourceFrame.cxx:543
 AliMUONPainterDataSourceFrame.cxx:544
 AliMUONPainterDataSourceFrame.cxx:545
 AliMUONPainterDataSourceFrame.cxx:546
 AliMUONPainterDataSourceFrame.cxx:547
 AliMUONPainterDataSourceFrame.cxx:548
 AliMUONPainterDataSourceFrame.cxx:549
 AliMUONPainterDataSourceFrame.cxx:550
 AliMUONPainterDataSourceFrame.cxx:551
 AliMUONPainterDataSourceFrame.cxx:552
 AliMUONPainterDataSourceFrame.cxx:553
 AliMUONPainterDataSourceFrame.cxx:554
 AliMUONPainterDataSourceFrame.cxx:555
 AliMUONPainterDataSourceFrame.cxx:556
 AliMUONPainterDataSourceFrame.cxx:557
 AliMUONPainterDataSourceFrame.cxx:558
 AliMUONPainterDataSourceFrame.cxx:559
 AliMUONPainterDataSourceFrame.cxx:560
 AliMUONPainterDataSourceFrame.cxx:561
 AliMUONPainterDataSourceFrame.cxx:562
 AliMUONPainterDataSourceFrame.cxx:563
 AliMUONPainterDataSourceFrame.cxx:564
 AliMUONPainterDataSourceFrame.cxx:565
 AliMUONPainterDataSourceFrame.cxx:566
 AliMUONPainterDataSourceFrame.cxx:567
 AliMUONPainterDataSourceFrame.cxx:568
 AliMUONPainterDataSourceFrame.cxx:569
 AliMUONPainterDataSourceFrame.cxx:570
 AliMUONPainterDataSourceFrame.cxx:571
 AliMUONPainterDataSourceFrame.cxx:572
 AliMUONPainterDataSourceFrame.cxx:573
 AliMUONPainterDataSourceFrame.cxx:574
 AliMUONPainterDataSourceFrame.cxx:575
 AliMUONPainterDataSourceFrame.cxx:576
 AliMUONPainterDataSourceFrame.cxx:577
 AliMUONPainterDataSourceFrame.cxx:578
 AliMUONPainterDataSourceFrame.cxx:579
 AliMUONPainterDataSourceFrame.cxx:580
 AliMUONPainterDataSourceFrame.cxx:581
 AliMUONPainterDataSourceFrame.cxx:582
 AliMUONPainterDataSourceFrame.cxx:583
 AliMUONPainterDataSourceFrame.cxx:584
 AliMUONPainterDataSourceFrame.cxx:585
 AliMUONPainterDataSourceFrame.cxx:586
 AliMUONPainterDataSourceFrame.cxx:587
 AliMUONPainterDataSourceFrame.cxx:588
 AliMUONPainterDataSourceFrame.cxx:589
 AliMUONPainterDataSourceFrame.cxx:590
 AliMUONPainterDataSourceFrame.cxx:591
 AliMUONPainterDataSourceFrame.cxx:592
 AliMUONPainterDataSourceFrame.cxx:593
 AliMUONPainterDataSourceFrame.cxx:594
 AliMUONPainterDataSourceFrame.cxx:595
 AliMUONPainterDataSourceFrame.cxx:596
 AliMUONPainterDataSourceFrame.cxx:597
 AliMUONPainterDataSourceFrame.cxx:598
 AliMUONPainterDataSourceFrame.cxx:599
 AliMUONPainterDataSourceFrame.cxx:600
 AliMUONPainterDataSourceFrame.cxx:601
 AliMUONPainterDataSourceFrame.cxx:602
 AliMUONPainterDataSourceFrame.cxx:603
 AliMUONPainterDataSourceFrame.cxx:604
 AliMUONPainterDataSourceFrame.cxx:605
 AliMUONPainterDataSourceFrame.cxx:606
 AliMUONPainterDataSourceFrame.cxx:607
 AliMUONPainterDataSourceFrame.cxx:608
 AliMUONPainterDataSourceFrame.cxx:609
 AliMUONPainterDataSourceFrame.cxx:610
 AliMUONPainterDataSourceFrame.cxx:611
 AliMUONPainterDataSourceFrame.cxx:612
 AliMUONPainterDataSourceFrame.cxx:613
 AliMUONPainterDataSourceFrame.cxx:614
 AliMUONPainterDataSourceFrame.cxx:615
 AliMUONPainterDataSourceFrame.cxx:616
 AliMUONPainterDataSourceFrame.cxx:617
 AliMUONPainterDataSourceFrame.cxx:618
 AliMUONPainterDataSourceFrame.cxx:619
 AliMUONPainterDataSourceFrame.cxx:620
 AliMUONPainterDataSourceFrame.cxx:621
 AliMUONPainterDataSourceFrame.cxx:622
 AliMUONPainterDataSourceFrame.cxx:623
 AliMUONPainterDataSourceFrame.cxx:624
 AliMUONPainterDataSourceFrame.cxx:625
 AliMUONPainterDataSourceFrame.cxx:626
 AliMUONPainterDataSourceFrame.cxx:627
 AliMUONPainterDataSourceFrame.cxx:628
 AliMUONPainterDataSourceFrame.cxx:629
 AliMUONPainterDataSourceFrame.cxx:630
 AliMUONPainterDataSourceFrame.cxx:631
 AliMUONPainterDataSourceFrame.cxx:632
 AliMUONPainterDataSourceFrame.cxx:633
 AliMUONPainterDataSourceFrame.cxx:634
 AliMUONPainterDataSourceFrame.cxx:635
 AliMUONPainterDataSourceFrame.cxx:636
 AliMUONPainterDataSourceFrame.cxx:637
 AliMUONPainterDataSourceFrame.cxx:638
 AliMUONPainterDataSourceFrame.cxx:639
 AliMUONPainterDataSourceFrame.cxx:640
 AliMUONPainterDataSourceFrame.cxx:641
 AliMUONPainterDataSourceFrame.cxx:642
 AliMUONPainterDataSourceFrame.cxx:643
 AliMUONPainterDataSourceFrame.cxx:644
 AliMUONPainterDataSourceFrame.cxx:645
 AliMUONPainterDataSourceFrame.cxx:646
 AliMUONPainterDataSourceFrame.cxx:647
 AliMUONPainterDataSourceFrame.cxx:648
 AliMUONPainterDataSourceFrame.cxx:649
 AliMUONPainterDataSourceFrame.cxx:650
 AliMUONPainterDataSourceFrame.cxx:651
 AliMUONPainterDataSourceFrame.cxx:652
 AliMUONPainterDataSourceFrame.cxx:653
 AliMUONPainterDataSourceFrame.cxx:654
 AliMUONPainterDataSourceFrame.cxx:655
 AliMUONPainterDataSourceFrame.cxx:656
 AliMUONPainterDataSourceFrame.cxx:657
 AliMUONPainterDataSourceFrame.cxx:658
 AliMUONPainterDataSourceFrame.cxx:659
 AliMUONPainterDataSourceFrame.cxx:660
 AliMUONPainterDataSourceFrame.cxx:661
 AliMUONPainterDataSourceFrame.cxx:662
 AliMUONPainterDataSourceFrame.cxx:663
 AliMUONPainterDataSourceFrame.cxx:664
 AliMUONPainterDataSourceFrame.cxx:665
 AliMUONPainterDataSourceFrame.cxx:666
 AliMUONPainterDataSourceFrame.cxx:667
 AliMUONPainterDataSourceFrame.cxx:668
 AliMUONPainterDataSourceFrame.cxx:669
 AliMUONPainterDataSourceFrame.cxx:670
 AliMUONPainterDataSourceFrame.cxx:671
 AliMUONPainterDataSourceFrame.cxx:672
 AliMUONPainterDataSourceFrame.cxx:673
 AliMUONPainterDataSourceFrame.cxx:674
 AliMUONPainterDataSourceFrame.cxx:675
 AliMUONPainterDataSourceFrame.cxx:676
 AliMUONPainterDataSourceFrame.cxx:677
 AliMUONPainterDataSourceFrame.cxx:678
 AliMUONPainterDataSourceFrame.cxx:679
 AliMUONPainterDataSourceFrame.cxx:680
 AliMUONPainterDataSourceFrame.cxx:681
 AliMUONPainterDataSourceFrame.cxx:682
 AliMUONPainterDataSourceFrame.cxx:683
 AliMUONPainterDataSourceFrame.cxx:684
 AliMUONPainterDataSourceFrame.cxx:685
 AliMUONPainterDataSourceFrame.cxx:686
 AliMUONPainterDataSourceFrame.cxx:687
 AliMUONPainterDataSourceFrame.cxx:688
 AliMUONPainterDataSourceFrame.cxx:689
 AliMUONPainterDataSourceFrame.cxx:690
 AliMUONPainterDataSourceFrame.cxx:691
 AliMUONPainterDataSourceFrame.cxx:692
 AliMUONPainterDataSourceFrame.cxx:693
 AliMUONPainterDataSourceFrame.cxx:694
 AliMUONPainterDataSourceFrame.cxx:695
 AliMUONPainterDataSourceFrame.cxx:696
 AliMUONPainterDataSourceFrame.cxx:697
 AliMUONPainterDataSourceFrame.cxx:698
 AliMUONPainterDataSourceFrame.cxx:699
 AliMUONPainterDataSourceFrame.cxx:700
 AliMUONPainterDataSourceFrame.cxx:701
 AliMUONPainterDataSourceFrame.cxx:702
 AliMUONPainterDataSourceFrame.cxx:703
 AliMUONPainterDataSourceFrame.cxx:704
 AliMUONPainterDataSourceFrame.cxx:705
 AliMUONPainterDataSourceFrame.cxx:706
 AliMUONPainterDataSourceFrame.cxx:707
 AliMUONPainterDataSourceFrame.cxx:708
 AliMUONPainterDataSourceFrame.cxx:709
 AliMUONPainterDataSourceFrame.cxx:710
 AliMUONPainterDataSourceFrame.cxx:711
 AliMUONPainterDataSourceFrame.cxx:712
 AliMUONPainterDataSourceFrame.cxx:713
 AliMUONPainterDataSourceFrame.cxx:714
 AliMUONPainterDataSourceFrame.cxx:715
 AliMUONPainterDataSourceFrame.cxx:716
 AliMUONPainterDataSourceFrame.cxx:717
 AliMUONPainterDataSourceFrame.cxx:718
 AliMUONPainterDataSourceFrame.cxx:719
 AliMUONPainterDataSourceFrame.cxx:720
 AliMUONPainterDataSourceFrame.cxx:721
 AliMUONPainterDataSourceFrame.cxx:722
 AliMUONPainterDataSourceFrame.cxx:723
 AliMUONPainterDataSourceFrame.cxx:724
 AliMUONPainterDataSourceFrame.cxx:725
 AliMUONPainterDataSourceFrame.cxx:726
 AliMUONPainterDataSourceFrame.cxx:727
 AliMUONPainterDataSourceFrame.cxx:728
 AliMUONPainterDataSourceFrame.cxx:729
 AliMUONPainterDataSourceFrame.cxx:730
 AliMUONPainterDataSourceFrame.cxx:731
 AliMUONPainterDataSourceFrame.cxx:732
 AliMUONPainterDataSourceFrame.cxx:733
 AliMUONPainterDataSourceFrame.cxx:734
 AliMUONPainterDataSourceFrame.cxx:735
 AliMUONPainterDataSourceFrame.cxx:736
 AliMUONPainterDataSourceFrame.cxx:737
 AliMUONPainterDataSourceFrame.cxx:738
 AliMUONPainterDataSourceFrame.cxx:739
 AliMUONPainterDataSourceFrame.cxx:740
 AliMUONPainterDataSourceFrame.cxx:741
 AliMUONPainterDataSourceFrame.cxx:742
 AliMUONPainterDataSourceFrame.cxx:743
 AliMUONPainterDataSourceFrame.cxx:744
 AliMUONPainterDataSourceFrame.cxx:745
 AliMUONPainterDataSourceFrame.cxx:746
 AliMUONPainterDataSourceFrame.cxx:747
 AliMUONPainterDataSourceFrame.cxx:748
 AliMUONPainterDataSourceFrame.cxx:749
 AliMUONPainterDataSourceFrame.cxx:750
 AliMUONPainterDataSourceFrame.cxx:751
 AliMUONPainterDataSourceFrame.cxx:752
 AliMUONPainterDataSourceFrame.cxx:753
 AliMUONPainterDataSourceFrame.cxx:754
 AliMUONPainterDataSourceFrame.cxx:755
 AliMUONPainterDataSourceFrame.cxx:756
 AliMUONPainterDataSourceFrame.cxx:757
 AliMUONPainterDataSourceFrame.cxx:758
 AliMUONPainterDataSourceFrame.cxx:759
 AliMUONPainterDataSourceFrame.cxx:760
 AliMUONPainterDataSourceFrame.cxx:761
 AliMUONPainterDataSourceFrame.cxx:762
 AliMUONPainterDataSourceFrame.cxx:763
 AliMUONPainterDataSourceFrame.cxx:764
 AliMUONPainterDataSourceFrame.cxx:765
 AliMUONPainterDataSourceFrame.cxx:766
 AliMUONPainterDataSourceFrame.cxx:767
 AliMUONPainterDataSourceFrame.cxx:768
 AliMUONPainterDataSourceFrame.cxx:769
 AliMUONPainterDataSourceFrame.cxx:770
 AliMUONPainterDataSourceFrame.cxx:771
 AliMUONPainterDataSourceFrame.cxx:772
 AliMUONPainterDataSourceFrame.cxx:773
 AliMUONPainterDataSourceFrame.cxx:774
 AliMUONPainterDataSourceFrame.cxx:775
 AliMUONPainterDataSourceFrame.cxx:776
 AliMUONPainterDataSourceFrame.cxx:777
 AliMUONPainterDataSourceFrame.cxx:778
 AliMUONPainterDataSourceFrame.cxx:779
 AliMUONPainterDataSourceFrame.cxx:780
 AliMUONPainterDataSourceFrame.cxx:781
 AliMUONPainterDataSourceFrame.cxx:782
 AliMUONPainterDataSourceFrame.cxx:783
 AliMUONPainterDataSourceFrame.cxx:784
 AliMUONPainterDataSourceFrame.cxx:785
 AliMUONPainterDataSourceFrame.cxx:786
 AliMUONPainterDataSourceFrame.cxx:787
 AliMUONPainterDataSourceFrame.cxx:788
 AliMUONPainterDataSourceFrame.cxx:789
 AliMUONPainterDataSourceFrame.cxx:790
 AliMUONPainterDataSourceFrame.cxx:791
 AliMUONPainterDataSourceFrame.cxx:792
 AliMUONPainterDataSourceFrame.cxx:793
 AliMUONPainterDataSourceFrame.cxx:794
 AliMUONPainterDataSourceFrame.cxx:795
 AliMUONPainterDataSourceFrame.cxx:796
 AliMUONPainterDataSourceFrame.cxx:797
 AliMUONPainterDataSourceFrame.cxx:798
 AliMUONPainterDataSourceFrame.cxx:799
 AliMUONPainterDataSourceFrame.cxx:800
 AliMUONPainterDataSourceFrame.cxx:801
 AliMUONPainterDataSourceFrame.cxx:802
 AliMUONPainterDataSourceFrame.cxx:803
 AliMUONPainterDataSourceFrame.cxx:804
 AliMUONPainterDataSourceFrame.cxx:805
 AliMUONPainterDataSourceFrame.cxx:806
 AliMUONPainterDataSourceFrame.cxx:807
 AliMUONPainterDataSourceFrame.cxx:808
 AliMUONPainterDataSourceFrame.cxx:809
 AliMUONPainterDataSourceFrame.cxx:810
 AliMUONPainterDataSourceFrame.cxx:811
 AliMUONPainterDataSourceFrame.cxx:812
 AliMUONPainterDataSourceFrame.cxx:813
 AliMUONPainterDataSourceFrame.cxx:814
 AliMUONPainterDataSourceFrame.cxx:815
 AliMUONPainterDataSourceFrame.cxx:816
 AliMUONPainterDataSourceFrame.cxx:817
 AliMUONPainterDataSourceFrame.cxx:818
 AliMUONPainterDataSourceFrame.cxx:819
 AliMUONPainterDataSourceFrame.cxx:820
 AliMUONPainterDataSourceFrame.cxx:821
 AliMUONPainterDataSourceFrame.cxx:822
 AliMUONPainterDataSourceFrame.cxx:823
 AliMUONPainterDataSourceFrame.cxx:824
 AliMUONPainterDataSourceFrame.cxx:825
 AliMUONPainterDataSourceFrame.cxx:826
 AliMUONPainterDataSourceFrame.cxx:827
 AliMUONPainterDataSourceFrame.cxx:828
 AliMUONPainterDataSourceFrame.cxx:829
 AliMUONPainterDataSourceFrame.cxx:830
 AliMUONPainterDataSourceFrame.cxx:831
 AliMUONPainterDataSourceFrame.cxx:832
 AliMUONPainterDataSourceFrame.cxx:833
 AliMUONPainterDataSourceFrame.cxx:834
 AliMUONPainterDataSourceFrame.cxx:835
 AliMUONPainterDataSourceFrame.cxx:836
 AliMUONPainterDataSourceFrame.cxx:837
 AliMUONPainterDataSourceFrame.cxx:838
 AliMUONPainterDataSourceFrame.cxx:839
 AliMUONPainterDataSourceFrame.cxx:840
 AliMUONPainterDataSourceFrame.cxx:841
 AliMUONPainterDataSourceFrame.cxx:842
 AliMUONPainterDataSourceFrame.cxx:843
 AliMUONPainterDataSourceFrame.cxx:844
 AliMUONPainterDataSourceFrame.cxx:845
 AliMUONPainterDataSourceFrame.cxx:846
 AliMUONPainterDataSourceFrame.cxx:847
 AliMUONPainterDataSourceFrame.cxx:848
 AliMUONPainterDataSourceFrame.cxx:849
 AliMUONPainterDataSourceFrame.cxx:850
 AliMUONPainterDataSourceFrame.cxx:851
 AliMUONPainterDataSourceFrame.cxx:852
 AliMUONPainterDataSourceFrame.cxx:853
 AliMUONPainterDataSourceFrame.cxx:854
 AliMUONPainterDataSourceFrame.cxx:855
 AliMUONPainterDataSourceFrame.cxx:856
 AliMUONPainterDataSourceFrame.cxx:857
 AliMUONPainterDataSourceFrame.cxx:858
 AliMUONPainterDataSourceFrame.cxx:859
 AliMUONPainterDataSourceFrame.cxx:860
 AliMUONPainterDataSourceFrame.cxx:861
 AliMUONPainterDataSourceFrame.cxx:862
 AliMUONPainterDataSourceFrame.cxx:863
 AliMUONPainterDataSourceFrame.cxx:864
 AliMUONPainterDataSourceFrame.cxx:865
 AliMUONPainterDataSourceFrame.cxx:866
 AliMUONPainterDataSourceFrame.cxx:867
 AliMUONPainterDataSourceFrame.cxx:868
 AliMUONPainterDataSourceFrame.cxx:869
 AliMUONPainterDataSourceFrame.cxx:870
 AliMUONPainterDataSourceFrame.cxx:871
 AliMUONPainterDataSourceFrame.cxx:872
 AliMUONPainterDataSourceFrame.cxx:873
 AliMUONPainterDataSourceFrame.cxx:874
 AliMUONPainterDataSourceFrame.cxx:875
 AliMUONPainterDataSourceFrame.cxx:876
 AliMUONPainterDataSourceFrame.cxx:877
 AliMUONPainterDataSourceFrame.cxx:878
 AliMUONPainterDataSourceFrame.cxx:879
 AliMUONPainterDataSourceFrame.cxx:880
 AliMUONPainterDataSourceFrame.cxx:881
 AliMUONPainterDataSourceFrame.cxx:882
 AliMUONPainterDataSourceFrame.cxx:883
 AliMUONPainterDataSourceFrame.cxx:884
 AliMUONPainterDataSourceFrame.cxx:885
 AliMUONPainterDataSourceFrame.cxx:886
 AliMUONPainterDataSourceFrame.cxx:887
 AliMUONPainterDataSourceFrame.cxx:888
 AliMUONPainterDataSourceFrame.cxx:889
 AliMUONPainterDataSourceFrame.cxx:890
 AliMUONPainterDataSourceFrame.cxx:891
 AliMUONPainterDataSourceFrame.cxx:892
 AliMUONPainterDataSourceFrame.cxx:893
 AliMUONPainterDataSourceFrame.cxx:894
 AliMUONPainterDataSourceFrame.cxx:895
 AliMUONPainterDataSourceFrame.cxx:896
 AliMUONPainterDataSourceFrame.cxx:897
 AliMUONPainterDataSourceFrame.cxx:898
 AliMUONPainterDataSourceFrame.cxx:899
 AliMUONPainterDataSourceFrame.cxx:900
 AliMUONPainterDataSourceFrame.cxx:901
 AliMUONPainterDataSourceFrame.cxx:902
 AliMUONPainterDataSourceFrame.cxx:903
 AliMUONPainterDataSourceFrame.cxx:904
 AliMUONPainterDataSourceFrame.cxx:905
 AliMUONPainterDataSourceFrame.cxx:906
 AliMUONPainterDataSourceFrame.cxx:907
 AliMUONPainterDataSourceFrame.cxx:908
 AliMUONPainterDataSourceFrame.cxx:909
 AliMUONPainterDataSourceFrame.cxx:910
 AliMUONPainterDataSourceFrame.cxx:911
 AliMUONPainterDataSourceFrame.cxx:912
 AliMUONPainterDataSourceFrame.cxx:913
 AliMUONPainterDataSourceFrame.cxx:914
 AliMUONPainterDataSourceFrame.cxx:915
 AliMUONPainterDataSourceFrame.cxx:916
 AliMUONPainterDataSourceFrame.cxx:917
 AliMUONPainterDataSourceFrame.cxx:918
 AliMUONPainterDataSourceFrame.cxx:919
 AliMUONPainterDataSourceFrame.cxx:920
 AliMUONPainterDataSourceFrame.cxx:921
 AliMUONPainterDataSourceFrame.cxx:922
 AliMUONPainterDataSourceFrame.cxx:923
 AliMUONPainterDataSourceFrame.cxx:924
 AliMUONPainterDataSourceFrame.cxx:925
 AliMUONPainterDataSourceFrame.cxx:926
 AliMUONPainterDataSourceFrame.cxx:927
 AliMUONPainterDataSourceFrame.cxx:928
 AliMUONPainterDataSourceFrame.cxx:929
 AliMUONPainterDataSourceFrame.cxx:930
 AliMUONPainterDataSourceFrame.cxx:931
 AliMUONPainterDataSourceFrame.cxx:932
 AliMUONPainterDataSourceFrame.cxx:933
 AliMUONPainterDataSourceFrame.cxx:934
 AliMUONPainterDataSourceFrame.cxx:935
 AliMUONPainterDataSourceFrame.cxx:936
 AliMUONPainterDataSourceFrame.cxx:937
 AliMUONPainterDataSourceFrame.cxx:938
 AliMUONPainterDataSourceFrame.cxx:939
 AliMUONPainterDataSourceFrame.cxx:940
 AliMUONPainterDataSourceFrame.cxx:941
 AliMUONPainterDataSourceFrame.cxx:942
 AliMUONPainterDataSourceFrame.cxx:943
 AliMUONPainterDataSourceFrame.cxx:944
 AliMUONPainterDataSourceFrame.cxx:945
 AliMUONPainterDataSourceFrame.cxx:946
 AliMUONPainterDataSourceFrame.cxx:947
 AliMUONPainterDataSourceFrame.cxx:948
 AliMUONPainterDataSourceFrame.cxx:949
 AliMUONPainterDataSourceFrame.cxx:950
 AliMUONPainterDataSourceFrame.cxx:951
 AliMUONPainterDataSourceFrame.cxx:952
 AliMUONPainterDataSourceFrame.cxx:953
 AliMUONPainterDataSourceFrame.cxx:954
 AliMUONPainterDataSourceFrame.cxx:955
 AliMUONPainterDataSourceFrame.cxx:956
 AliMUONPainterDataSourceFrame.cxx:957
 AliMUONPainterDataSourceFrame.cxx:958
 AliMUONPainterDataSourceFrame.cxx:959
 AliMUONPainterDataSourceFrame.cxx:960
 AliMUONPainterDataSourceFrame.cxx:961
 AliMUONPainterDataSourceFrame.cxx:962
 AliMUONPainterDataSourceFrame.cxx:963
 AliMUONPainterDataSourceFrame.cxx:964
 AliMUONPainterDataSourceFrame.cxx:965
 AliMUONPainterDataSourceFrame.cxx:966
 AliMUONPainterDataSourceFrame.cxx:967
 AliMUONPainterDataSourceFrame.cxx:968
 AliMUONPainterDataSourceFrame.cxx:969
 AliMUONPainterDataSourceFrame.cxx:970
 AliMUONPainterDataSourceFrame.cxx:971
 AliMUONPainterDataSourceFrame.cxx:972
 AliMUONPainterDataSourceFrame.cxx:973
 AliMUONPainterDataSourceFrame.cxx:974
 AliMUONPainterDataSourceFrame.cxx:975
 AliMUONPainterDataSourceFrame.cxx:976