ROOT logo
#ifndef ALIMUONPAINTERHELPER_H
#define ALIMUONPAINTERHELPER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice                               */

// $Id$

/// \ingroup graphics
/// \class AliMUONPainterHelper
/// \brief Utility class for the painters display
/// 
// Author Laurent Aphecetche, Subatech

#ifndef ROOT_TObject
#  include "TObject.h"
#endif

#ifndef ROOT_TString
#  include "TString.h"
#endif

#ifndef ROOT_TVector2
#  include "TVector2.h"
#endif

#ifndef ALI_MP_PLANE_TYPE_H
#  include "AliMpPlaneType.h"
#endif

#ifndef ALI_MP_CATHOD_TYPE_H
#  include "AliMpCathodType.h"
#endif

#ifndef ALIMUONVPAINTER_H
#  include "AliMUONVPainter.h"
#endif

#ifndef ALI_MP_PAD_H
#  include "AliMpPad.h"
#endif

class AliMUONAttPainter;
class AliMUONContour;
class AliMUONContourHandler;
class AliMUONPainterEnv;
class AliMUONVCalibParam;
class AliMUONVTrackerData;
class AliMpExMap;
class AliMpMotifPosition;
class AliMpPCB;
class AliMpSector;
class AliMpSlat;
class TArrayI;
class TList;
class TObjArray;

class AliMUONPainterHelper : public TObject
{
public:
  AliMUONPainterHelper();
  virtual ~AliMUONPainterHelper();
    
  TString ChamberName(Int_t chamberId) const;
  TString StationName(Int_t stationId) const;
  TString DEName(Int_t detElemId) const;
  TString ManuName(Int_t manuId) const;
  TString BusPatchName(Int_t busPatchId) const;
  TString PCBName(Int_t pcbNumber) const;

  TString ChamberPathName(Int_t chamberId) const;
  TString StationPathName(Int_t stationId) const;
  TString DEPathName(Int_t detElemId) const;
  TString ManuPathName(Int_t detElemId, Int_t manuId) const;
  TString BusPatchPathName(Int_t busPatchId) const;
  TString PCBPathName(Int_t detElemId, Int_t pcbNumber) const;
  
  Int_t ColorFromValue(Double_t value, Double_t min, Double_t max) const;
  
  AliMp::CathodType GetCathodeType(Int_t detElemId, Int_t manuId) const;

  AliMUONContour* GetContour(const char* contourName, Bool_t explodedGeometry=kTRUE) const;

  /// Return a contour by name
  AliMUONContour* GetContour(const TString& contourName) const { return GetContour(contourName.Data()); }

  AliMpMotifPosition* GetMotifPosition(Int_t detElemId, Int_t manuId) const;
  
  AliMpPCB* GetPCB(Int_t detElemId, AliMp::PlaneType planeType, 
                   Int_t pcbNumber) const;

  AliMpPCB* GetPCB(Int_t detElemId, AliMp::CathodType cathodType,
                   Int_t pcbNumber) const;

  AliMp::PlaneType GetPlaneType(Int_t manuId) const;
  
  const AliMpSector* GetSector(Int_t detElemId, AliMp::PlaneType planeType) const;
    
  const AliMpSlat* GetSlat(Int_t detElemId, AliMp::PlaneType planeType) const;

  const AliMpSlat* GetSlat(Int_t detElemId, AliMp::CathodType cathodeType) const;

  const AliMpSlat* GetSlat(Int_t detElemId, Int_t manuId) const;

  static AliMUONPainterHelper* Instance();

  void Local2Global(Int_t detElemId, Double_t xl, Double_t yl, Double_t zl,
                    Double_t& xg, Double_t& yg, Double_t& zg) const;

  void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg,
                     Double_t& xl, Double_t& yl, Double_t& zl) const;

  AliMUONContour* MergeContours(const TObjArray& contours, const char* contourName, Bool_t explodedGeometry=kTRUE);
  
  virtual void Print(Option_t* opt="") const;
  
  void RegisterContour(AliMUONContour* contour, Bool_t explodedView=kTRUE);
  
  TString FormatValue(const char* name, Double_t value) const;
  
  /// Return the environment
  AliMUONPainterEnv* Env() { return fEnv; }
  
  TObjArray* GetAllContoursAsArray(Bool_t explodedView=kTRUE) const;

private:
    
  /// Not implemented
  AliMUONPainterHelper(const AliMUONPainterHelper&);
  /// Not implemented
  AliMUONPainterHelper& operator=(const AliMUONPainterHelper&);
  
  AliMUONContourHandler* Exploded() const;
  AliMUONContourHandler* Real() const;
  
private:
  static AliMUONPainterHelper* fgInstance; ///< global instance
  
  AliMUONPainterEnv* fEnv; ///< resources
  mutable AliMUONContourHandler* fReal; ///< contours in real coordinates
  mutable AliMUONContourHandler* fExploded; ///< contours in exploded coordinates
  
  ClassDef(AliMUONPainterHelper,4) // Helper class for painters
};

