]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/RESONANCES/AliRsnExpression.h
Package revised - New AnalysisTask's - Added more functions
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnExpression.h
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
17 class AliRsnExpression : public TObject
18 {
19
20   public:
21
22     // operators for complex cut expressions
23     enum ECutOp
24     {
25       kOpAND=1,   // AND '&'
26       kOpOR,      // OR '|'
27       kOpNOT      // Unary negation '!'
28     };
29
30     AliRsnExpression() : fVname(0), fArg1(0), fArg2(0), fOperator(0)  {}
31     AliRsnExpression(TString exp);
32     virtual    ~AliRsnExpression();
33     AliRsnExpression(const AliRsnExpression& exp);
34     AliRsnExpression&    operator= (const AliRsnExpression& exp);
35
36     virtual Bool_t     Value(TObjArray & vars);
37     virtual TString     Unparse() const;
38
39     void SetCutSet(AliRsnCutSet* theValue) { sCutSet = theValue; }
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
51     AliRsnExpression(int op, AliRsnExpression* a);
52     AliRsnExpression(int op, AliRsnExpression* a, AliRsnExpression* b);
53
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);
58
59     ClassDef(AliRsnExpression, 1);    // Class to evaluate an expression
60 };
61
62
63 ///////////////////////////////////////////////////////////////////////////
64
65 class AliRsnVariableExpression: public AliRsnExpression
66 {
67   public:
68     AliRsnVariableExpression(TString a) : AliRsnExpression() { fVname = a;  };
69     ~AliRsnVariableExpression() {}
70     virtual Bool_t    Value(TObjArray& pgm);
71     virtual TString    Unparse() const { return fVname; }
72
73     ClassDef(AliRsnVariableExpression, 1);    // Class to define a variable expression
74 };
75
76 #endif