Changed scripts for new TrainSetup
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutSet.h
1 //
2 // Class AliRsnCutSet
3 //
4 // This is the front-end for cut management and checking.
5 // It must be prepared by adding all required single cuts,
6 // and then with a logical expression which combines all cuts
7 // with the "AND", "OR" and "NOT" operators.
8 //
9 // author: M. Vala (martin.vala@cern.ch)
10 //
11
12 #ifndef ALIRSNCUTSET_H
13 #define ALIRSNCUTSET_H
14
15 #include <TNamed.h>
16 #include <TObjArray.h>
17
18 #include "AliRsnTarget.h"
19 #include "AliRsnListOutput.h"
20
21 class AliRsnCut;
22 class AliRsnDaughter;
23 class AliRsnExpression;
24 class AliRsnPairParticle;
25 class AliRsnEvent;
26
27 class AliRsnCutSet : public AliRsnTarget {
28 public:
29
30    AliRsnCutSet();
31    AliRsnCutSet(const char *name, RSNTARGET target);
32    AliRsnCutSet(const AliRsnCutSet &copy);
33    AliRsnCutSet &operator=(const AliRsnCutSet &copy);
34    ~AliRsnCutSet();
35
36    void      AddCut(AliRsnCut *cut);
37    Bool_t    Init(TList *list);
38
39    void      ShowCuts() const;
40    Int_t     GetIndexByCutName(TString s);
41    Bool_t    Passed();
42    Bool_t    IsValidScheme();
43    TString   ShowCutScheme() const;
44    Int_t     TestExpression(TString opt = "short");
45    void      PrintSetInfo();
46
47    Bool_t    IsSelected(TObject *object);
48
49    void SetBoolValue(Bool_t theValue, Int_t index) { fBoolValues[index] = theValue; }
50    Bool_t GetBoolValue(Int_t index) const { return fBoolValues[index]; }
51
52    void SetCutScheme(const char *theValue);
53    TString GetCutScheme() const { return fCutScheme; }
54
55    void SetCutSchemeIndexed(TString theValue);
56    TString   GetCutSchemeIndexed();
57
58    TObjArray *GetCuts() { return &fCuts; }
59
60    void AddMonitor(AliRsnListOutput *mon);
61    TObjArray *GetMonitorOutput() { fUseMonitor = kTRUE; return &fMonitors; }
62
63    void UseMonitor(Bool_t useMonitor=kTRUE) { fUseMonitor = useMonitor; }
64
65 private:
66
67    TObjArray         fCuts;                  // array of cuts
68    Int_t             fNumOfCuts;             // number of cuts
69    TString           fCutScheme;             // cut scheme
70    TString           fCutSchemeIndexed;      // cut scheme indexed
71
72    Bool_t           *fBoolValues;            //[fNumOfCuts]
73    Bool_t            fIsScheme;              // is scheme
74
75    AliRsnExpression *fExpression;            // pointer to AliRsnExpression
76    TObjArray         fMonitors;              // array of monitor object
77    Bool_t            fUseMonitor;            // flag if monitoring should be used
78
79    ClassDef(AliRsnCutSet, 3)   // ROOT dictionary
80 };
81
82 #endif