]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/EveBase/AliEveMacro.h
more functionality added to new memory handling, bugfixes
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveMacro.h
index 00c1347921536ff7d6d2e333dfffb14ecdb38bfd..d4464b051a6dedc2f2bd2c105f3a12ad120a705a 100644 (file)
@@ -13,6 +13,8 @@
 #include <TObject.h>
 #include <TString.h>
 
+class TEveElement;
+
 //______________________________________________________________________________
 // Short description of AliEveMacro
 //
@@ -22,7 +24,18 @@ class AliEveMacro : public TObject
   friend class AliEveMacroEditor;
 
 public:
-  enum DataSource_e { kNone = 0, kRunLoader, kESD, kESDfriend, kRawReader };
+  enum DataSource_e { kNone      = 0,
+                      kRunLoader = 1,
+                      kESD       = 2,
+                      kESDfriend = 4,
+                      kRawReader = 8,
+                      kAOD       = 16 };
+
+  enum ExecStatus_e { kNotRun    = -2,
+                      kNoData    = -1,
+                      kOK        =  0,
+                      kException =  1,
+                      kError     =  2 };
 
   AliEveMacro(Int_t src, const TString& tags, const TString& mac, const TString& foo,
              const TString& args="", Bool_t act=kTRUE);
@@ -41,20 +54,46 @@ public:
   Bool_t         GetActive() const          { return fActive; }
   void           SetActive(Bool_t x)        { fActive = x; }
 
+  Bool_t         RequiresRunLoader() const { return fSources & kRunLoader; }
+  Bool_t         RequiresESD()       const { return fSources & kESD;       }
+  Bool_t         RequiresESDfriend() const { return fSources & kESDfriend; }
+  Bool_t         RequiresRawReader() const { return fSources & kRawReader; }
+  Bool_t         RequiresAOD()       const { return fSources & kAOD;       }
+
+  void           ResetExecState();
+
+  void           SetExecNoData();
+  void           SetExecOK(TEveElement* result);
+  void           SetExecException(const TString& exception);
+  void           SetExecError();
+
+  ExecStatus_e   GetExecStatus()    const { return fExecStatus;    }
+  const TString& GetExecException() const { return fExecExcString; }
+  TEveElement*   GetExecResult()    const { return fExecResult;    }
+
+  Bool_t         WasExecTried()     const { return fExecStatus >= kOK; }
+  Bool_t         WasExecOK()        const { return fExecStatus == kOK; }
+
   TString        FormForExec() const;
   TString        FormForDisplay() const;
 
 protected:
-  Int_t   fSources; // Source of data.
+  Int_t   fSources; // Source of data, bitwise or of DataSource_e entries.
   TString fTags;    // Tags describing the macro (for selection).
   TString fMacro;   // Macro where func is defined; if null, assume it is there.
   TString fFunc;    // Function to call.
   TString fArgs;    // Arguments for the function.
   Bool_t  fActive;  // Flag if macro is active.
 
+  ExecStatus_e  fExecStatus;
+  TString       fExecExcString;
+  TEveElement  *fExecResult;
+
 private:
+  AliEveMacro(const AliEveMacro&);            // Not implemented
+  AliEveMacro& operator=(const AliEveMacro&); // Not implemented
 
-  ClassDef(AliEveMacro, 0); // Short description.
+  ClassDef(AliEveMacro, 0); // Encapsulation of data reqired for execution of a CINT macro and the result of its last execution.
 };
 
 #endif