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

#include "AliCodeTimer.h"
#include "AliDAQ.h"
#include "AliLog.h"
#include "AliMUONContour.h"
#include "AliMUONContourHandler.h"
#include "AliMUONContourMaker.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONManuContourMaker.h"
#include "AliMUONPainterEnv.h"
#include "AliMUONPainterRegistry.h"
#include "AliMUONPadStatusMaker.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONVDigit.h"
#include "AliMUONVTrackerData.h"
#include "AliMpCDB.h"
#include "AliMpConstants.h"
#include "AliMpDDLStore.h"
#include "AliMpDEIterator.h"
#include "AliMpDEManager.h"
#include "AliMpDetElement.h"
#include "AliMpExMap.h"
#include "AliMpMotifMap.h"
#include "AliMpMotifPosition.h"
#include "AliMpPCB.h"
#include "AliMpPad.h"
#include "AliMpSector.h"
#include "AliMpSegmentation.h"
#include "AliMpSlat.h"
#include "AliMpStationType.h"
#include "AliMpVPadIterator.h"
#include <Riostream.h>
#include <TArrayI.h>
#include <TCanvas.h>
#include <TClass.h>
#include <TCollection.h>
#include <TFile.h>
#include <TGLabel.h>
#include <TGMsgBox.h>
#include <TGeoMatrix.h>
#include <TLine.h>
#include <TList.h>
#include <TMap.h>
#include <TMath.h>
#include <TObjArray.h>
#include <TObjString.h>
#include <TStyle.h>
#include <TSystem.h>
#include <TVector2.h>
#include <TVector3.h>
#include <TVirtualPad.h>
#include <TVirtualX.h>

#include "AliMUONChamberPainter.h"

///\class AliMUONPainterHelper
///
/// Helper class for painters
///
///\author Laurent Aphecetche, Subatech

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

AliMUONPainterHelper* AliMUONPainterHelper::fgInstance(0x0);

//_____________________________________________________________________________
AliMUONPainterHelper::AliMUONPainterHelper() : 
TObject(),
fEnv(0x0),
fReal(0x0),
fExploded(0x0)
{
  /// ctor
  
  if ( ! AliMpCDB::LoadMpSegmentation() ) 
  {
    AliFatal("Could not access mapping from OCDB !");
  }
  
  // Load DDL store
  if ( ! AliMpCDB::LoadDDLStore() ) 
  {
    AliFatal("Could not access DDL Store from OCDB !");
  }  
}

//_____________________________________________________________________________
AliMUONPainterHelper::~AliMUONPainterHelper()
{
  /// dtor
  delete fReal;
  delete fExploded;
  fEnv->Save();
  fgInstance = 0;
}

//_____________________________________________________________________________
AliMUONContourHandler*
AliMUONPainterHelper::Exploded() const
{
  /// Create exploded contour handler
  if (!fExploded) fExploded = new AliMUONContourHandler(kTRUE);
  return fExploded;
}

//_____________________________________________________________________________
AliMUONContourHandler*
AliMUONPainterHelper::Real() const
{
  /// Create real contour handler
  if (!fReal) fReal = new AliMUONContourHandler(kFALSE);
  return fReal;
}

//_____________________________________________________________________________
AliMUONContour*
AliMUONPainterHelper::GetContour(const char* contourName, Bool_t explodedView) const
{
  /// Get a contour by name  
  if (explodedView) 
  {
    return Exploded()->GetContour(contourName);
  }
  else
  {
    if ( fReal ) 
    {
      return fReal->GetContour(contourName);
    }
  }
  return 0x0;
}


//_____________________________________________________________________________
AliMp::CathodType
AliMUONPainterHelper::GetCathodeType(Int_t detElemId, Int_t manuId) const
{
  /// Get the cathode type of a given manu
  
  AliMp::PlaneType planeType(AliMp::kBendingPlane);
  if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) )
  {
    planeType = AliMp::kNonBendingPlane;
  }
  return AliMpDEManager::GetCathod(detElemId,planeType);
}


//_____________________________________________________________________________
AliMpMotifPosition* 
AliMUONPainterHelper::GetMotifPosition(Int_t detElemId, Int_t manuId) const
{
  /// Get a given motif position
  const AliMpVSegmentation* vseg = AliMpSegmentation::Instance()->GetMpSegmentationByElectronics(detElemId,manuId);
  if (vseg)
  {
    return vseg->MotifPosition(manuId);
  }
  return 0x0;
}

//_____________________________________________________________________________
AliMpPCB*
AliMUONPainterHelper::GetPCB(Int_t detElemId, AliMp::CathodType cathodeType, 
                             Int_t pcbNumber) const
{
  /// Get a given PCB
  const AliMpSlat* slat = GetSlat(detElemId,cathodeType);
  if ( slat ) return slat->GetPCB(pcbNumber);
  return 0x0;
}

//_____________________________________________________________________________
AliMpPCB*
AliMUONPainterHelper::GetPCB(Int_t detElemId, AliMp::PlaneType planeType, 
                             Int_t pcbNumber) const
{
  /// Get a given PCB
  AliMp::CathodType cathodeType = AliMpDEManager::GetCathod(detElemId,
                                                            planeType);
  return GetPCB(detElemId,cathodeType,pcbNumber);
}

