#ifndef ROOT_TEveCaloData
#define ROOT_TEveCaloData
#include <vector>
#include "Rtypes.h"
#include "TEveUtil.h"
class TH2F;
class TAxis;
class THStack;
class TEveCaloData: public TEveRefBackPtr
{
public:
struct SliceInfo_t
{
TString fName;
Float_t fThreshold;
Int_t fID;
Color_t fColor;
TH2F *fHist;
SliceInfo_t(): fName(""), fThreshold(0), fID(-1), fColor(Color_t(4)), fHist(0){}
SliceInfo_t(TH2F* h): fName(""), fThreshold(0), fID(-1), fColor(Color_t(4)), fHist(h) {}
virtual ~SliceInfo_t() {}
void Setup(const char* name, Float_t threshold, Color_t col)
{
fName = name;
fThreshold = threshold;
fColor = col;
};
ClassDef(SliceInfo_t, 0);
};
typedef std::vector<SliceInfo_t> vSliceInfo_t;
typedef std::vector<SliceInfo_t>::iterator vSliceInfo_i;
struct CellId_t
{
Int_t fTower;
Int_t fSlice;
CellId_t(Int_t t, Int_t s):fTower(t), fSlice(s){}
};
struct CellData_t
{
Float_t fValue;
Float_t fPhiMin;
Float_t fPhiMax;
Float_t fThetaMin;
Float_t fThetaMax;
Float_t fEtaMin;
Float_t fEtaMax;
Int_t fZSideSign;
CellData_t(): fValue(0), fPhiMin(0), fPhiMax(0), fThetaMin(0), fThetaMax(0), fZSideSign(1) {}
void Configure(Float_t v, Float_t e1, Float_t e2, Float_t p1, Float_t p2);
Float_t Value(Bool_t) const;
Float_t EtaMin() const { return fEtaMin; }
Float_t EtaMax() const { return fEtaMax; }
Float_t Eta() const { return (fEtaMin+fEtaMax)*0.5f; }
Float_t EtaDelta() const { return fEtaMax-fEtaMin; }
Float_t ThetaMin() const { return fThetaMin; }
Float_t ThetaMax() const { return fThetaMax; }
Float_t Theta() const { return (fThetaMax+fThetaMin)*0.5f; }
Float_t ThetaDelta() const { return fThetaMax-fThetaMin; }
Float_t PhiMin() const { return fPhiMin; }
Float_t PhiMax() const { return fPhiMax; }
Float_t Phi() const { return (fPhiMin+fPhiMax)*0.5f; }
Float_t PhiDelta() const { return fPhiMax-fPhiMin; }
Float_t ZSideSign()const { return fZSideSign;}
void Dump() const;
};
typedef std::vector<CellId_t> vCellId_t;
typedef std::vector<CellId_t>::iterator vCellId_i;
private:
TEveCaloData(const TEveCaloData&);
TEveCaloData& operator=(const TEveCaloData&);
protected:
vSliceInfo_t fSliceInfos;
TAxis* fEtaAxis;
TAxis* fPhiAxis;
public:
TEveCaloData();
virtual ~TEveCaloData(){}
virtual void GetCellList(Float_t etaMin, Float_t etaMax,
Float_t phi, Float_t phiRng, vCellId_t &out) const = 0;
virtual void GetCellData(const CellId_t &id, CellData_t& data) const = 0;
virtual void GetCellData(const CellId_t &id, Float_t phiMin, Float_t phiRng, CellData_t& data) const = 0;
virtual void SetSliceThreshold(Int_t slice, Float_t threshold);
virtual void SetSliceColor(Int_t slice, Color_t col);
virtual void InvalidateUsersCellIdCache();
virtual void DataChanged();
virtual Bool_t SupportsEtaBinning(){ return kFALSE; }
virtual Bool_t SupportsPhiBinning(){ return kFALSE; }
virtual TAxis* GetEtaBins(){ return fEtaAxis;}
virtual TAxis* GetPhiBins(){ return fPhiAxis ;}
virtual Int_t GetNSlices() const = 0;
virtual Float_t GetMaxVal(Bool_t et) const = 0;
SliceInfo_t& RefSliceInfo(Int_t s) { return fSliceInfos[s]; }
virtual void GetEtaLimits(Double_t &min, Double_t &max) const = 0;
virtual void GetPhiLimits(Double_t &min, Double_t &max) const = 0;
ClassDef(TEveCaloData, 0);
};
class TEveCaloDataHist: public TEveCaloData
{
private:
TEveCaloDataHist(const TEveCaloDataHist&);
TEveCaloDataHist& operator=(const TEveCaloDataHist&);
protected:
THStack* fHStack;
Float_t fMaxValEt;
Float_t fMaxValE;
public:
TEveCaloDataHist();
virtual ~TEveCaloDataHist();
THStack* GetStack() { return fHStack; }
virtual void DataChanged();
virtual void GetCellList( Float_t etaMin, Float_t etaMax,
Float_t phi, Float_t phiRng, vCellId_t &out) const;
virtual void GetCellData(const TEveCaloData::CellId_t &id, TEveCaloData::CellData_t& data) const;
virtual void GetCellData(const CellId_t &id, Float_t phiMin, Float_t phiRng, CellData_t& data) const;
virtual Bool_t SupportsEtaBinning(){ return kTRUE; }
virtual Bool_t SupportsPhiBinning(){ return kTRUE; }
virtual void GetEtaLimits(Double_t &min, Double_t &max) const;
virtual void GetPhiLimits(Double_t &min, Double_t &max) const;
Int_t AddHistogram(TH2F* hist);
virtual Float_t GetMaxVal(Bool_t et) const {return (et)? fMaxValEt:fMaxValE;}
virtual Int_t GetNSlices() const;
ClassDef(TEveCaloDataHist, 0);
};
#endif
Last change: Wed Jun 25 08:36:34 2008
Last generated: 2008-06-25 08:36
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.