#ifndef AliEnViz_AEVManager_H
#define AliEnViz_AEVManager_H
#include <Glasses/ZNameMap.h>
class SolarSystem;
class AEVSite;
class AEVSiteList;
class AEVMlSucker;
class AEVManager : public ZNameMap
{
MAC_RNR_FRIENDS(AEVManager);
private:
void _init();
public:
enum SiteViz_e { SV_None, SV_All, SV_RunningJobs, SV_ErrorJobs, SV_EventsDone, SV_EventsFrac };
enum UserViz_e { UV_None, UV_All, UV_RunningJobs, UV_ErrorJobs };
protected:
ZLink<SolarSystem> mSolarSystem;
ZLink<AEVSiteList> mSites;
ZLink<AEVMlSucker> mSucker;
Int_t mTimeWindow;
public:
void SetTimeWindow(Int_t time);
void RescanLimits(Bool_t drop_cuts=false);
protected:
SiteViz_e mSiteVizMode;
Int_t mSiteMinVal;
Int_t mSiteMaxVal;
Int_t mSiteMinCut;
Int_t mSiteMaxCut;
UserViz_e mUserVizMode;
#ifndef __CINT__
typedef Int_t AEVSite::*SiteInt_t;
struct SiteVar
{
SiteInt_t fVarPtr;
Int_t fMin, fMax;
Int_t fLow, fHigh;
SiteVar() : fVarPtr(0), fMin(0), fMax(0), fLow(0), fHigh(0) {}
};
SiteVar mSVJobsRunning;
SiteVar mSVJobsError;
SiteVar mSVEventsDone;
SiteVar mSVEventsFrac;
SiteVar *mSVCurrent;
#endif
void update_sv_current();
void select_sv_current();
bool update_sv_current(AEVSite* site);
void select_sv_current(AEVSite* site);
public:
AEVManager(const Text_t* n="AEVManager", const Text_t* t=0);
virtual ~AEVManager();
void EmitSiteVizRay();
void EmitUserVizRay();
void SetSiteMinCut(Int_t min);
void SetSiteMaxCut(Int_t max);
void SiteNew(AEVSite* site);
void SitePositionChanged(AEVSite* site);
void SiteChanged(AEVSite* site);
void MakeInfoText();
#include "AEVManager.h7"
ClassDef(AEVManager, 1);
};
#endif