source: trunk/Mars/mdata/MDataPhrase.h@ 19679

Last change on this file since 19679 was 19334, checked in by tbretz, 6 years ago
Make sure that if root decides to delete TFormula we are not deleting it again.
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 void RecursiveRemove(TObject *obj);
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;
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.