]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/RESONANCES/AliRsnExpression.h
Fixed some errors
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnExpression.h
CommitLineData
baca856a 1#ifndef ALIRSNEXPRESSION_H
2#define ALIRSNEXPRESSION_H
3
4#include <TObject.h>
5#include <TString.h>
6
7#include "AliRsnCutSet.h"
8
9class TObjArray;
10class AliRsnCutSet;
11/**
12 @author Martin Vala <Martin.Vala@cern.ch>
13 */
14
15// These are the valid operators types.
16
baca856a 17class 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
65class 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