fix TRD digits display
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveTRDData.h
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9 /////////////////////////////////////////////////////////////////////////
10 //
11 // - AliEVE implementation -
12 // Containers for visualisation of TRD data structures
13 //    - AliEveTRDHits - visualisation of MC Hits, Clusters (RecPoints)
14 //    - AliEveTRDDigits - visualisation of TRD digits
15 //
16 // by A.Bercuci (A.Bercuci@gsi.de)   Fri Oct 27 2006
17 ///////////////////////////////////////////////////////////////////////
18
19 #ifndef AliEveTRDData_H
20 #define AliEveTRDData_H
21
22 #include <TEveQuadSet.h>
23 #include <TEveBoxSet.h>
24 #include <TEvePointSet.h>
25 #include <TEveLine.h>
26
27 #ifndef ALITRDARRAYADC_H
28 #include "AliTRDarrayADC.h"
29 #endif
30
31 class AliEveTRDChamber;
32 class AliEveTRDHits : public TEvePointSet
33 {
34 public:
35   AliEveTRDHits();
36   ~AliEveTRDHits();
37
38   void PointSelected(Int_t n);
39
40
41 private:
42   AliEveTRDHits(const AliEveTRDHits&);            // Not implemented
43   AliEveTRDHits& operator=(const AliEveTRDHits&); // Not implemented
44
45   ClassDef(AliEveTRDHits, 0); // Base class for TRD hits visualisation
46 };
47
48
49 class AliTRDdigitsManager;
50 class AliEveTRDDigits : public TEveQuadSet
51 {
52   //friend class AliEveTRDDigitsEditor;
53
54 public:
55   AliEveTRDDigits(AliEveTRDChamber *p);
56   ~AliEveTRDDigits();
57   void                  SetData(AliTRDdigitsManager *digits);
58
59 protected:
60   AliEveTRDChamber *fParent;
61
62 private:
63   AliEveTRDDigits(const AliEveTRDDigits&);            // Not implemented
64   AliEveTRDDigits& operator=(const AliEveTRDDigits&); // Not implemented
65
66   ClassDef(AliEveTRDDigits, 0); // Digits visualisation for TRD
67 };
68
69
70
71 class AliEveTRDClusters : public AliEveTRDHits
72 {
73 public:
74   AliEveTRDClusters();
75
76   void Load(Char_t *what="all") const; // *MENU*
77   void PointSelected(Int_t n);
78   void Print(Option_t *o = "") const; // *MENU*
79
80 private:
81   AliEveTRDClusters(const AliEveTRDClusters&);            // Not implemented
82   AliEveTRDClusters& operator=(const AliEveTRDClusters&); // Not implemented
83
84   ClassDef(AliEveTRDClusters, 0); // Base class for TRD clusters visualisation
85 };
86
87
88
89 class AliTRDseedV1;
90 class AliEveTRDTracklet : public TEveLine
91 {
92 public:
93   AliEveTRDTracklet(AliTRDseedV1 *trklt);
94   ~AliEveTRDTracklet();
95   AliEveTRDClusters* GetClusters() const {return fClusters;}
96   inline void        Load(Char_t *what="all") const; // *MENU*
97   void               Print(Option_t *o="") const; // *MENU*
98
99 private:
100   AliEveTRDClusters *fClusters;  // clusters
101
102   AliEveTRDTracklet(const AliEveTRDTracklet&);            // Not implemented
103   AliEveTRDTracklet& operator=(const AliEveTRDTracklet&); // Not implemented
104
105   ClassDef(AliEveTRDTracklet, 0); // TRD tracklet visualisation
106 };
107 void AliEveTRDTracklet::Load(Char_t *what) const
108 {
109   if(fClusters) fClusters->Load(what);
110 }
111
112
113 class AliTrackPoint;
114 class AliTRDtrackV1;
115 class AliRieman;
116 class AliEveTRDTrack : public TEveLine
117 {
118 public:
119   enum AliEveTRDTrackState{
120     kSource        = 0 
121     ,kPID          = 1 
122     ,kTrackCosmics = 2
123     ,kTrackModel   = 3
124   };
125   enum AliEveTRDTrackModel{
126     kRieman  = 0
127     ,kKalman = 1
128   };
129
130
131   AliEveTRDTrack(AliTRDtrackV1 *trk);
132   virtual ~AliEveTRDTrack();
133   //AliEveTRDTracklet*  GetTracklet(Int_t plane) const {return plane <6 && plane >= 0 ? fTracklet[plane] : NULL;}
134   void    Print(Option_t *opt="a") const; // *MENU*
135   void    Load(Char_t *what="all") const; // *MENU*
136   void    SetStatus(UChar_t s=0);         // *MENU*
137   void    SetESDstatus(ULong_t stat) {fESDStatus = stat;} 
138 private:
139   AliEveTRDTrack(const AliEveTRDTrack&);            // Not implemented
140   AliEveTRDTrack& operator=(const AliEveTRDTrack&); // Not implemented
141
142   UChar_t        fTrackState;   // bit map for the track drawing state
143   ULong_t        fESDStatus;    // ESD status bit for this track
144   Float_t        fAlpha;        // sector angle for this track  
145   AliTrackPoint *fPoints;       // track crossing points
146   AliRieman     *fRim;          // rieman fitter
147   ClassDef(AliEveTRDTrack, 0);  // TRD track visualisation
148 };
149
150
151 #include "TEveElement.h"
152
153 class AliTRDtrackletMCM;
154 class AliTRDtrackletWord;
155 class AliEveTRDTrackletOnline : public TEveLine
156 {
157 public:
158   AliEveTRDTrackletOnline(AliTRDtrackletMCM *tracklet);
159   AliEveTRDTrackletOnline(AliTRDtrackletWord *tracklet);
160   ~AliEveTRDTrackletOnline();
161
162   void               ShowMCM(Option_t *opt = "RHT") const; // *MENU*
163 private:
164   Int_t fDetector;
165   Int_t fROB;
166   Int_t fMCM;
167
168   AliEveTRDTrackletOnline(const AliEveTRDTrackletOnline&);            // Not implemented
169   AliEveTRDTrackletOnline& operator=(const AliEveTRDTrackletOnline&); // Not implemented
170
171   ClassDef(AliEveTRDTrackletOnline, 0); // TRD tracklet visualisation
172 };
173
174
175 class AliTRDmcmSim;
176 class AliEveTRDmcm : public TEveElement, public TNamed
177 {
178  public:
179   AliEveTRDmcm();
180   ~AliEveTRDmcm();
181
182   Bool_t Init(Int_t det, Int_t rob, Int_t mcm); // *MENU*
183   Bool_t LoadDigits(); // *MENU*
184   Bool_t Filter(); // *MENU*
185   Bool_t Tracklet(); // *MENU*
186   void Draw(Option_t* option = "FHT"); // *MENU*
187   Bool_t AssignPointer(const char* ptrname = "mcmtest"); // *MENU*
188
189  protected:
190   AliTRDmcmSim *fMCM;
191
192   AliEveTRDmcm(const AliEveTRDmcm&); // not implemented
193   AliEveTRDmcm& operator=(const AliEveTRDmcm&); // not implemented
194
195   ClassDef(AliEveTRDmcm, 0);
196 };
197
198 #endif