]>
Commit | Line | Data |
---|---|---|
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 | #ifndef ALIEVE_MUONChamber_H | |
10 | #define ALIEVE_MUONChamber_H | |
11 | ||
12 | #include <TEveElement.h> | |
13 | #include <TEveQuadSet.h> | |
14 | #include <TEvePointSet.h> | |
15 | ||
16 | #include <TNamed.h> | |
17 | #include <TAtt3D.h> | |
18 | #include <TAttBBox.h> | |
19 | ||
20 | ||
21 | class AliEveMUONData; | |
22 | class AliEveMUONChamberData; | |
23 | class AliEveMUONChamberEditor; | |
24 | class AliEveMUONChamberGL; | |
25 | ||
26 | class AliEveMUONChamber : public TEveElement, | |
27 | public TNamed, | |
28 | public TAtt3D, | |
29 | public TAttBBox | |
30 | ||
31 | { | |
32 | ||
33 | friend class AliEveMUONChamberGL; | |
34 | friend class AliEveMUONChamberEditor; | |
35 | ||
36 | AliEveMUONChamber(const AliEveMUONChamber&); // Not implemented | |
37 | AliEveMUONChamber& operator=(const AliEveMUONChamber&); // Not implemented | |
38 | ||
39 | protected: | |
40 | ||
41 | void UpdateQuads(); | |
42 | ||
43 | AliEveMUONData* fMUONData; // data for the current event | |
44 | Color_t fFrameColor; // main coloring | |
45 | UInt_t fRTS; //! Rendering Time Stamp | |
46 | Int_t fChamberID; // number of the chamber, 0 to 13 | |
47 | TEveQuadSet fQuadSet1; // 1st cathode plane digits | |
48 | TEveQuadSet fQuadSet2; // 2nd cathode plane digits | |
49 | TEvePointSet fPointSet1; // reconstructed points (1st cathode) | |
50 | TEvePointSet fPointSet2; // simulation hits | |
51 | Short_t fThreshold; // digit amplitude threshold | |
52 | Int_t fMaxVal; // digit amplitude maximum value | |
53 | Int_t fClusterSize; // cluster point size | |
54 | Int_t fHitSize; // hit point size | |
55 | ||
56 | void SetupColor(Int_t val, UChar_t* pix) const; | |
57 | ||
58 | mutable UChar_t* fColorArray; | |
59 | void ClearColorArray(); | |
60 | void SetupColorArray() const; | |
61 | UChar_t* ColorFromArray(Int_t val) const; | |
62 | void ColorFromArray(Int_t val, UChar_t* pix) const; | |
63 | Int_t ColorIndex(Int_t val) const; | |
64 | ||
65 | public: | |
66 | ||
67 | AliEveMUONChamber(Int_t id, const Text_t* n = "AliEveMUONChamber", const Text_t* t = 0); | |
68 | virtual ~AliEveMUONChamber(); | |
69 | ||
70 | virtual void ComputeBBox(); | |
71 | virtual void Paint(Option_t* option = ""); | |
72 | virtual UInt_t IncRTS() { return ++fRTS; }; | |
73 | virtual Bool_t CanEditMainColor() { return kTRUE; } | |
74 | ||
75 | void SetDataSource(AliEveMUONData *data); | |
76 | void SetChamberID(Int_t id); | |
77 | void SetFrameColor(Color_t col) { fFrameColor = col; IncRTS(); }; | |
78 | AliEveMUONData* GetData() const { return fMUONData; }; | |
79 | AliEveMUONChamberData* GetChamberData() const; | |
80 | Int_t GetID() const { return fChamberID; }; | |
81 | void SetThreshold(Short_t t); | |
82 | void SetMaxVal(Int_t mv); | |
83 | void SetClusterSize(Int_t size); | |
84 | void SetHitSize(Int_t size); | |
85 | ||
86 | ClassDef(AliEveMUONChamber,1); // Visualisation of the MUON chambers | |
87 | ||
88 | }; | |
89 | ||
90 | inline UChar_t* AliEveMUONChamber::ColorFromArray(Int_t val) const | |
91 | { | |
92 | if(val < fThreshold) val = fThreshold; | |
93 | if(val > fMaxVal) val = fMaxVal; | |
94 | return fColorArray + 4 * (val - fThreshold); | |
95 | } | |
96 | ||
97 | inline void AliEveMUONChamber::ColorFromArray(Int_t val, UChar_t* pix) const | |
98 | { | |
99 | UChar_t* c = ColorFromArray(val); | |
100 | pix[0] = c[0]; pix[1] = c[1]; pix[2] = c[2]; pix[3] = c[3]; | |
101 | } | |
102 | ||
103 | #endif |