//_____________________________________________________________________________
AliMp::PlaneType
AliMUONPainterHelper::GetPlaneType(Int_t manuId) const
{
  /// Get the planeType of a given manu
  
  if ( manuId & AliMpConstants::ManuMask(AliMp::kNonBendingPlane) )
  {
    return AliMp::kNonBendingPlane;
  }
  return AliMp::kBendingPlane;
}

//_____________________________________________________________________________
const AliMpSlat*
AliMUONPainterHelper::GetSlat(Int_t detElemId, AliMp::PlaneType planeType) const
{
  /// Get a given slat
  
  AliMp::CathodType cathodeType = AliMpDEManager::GetCathod(detElemId,
                                                          planeType);

  return GetSlat(detElemId,cathodeType);
}

//_____________________________________________________________________________
const AliMpSector*
AliMUONPainterHelper::GetSector(Int_t detElemId, AliMp::PlaneType planeType) const
{
  /// Get a given sector
  AliMp::StationType stationType = AliMpDEManager::GetStationType(detElemId);
  if ( stationType != AliMp::kStation12 ) return 0x0;
  
  AliMp::CathodType cathodeType = AliMpDEManager::GetCathod(detElemId,planeType);
  
  return AliMpSegmentation::Instance()->GetSector(detElemId,cathodeType);
}

//_____________________________________________________________________________
const AliMpSlat*
AliMUONPainterHelper::GetSlat(Int_t detElemId, AliMp::CathodType cathodeType) const
{
  /// Get a given slat
  AliMp::StationType stationType = AliMpDEManager::GetStationType(detElemId);
  if ( stationType != AliMp::kStation345 ) return 0x0;

  return AliMpSegmentation::Instance()->GetSlat(detElemId,cathodeType);
}

//_____________________________________________________________________________
const AliMpSlat*
AliMUONPainterHelper::GetSlat(Int_t detElemId, Int_t manuId) const
{
  /// Get a given slat
  AliMp::StationType stationType = AliMpDEManager::GetStationType(detElemId);
  if ( stationType != AliMp::kStation345 ) return 0x0;

  return AliMpSegmentation::Instance()->GetSlatByElectronics(detElemId,manuId);
}

//_____________________________________________________________________________
AliMUONPainterHelper*
AliMUONPainterHelper::Instance()
{
  /// Return the global and unique instance of this class
  
  if (fgInstance) return fgInstance;

  AliCodeTimerAutoClass("",0);

  fgInstance = new AliMUONPainterHelper;
  fgInstance->fEnv = new AliMUONPainterEnv;
  return fgInstance;
}

//_____________________________________________________________________________
void 
AliMUONPainterHelper::Global2Local(Int_t detElemId, 
                                    Double_t xg, Double_t yg, Double_t zg,
                                    Double_t& xl, Double_t& yl, Double_t& zl) const
{
  /// Local to global transformation of coordinates
  
  TGeoHMatrix* matrix = static_cast<TGeoHMatrix*>(Exploded()->GetTransformations()->GetValue(detElemId));
  Double_t pg[3] = { xg, yg, zg };
  Double_t pl[3] = { 0., 0., 0. };
  matrix->MasterToLocal(pg, pl);
  xl = pl[0];
  yl = pl[1];
  zl = pl[2];
}

//_____________________________________________________________________________
void 
AliMUONPainterHelper::Local2Global(Int_t detElemId, 
                                   Double_t xl, Double_t yl, Double_t zl,
                                   Double_t& xg, Double_t& yg, Double_t& zg) const
{
  /// Local to (exploded) global transformation of coordinates
  
  TGeoHMatrix* matrix = static_cast<TGeoHMatrix*>(Exploded()->GetTransformations()->GetValue(detElemId));
  Double_t pl[3] = { xl, yl, zl };
  Double_t pg[3] = { 0., 0., 0. };
  matrix->LocalToMaster(pl, pg);
  xg = pg[0];
  yg = pg[1];
  zg = pg[2];
}

//_____________________________________________________________________________
Int_t
AliMUONPainterHelper::ColorFromValue(Double_t value, Double_t min, Double_t max) const
{ 
  /// Convert a value into a color, fitting within a given range
  
  Int_t rv;
  
  if (value > max) rv = 1;
  else if (value <= min) rv = 0;
  else
  {
    if  ( TMath::AreEqualRel(max,min,1E-6) ) return gStyle->GetColorPalette(1);
    Double_t range = max - min;
    Double_t offset = value - min;
    rv = gStyle->GetColorPalette( 1 + int( offset*(gStyle->GetNumberOfColors()-2)/range - 0.5 ) );
  }
  return rv;
}

//_____________________________________________________________________________
AliMUONContour* 
AliMUONPainterHelper::MergeContours(const TObjArray& contours, const char* contourName, Bool_t explodedGeometry)
{
  /// Merge a set of contours (delegating to the contour maker)
  
  AliMUONContourMaker maker;
  
  AliMUONContour* contour = maker.MergeContour(contours,contourName);
  
  if (contour) 
  {
    RegisterContour(contour,explodedGeometry);
  }
  return contour;
}


