24 class TEveRGBAPalette;
26 class TEveCaloViz :
public TEveElement,
30 public TEveProjectable
32 friend class TEveCaloVizEditor;
35 TEveCaloViz(
const TEveCaloViz&);
36 TEveCaloViz& operator=(
const TEveCaloViz&);
40 Bool_t fCellIdCacheOK;
50 Float_t fBarrelRadius;
61 TEveRGBAPalette* fPalette;
64 void AssignCaloVizParameters(TEveCaloViz* cv);
66 void SetupColorHeight(Float_t value, Int_t slice, Float_t& height)
const;
68 virtual void BuildCellIdCache() = 0;
71 TEveCaloViz(TEveCaloData* data=0,
const char* n=
"TEveCaloViz",
const char* t=
"");
73 virtual ~TEveCaloViz();
75 virtual TEveElement* ForwardSelection();
76 virtual TEveElement* ForwardEdit();
78 virtual void Paint(Option_t* option=
"");
80 virtual TClass* ProjectedClass(
const TEveProjection* p)
const;
81 virtual Float_t GetValToHeight()
const;
82 virtual void CellSelectionChanged() {}
84 virtual void SetScaleAbs(Bool_t x) { fScaleAbs = x; }
86 TEveCaloData* GetData()
const {
return fData; }
87 void SetData(TEveCaloData* d);
89 Float_t GetMaxVal()
const;
91 Bool_t AssertCellIdCache()
const;
92 void InvalidateCellIdCache() { fCellIdCacheOK=kFALSE; ResetBBox(); };
94 Float_t GetDataSliceThreshold(Int_t slice)
const;
95 void SetDataSliceThreshold(Int_t slice, Float_t val);
96 Color_t GetDataSliceColor(Int_t slice)
const;
97 void SetDataSliceColor(Int_t slice, Color_t col);
99 Float_t GetBarrelRadius()
const {
return fBarrelRadius; }
100 void SetBarrelRadius(Float_t r) { fBarrelRadius = r; ResetBBox(); }
101 Float_t GetEndCapPos ()
const {
return fEndCapPosF; }
102 Float_t GetForwardEndCapPos ()
const {
return fEndCapPosF; }
103 Float_t GetBackwardEndCapPos ()
const {
return fEndCapPosB; }
104 void SetEndCapPos (Float_t z) { fEndCapPosF = z; fEndCapPosB = -z; ResetBBox(); }
105 void SetForwardEndCapPos (Float_t z) { fEndCapPosF = z; ResetBBox(); }
106 void SetBackwardEndCapPos(Float_t z) { fEndCapPosB = z; ResetBBox(); }
108 Bool_t GetPlotEt()
const {
return fPlotEt; }
109 void SetPlotEt(Bool_t x);
111 void SetMaxTowerH(Float_t x) { fMaxTowerH = x; }
112 Float_t GetMaxTowerH()
const {
return fMaxTowerH; }
113 Bool_t GetScaleAbs()
const {
return fScaleAbs; }
114 void SetMaxValAbs(Float_t x) { fMaxValAbs = x; }
115 Float_t GetMaxValAbs()
const {
return fMaxValAbs; }
117 Float_t GetTransitionEta()
const;
118 Float_t GetTransitionEtaForward()
const;
119 Float_t GetTransitionEtaBackward()
const;
120 Float_t GetTransitionTheta()
const;
121 Float_t GetTransitionThetaForward()
const;
122 Float_t GetTransitionThetaBackward()
const;
124 TEveRGBAPalette* GetPalette()
const {
return fPalette; }
125 void SetPalette(TEveRGBAPalette* p);
127 TEveRGBAPalette* AssertPalette();
128 Bool_t GetValueIsColor()
const {
return fValueIsColor;}
129 void SetValueIsColor(Bool_t x) { fValueIsColor = x;}
131 Bool_t GetAutoRange()
const {
return fAutoRange; }
132 void SetAutoRange(Bool_t x) { fAutoRange = x; }
134 void SetEta(Float_t l, Float_t u);
135 Float_t GetEta()
const {
return 0.5f*(fEtaMin+fEtaMax); }
136 Float_t GetEtaMin()
const {
return fEtaMin; }
137 Float_t GetEtaMax()
const {
return fEtaMax; }
138 Float_t GetEtaRng()
const {
return fEtaMax-fEtaMin; }
140 void SetPhi(Float_t phi) { SetPhiWithRng(phi, fPhiOffset); }
141 void SetPhiRng(Float_t rng) { SetPhiWithRng(fPhi, rng); }
142 void SetPhiWithRng(Float_t x, Float_t r);
143 Float_t GetPhi()
const {
return fPhi; }
144 Float_t GetPhiMin()
const {
return fPhi-fPhiOffset; }
145 Float_t GetPhiMax()
const {
return fPhi+fPhiOffset; }
146 Float_t GetPhiRng()
const {
return 2.0f*fPhiOffset; }
148 Bool_t CellInEtaPhiRng (TEveCaloData::CellData_t&)
const;
150 ClassDef(TEveCaloViz, 0);
156 class TEveCalo3D :
public TEveCaloViz
158 friend class TEveCalo3DGL;
160 TEveCalo3D(
const TEveCalo3D&);
161 TEveCalo3D& operator=(
const TEveCalo3D&);
164 TEveCaloData::vCellId_t fCellList;
166 Bool_t fRnrEndCapFrame;
167 Bool_t fRnrBarrelFrame;
171 Char_t fFrameTransparency;
173 virtual void BuildCellIdCache();
176 TEveCalo3D(TEveCaloData* d=0,
const char* n=
"TEveCalo3D",
const char* t=
"xx");
177 virtual ~TEveCalo3D() {}
178 virtual void ComputeBBox();
180 void SetFrameWidth(Float_t w) { fFrameWidth = w; }
181 Float_t GetFrameWidth()
const {
return fFrameWidth; }
183 void SetRnrFrame(Bool_t e, Bool_t b) { fRnrEndCapFrame = e; fRnrBarrelFrame = b; }
184 void GetRnrFrame(Bool_t &e, Bool_t &b)
const { e = fRnrEndCapFrame; b = fRnrBarrelFrame; }
185 void SetRnrEndCapFrame(Bool_t r) { fRnrEndCapFrame = r; }
186 void SetRnrBarrelFrame(Bool_t r) { fRnrBarrelFrame = r; }
187 Bool_t GetRnrEndCapFrame()
const {
return fRnrEndCapFrame; }
188 Bool_t GetRnrBarrelFrame()
const {
return fRnrBarrelFrame; }
190 void SetFrameTransparency(Char_t x) { fFrameTransparency = x; }
191 Char_t GetFrameTransparency()
const {
return fFrameTransparency; }
193 ClassDef(TEveCalo3D, 0);
199 class TEveCalo2D :
public TEveCaloViz,
202 friend class TEveCalo2DGL;
205 typedef std::vector<TEveCaloData::vCellId_t*> vBinCells_t;
206 typedef std::vector<TEveCaloData::vCellId_t*>::iterator vBinCells_i;
209 TEveCalo2D(
const TEveCalo2D&);
210 TEveCalo2D& operator=(
const TEveCalo2D&);
212 TEveProjection::EPType_e fOldProjectionType;
213 void CellSelectionChangedInternal(TEveCaloData::vCellId_t& cells, std::vector<TEveCaloData::vCellId_t*>& cellLists);
216 std::vector<TEveCaloData::vCellId_t*> fCellLists;
218 std::vector<TEveCaloData::vCellId_t*> fCellListsSelected;
219 std::vector<TEveCaloData::vCellId_t*> fCellListsHighlighted;
222 Float_t fMaxEtSumBin;
224 virtual void BuildCellIdCache();
226 virtual void SetDepthLocal(Float_t x) { fDepth = x; }
229 TEveCalo2D(
const char* n=
"TEveCalo2D",
const char* t=
"");
230 virtual ~TEveCalo2D();
232 virtual void SetProjection(TEveProjectionManager* proj, TEveProjectable* model);
233 virtual void UpdateProjection();
234 virtual void ComputeBBox();
236 virtual void CellSelectionChanged();
238 virtual void SetScaleAbs(Bool_t);
240 virtual Float_t GetValToHeight()
const;
242 const TEveCalo2D::vBinCells_t& GetBinLists()
const {
return fCellLists; }
244 ClassDef(TEveCalo2D, 0);
249 class TEveCaloLego :
public TEveCaloViz
251 friend class TEveCaloLegoGL;
252 friend class TEveCaloLegoOverlay;
255 enum EProjection_e { kAuto, k3D, k2D };
256 enum E2DMode_e { kValColor, kValSize, kValSizeOutline };
257 enum EBoxMode_e { kNone, kFrontBack, kBack};
260 TEveCaloLego(
const TEveCaloLego&);
261 TEveCaloLego& operator=(
const TEveCaloLego&);
264 TEveCaloData::vCellId_t fCellList;
269 Char_t fPlaneTransparency;
276 Bool_t fNormalizeRebin;
278 EProjection_e fProjection;
285 Bool_t fHasFixedHeightIn2DMode;
286 Float_t fFixedHeightValIn2DMode;
288 Int_t fDrawNumberCellPixels;
289 Int_t fCellPixelFontSize;
291 virtual void BuildCellIdCache();
294 TEveCaloLego(TEveCaloData* data=0,
const char* n=
"TEveCaloLego",
const char* t=
"");
295 virtual ~TEveCaloLego(){}
297 virtual void ComputeBBox();
298 virtual void SetData(TEveCaloData* d);
300 Color_t GetFontColor()
const {
return fFontColor; }
301 void SetFontColor(Color_t ci) { fFontColor=ci; }
303 Color_t GetGridColor()
const {
return fGridColor; }
304 void SetGridColor(Color_t ci) { fGridColor=ci; }
306 Color_t GetPlaneColor()
const {
return fPlaneColor; }
307 void SetPlaneColor(Color_t ci) { fPlaneColor=ci; }
309 Char_t GetPlaneTransparency()
const {
return fPlaneTransparency; }
310 void SetPlaneTransparency(Char_t t) { fPlaneTransparency=t; }
312 Int_t GetNZSteps()
const {
return fNZSteps; }
313 void SetNZSteps(Int_t s) { fNZSteps = s;}
315 Int_t GetPixelsPerBin()
const {
return fPixelsPerBin; }
316 void SetPixelsPerBin(Int_t bw) { fPixelsPerBin = bw; }
318 Bool_t GetAutoRebin()
const {
return fAutoRebin; }
319 void SetAutoRebin(Bool_t s) { fAutoRebin = s;}
321 Bool_t GetNormalizeRebin()
const {
return fNormalizeRebin; }
322 void SetNormalizeRebin(Bool_t s) { fNormalizeRebin = s; fCellIdCacheOK=kFALSE;}
324 EProjection_e GetProjection()
const {
return fProjection; }
325 void SetProjection(EProjection_e p) { fProjection = p; }
327 void Set2DMode(E2DMode_e p) { f2DMode = p; }
328 E2DMode_e Get2DMode() {
return f2DMode; }
330 bool GetHasFixedHeightIn2DMode()
const {
return fHasFixedHeightIn2DMode; }
331 void SetHasFixedHeightIn2DMode(
bool x) { fHasFixedHeightIn2DMode = x; }
333 float GetFixedHeightValIn2DMode()
const {
return fFixedHeightValIn2DMode; }
334 void SetFixedHeightValIn2DMode(
float x) { fFixedHeightValIn2DMode = x; }
336 void SetBoxMode(EBoxMode_e p) { fBoxMode = p; }
337 EBoxMode_e GetBoxMode() {
return fBoxMode; }
339 Bool_t GetDrawHPlane()
const {
return fDrawHPlane; }
340 void SetDrawHPlane(Bool_t s) { fDrawHPlane = s;}
342 Float_t GetHPlaneVal()
const {
return fHPlaneVal; }
343 void SetHPlaneVal(Float_t s) { fHPlaneVal = s;}
345 Int_t GetDrawNumberCellPixels() {
return fDrawNumberCellPixels; }
346 void SetDrawNumberCellPixels(Int_t x) { fDrawNumberCellPixels = x; }
347 Int_t GetCellPixelFontSize() {
return fCellPixelFontSize; }
348 void SetCellPixelFontSize(Int_t x) { fCellPixelFontSize = x; }
350 ClassDef(TEveCaloLego, 0);