source: branches/MarsISDCBranchBasedOn17887/mdata/MDataPhrase.h@ 18108

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