]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveDet/AliEveITSScaledModule.h
dce43eb41872ee8689f0678a6427f3cd3b058c91
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveITSScaledModule.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 #ifndef ALIEVE_ITSScaledModule_H
11 #define ALIEVE_ITSScaledModule_H
12
13 #include <TEveUtil.h>
14 #include <EveDet/AliEveITSModule.h>
15
16 #include <TQObject.h>
17
18
19 /******************************************************************************/
20 // AliEveDigitScaleInfo
21 /******************************************************************************/
22
23 class AliEveDigitScaleInfo : public TQObject, public TEveRefBackPtr
24 {
25 public:
26   enum StatType_e { kST_Occup, kST_Average, kST_Rms };
27
28   // Bool_t           fAutoUpdatePalette;
29 private:
30   AliEveDigitScaleInfo(const AliEveDigitScaleInfo&);            // Not implemented
31   AliEveDigitScaleInfo& operator=(const AliEveDigitScaleInfo&); // Not implemented
32
33 protected:
34   Int_t            fScale;        // Current scale.
35   Int_t            fStatType;     // Digit scaling algorithm, see StatType_e.
36
37   Bool_t           fSyncPalette;  // Synchronize palette on next usage.
38
39 public:
40   AliEveDigitScaleInfo();
41   virtual ~AliEveDigitScaleInfo() {}
42
43   Int_t  GetScale() const { return fScale; }
44   void   ScaleChanged(Int_t s);
45
46   Int_t  GetStatType() const { return fStatType; }
47   void   StatTypeChanged(Int_t t);
48
49   Bool_t GetSyncPalette() const   { return fSyncPalette; }
50   void   SetSyncPalette(Bool_t x) { fSyncPalette = x; }
51
52   ClassDef(AliEveDigitScaleInfo, 1);
53 };
54
55 /******************************************************************************/
56 // ScaledDigit
57 /******************************************************************************/
58
59 /******************************************************************************/
60 // AliEveITSScaledModule
61 /******************************************************************************/
62
63 class AliEveITSScaledModule : public AliEveITSModule
64 {
65   friend class ITSSDSubEditor;
66
67 public:
68   struct ScaledDigit : public TObject
69   {
70   public:
71     Int_t N;
72     Float_t sum;
73     Float_t sqr_sum;
74     Int_t min_i,min_j;
75     Int_t max_i,max_j;
76
77     ScaledDigit();
78     ScaledDigit(Int_t di, Int_t dj);
79
80     void Dump() const;
81   };
82
83 private:
84   std::map<Int_t, ScaledDigit> fDigitsMap;
85
86   AliEveITSScaledModule(const AliEveITSScaledModule&);            // Not implemented
87   AliEveITSScaledModule& operator=(const AliEveITSScaledModule&); // Not implemented
88
89 protected:
90   Int_t       fNx;   // per module
91   Int_t       fNz;
92
93   Int_t       fNCx;  // per cell
94   Int_t       fNCz;
95
96   AliEveDigitScaleInfo* fScaleInfo;
97
98 public:
99   AliEveITSScaledModule(Int_t gid, AliEveITSDigitsInfo* info, AliEveDigitScaleInfo* si );
100   virtual ~AliEveITSScaledModule();
101
102   virtual void DigitSelected(Int_t idx);
103
104   virtual void LoadQuads();
105   void         SetQuadValues();
106
107   void         SyncPalette();
108
109   void         GetScaleData(Int_t& cnx, Int_t& cnz, Int_t& total);
110   AliEveDigitScaleInfo*  GetScaleInfo() { return fScaleInfo; }
111
112   ClassDef(AliEveITSScaledModule, 1); // Visualization of an ITS module with digits aggregated on a grid of pre-defined size.
113 }; // endclass AliEveITSScaledModule
114
115 #endif