]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveBase/AliEveEventManager.h
AliEveEventManager
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveEventManager.h
index 8310147dec1d003b8532c1c99020d274e3cde1d5..ca7c86ac54b557927b91f2c894cc826e89eec7db 100644 (file)
@@ -7,14 +7,20 @@
  * full copyright notice.                                                 *
  **************************************************************************/
 
-#ifndef AliEveEventManaget_H
+#ifndef AliEveEventManager_H
 #define AliEveEventManager_H
 
 #include <TEveEventManager.h>
+#include <TQObject.h>
+#include <TObjArray.h>
+#include <AliESDEvent.h>
+
+class AliEveMacroExecutor;
 
 class AliRunLoader;
 class AliESDEvent;
 class AliESDfriend;
+class AliRawReader;
 
 class AliMagF;
 
@@ -31,64 +37,124 @@ class TGeoManager;
 //
 
 
-class AliEveEventManager : public TEveEventManager
+class AliEveEventManager : public TEveEventManager,
+                           public TQObject
 {
-private:
-  AliEveEventManager(const AliEveEventManager&);            // Not implemented
-  AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
-
-protected:
-  TString       fPath;                 // URL to event-data.
-  Int_t         fEventId;              // Id of current event.
-
-  AliRunLoader* fRunLoader;            // Run loader.
-
-  TFile*        fESDFile;              // ESD file.
-  TTree*        fESDTree;              // ESD tree.
-  AliESDEvent*  fESD;                  // ESDEvent object.
-  AliESDfriend* fESDfriend;            // ESDfriend object.
-  Bool_t        fESDfriendExists;      // Flag specifying if ESDfriend was found during opening of the event-data.
-
-  static TString  fgCdbUri;            // Global URI to CDB.
-  static Bool_t   fgAssertRunLoader;   // Global flag specifying if AliRunLoader must be asserted during opening of the event-data.
-  static Bool_t   fgAssertESD;         // Global flag specifying if ESDEvent must be asserted during opening of the event-data.
-
-  static AliMagF* fgMagField;          // Global pointer to magneti field.
-
 public:
-  static void SetCdbUri(const Text_t* cdb) { if (cdb) fgCdbUri = cdb; }
-  static void SetAssertElements(Bool_t assertRunloader, Bool_t assertEsd)
-  { fgAssertRunLoader = assertRunloader; fgAssertESD = assertEsd; }
+  static void SetESDFileName(const Text_t* esd);
+  static void SetRawFileName(const Text_t* raw);
+  static void SetCdbUri(const Text_t* cdb);
+  static void SetAssertElements(Bool_t assertRunloader, Bool_t assertEsd, Bool_t assertRaw);
 
   AliEveEventManager();
   AliEveEventManager(TString path, Int_t ev=0);
   virtual ~AliEveEventManager();
 
 
-  virtual void Open();
-  virtual void GotoEvent(Int_t event);
-  virtual void NextEvent() { GotoEvent(fEventId + 1); }
-  virtual void PrevEvent() { GotoEvent(fEventId - 1); }
-  virtual void Close();
+  virtual void  Open();
+  void          SetEvent(AliRunLoader *runLoader, AliRawReader *rawReader, AliESDEvent *esd);
+  virtual Int_t GetMaxEventId(Bool_t refreshESD=kFALSE) const;
+  virtual void  GotoEvent(Int_t event);
+  virtual void  NextEvent();
+  virtual void  PrevEvent();
+  virtual void  Close();
+  Bool_t        FindNextByTrigger(Int_t& i);
+  Bool_t        FindPrevByTrigger(Int_t& i);
+
 
   Int_t         GetEventId()   const { return fEventId; }
   AliRunLoader* GetRunLoader() const { return fRunLoader; }
+  TFile*        GetESDFile()   const { return fESDFile; }
   TTree*        GetESDTree()   const { return fESDTree; }
   AliESDEvent*  GetESD()       const { return fESD; }
   AliESDfriend* GetESDfriend()       const { return fESDfriend; }
   Bool_t        GetESDfriendExists() const { return fESDfriendExists; }
   virtual const Text_t* GetTitle()   const { return fPath.Data(); }
+  TString       GetEventInfoHorizontal() const;
+  TString       GetEventInfoVertical()   const;
+
+  static Bool_t HasRunLoader();
+  static Bool_t HasESD();
+  static Bool_t HasESDfriend();
+  static Bool_t HasRawReader();
 
   static AliRunLoader* AssertRunLoader();
   static AliESDEvent*  AssertESD();
   static AliESDfriend* AssertESDfriend();
+  static AliRawReader* AssertRawReader();
 
   static AliMagF*      AssertMagField();
 
   static TGeoManager*  AssertGeometry();
 
-  ClassDef(AliEveEventManager, 1);
-}; // endclass AliEveEventManager
+  Double_t      GetAutoLoadTime()        const { return fAutoLoadTime; }
+  Bool_t        GetAutoLoad()            const { return fAutoLoad;     }
+  void          SetAutoLoadTime(Float_t time);
+  void          SetAutoLoad(Bool_t autoLoad);
+  void          AutoLoadNextEvent();
+
+  Bool_t        GetSelectOnTriggerType()     const { return fSelectOnTriggerType; }
+  TString       GetTriggerType()             const { return fTriggerType; }
+  void          SetTriggerType(const TString& triggertype) { fTriggerType = triggertype; }
+  void          SetSelectOnTriggerType(Bool_t sel)         { fSelectOnTriggerType = sel; }
+
+  Bool_t        AreEventFilesOpened()    const { return fIsOpen;       }
+  Bool_t        IsEventAvailable()       const { return fHasEvent;     }
+  Bool_t        IsUnderExternalControl() const { return fExternalCtrl; }
+
+  virtual void  AfterNewEventLoaded();
+  void          NewEventLoaded();      // *SIGNAL*
+
+  AliEveMacroExecutor* GetExecutor() const { return fExecutor; }
+
+protected:
+  TString       fPath;                 // URL to event-data.
+  Int_t         fEventId;              // Id of current event.
+
+  AliRunLoader* fRunLoader;            // Run loader.
+
+  TFile*        fESDFile;              // ESD file.
+  TTree*        fESDTree;              // ESD tree.
+  AliESDEvent*  fESD;                  // ESDEvent object.
+  AliESDfriend* fESDfriend;            // ESDfriend object.
+  Bool_t        fESDfriendExists;      // Flag specifying if ESDfriend was found during opening of the event-data.
+
+  AliRawReader* fRawReader;             // Raw-adata reader.
+
+  Bool_t        fAutoLoad;              // Automatic loading of events (online)
+  Float_t       fAutoLoadTime;          // Auto-load time in seconds
+  TTimer       *fAutoLoadTimer;         // Timer for automatic event loading
+
+  Bool_t        fIsOpen;                // Are event-files opened.
+  Bool_t        fHasEvent;              // Is an event available.
+  Bool_t        fExternalCtrl;          // Are we under external event-loop.
+
+  Bool_t        fSelectOnTriggerType;   //whether to select on triggertype
+  TString       fTriggerType;           //triggertype to select on
+
+  AliEveMacroExecutor *fExecutor;       // Executor for std macros
+
+  static TString  fgESDFileName;        // Name by which to open ESD.
+  static TString  fgRawFileName;        // Name by which to open raw-data file.
+  static TString  fgCdbUri;            // Global URI to CDB.
+  static Bool_t   fgAssertRunLoader;   // Global flag specifying if AliRunLoader must be asserted during opening of the event-data.
+  static Bool_t   fgAssertESD;         // Global flag specifying if ESDEvent must be asserted during opening of the event-data.
+  static Bool_t   fgAssertRaw;         // Global flag specifying if raw-data presence must be asserted during opening of the event-data.
+
+  static AliMagF* fgMagField;          // Global pointer to magneti field.
+
+private:
+  AliEveEventManager(const AliEveEventManager&);            // Not implemented
+  AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
+
+  void InitInternals();
+  void StartAutoLoadTimer();
+  void StopAutoLoadTimer();
+
+  Bool_t fAutoLoadTimerRunning; // State of auto-load timer.
+
+  ClassDef(AliEveEventManager, 0); // Interface for getting all event components in a uniform way.
+};
 
 extern AliEveEventManager* gAliEveEvent;