]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveBase/AliEveEventManager.h
New detector AD
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveEventManager.h
index 092a220b3f5533be3c74aaea436922e84de7ea7b..30cc4b7da2ecc14b57a463e012b53ebec1e71a37 100644 (file)
@@ -1,4 +1,4 @@
-// $Id$
+// $Id: AliEveEventManager.h 59763 2012-11-27 12:42:41Z hristov $
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
 #include <TQObject.h>
 #include <TObjArray.h>
 
+#include <AliEventInfo.h>
+
+#include <AliESDEvent.h>
+
+//#include <zmq.hpp>
+
+
 class AliEveMacroExecutor;
+class AliEveEventSelector; 
 
 class AliRunLoader;
 class AliESDEvent;
@@ -22,11 +30,16 @@ class AliESDfriend;
 class AliAODEvent;
 class AliRawReader;
 
+class AliGRPObject;
+class AliRecoParam;
 class AliMagF;
 
+class TEveElement;
 class TFile;
 class TTree;
 class TGeoManager;
+class TString;
+class TMap;
 
 //==============================================================================
 //
@@ -38,149 +51,191 @@ class TGeoManager;
 
 
 class AliEveEventManager : public TEveEventManager,
-                           public TQObject
+        public TQObject
 {
 public:
-  static void SetESDFileName(const TString& esd);
-  static void SetAODFileName(const TString& aod);
-  static void AddAODfriend  (const TString& friendFileName);
-  static void SetRawFileName(const TString& raw);
-  static void SetCdbUri     (const TString& cdb);
-  static void SetAssertElements(Bool_t assertRunloader, Bool_t assertEsd,
-                               Bool_t assertAod, Bool_t assertRaw);
-
-
-  AliEveEventManager(const TString& name="Event");
-  AliEveEventManager(const TString& name, const TString& path, 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();
-  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; }
-  TFile*        GetAODFile()         const { return fAODFile; }
-  TTree*        GetAODTree()         const { return fAODTree; }
-  AliAODEvent*  GetAOD()             const { return fAOD;     }
-  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 HasAOD();
-  static Bool_t HasRawReader();
-
-  static AliRunLoader* AssertRunLoader();
-  static AliESDEvent*  AssertESD();
-  static AliESDfriend* AssertESDfriend();
-  static AliAODEvent*  AssertAOD();
-  static AliRawReader* AssertRawReader();
-
-  static TGeoManager*  AssertGeometry();
-
-  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);
-
-
-  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; }
+    enum EVisibleESDTrees{ kOfflineTree, kHLTTree };
+
+    static void SetESDFileName(const TString& esd, EVisibleESDTrees shown=kOfflineTree);
+    static void SetESDfriendFileName(const TString& esdf);
+    static void SetAODFileName(const TString& aod);
+    static void AddAODfriend  (const TString& friendFileName);
+    static void SetRawFileName(const TString& raw);
+    static void SetCdbUri     (const TString& cdb);
+    static void SetGAliceFileName(const TString& galice);
+
+    // set Local Directory or URL where the files are located
+    // it can also be a path to root_archive.zip
+    // 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();
+    virtual void  Close();
+    void Timeout(); // * SIGNAL*
+
+    Int_t         GetEventId()         const { return fEventId; }
+    AliRunLoader* GetRunLoader()       const { return fRunLoader; }
+    TFile*        GetESDFile()         const { return fESDFile; }
+    TTree*        GetESDTree()         const { return fESDTree; }
+    TTree*        GetHLTESDTree()      const { return fHLTESDTree; }
+    AliESDEvent*  GetESD()             const { return fESD;     }
+    AliESDfriend* GetESDfriend()       const { return fESDfriend; }
+    Bool_t        GetESDfriendExists() const { return fESDfriendExists; }
+    TFile*        GetAODFile()         const { return fAODFile; }
+    TTree*        GetAODTree()         const { return fAODTree; }
+    AliAODEvent*  GetAOD()             const { return fAOD;     }
+    AliEveEventSelector* GetEventSelector() const { return fPEventSelector; }
+    TString       GetEventInfoHorizontal() const;
+    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 Bool_t HasAOD();
+    static Bool_t HasRawReader();
+
+    static AliRunLoader* AssertRunLoader();
+    static AliESDEvent*  AssertESD();
+    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);
+    void          SetAutoLoad(Bool_t autoLoad);
+    void          SetTrigSel(Int_t trig);
+    void          AutoLoadNextEvent();
+
+    Bool_t        AreEventFilesOpened()    const { return fIsOpen;       }
+    Bool_t        IsEventAvailable()       const { return fHasEvent;     }
+    Bool_t        IsUnderExternalControl() const { return fExternalCtrl; }
+
+    Bool_t        InsertGlobal(const TString& tag, TEveElement* model);
+    Bool_t        InsertGlobal(const TString& tag, TEveElement* model,
+                               Bool_t replace, Bool_t update);
+    TEveElement*  FindGlobal(const TString& tag);
+
+    virtual void  AfterNewEventLoaded();
+    void          NewEventDataLoaded();  // *SIGNAL*
+    void          NewEventLoaded();      // *SIGNAL*
+
+    AliEveMacroExecutor* GetExecutor() const { return fExecutor; }
 
 protected:
