Update of ACORDE-QA-Raw data histograms (now they go from -0.5 to 59.5)
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterHelper.h
1 #ifndef ALIMUONPAINTERHELPER_H
2 #define ALIMUONPAINTERHELPER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice                               */
6
7 // $Id$
8
9 /// \ingroup graphics
10 /// \class AliMUONPainterHelper
11 /// \brief Utility class for the painters display
12 /// 
13 // Author Laurent Aphecetche, Subatech
14
15 #ifndef ROOT_TObject
16 #  include "TObject.h"
17 #endif
18
19 #ifndef ROOT_TString
20 #  include "TString.h"
21 #endif
22
23 #ifndef ROOT_TVector2
24 #  include "TVector2.h"
25 #endif
26
27 #ifndef ALI_MP_PLANE_TYPE_H
28 #  include "AliMpPlaneType.h"
29 #endif
30
31 #ifndef ALI_MP_CATHOD_TYPE_H
32 #  include "AliMpCathodType.h"
33 #endif
34
35 #ifndef ALIMUONVPAINTER_H
36 #  include "AliMUONVPainter.h"
37 #endif
38
39 #ifndef ALI_MP_PAD_H
40 #  include "AliMpPad.h"
41 #endif
42
43 class AliMUONAttPainter;
44 class AliMUONContour;
45 class AliMUONContourHandler;
46 class AliMUONPainterEnv;
47 class AliMUONVCalibParam;
48 class AliMUONVTrackerData;
49 class AliMpExMap;
50 class AliMpMotifPosition;
51 class AliMpPCB;
52 class AliMpSector;
53 class AliMpSlat;
54 class TArrayI;
55 class TList;
56 class TObjArray;
57
58 class AliMUONPainterHelper : public TObject
59 {
60 public:
61   AliMUONPainterHelper();
62   virtual ~AliMUONPainterHelper();
63     
64   TString ChamberName(Int_t chamberId) const;
65   TString StationName(Int_t stationId) const;
66   TString DEName(Int_t detElemId) const;
67   TString ManuName(Int_t manuId) const;
68   TString BusPatchName(Int_t busPatchId) const;
69   TString PCBName(Int_t pcbNumber) const;
70
71   TString ChamberPathName(Int_t chamberId) const;
72   TString StationPathName(Int_t stationId) const;
73   TString DEPathName(Int_t detElemId) const;
74   TString ManuPathName(Int_t detElemId, Int_t manuId) const;
75   TString BusPatchPathName(Int_t busPatchId) const;
76   TString PCBPathName(Int_t detElemId, Int_t pcbNumber) const;
77   
78   Int_t ColorFromValue(Double_t value, Double_t min, Double_t max) const;
79   
80   AliMp::CathodType GetCathodeType(Int_t detElemId, Int_t manuId) const;
81
82   AliMUONContour* GetContour(const char* contourName, Bool_t explodedGeometry=kTRUE) const;
83
84   /// Return a contour by name
85   AliMUONContour* GetContour(const TString& contourName) const { return GetContour(contourName.Data()); }
86
87   AliMpMotifPosition* GetMotifPosition(Int_t detElemId, Int_t manuId) const;
88   
89   AliMpPCB* GetPCB(Int_t detElemId, AliMp::PlaneType planeType, 
90                    Int_t pcbNumber) const;
91
92   AliMpPCB* GetPCB(Int_t detElemId, AliMp::CathodType cathodType,
93                    Int_t pcbNumber) const;
94
95   AliMp::PlaneType GetPlaneType(Int_t manuId) const;
96   
97   const AliMpSector* GetSector(Int_t detElemId, AliMp::PlaneType planeType) const;
98     
99   const AliMpSlat* GetSlat(Int_t detElemId, AliMp::PlaneType planeType) const;
100
101   const AliMpSlat* GetSlat(Int_t detElemId, AliMp::CathodType cathodeType) const;
102
103   const AliMpSlat* GetSlat(Int_t detElemId, Int_t manuId) const;
104
105   static AliMUONPainterHelper* Instance();
106
107   void Local2Global(Int_t detElemId, Double_t xl, Double_t yl, Double_t zl,
108                     Double_t& xg, Double_t& yg, Double_t& zg) const;
109
110   void Global2Local(Int_t detElemId, Double_t xg, Double_t yg, Double_t zg,
111                      Double_t& xl, Double_t& yl, Double_t& zl) const;
112
113   AliMUONContour* MergeContours(const TObjArray& contours, const char* contourName, Bool_t explodedGeometry=kTRUE);
114   
115   virtual void Print(Option_t* opt="") const;
116   
117   void RegisterContour(AliMUONContour* contour, Bool_t explodedView=kTRUE);
118   
119   TString FormatValue(const char* name, Double_t value) const;
120   
121   /// Return the environment
122   AliMUONPainterEnv* Env() { return fEnv; }
123   
124   TObjArray* GetAllContoursAsArray(Bool_t explodedView=kTRUE) const;
125
126 private:
127     
128   /// Not implemented
129   AliMUONPainterHelper(const AliMUONPainterHelper&);
130   /// Not implemented
131   AliMUONPainterHelper& operator=(const AliMUONPainterHelper&);
132   
133   AliMUONContourHandler* Exploded() const;
134   AliMUONContourHandler* Real() const;
135   
136 private:
137   static AliMUONPainterHelper* fgInstance; ///< global instance
138   
139   AliMUONPainterEnv* fEnv; ///< resources
140   mutable AliMUONContourHandler* fReal; ///< contours in real coordinates
141   mutable AliMUONContourHandler* fExploded; ///< contours in exploded coordinates
142   
143   ClassDef(AliMUONPainterHelper,4) // Helper class for painters
144 };
145
146 #endif