]>
Commit | Line | Data |
---|---|---|
baca856a | 1 | #ifndef ALIRSNEXPRESSION_H |
2 | #define ALIRSNEXPRESSION_H | |
3 | ||
4 | #include <TObject.h> | |
5 | #include <TString.h> | |
6 | ||
7 | #include "AliRsnCutSet.h" | |
8 | ||
9 | class TObjArray; | |
10 | class AliRsnCutSet; | |
11 | /** | |
12 | @author Martin Vala <Martin.Vala@cern.ch> | |
13 | */ | |
14 | ||
15 | // These are the valid operators types. | |
16 | ||
baca856a | 17 | class AliRsnExpression : public TObject |
18 | { | |
19 | ||
20 | public: | |
aec0ec32 | 21 | |
22 | // operators for complex cut expressions | |
e2bafbbc | 23 | enum ECutOp |
24 | { | |
aec0ec32 | 25 | kOpAND=1, // AND '&' |
26 | kOpOR, // OR '|' | |
27 | kOpNOT // Unary negation '!' | |
e2bafbbc | 28 | }; |
aec0ec32 | 29 | |
30 | AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0) {} | |
31 | AliRsnExpression(TString exp); | |
baca856a | 32 | virtual ~AliRsnExpression(); |
aec0ec32 | 33 | AliRsnExpression(const AliRsnExpression& exp); |
34 | AliRsnExpression& operator= (const AliRsnExpression& exp); | |
baca856a | 35 | |
aec0ec32 | 36 | virtual Bool_t Value(TObjArray & vars); |
baca856a | 37 | virtual TString Unparse() const; |
38 | ||
aec0ec32 | 39 | void SetCutSet(AliRsnCutSet* theValue) { sCutSet = theValue; } |
baca856a | 40 | AliRsnCutSet* GetCutSet() const { return sCutSet; } |
41 | ||
42 | ||
43 | TString fVname; // Variable name | |
44 | static AliRsnCutSet *sCutSet; | |
45 | ||
46 | private: | |
47 | AliRsnExpression* fArg1; // left argument | |
48 | AliRsnExpression* fArg2; // right argument | |
49 | Int_t fOperator; // operator | |
50 | ||
aec0ec32 | 51 | AliRsnExpression(int op, AliRsnExpression* a); |
52 | AliRsnExpression(int op, AliRsnExpression* a, AliRsnExpression* b); | |
baca856a | 53 | |
aec0ec32 | 54 | TObjArray* Tokenize(TString str) const; |
55 | static AliRsnExpression* Element(TObjArray &st, Int_t &i); | |
56 | static AliRsnExpression* Primary(TObjArray &st, Int_t &i); | |
57 | static AliRsnExpression* Expression(TObjArray &st, Int_t &i); | |
baca856a | 58 | |
aec0ec32 | 59 | ClassDef(AliRsnExpression, 1); // Class to evaluate an expression |
baca856a | 60 | }; |
61 | ||
62 | ||
63 | /////////////////////////////////////////////////////////////////////////// | |
64 | ||
65 | class AliRsnVariableExpression: public AliRsnExpression | |
66 | { | |
67 | public: | |
aec0ec32 | 68 | AliRsnVariableExpression(TString a) : AliRsnExpression() { fVname = a; }; |
baca856a | 69 | ~AliRsnVariableExpression() {} |
aec0ec32 | 70 | virtual Bool_t Value(TObjArray& pgm); |
baca856a | 71 | virtual TString Unparse() const { return fVname; } |
72 | ||
aec0ec32 | 73 | ClassDef(AliRsnVariableExpression, 1); // Class to define a variable expression |
baca856a | 74 | }; |
75 | ||
76 | #endif |