00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef ROO_ARG_SET
00017 #define ROO_ARG_SET
00018
00019 #include "RooAbsCollection.h"
00020 #include "RooErrorHandler.h"
00021 #include <map>
00022 #include <iostream>
00023 using namespace std ;
00024
00025 class RooArgList ;
00026
00027
00028 #define USEMEMPOOL
00029
00030 class RooArgSet : public RooAbsCollection {
00031 public:
00032
00033 #ifdef USEMEMPOOL
00034 void* operator new (size_t bytes);
00035 void operator delete (void *ptr);
00036 #endif
00037
00038
00039 RooArgSet();
00040 RooArgSet(const RooArgList& list) ;
00041 RooArgSet(const RooArgList& list, const RooAbsArg* var1) ;
00042 explicit RooArgSet(const TCollection& tcoll, const char* name="") ;
00043 explicit RooArgSet(const char *name);
00044 RooArgSet(const RooArgSet& set1, const RooArgSet& set2,
00045 const char *name="");
00046 RooArgSet(const RooAbsArg& var1,
00047 const char *name="");
00048 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00049 const char *name="");
00050 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00051 const RooAbsArg& var3,
00052 const char *name="");
00053 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00054 const RooAbsArg& var3, const RooAbsArg& var4,
00055 const char *name="");
00056 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00057 const RooAbsArg& var3, const RooAbsArg& var4,
00058 const RooAbsArg& var5,
00059 const char *name="");
00060 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00061 const RooAbsArg& var3, const RooAbsArg& var4,
00062 const RooAbsArg& var5, const RooAbsArg& var6,
00063 const char *name="");
00064 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00065 const RooAbsArg& var3, const RooAbsArg& var4,
00066 const RooAbsArg& var5, const RooAbsArg& var6,
00067 const RooAbsArg& var7,
00068 const char *name="");
00069 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00070 const RooAbsArg& var3, const RooAbsArg& var4,
00071 const RooAbsArg& var5, const RooAbsArg& var6,
00072 const RooAbsArg& var7, const RooAbsArg& var8,
00073 const char *name="");
00074 RooArgSet(const RooAbsArg& var1, const RooAbsArg& var2,
00075 const RooAbsArg& var3, const RooAbsArg& var4,
00076 const RooAbsArg& var5, const RooAbsArg& var6,
00077 const RooAbsArg& var7, const RooAbsArg& var8,
00078 const RooAbsArg& var9, const char *name="");
00079
00080 virtual ~RooArgSet();
00081
00082
00083
00084 RooArgSet(const RooArgSet& other, const char *name="");
00085 virtual TObject* clone(const char* newname) const { return new RooArgSet(*this,newname); }
00086 virtual TObject* create(const char* newname) const { return new RooArgSet(newname); }
00087 RooArgSet& operator=(const RooArgSet& other) { RooAbsCollection::operator=(other) ; return *this ;}
00088
00089 virtual Bool_t add(const RooAbsArg& var, Bool_t silent=kFALSE) ;
00090 virtual Bool_t add(const RooAbsCollection& list, Bool_t silent=kFALSE) {
00091
00092 return RooAbsCollection::add(list,silent) ;
00093 }
00094 virtual Bool_t addOwned(RooAbsArg& var, Bool_t silent=kFALSE);
00095 virtual Bool_t addOwned(const RooAbsCollection& list, Bool_t silent=kFALSE) {
00096
00097 return RooAbsCollection::addOwned(list,silent) ;
00098 }
00099 virtual RooAbsArg *addClone(const RooAbsArg& var, Bool_t silent=kFALSE) ;
00100 virtual void addClone(const RooAbsCollection& list, Bool_t silent=kFALSE) {
00101
00102 RooAbsCollection::addClone(list,silent) ;
00103 }
00104
00105 RooAbsArg& operator[](const char* name) const ;
00106
00107 virtual Bool_t readFromStream(istream& is, Bool_t compact, Bool_t verbose=kFALSE) {
00108
00109 return readFromStream(is, compact, 0, 0, verbose) ;
00110 }
00111 Bool_t readFromStream(istream& is, Bool_t compact, const char* flagReadAtt, const char* section, Bool_t verbose=kFALSE) ;
00112 virtual void writeToStream(ostream& os, Bool_t compact, const char* section=0) const;
00113 void writeToFile(const char* fileName) const ;
00114 Bool_t readFromFile(const char* fileName, const char* flagReadAtt=0, const char* section=0, Bool_t verbose=kFALSE) ;
00115
00116
00117 Double_t getRealValue(const char* name, Double_t defVal=0, Bool_t verbose=kFALSE) const ;
00118 const char* getCatLabel(const char* name, const char* defVal="", Bool_t verbose=kFALSE) const ;
00119 Int_t getCatIndex(const char* name, Int_t defVal=0, Bool_t verbose=kFALSE) const ;
00120 const char* getStringValue(const char* name, const char* defVal="", Bool_t verbose=kFALSE) const ;
00121 Bool_t setRealValue(const char* name, Double_t newVal=0, Bool_t verbose=kFALSE) ;
00122 Bool_t setCatLabel(const char* name, const char* newVal="", Bool_t verbose=kFALSE) ;
00123 Bool_t setCatIndex(const char* name, Int_t newVal=0, Bool_t verbose=kFALSE) ;
00124 Bool_t setStringValue(const char* name, const char* newVal="", Bool_t verbose=kFALSE) ;
00125
00126 static void cleanup() ;
00127
00128 Bool_t isInRange(const char* rangeSpec) ;
00129
00130 protected:
00131
00132 Bool_t checkForDup(const RooAbsArg& arg, Bool_t silent) const ;
00133
00134 static char* _poolBegin ;
00135 static char* _poolCur ;
00136 static char* _poolEnd ;
00137
00138 ClassDef(RooArgSet,1)
00139 };
00140
00141 #endif