RooArgSet.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002  * Project: RooFit                                                           *
00003  * Package: RooFitCore                                                       *
00004  *    File: $Id: RooArgSet.h,v 1.45 2007/08/09 19:55:47 wouter Exp $
00005  * Authors:                                                                  *
00006  *   WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu       *
00007  *   DK, David Kirkby,    UC Irvine,         dkirkby@uci.edu                 *
00008  *                                                                           *
00009  * Copyright (c) 2000-2005, Regents of the University of California          *
00010  *                          and Stanford University. All rights reserved.    *
00011  *                                                                           *
00012  * Redistribution and use in source and binary forms,                        *
00013  * with or without modification, are permitted according to the terms        *
00014  * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
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   // Constructors, assignment etc.
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   // Create a copy of an existing list. New variables cannot be added
00082   // to a copied list. The variables in the copied list are independent
00083   // of the original variables.
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     // Add all elements in list to collection
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     // Add all elements in list as owned components to collection
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     // Add owned clone of all elements of list to collection
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     // I/O streaming interface (machine readable)
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   // Utilities functions when used as configuration object
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 ; //! Start of memory pool
00135   static char* _poolCur ;   //! Next free slot in memory pool
00136   static char* _poolEnd ;   //! End of memory pool  
00137   
00138   ClassDef(RooArgSet,1) // Set of RooAbsArg objects
00139 };
00140 
00141 #endif

Generated on Tue Jul 5 14:26:04 2011 for ROOT_528-00b_version by  doxygen 1.5.1