00001
00010 #ifndef StStrangeCuts_hh
00011 #define StStrangeCuts_hh
00012 #include "TOrdCollection.h"
00013 #include "TCut.h"
00014 #include "TObject.h"
00015
00016 class TDataSet;
00017 class TClonesArray;
00018
00019 class StStrangeCuts : public TOrdCollection {
00020 public:
00021 StStrangeCuts();
00022 virtual ~StStrangeCuts();
00023
00025
00026 TCut* CutAt(Int_t idx) const;
00027 TCut* GetCut(const char* name) const;
00028 const char* GetValue(const char* name) const;
00029 void List();
00030 Bool_t Contains(const TObject*);
00032
00034
00035 void Add(const char* name, const char* value);
00036 void Add(const TCut&);
00037 void Add(const TCut*);
00038 void Add(TObject *to){TSeqCollection::Add(to);}
00040
00042
00043 void Store();
00044 void Fill(const char*, TDataSet*);
00045 void Append(const TOrdCollection*);
00046 void Reset(const TSeqCollection&);
00047 void Reset(const TSeqCollection*);
00048 void UpdateArray(TClonesArray*);
00049 void ForceUpdateArray();
00050 void UnknownCuts();
00051 void Init();
00053
00054 protected:
00055 void AddIfNew(TCut*, Bool_t reverse=kFALSE);
00056 Bool_t NewCut(const TObject*);
00057 Bool_t update;
00058 StStrangeCuts* additionals;
00059 StStrangeCuts* lastResetCuts;
00060 ClassDef(StStrangeCuts,0)
00061 };
00062
00063 inline TCut* StStrangeCuts::CutAt(Int_t idx) const
00064 { return (TCut*) At(idx); }
00065 inline TCut* StStrangeCuts::GetCut(const char* name) const
00066 { return (TCut*) FindObject(name); }
00067 inline const char* StStrangeCuts::GetValue(const char* name) const
00068 { return GetCut(name)->GetTitle(); }
00069 inline void StStrangeCuts::Add(const char* name, const char* value)
00070 { AddIfNew(new TCut(name,value)); }
00071 inline void StStrangeCuts::Add(const TCut& newCut)
00072 { AddIfNew(new TCut(newCut)); }
00073 inline void StStrangeCuts::Add(const TCut* newCut)
00074 { Add(*newCut); }
00075 inline void StStrangeCuts::List()
00076 { Print(); }
00077 inline void StStrangeCuts::Store()
00078 { Write("StrangeCuts",TObject::kSingleKey); }
00079 inline void StStrangeCuts::Reset(const TSeqCollection& oldCuts)
00080 { Reset(&oldCuts); }
00081 inline void StStrangeCuts::ForceUpdateArray()
00082 { update = kTRUE; }
00083 inline Bool_t StStrangeCuts::NewCut(const TObject* obj)
00084 { return (!(Contains(obj))); }
00085
00086 #endif
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113