-  TString       fPath;                 // URL to event-data.
-  Int_t         fEventId;              // Id of current event.
+    Int_t         fEventId;            // Id of current event.
+
+    AliRunLoader* fRunLoader;          // Run loader.
 
-  AliRunLoader* fRunLoader;            // Run loader.
+    TFile        *fESDFile;            // ESD file.
+    TTree        *fESDTree;            // ESD tree.
+    TTree        *fHLTESDTree; // HLT 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.
+    TFile        *fAODFile;            // AOD file.
+    TTree        *fAODTree;            // AOD tree.
+    AliAODEvent  *fAOD;                        // AODEvent object.
 
-  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.
-  TFile        *fAODFile;              // AOD file.
-  TTree        *fAODTree;              // AOD tree.
-  AliAODEvent  *fAOD;                  // AODEvent object.
+    AliRawReader *fRawReader;             // Raw-data reader.
+    AliEventInfo       fEventInfo;             // Current Event Info
 
-  AliRawReader *fRawReader;             // Raw-data 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        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        fIsOpen;                // Are event-files opened.
-  Bool_t        fHasEvent;              // Is an event available.
-  Bool_t        fExternalCtrl;          // Are we under external event-loop.
+    TMap*         fGlobal;
+    Bool_t        fGlobalReplace;         // Are global replace
+    Bool_t        fGlobalUpdate;          // Are global updates
 
-  Bool_t        fSelectOnTriggerType;   // Whether to select on trigger-type.
-  TString       fTriggerType;           // Trigger-type to select on.
+    AliEveMacroExecutor *fExecutor;       // Executor for std macros
 
-  AliEveMacroExecutor *fExecutor;       // Executor for std macros
+    TEveElementList     *fTransients;     // Container for additional transient (per event) elements.
+    TEveElementList     *fTransientLists; // Container for lists of transient (per event) elements.
 
-  TEveElementList     *fTransients;     // Container for additional transient (per event) elements.
+    AliEveEventSelector* fPEventSelector; // Event filter
 
-  TList        *fSubManagers;           // Dependent event-managers, used for event embedding.
+    TList        *fSubManagers;           // Dependent event-managers, used for event embedding.
 
-  static TString  fgESDFileName;        // Name by which to open ESD.
-  static TString  fgAODFileName;        // Name by which to open AOD.
-  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   fgAssertAOD;         // Global flag specifying if AODEvent 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 TString  fgGAliceFileName;        // galice.root file
+    static TString  fgESDFileName;        // Name by which to open ESD.
+    static EVisibleESDTrees  fgESDvisibleTrees; // trees to open from ESD
+    static TString  fgESDfriendsFileName;
+    static TString  fgAODFileName;        // Name by which to open AOD.
+    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   fgAssertAOD;               // Global flag specifying if AODEvent 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 TList   *fgAODfriends;         // Global list of AOD friend names to be attached during opening of the event-data (empty by default).
+    static TList   *fgAODfriends;         // Global list of AOD friend names to be attached during opening of the event-data (empty by default).
 
+    static Bool_t   fgRawFromStandardLoc; // Global flag to enable looking for raw data in ../../../raw/, as it is stored for central reco.
+
+    static Bool_t        fgGRPLoaded;     // Global run parameters loaded?
+    static AliMagF      *fgMagField;      // Global pointer to magnetic field.
+    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
+    AliEveEventManager(const AliEveEventManager&);            // Not implemented
+    AliEveEventManager& operator=(const AliEveEventManager&); // Not implemented
+
+    void InitInternals();
+    void StartAutoLoadTimer();
+    void StopAutoLoadTimer();
+
+    static Bool_t InitGRP();
+    static Bool_t InitRecoParam();
 
-  void InitInternals();
-  void StartAutoLoadTimer();
-  void StopAutoLoadTimer();
+    TTree* readESDTree(const char* treeName, int &run);
 
-  Bool_t fAutoLoadTimerRunning; // State of auto-load timer.
+    Bool_t fAutoLoadTimerRunning; // State of auto-load timer.
 
-  static AliEveEventManager* fgMaster;
-  static AliEveEventManager* fgCurrent;
+    static AliEveEventManager* fgMaster;
+    static AliEveEventManager* fgCurrent;
 
-  ClassDef(AliEveEventManager, 0); // Interface for getting all event components in a uniform way.
+    ClassDef(AliEveEventManager, 0); // Interface for getting all event components in a uniform way.
 };
 
 #endif