-// $Id$
+// $Id: AliEveEventManager.h 64557 2013-10-16 20:03:08Z hristov $
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
/**************************************************************************
#include <TEveEventManager.h>
#include <TQObject.h>
#include <TObjArray.h>
+#include <TThread.h>
#include <AliEventInfo.h>
-
#include <AliESDEvent.h>
-
-//#include <zmq.hpp>
-
+#include "AliStorageTypes.h"
class AliEveMacroExecutor;
class AliEveEventSelector;
//
-class AliEveEventManager : public TEveEventManager,
- public TQObject
+class AliEveEventManager : public TEveEventManager, public TQObject
{
public:
+ AliEveEventManager(const TString& name="Event", Int_t ev=0);
+ virtual ~AliEveEventManager();
+
enum EVisibleESDTrees{ kOfflineTree, kHLTTree };
static void SetESDFileName(const TString& esd, EVisibleESDTrees shown=kOfflineTree);
// assumes the filenames of ESD, AOD, etc are standard ALICE names
// (AliESDs.root, AliESDfriends.root, AliAOD.root, AliAODfriend.root, galice.root,raw.root)
static void SetFilesPath(const TString& path);
-
static void SetAssertElements(Bool_t assertRunloader, Bool_t assertEsd,
Bool_t assertAod, Bool_t assertRaw);
static void SearchRawForCentralReconstruction();
- AliEveEventManager(const TString& name="Event", Int_t ev=0);
- virtual ~AliEveEventManager();
-
virtual void Open();
- void SetEvent(AliRunLoader *runLoader, AliRawReader *rawReader, AliESDEvent *esd, AliESDfriend *esdf);
virtual Int_t GetMaxEventId(Bool_t refreshESD=kFALSE) const;
virtual void GotoEvent(Int_t event);
virtual void NextEvent();
virtual void PrevEvent();
+ void MarkCurrentEvent();
virtual void Close();
+
+ void SetEvent(AliRunLoader *runLoader, AliRawReader *rawReader, AliESDEvent *esd, AliESDfriend *esdf);
void Timeout(); // * SIGNAL*
Int_t GetEventId() const { return fEventId; }
TString GetEventInfoVertical() const;
const AliEventInfo* GetEventInfo();
- static bool ConnectToServer(); // connect to the events server
- //static zmq::socket_t* AssertSubscriber();
-
static Int_t CurrentEventId();
-
static Bool_t HasRunLoader();
static Bool_t HasESD();
static Bool_t HasESDfriend();
static AliESDfriend* AssertESDfriend();
static AliAODEvent* AssertAOD();
static AliRawReader* AssertRawReader();
-
static AliMagF* AssertMagField();
static TGeoManager* AssertGeometry();
static AliRecoParam* AssertRecoParams();
static AliEveEventManager* AddDependentManager(const TString& name, const TString& path);
static AliEveEventManager* GetDependentManager(const TString& name);
-
static AliEveEventManager* GetMaster();
static AliEveEventManager* GetCurrent();
-
static void RegisterTransient (TEveElement* element);
static void RegisterTransientList(TEveElement* element);
-
Double_t GetAutoLoadTime() const { return fAutoLoadTime; }
Bool_t GetAutoLoad() const { return fAutoLoad; }
void SetAutoLoadTime(Float_t time);
Bool_t IsEventAvailable() const { return fHasEvent; }
Bool_t IsUnderExternalControl() const { return fExternalCtrl; }
+ Bool_t IsOnlineMode() const { return fOnlineMode; }
+
Bool_t InsertGlobal(const TString& tag, TEveElement* model);
Bool_t InsertGlobal(const TString& tag, TEveElement* model,
Bool_t replace, Bool_t update);
virtual void AfterNewEventLoaded();
void NewEventDataLoaded(); // *SIGNAL*
void NewEventLoaded(); // *SIGNAL*
+ void NoEventLoaded(); // *SIGNAL*
+ void StorageManagerOk(); // *SIGNAL*
+ void StorageManagerDown(); // *SIGNAL*
AliEveMacroExecutor* GetExecutor() const { return fExecutor; }
+ void InitOCDB(int runNo=-1);
+
+ void PrepareForNewEvent(AliESDEvent *event);
+ Int_t NewEventAvailable();
protected:
Int_t fEventId; // Id of current event.
static AliRecoParam* fgRecoParam;
static Bool_t fgUniformField; // Track with uniform field.
- //static zmq::context_t* fgSubContext;
- //static zmq::socket_t* fgSubSock;
-private:
- AliEveEventManager(const AliEveEventManager&); // Not implemented
- AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
+private:
void InitInternals();
+
void StartAutoLoadTimer();
void StopAutoLoadTimer();
+ Bool_t fAutoLoadTimerRunning; // State of auto-load timer.
static Bool_t InitGRP();
static Bool_t InitRecoParam();
-
TTree* readESDTree(const char* treeName, int &run);
- Bool_t fAutoLoadTimerRunning; // State of auto-load timer.
-
static AliEveEventManager* fgMaster;
static AliEveEventManager* fgCurrent;
+ static void* DispatchEventListener(void *arg){static_cast<AliEveEventManager*>(arg)->GetNextEvent();return nullptr;}
+ static void* DispatchStorageManagerWatcher(void *arg){static_cast<AliEveEventManager*>(arg)->CheckStorageStatus();return nullptr;}
+ void GetNextEvent();
+ void CheckStorageStatus();
+ TThread *fEventListenerThread;
+ TThread *fStorageManagerWatcherThread;
+ TMutex *fMutex;
+ AliESDEvent *fCurrentEvent[2];
+ TTree *fCurrentTree[2];
+ int fEventInUse;
+ int fWritingToEventIndex;
+ bool fIsNewEventAvaliable;
+ storageSockets fgSubSock;
+
+ Bool_t fOnlineMode;
+ Bool_t fStorageDown;
+ Bool_t fFinished;
+
+ AliEveEventManager(const AliEveEventManager&); // Not implemented
+ AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
+
ClassDef(AliEveEventManager, 0); // Interface for getting all event components in a uniform way.
};