#endif
 AliMUONPainterHelper.h:1
 AliMUONPainterHelper.h:2
 AliMUONPainterHelper.h:3
 AliMUONPainterHelper.h:4
 AliMUONPainterHelper.h:5
 AliMUONPainterHelper.h:6
 AliMUONPainterHelper.h:7
 AliMUONPainterHelper.h:8
 AliMUONPainterHelper.h:9
 AliMUONPainterHelper.h:10
 AliMUONPainterHelper.h:11
 AliMUONPainterHelper.h:12
 AliMUONPainterHelper.h:13
 AliMUONPainterHelper.h:14
 AliMUONPainterHelper.h:15
 AliMUONPainterHelper.h:16
 AliMUONPainterHelper.h:17
 AliMUONPainterHelper.h:18
 AliMUONPainterHelper.h:19
 AliMUONPainterHelper.h:20
 AliMUONPainterHelper.h:21
 AliMUONPainterHelper.h:22
 AliMUONPainterHelper.h:23
 AliMUONPainterHelper.h:24
 AliMUONPainterHelper.h:25
 AliMUONPainterHelper.h:26
 AliMUONPainterHelper.h:27
 AliMUONPainterHelper.h:28
 AliMUONPainterHelper.h:29
 AliMUONPainterHelper.h:30
 AliMUONPainterHelper.h:31
 AliMUONPainterHelper.h:32
 AliMUONPainterHelper.h:33
 AliMUONPainterHelper.h:34
 AliMUONPainterHelper.h:35
 AliMUONPainterHelper.h:36
 AliMUONPainterHelper.h:37
 AliMUONPainterHelper.h:38
 AliMUONPainterHelper.h:39
 AliMUONPainterHelper.h:40
 AliMUONPainterHelper.h:41
 AliMUONPainterHelper.h:42
 AliMUONPainterHelper.h:43
 AliMUONPainterHelper.h:44
 AliMUONPainterHelper.h:45
 AliMUONPainterHelper.h:46
 AliMUONPainterHelper.h:47
 AliMUONPainterHelper.h:48
 AliMUONPainterHelper.h:49
 AliMUONPainterHelper.h:50
 AliMUONPainterHelper.h:51
 AliMUONPainterHelper.h:52
 AliMUONPainterHelper.h:53
 AliMUONPainterHelper.h:54
 AliMUONPainterHelper.h:55
 AliMUONPainterHelper.h:56
 AliMUONPainterHelper.h:57
 AliMUONPainterHelper.h:58
 AliMUONPainterHelper.h:59
 AliMUONPainterHelper.h:60
 AliMUONPainterHelper.h:61
 AliMUONPainterHelper.h:62
 AliMUONPainterHelper.h:63
 AliMUONPainterHelper.h:64
 AliMUONPainterHelper.h:65
 AliMUONPainterHelper.h:66
 AliMUONPainterHelper.h:67
 AliMUONPainterHelper.h:68
 AliMUONPainterHelper.h:69
 AliMUONPainterHelper.h:70
 AliMUONPainterHelper.h:71
 AliMUONPainterHelper.h:72
 AliMUONPainterHelper.h:73
 AliMUONPainterHelper.h:74
 AliMUONPainterHelper.h:75
 AliMUONPainterHelper.h:76
 AliMUONPainterHelper.h:77
 AliMUONPainterHelper.h:78
 AliMUONPainterHelper.h:79
 AliMUONPainterHelper.h:80
 AliMUONPainterHelper.h:81
 AliMUONPainterHelper.h:82
 AliMUONPainterHelper.h:83
 AliMUONPainterHelper.h:84
 AliMUONPainterHelper.h:85
 AliMUONPainterHelper.h:86
 AliMUONPainterHelper.h:87
 AliMUONPainterHelper.h:88
 AliMUONPainterHelper.h:89
 AliMUONPainterHelper.h:90
 AliMUONPainterHelper.h:91
 AliMUONPainterHelper.h:92
 AliMUONPainterHelper.h:93
 AliMUONPainterHelper.h:94
 AliMUONPainterHelper.h:95
 AliMUONPainterHelper.h:96
 AliMUONPainterHelper.h:97
 AliMUONPainterHelper.h:98
 AliMUONPainterHelper.h:99
 AliMUONPainterHelper.h:100
 AliMUONPainterHelper.h:101
 AliMUONPainterHelper.h:102
 AliMUONPainterHelper.h:103
 AliMUONPainterHelper.h:104
 AliMUONPainterHelper.h:105
 AliMUONPainterHelper.h:106
 AliMUONPainterHelper.h:107
 AliMUONPainterHelper.h:108
 AliMUONPainterHelper.h:109
 AliMUONPainterHelper.h:110
 AliMUONPainterHelper.h:111
 AliMUONPainterHelper.h:112
 AliMUONPainterHelper.h:113
 AliMUONPainterHelper.h:114
 AliMUONPainterHelper.h:115
 AliMUONPainterHelper.h:116
 AliMUONPainterHelper.h:117
 AliMUONPainterHelper.h:118
 AliMUONPainterHelper.h:119
 AliMUONPainterHelper.h:120
 AliMUONPainterHelper.h:121
 AliMUONPainterHelper.h:122
 AliMUONPainterHelper.h:123
 AliMUONPainterHelper.h:124
 AliMUONPainterHelper.h:125
 AliMUONPainterHelper.h:126
 AliMUONPainterHelper.h:127
 AliMUONPainterHelper.h:128
 AliMUONPainterHelper.h:129
 AliMUONPainterHelper.h:130
 AliMUONPainterHelper.h:131
 AliMUONPainterHelper.h:132
 AliMUONPainterHelper.h:133
 AliMUONPainterHelper.h:134
 AliMUONPainterHelper.h:135
 AliMUONPainterHelper.h:136
 AliMUONPainterHelper.h:137
 AliMUONPainterHelper.h:138
 AliMUONPainterHelper.h:139
 AliMUONPainterHelper.h:140
 AliMUONPainterHelper.h:141
 AliMUONPainterHelper.h:142
 AliMUONPainterHelper.h:143
 AliMUONPainterHelper.h:144
 AliMUONPainterHelper.h:145
 AliMUONPainterHelper.h:146