source: trunk/MagicSoft/Mars/mdata/MDataPhrase.h@ 8743

Last change on this file since 8743 was 8704, checked in by tbretz, 17 years ago
*** empty log message ***
File size: 1.8 KB
Line 
1#ifndef MARS_MDataPhrase
2#define MARS_MDataPhrase
3
4#ifndef ROOT_TObjArray
5#include <TObjArray.h>
6#endif
7
8#ifndef MARS_MData
9#include "MData.h"
10#endif
11
12#ifndef MARS_MArrayD
13#include "MArrayD.h"
14#endif
15
16class TFormula;
17class MParList;
18
19
20class MDataPhrase : public MData
21{
22private:
23 TFormula *fFormula; // TFormula (its a pointer to be able to have no expression)
24 TObjArray fMembers; // List of arguments
25
26 MArrayD fStorage; //! Temporary storage used in GetValue (only!)
27
28 Int_t CheckForVariable(const TString &phrase, Int_t idx);
29 Int_t Substitute(TString &phrase, const TString &expr, Int_t idx) const;
30 TString Parse(TString phrase);
31
32public:
33 MDataPhrase(const char *rule=0, const char *name=0, const char *title=0);
34 MDataPhrase(MDataPhrase &ts);
35 ~MDataPhrase();
36
37 // TObject
38 void Clear(Option_t *o="");
39
40 // MParContainer
41 Bool_t IsReadyToSave() const;
42 void SetVariables(const TArrayD &arr);
43 Int_t ReadEnv(const TEnv &env, TString prefix, Bool_t print=kFALSE);
44
45 // MData
46 Bool_t IsValid() const;
47 Bool_t HasValidRule() const { return fFormula ? kTRUE : kFALSE; }
48 Double_t GetValue() const { return Eval((Double_t*)NULL); }
49 Double_t Eval(const Double_t *x) const;
50 Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
51 {
52 const Double_t xx[4] = { x, y, z, t };
53 return Eval(xx);
54 }
55 TString GetRule() const;
56 TString GetRuleRaw() const;
57 Bool_t PreProcess(const MParList *plist);
58 // void Print(Option_t *opt = "") const;
59 // TString GetDataMember() const;
60
61 // MDataPhrase
62 Bool_t GetBool() const { return TMath::Nint(GetValue())!=0; }
63 Bool_t SetRule(const TString &phrase);
64
65 ClassDef(MDataPhrase, 1) // MDataPhrase is basically a mapper for TFormula supporting Mars features
66};
67
68#endif
Note: See TracBrowser for help on using the repository browser.