StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StStrangeCuts.hh
1 
10 #ifndef StStrangeCuts_hh
11 #define StStrangeCuts_hh
12 #include "TOrdCollection.h"
13 #include "TCut.h"
14 #include "TObject.h"
15 
16 class TDataSet;
17 class TClonesArray;
18 
19 class StStrangeCuts : public TOrdCollection {
20 public:
21  StStrangeCuts();
22  virtual ~StStrangeCuts();
23 
25 
26  TCut* CutAt(Int_t idx) const;
27  TCut* GetCut(const char* name) const;
28  const char* GetValue(const char* name) const;
29  void List();
30  Bool_t Contains(const TObject*);
32 
34 
35  void Add(const char* name, const char* value);
36  void Add(const TCut&);
37  void Add(const TCut*);
38  void Add(TObject *to){TSeqCollection::Add(to);}
40 
42 
43  void Store();
44  void Fill(const char*, TDataSet*);
45  void Append(const TOrdCollection*);
46  void Reset(const TSeqCollection&);
47  void Reset(const TSeqCollection*);
48  void UpdateArray(TClonesArray*);
49  void ForceUpdateArray();
50  void UnknownCuts();
51  void Init();
53 
54  protected:
55  void AddIfNew(TCut*, Bool_t reverse=kFALSE);
56  Bool_t NewCut(const TObject*);
57  Bool_t update;
58  StStrangeCuts* additionals;
59  StStrangeCuts* lastResetCuts;
60  ClassDef(StStrangeCuts,0)
61 };
62 
63 inline TCut* StStrangeCuts::CutAt(Int_t idx) const
64  { return (TCut*) At(idx); }
65 inline TCut* StStrangeCuts::GetCut(const char* name) const
66  { return (TCut*) FindObject(name); }
67 inline const char* StStrangeCuts::GetValue(const char* name) const
68  { return GetCut(name)->GetTitle(); }
69 inline void StStrangeCuts::Add(const char* name, const char* value)
70  { AddIfNew(new TCut(name,value)); }
71 inline void StStrangeCuts::Add(const TCut& newCut)
72  { AddIfNew(new TCut(newCut)); }
73 inline void StStrangeCuts::Add(const TCut* newCut)
74  { Add(*newCut); }
75 inline void StStrangeCuts::List()
76  { Print(); }
77 inline void StStrangeCuts::Store()
78  { Write("StrangeCuts",TObject::kSingleKey); }
79 inline void StStrangeCuts::Reset(const TSeqCollection& oldCuts)
80  { Reset(&oldCuts); }
81 inline void StStrangeCuts::ForceUpdateArray()
82  { update = kTRUE; }
83 inline Bool_t StStrangeCuts::NewCut(const TObject* obj)
84  { return (!(Contains(obj))); }
85 
86 #endif
87 
88 
89 /***********************************************************************
90  * $Id: StStrangeCuts.hh,v 3.5 2003/09/07 03:49:05 perev Exp $
91  * $Log: StStrangeCuts.hh,v $
92  * Revision 3.5 2003/09/07 03:49:05 perev
93  * gcc 3.2 + WarnOff
94  *
95  * Revision 3.4 2003/05/30 21:20:19 genevb
96  * doxygen savvy, encoding of FTPC mults, change virtual funcs
97  *
98  * Revision 3.3 2003/02/10 15:59:20 genevb
99  * Fix bug with adding new cuts
100  *
101  * Revision 3.2 2002/04/30 16:02:47 genevb
102  * Common muDst, improved MC code, better kinks, StrangeCuts now a branch
103  *
104  * Revision 3.1 2001/01/30 04:06:54 genevb
105  * Better handling of file switches
106  *
107  * Revision 3.0 2000/07/14 12:56:49 genevb
108  * Revision 3 has event multiplicities and dedx information for vertex tracks
109  *
110  * Revision 2.0 2000/06/05 05:19:43 genevb
111  * New version of Strangeness micro DST package
112  *
113  ***********************************************************************/