//_____________________________________________________________________________
void
AliMUONPainterHelper::Print(Option_t* opt) const
{
  /// Printout
  TString sopt(opt);
  sopt.ToUpper();
  
  if ( sopt.Length() == 0 )
  {
    if ( fExploded ) fExploded->Print();
    if ( fReal ) fReal->Print();
  }  
}

//_____________________________________________________________________________
void
AliMUONPainterHelper::RegisterContour(AliMUONContour* contour, Bool_t explodedView)
{
  /// contour is adopted by contourMaker
  AliCodeTimerAuto("",0)
  AliDebug(1,contour->GetName());
  AliMUONContourHandler* ch = fReal;
  if ( explodedView ) 
  {
    ch = Exploded();
  }
  if (!ch)
  {
    AliError(Form("ContourHandler for %s view is not created yet !",explodedView ? "EXPLODED" : "REAL"));
  }
  else
  {
    if ( ch->GetContour(contour->GetName()) )
    {
      AliError(Form("Contour with name %s is already there",contour->GetName()));
      return;
    }
    ch->Adopt(contour);
  }
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::ChamberName(Int_t chamberId) const
{
  /// Build a name for one chamber
  return Form("Chamber%1d",chamberId+1);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::StationName(Int_t stationId) const
{
  /// Build a name for one station
  return Form("Station%1d",stationId+1);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::DEName(Int_t detElemId) const
{
  /// Build a name for one detection element
  return Form("DE%04d",detElemId);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::ManuName(Int_t manuId) const
{
  /// Build a name for one manu
  return Form("MANU%04d",manuId);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::BusPatchName(Int_t busPatchId) const
{
  /// Build a name for one buspatch
  return Form("BUSPATCH%04d",busPatchId);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::PCBName(Int_t pcbNumber) const
{
  /// Build a name for one pcb
  return Form("PCB%1d",pcbNumber);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::ChamberPathName(Int_t chamberId) const
{
  /// Build a name for one chamber
  return Form("%s/%s",StationName(chamberId/2).Data(),ChamberName(chamberId).Data());
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::StationPathName(Int_t stationId) const
{
  /// Build a name for one station
  return StationName(stationId);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::DEPathName(Int_t detElemId) const
{
  /// Build a name for one detection element
  
  Int_t chamberId = AliMpDEManager::GetChamberId(detElemId);
  
  Int_t ddl(-1);
  
  AliMpDetElement* de = AliMpDDLStore::Instance()->GetDetElement(detElemId);
  
  if ( de ) 
  {
    ddl = AliDAQ::DdlIDOffset("MUONTRK") + de->GetDdlId();
  }
  
  return Form("%s/%s/%s(DDL%4d)",
              StationName(chamberId/2).Data(),
              ChamberName(chamberId).Data(),
              DEName(detElemId).Data(),
              ddl);
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::ManuPathName(Int_t detElemId, Int_t manuId) const
{
  /// Build a name for one manu
  return Form("%s/%s",DEPathName(detElemId).Data(),ManuName(manuId).Data());
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::BusPatchPathName(Int_t busPatchId) const
{
  /// Build a name for one buspatch
  Int_t detElemId = AliMpDDLStore::Instance()->GetDEfromBus(busPatchId);
  
  return Form("%s/%s",DEPathName(detElemId).Data(),BusPatchName(busPatchId).Data());
}

//_____________________________________________________________________________
TString 
AliMUONPainterHelper::PCBPathName(Int_t detElemId, Int_t pcbNumber) const
{
  /// Build a name for one pcb
  return Form("%s/%s",DEPathName(detElemId).Data(),PCBName(pcbNumber).Data());
}

//_____________________________________________________________________________
TString
AliMUONPainterHelper::FormatValue(const char* name, Double_t value) const
{
  /// Format a double value to be displayed
  /// FIXME: should insure we have the right number of significant digits here...
  
  TString sname(name);
  
  sname.ToUpper();
  if (sname.Contains("BIT"))
  {
    Int_t i = (Int_t)(value);
    TString rv = Form("%s = 0x%x",name,i);
    cout << rv << ":" << AliMUONPadStatusMaker::AsString(i) << endl;
    return rv;
  }
  else
  {
    return Form("%s = %e",name,value);
  }
}

//_____________________________________________________________________________
TObjArray*
AliMUONPainterHelper::GetAllContoursAsArray(Bool_t explodedView) const
{
  /// Get the contours in a specially arranged array (orderer by hierarchy level)
  
  if ( explodedView ) 
  {
    return Exploded()->AllContourArray();
  }
  else
  {
    return Real()->AllContourArray();
  }
}


 AliMUONPainterHelper.cxx:1
 AliMUONPainterHelper.cxx:2
 AliMUONPainterHelper.cxx:3
 AliMUONPainterHelper.cxx:4
 AliMUONPainterHelper.cxx:5
 AliMUONPainterHelper.cxx:6
 AliMUONPainterHelper.cxx:7
 AliMUONPainterHelper.cxx:8
 AliMUONPainterHelper.cxx:9
 AliMUONPainterHelper.cxx:10
 AliMUONPainterHelper.cxx:11
 AliMUONPainterHelper.cxx:12
 AliMUONPainterHelper.cxx:13
 AliMUONPainterHelper.cxx:14
 AliMUONPainterHelper.cxx:15
 AliMUONPainterHelper.cxx:16
 AliMUONPainterHelper.cxx:17
 AliMUONPainterHelper.cxx:18
 AliMUONPainterHelper.cxx:19
 AliMUONPainterHelper.cxx:20
 AliMUONPainterHelper.cxx:21
 AliMUONPainterHelper.cxx:22
 AliMUONPainterHelper.cxx:23
 AliMUONPainterHelper.cxx:24
 AliMUONPainterHelper.cxx:25
 AliMUONPainterHelper.cxx:26
 AliMUONPainterHelper.cxx:27
 AliMUONPainterHelper.cxx:28
 AliMUONPainterHelper.cxx:29
 AliMUONPainterHelper.cxx:30
 AliMUONPainterHelper.cxx:31
 AliMUONPainterHelper.cxx:32
 AliMUONPainterHelper.cxx:33
 AliMUONPainterHelper.cxx:34
 AliMUONPainterHelper.cxx:35
 AliMUONPainterHelper.cxx:36
 AliMUONPainterHelper.cxx:37
 AliMUONPainterHelper.cxx:38
 AliMUONPainterHelper.cxx:39
 AliMUONPainterHelper.cxx:40
 AliMUONPainterHelper.cxx:41
 AliMUONPainterHelper.cxx:42
 AliMUONPainterHelper.cxx:43
 AliMUONPainterHelper.cxx:44
 AliMUONPainterHelper.cxx:45
 AliMUONPainterHelper.cxx:46
 AliMUONPainterHelper.cxx:47
 AliMUONPainterHelper.cxx:48
 AliMUONPainterHelper.cxx:49
 AliMUONPainterHelper.cxx:50
 AliMUONPainterHelper.cxx:51
 AliMUONPainterHelper.cxx:52
 AliMUONPainterHelper.cxx:53
 AliMUONPainterHelper.cxx:54
 AliMUONPainterHelper.cxx:55
 AliMUONPainterHelper.cxx:56
 AliMUONPainterHelper.cxx:57
 AliMUONPainterHelper.cxx:58
 AliMUONPainterHelper.cxx:59
 AliMUONPainterHelper.cxx:60
 AliMUONPainterHelper.cxx:61
 AliMUONPainterHelper.cxx:62
 AliMUONPainterHelper.cxx:63
 AliMUONPainterHelper.cxx:64
 AliMUONPainterHelper.cxx:65
 AliMUONPainterHelper.cxx:66
 AliMUONPainterHelper.cxx:67
 AliMUONPainterHelper.cxx:68
 AliMUONPainterHelper.cxx:69
 AliMUONPainterHelper.cxx:70
 AliMUONPainterHelper.cxx:71
 AliMUONPainterHelper.cxx:72
 AliMUONPainterHelper.cxx:73
 AliMUONPainterHelper.cxx:74
 AliMUONPainterHelper.cxx:75
 AliMUONPainterHelper.cxx:76
 AliMUONPainterHelper.cxx:77
 AliMUONPainterHelper.cxx:78
 AliMUONPainterHelper.cxx:79
 AliMUONPainterHelper.cxx:80
 AliMUONPainterHelper.cxx:81
 AliMUONPainterHelper.cxx:82
 AliMUONPainterHelper.cxx:83
 AliMUONPainterHelper.cxx:84
 AliMUONPainterHelper.cxx:85
 AliMUONPainterHelper.cxx:86
 AliMUONPainterHelper.cxx:87
 AliMUONPainterHelper.cxx:88
 AliMUONPainterHelper.cxx:89
 AliMUONPainterHelper.cxx:90
 AliMUONPainterHelper.cxx:91
 AliMUONPainterHelper.cxx:92
 AliMUONPainterHelper.cxx:93
 AliMUONPainterHelper.cxx:94
 AliMUONPainterHelper.cxx:95
 AliMUONPainterHelper.cxx:96
 AliMUONPainterHelper.cxx:97
 AliMUONPainterHelper.cxx:98
 AliMUONPainterHelper.cxx:99
 AliMUONPainterHelper.cxx:100
 AliMUONPainterHelper.cxx:101
 AliMUONPainterHelper.cxx:102
 AliMUONPainterHelper.cxx:103
 AliMUONPainterHelper.cxx:104
 AliMUONPainterHelper.cxx:105
 AliMUONPainterHelper.cxx:106
 AliMUONPainterHelper.cxx:107
 AliMUONPainterHelper.cxx:108
 AliMUONPainterHelper.cxx:109
 AliMUONPainterHelper.cxx:110
 AliMUONPainterHelper.cxx:111
 AliMUONPainterHelper.cxx:112
 AliMUONPainterHelper.cxx:113
 AliMUONPainterHelper.cxx:114
 AliMUONPainterHelper.cxx:115
 AliMUONPainterHelper.cxx:116
 AliMUONPainterHelper.cxx:117
 AliMUONPainterHelper.cxx:118
 AliMUONPainterHelper.cxx:119
 AliMUONPainterHelper.cxx:120
 AliMUONPainterHelper.cxx:121
 AliMUONPainterHelper.cxx:122
 AliMUONPainterHelper.cxx:123
 AliMUONPainterHelper.cxx:124
 AliMUONPainterHelper.cxx:125
 AliMUONPainterHelper.cxx:126
 AliMUONPainterHelper.cxx:127
 AliMUONPainterHelper.cxx:128
 AliMUONPainterHelper.cxx:129
 AliMUONPainterHelper.cxx:130
 AliMUONPainterHelper.cxx:131
 AliMUONPainterHelper.cxx:132
 AliMUONPainterHelper.cxx:133
 AliMUONPainterHelper.cxx:134
 AliMUONPainterHelper.cxx:135
 AliMUONPainterHelper.cxx:136
 AliMUONPainterHelper.cxx:137
 AliMUONPainterHelper.cxx:138
 AliMUONPainterHelper.cxx:139
 AliMUONPainterHelper.cxx:140
 AliMUONPainterHelper.cxx:141
 AliMUONPainterHelper.cxx:142
 AliMUONPainterHelper.cxx:143
 AliMUONPainterHelper.cxx:144
 AliMUONPainterHelper.cxx:145
 AliMUONPainterHelper.cxx:146
 AliMUONPainterHelper.cxx:147
 AliMUONPainterHelper.cxx:148
 AliMUONPainterHelper.cxx:149
 AliMUONPainterHelper.cxx:150
 AliMUONPainterHelper.cxx:151
 AliMUONPainterHelper.cxx:152
 AliMUONPainterHelper.cxx:153
 AliMUONPainterHelper.cxx:154
 AliMUONPainterHelper.cxx:155
 AliMUONPainterHelper.cxx:156
 AliMUONPainterHelper.cxx:157
 AliMUONPainterHelper.cxx:158
 AliMUONPainterHelper.cxx:159
 AliMUONPainterHelper.cxx:160
 AliMUONPainterHelper.cxx:161
 AliMUONPainterHelper.cxx:162
 AliMUONPainterHelper.cxx:163
 AliMUONPainterHelper.cxx:164
 AliMUONPainterHelper.cxx:165
 AliMUONPainterHelper.cxx:166
 AliMUONPainterHelper.cxx:167
 AliMUONPainterHelper.cxx:168
 AliMUONPainterHelper.cxx:169
 AliMUONPainterHelper.cxx:170
 AliMUONPainterHelper.cxx:171
 AliMUONPainterHelper.cxx:172
 AliMUONPainterHelper.cxx:173
 AliMUONPainterHelper.cxx:174
 AliMUONPainterHelper.cxx:175
 AliMUONPainterHelper.cxx:176
 AliMUONPainterHelper.cxx:177
 AliMUONPainterHelper.cxx:178
 AliMUONPainterHelper.cxx:179
 AliMUONPainterHelper.cxx:180
 AliMUONPainterHelper.cxx:181
 AliMUONPainterHelper.cxx:182
 AliMUONPainterHelper.cxx:183
 AliMUONPainterHelper.cxx:184
 AliMUONPainterHelper.cxx:185
 AliMUONPainterHelper.cxx:186
 AliMUONPainterHelper.cxx:187
 AliMUONPainterHelper.cxx:188
 AliMUONPainterHelper.cxx:189
 AliMUONPainterHelper.cxx:190
 AliMUONPainterHelper.cxx:191
 AliMUONPainterHelper.cxx:192
 AliMUONPainterHelper.cxx:193
 AliMUONPainterHelper.cxx:194
 AliMUONPainterHelper.cxx:195
 AliMUONPainterHelper.cxx:196
 AliMUONPainterHelper.cxx:197
 AliMUONPainterHelper.cxx:198
 AliMUONPainterHelper.cxx:199
 AliMUONPainterHelper.cxx:200
 AliMUONPainterHelper.cxx:201
 AliMUONPainterHelper.cxx:202
 AliMUONPainterHelper.cxx:203
 AliMUONPainterHelper.cxx:204
 AliMUONPainterHelper.cxx:205
 AliMUONPainterHelper.cxx:206
 AliMUONPainterHelper.cxx:207
 AliMUONPainterHelper.cxx:208
 AliMUONPainterHelper.cxx:209
 AliMUONPainterHelper.cxx:210
 AliMUONPainterHelper.cxx:211
 AliMUONPainterHelper.cxx:212
 AliMUONPainterHelper.cxx:213
 AliMUONPainterHelper.cxx:214
 AliMUONPainterHelper.cxx:215
 AliMUONPainterHelper.cxx:216
 AliMUONPainterHelper.cxx:217
 AliMUONPainterHelper.cxx:218
 AliMUONPainterHelper.cxx:219
 AliMUONPainterHelper.cxx:220
 AliMUONPainterHelper.cxx:221
 AliMUONPainterHelper.cxx:222
 AliMUONPainterHelper.cxx:223
 AliMUONPainterHelper.cxx:224
 AliMUONPainterHelper.cxx:225
 AliMUONPainterHelper.cxx:226
 AliMUONPainterHelper.cxx:227
 AliMUONPainterHelper.cxx:228
 AliMUONPainterHelper.cxx:229
 AliMUONPainterHelper.cxx:230
 AliMUONPainterHelper.cxx:231
 AliMUONPainterHelper.cxx:232
 AliMUONPainterHelper.cxx:233
 AliMUONPainterHelper.cxx:234
 AliMUONPainterHelper.cxx:235
 AliMUONPainterHelper.cxx:236
 AliMUONPainterHelper.cxx:237
 AliMUONPainterHelper.cxx:238
 AliMUONPainterHelper.cxx:239
 AliMUONPainterHelper.cxx:240
 AliMUONPainterHelper.cxx:241
 AliMUONPainterHelper.cxx:242
 AliMUONPainterHelper.cxx:243
 AliMUONPainterHelper.cxx:244
 AliMUONPainterHelper.cxx:245
 AliMUONPainterHelper.cxx:246
 AliMUONPainterHelper.cxx:247
 AliMUONPainterHelper.cxx:248
 AliMUONPainterHelper.cxx:249
 AliMUONPainterHelper.cxx:250
 AliMUONPainterHelper.cxx:251
 AliMUONPainterHelper.cxx:252
 AliMUONPainterHelper.cxx:253
 AliMUONPainterHelper.cxx:254
 AliMUONPainterHelper.cxx:255
 AliMUONPainterHelper.cxx:256
 AliMUONPainterHelper.cxx:257
 AliMUONPainterHelper.cxx:258
 AliMUONPainterHelper.cxx:259
 AliMUONPainterHelper.cxx:260
 AliMUONPainterHelper.cxx:261
 AliMUONPainterHelper.cxx:262
 AliMUONPainterHelper.cxx:263
 AliMUONPainterHelper.cxx:264
 AliMUONPainterHelper.cxx:265
 AliMUONPainterHelper.cxx:266
 AliMUONPainterHelper.cxx:267
 AliMUONPainterHelper.cxx:268
 AliMUONPainterHelper.cxx:269
 AliMUONPainterHelper.cxx:270
 AliMUONPainterHelper.cxx:271
 AliMUONPainterHelper.cxx:272
 AliMUONPainterHelper.cxx:273
 AliMUONPainterHelper.cxx:274
 AliMUONPainterHelper.cxx:275
 AliMUONPainterHelper.cxx:276
 AliMUONPainterHelper.cxx:277
 AliMUONPainterHelper.cxx:278
 AliMUONPainterHelper.cxx:279
 AliMUONPainterHelper.cxx:280
 AliMUONPainterHelper.cxx:281
 AliMUONPainterHelper.cxx:282
 AliMUONPainterHelper.cxx:283
 AliMUONPainterHelper.cxx:284
 AliMUONPainterHelper.cxx:285
 AliMUONPainterHelper.cxx:286
 AliMUONPainterHelper.cxx:287
 AliMUONPainterHelper.cxx:288
 AliMUONPainterHelper.cxx:289
 AliMUONPainterHelper.cxx:290
 AliMUONPainterHelper.cxx:291
 AliMUONPainterHelper.cxx:292
 AliMUONPainterHelper.cxx:293
 AliMUONPainterHelper.cxx:294
 AliMUONPainterHelper.cxx:295
 AliMUONPainterHelper.cxx:296
 AliMUONPainterHelper.cxx:297
 AliMUONPainterHelper.cxx:298
 AliMUONPainterHelper.cxx:299
 AliMUONPainterHelper.cxx:300
 AliMUONPainterHelper.cxx:301
 AliMUONPainterHelper.cxx:302
 AliMUONPainterHelper.cxx:303
 AliMUONPainterHelper.cxx:304
 AliMUONPainterHelper.cxx:305
 AliMUONPainterHelper.cxx:306
 AliMUONPainterHelper.cxx:307
 AliMUONPainterHelper.cxx:308
 AliMUONPainterHelper.cxx:309
 AliMUONPainterHelper.cxx:310
 AliMUONPainterHelper.cxx:311
 AliMUONPainterHelper.cxx:312
 AliMUONPainterHelper.cxx:313
 AliMUONPainterHelper.cxx:314
 AliMUONPainterHelper.cxx:315
 AliMUONPainterHelper.cxx:316
 AliMUONPainterHelper.cxx:317
 AliMUONPainterHelper.cxx:318
 AliMUONPainterHelper.cxx:319
 AliMUONPainterHelper.cxx:320
 AliMUONPainterHelper.cxx:321
 AliMUONPainterHelper.cxx:322
 AliMUONPainterHelper.cxx:323
 AliMUONPainterHelper.cxx:324
 AliMUONPainterHelper.cxx:325
 AliMUONPainterHelper.cxx:326
 AliMUONPainterHelper.cxx:327
 AliMUONPainterHelper.cxx:328
 AliMUONPainterHelper.cxx:329
 AliMUONPainterHelper.cxx:330
 AliMUONPainterHelper.cxx:331
 AliMUONPainterHelper.cxx:332
 AliMUONPainterHelper.cxx:333
 AliMUONPainterHelper.cxx:334
 AliMUONPainterHelper.cxx:335
 AliMUONPainterHelper.cxx:336
 AliMUONPainterHelper.cxx:337
 AliMUONPainterHelper.cxx:338
 AliMUONPainterHelper.cxx:339
 AliMUONPainterHelper.cxx:340
 AliMUONPainterHelper.cxx:341
 AliMUONPainterHelper.cxx:342
 AliMUONPainterHelper.cxx:343
 AliMUONPainterHelper.cxx:344
 AliMUONPainterHelper.cxx:345
 AliMUONPainterHelper.cxx:346
 AliMUONPainterHelper.cxx:347
 AliMUONPainterHelper.cxx:348
 AliMUONPainterHelper.cxx:349
 AliMUONPainterHelper.cxx:350
 AliMUONPainterHelper.cxx:351
 AliMUONPainterHelper.cxx:352
 AliMUONPainterHelper.cxx:353
 AliMUONPainterHelper.cxx:354
 AliMUONPainterHelper.cxx:355
 AliMUONPainterHelper.cxx:356
 AliMUONPainterHelper.cxx:357
 AliMUONPainterHelper.cxx:358
 AliMUONPainterHelper.cxx:359
 AliMUONPainterHelper.cxx:360
 AliMUONPainterHelper.cxx:361
 AliMUONPainterHelper.cxx:362
 AliMUONPainterHelper.cxx:363
 AliMUONPainterHelper.cxx:364
 AliMUONPainterHelper.cxx:365
 AliMUONPainterHelper.cxx:366
 AliMUONPainterHelper.cxx:367
 AliMUONPainterHelper.cxx:368
 AliMUONPainterHelper.cxx:369
 AliMUONPainterHelper.cxx:370
 AliMUONPainterHelper.cxx:371
 AliMUONPainterHelper.cxx:372
 AliMUONPainterHelper.cxx:373
 AliMUONPainterHelper.cxx:374
 AliMUONPainterHelper.cxx:375
 AliMUONPainterHelper.cxx:376
 AliMUONPainterHelper.cxx:377
 AliMUONPainterHelper.cxx:378
 AliMUONPainterHelper.cxx:379
 AliMUONPainterHelper.cxx:380
 AliMUONPainterHelper.cxx:381
 AliMUONPainterHelper.cxx:382
 AliMUONPainterHelper.cxx:383
 AliMUONPainterHelper.cxx:384
 AliMUONPainterHelper.cxx:385
 AliMUONPainterHelper.cxx:386
 AliMUONPainterHelper.cxx:387
 AliMUONPainterHelper.cxx:388
 AliMUONPainterHelper.cxx:389
 AliMUONPainterHelper.cxx:390
 AliMUONPainterHelper.cxx:391
 AliMUONPainterHelper.cxx:392
 AliMUONPainterHelper.cxx:393
 AliMUONPainterHelper.cxx:394
 AliMUONPainterHelper.cxx:395
 AliMUONPainterHelper.cxx:396
 AliMUONPainterHelper.cxx:397
 AliMUONPainterHelper.cxx:398
 AliMUONPainterHelper.cxx:399
 AliMUONPainterHelper.cxx:400
 AliMUONPainterHelper.cxx:401
 AliMUONPainterHelper.cxx:402
 AliMUONPainterHelper.cxx:403
 AliMUONPainterHelper.cxx:404
 AliMUONPainterHelper.cxx:405
 AliMUONPainterHelper.cxx:406
 AliMUONPainterHelper.cxx:407
 AliMUONPainterHelper.cxx:408
 AliMUONPainterHelper.cxx:409
 AliMUONPainterHelper.cxx:410
 AliMUONPainterHelper.cxx:411
 AliMUONPainterHelper.cxx:412
 AliMUONPainterHelper.cxx:413
 AliMUONPainterHelper.cxx:414
 AliMUONPainterHelper.cxx:415
 AliMUONPainterHelper.cxx:416
 AliMUONPainterHelper.cxx:417
 AliMUONPainterHelper.cxx:418
 AliMUONPainterHelper.cxx:419
 AliMUONPainterHelper.cxx:420
 AliMUONPainterHelper.cxx:421
 AliMUONPainterHelper.cxx:422
 AliMUONPainterHelper.cxx:423
 AliMUONPainterHelper.cxx:424
 AliMUONPainterHelper.cxx:425
 AliMUONPainterHelper.cxx:426
 AliMUONPainterHelper.cxx:427
 AliMUONPainterHelper.cxx:428
 AliMUONPainterHelper.cxx:429
 AliMUONPainterHelper.cxx:430
 AliMUONPainterHelper.cxx:431
 AliMUONPainterHelper.cxx:432
 AliMUONPainterHelper.cxx:433
 AliMUONPainterHelper.cxx:434
 AliMUONPainterHelper.cxx:435
 AliMUONPainterHelper.cxx:436
 AliMUONPainterHelper.cxx:437
 AliMUONPainterHelper.cxx:438
 AliMUONPainterHelper.cxx:439
 AliMUONPainterHelper.cxx:440
 AliMUONPainterHelper.cxx:441
 AliMUONPainterHelper.cxx:442
 AliMUONPainterHelper.cxx:443
 AliMUONPainterHelper.cxx:444
 AliMUONPainterHelper.cxx:445
 AliMUONPainterHelper.cxx:446
 AliMUONPainterHelper.cxx:447
 AliMUONPainterHelper.cxx:448
 AliMUONPainterHelper.cxx:449
 AliMUONPainterHelper.cxx:450
 AliMUONPainterHelper.cxx:451
 AliMUONPainterHelper.cxx:452
 AliMUONPainterHelper.cxx:453
 AliMUONPainterHelper.cxx:454
 AliMUONPainterHelper.cxx:455
 AliMUONPainterHelper.cxx:456
 AliMUONPainterHelper.cxx:457
 AliMUONPainterHelper.cxx:458
 AliMUONPainterHelper.cxx:459
 AliMUONPainterHelper.cxx:460
 AliMUONPainterHelper.cxx:461
 AliMUONPainterHelper.cxx:462
 AliMUONPainterHelper.cxx:463
 AliMUONPainterHelper.cxx:464
 AliMUONPainterHelper.cxx:465
 AliMUONPainterHelper.cxx:466
 AliMUONPainterHelper.cxx:467
 AliMUONPainterHelper.cxx:468
 AliMUONPainterHelper.cxx:469
 AliMUONPainterHelper.cxx:470
 AliMUONPainterHelper.cxx:471
 AliMUONPainterHelper.cxx:472
 AliMUONPainterHelper.cxx:473
 AliMUONPainterHelper.cxx:474
 AliMUONPainterHelper.cxx:475
 AliMUONPainterHelper.cxx:476
 AliMUONPainterHelper.cxx:477
 AliMUONPainterHelper.cxx:478
 AliMUONPainterHelper.cxx:479
 AliMUONPainterHelper.cxx:480
 AliMUONPainterHelper.cxx:481
 AliMUONPainterHelper.cxx:482
 AliMUONPainterHelper.cxx:483
 AliMUONPainterHelper.cxx:484
 AliMUONPainterHelper.cxx:485
 AliMUONPainterHelper.cxx:486
 AliMUONPainterHelper.cxx:487
 AliMUONPainterHelper.cxx:488
 AliMUONPainterHelper.cxx:489
 AliMUONPainterHelper.cxx:490
 AliMUONPainterHelper.cxx:491
 AliMUONPainterHelper.cxx:492
 AliMUONPainterHelper.cxx:493
 AliMUONPainterHelper.cxx:494
 AliMUONPainterHelper.cxx:495
 AliMUONPainterHelper.cxx:496
 AliMUONPainterHelper.cxx:497
 AliMUONPainterHelper.cxx:498
 AliMUONPainterHelper.cxx:499
 AliMUONPainterHelper.cxx:500
 AliMUONPainterHelper.cxx:501
 AliMUONPainterHelper.cxx:502
 AliMUONPainterHelper.cxx:503
 AliMUONPainterHelper.cxx:504
 AliMUONPainterHelper.cxx:505
 AliMUONPainterHelper.cxx:506
 AliMUONPainterHelper.cxx:507
 AliMUONPainterHelper.cxx:508
 AliMUONPainterHelper.cxx:509
 AliMUONPainterHelper.cxx:510
 AliMUONPainterHelper.cxx:511
 AliMUONPainterHelper.cxx:512
 AliMUONPainterHelper.cxx:513
 AliMUONPainterHelper.cxx:514
 AliMUONPainterHelper.cxx:515
 AliMUONPainterHelper.cxx:516
 AliMUONPainterHelper.cxx:517
 AliMUONPainterHelper.cxx:518
 AliMUONPainterHelper.cxx:519
 AliMUONPainterHelper.cxx:520
 AliMUONPainterHelper.cxx:521
 AliMUONPainterHelper.cxx:522
 AliMUONPainterHelper.cxx:523
 AliMUONPainterHelper.cxx:524
 AliMUONPainterHelper.cxx:525
 AliMUONPainterHelper.cxx:526
 AliMUONPainterHelper.cxx:527
 AliMUONPainterHelper.cxx:528
 AliMUONPainterHelper.cxx:529
 AliMUONPainterHelper.cxx:530
 AliMUONPainterHelper.cxx:531
 AliMUONPainterHelper.cxx:532
 AliMUONPainterHelper.cxx:533
 AliMUONPainterHelper.cxx:534
 AliMUONPainterHelper.cxx:535
 AliMUONPainterHelper.cxx:536
 AliMUONPainterHelper.cxx:537
 AliMUONPainterHelper.cxx:538
 AliMUONPainterHelper.cxx:539
 AliMUONPainterHelper.cxx:540
 AliMUONPainterHelper.cxx:541
 AliMUONPainterHelper.cxx:542
 AliMUONPainterHelper.cxx:543
 AliMUONPainterHelper.cxx:544
 AliMUONPainterHelper.cxx:545
 AliMUONPainterHelper.cxx:546
 AliMUONPainterHelper.cxx:547
 AliMUONPainterHelper.cxx:548
 AliMUONPainterHelper.cxx:549
 AliMUONPainterHelper.cxx:550
 AliMUONPainterHelper.cxx:551