ROOT logo
// @(#)root/eve:$Id$
// Author: Matevz Tadel 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#ifndef AliEveMacro_H
#define AliEveMacro_H

#include <TObject.h>
#include <TString.h>

class TEveElement;

//______________________________________________________________________________
// Short description of AliEveMacro
//

class AliEveMacro : public TObject
{
  friend class AliEveMacroEditor;

public:
  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);
  virtual ~AliEveMacro() {}

  Int_t          GetSources() const         { return fSources; }
  void           SetSources(Int_t x)        { fSources = x; }
  const TString& GetTags() const            { return fTags; }
  void           SetTags(const TString& x)  { fTags = x; }
  const TString& GetMacro() const           { return fMacro; }
  void           SetMacro(const TString& x) { fMacro = x; }
  const TString& GetFunc() const            { return fFunc; }
  void           SetFunc(const TString& x)  { fFunc = x; }
  const TString& GetArgs() const            { return fArgs; }
  void           SetArgs(const TString& x)  { fArgs = x; }
  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, 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); // Encapsulation of data reqired for execution of a CINT macro and the result of its last execution.
};

#endif
 AliEveMacro.h:1
 AliEveMacro.h:2
 AliEveMacro.h:3
 AliEveMacro.h:4
 AliEveMacro.h:5
 AliEveMacro.h:6
 AliEveMacro.h:7
 AliEveMacro.h:8
 AliEveMacro.h:9
 AliEveMacro.h:10
 AliEveMacro.h:11
 AliEveMacro.h:12
 AliEveMacro.h:13
 AliEveMacro.h:14
 AliEveMacro.h:15
 AliEveMacro.h:16
 AliEveMacro.h:17
 AliEveMacro.h:18
 AliEveMacro.h:19
 AliEveMacro.h:20
 AliEveMacro.h:21
 AliEveMacro.h:22
 AliEveMacro.h:23
 AliEveMacro.h:24
 AliEveMacro.h:25
 AliEveMacro.h:26
 AliEveMacro.h:27
 AliEveMacro.h:28
 AliEveMacro.h:29
 AliEveMacro.h:30
 AliEveMacro.h:31
 AliEveMacro.h:32
 AliEveMacro.h:33
 AliEveMacro.h:34
 AliEveMacro.h:35
 AliEveMacro.h:36
 AliEveMacro.h:37
 AliEveMacro.h:38
 AliEveMacro.h:39
 AliEveMacro.h:40
 AliEveMacro.h:41
 AliEveMacro.h:42
 AliEveMacro.h:43
 AliEveMacro.h:44
 AliEveMacro.h:45
 AliEveMacro.h:46
 AliEveMacro.h:47
 AliEveMacro.h:48
 AliEveMacro.h:49
 AliEveMacro.h:50
 AliEveMacro.h:51
 AliEveMacro.h:52
 AliEveMacro.h:53
 AliEveMacro.h:54
 AliEveMacro.h:55
 AliEveMacro.h:56
 AliEveMacro.h:57
 AliEveMacro.h:58
 AliEveMacro.h:59
 AliEveMacro.h:60
 AliEveMacro.h:61
 AliEveMacro.h:62
 AliEveMacro.h:63
 AliEveMacro.h:64
 AliEveMacro.h:65
 AliEveMacro.h:66
 AliEveMacro.h:67
 AliEveMacro.h:68
 AliEveMacro.h:69
 AliEveMacro.h:70
 AliEveMacro.h:71
 AliEveMacro.h:72
 AliEveMacro.h:73
 AliEveMacro.h:74
 AliEveMacro.h:75
 AliEveMacro.h:76
 AliEveMacro.h:77
 AliEveMacro.h:78
 AliEveMacro.h:79
 AliEveMacro.h:80
 AliEveMacro.h:81
 AliEveMacro.h:82
 AliEveMacro.h:83
 AliEveMacro.h:84
 AliEveMacro.h:85
 AliEveMacro.h:86
 AliEveMacro.h:87
 AliEveMacro.h:88
 AliEveMacro.h:89
 AliEveMacro.h:90
 AliEveMacro.h:91
 AliEveMacro.h:92
 AliEveMacro.h:93
 AliEveMacro.h:94
 AliEveMacro.h:95
 AliEveMacro.h:96
 AliEveMacro.h:97
 AliEveMacro.h:98
 AliEveMacro.h:99