CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/FWCore/ParameterSet/interface/ParameterSet.h

Go to the documentation of this file.
00001 #ifndef FWCore_ParameterSet_ParameterSet_h
00002 #define FWCore_ParameterSet_ParameterSet_h
00003 
00004 // ----------------------------------------------------------------------
00005 // Declaration for ParameterSet(parameter set) and related types
00006 // ----------------------------------------------------------------------
00007 
00008 
00009 // ----------------------------------------------------------------------
00010 // prolog
00011 
00012 // ----------------------------------------------------------------------
00013 // prerequisite source files and headers
00014 
00015 #include "DataFormats/Provenance/interface/ParameterSetID.h"
00016 #include "FWCore/ParameterSet/interface/Entry.h"
00017 #include "FWCore/ParameterSet/interface/ParameterSetEntry.h"
00018 #include "FWCore/ParameterSet/interface/VParameterSetEntry.h"
00019 #include "FWCore/ParameterSet/interface/FileInPath.h"
00020 #include <string>
00021 #include <map>
00022 #include <vector>
00023 #include <iosfwd>
00024 
00025 // ----------------------------------------------------------------------
00026 // contents
00027 
00028 namespace edm {
00029   typedef std::vector<ParameterSet> VParameterSet;
00030 
00031   class ParameterSet {
00032   public:
00033     enum Bool {
00034       False = 0,
00035       True = 1,
00036       Unknown = 2
00037     };
00038 
00039     // default-construct
00040     ParameterSet();
00041 
00042     // construct from coded string.
00043     explicit ParameterSet(std::string const& rep);
00044 
00045     // construct from coded string and id.  Will cause registration
00046     ParameterSet(std::string const& rep, ParameterSetID const& id);
00047 
00048     ~ParameterSet();
00049 
00050     // instantiate in this library, so these methods don't cause code bloat
00051     ParameterSet(ParameterSet const& other);
00052 
00053     ParameterSet const& operator=(ParameterSet const& other);
00054 
00055     void swap(ParameterSet& other);
00056 
00057     // identification
00058     ParameterSetID id() const;
00059     void setID(ParameterSetID const& id) const;
00060     bool isRegistered() const {return id_.isValid();}
00061     ParameterSetID trackedID() const {return id();} // to be phased out.
00062 
00063     // Entry-handling
00064     Entry const& retrieve(char const*) const;
00065     Entry const& retrieve(std::string const&) const;
00066     Entry const* const retrieveUntracked(char const*) const;
00067     Entry const* const retrieveUntracked(std::string const&) const;
00068     Entry const* const retrieveUnknown(char const*) const;
00069     Entry const* const retrieveUnknown(std::string const&) const;
00070     ParameterSetEntry const& retrieveParameterSet(std::string const&) const;
00071     ParameterSetEntry const* const retrieveUntrackedParameterSet(std::string const&) const;
00072     ParameterSetEntry const* const retrieveUnknownParameterSet(std::string const&) const;
00073     VParameterSetEntry const& retrieveVParameterSet(std::string const&) const;
00074     VParameterSetEntry const* const retrieveUntrackedVParameterSet(std::string const&) const;
00075     VParameterSetEntry const* const retrieveUnknownVParameterSet(std::string const&) const;
00076 
00077     void insertParameterSet(bool okay_to_replace, std::string const& name, ParameterSetEntry const& entry);
00078     void insertVParameterSet(bool okay_to_replace, std::string const& name, VParameterSetEntry const& entry);
00079     void insert(bool ok_to_replace, char const* , Entry const&);
00080     void insert(bool ok_to_replace, std::string const&, Entry const&);
00081     void augment(ParameterSet const& from);
00082     void copyFrom(ParameterSet const& from, std::string const& name);
00083     std::string getParameterAsString(std::string const& name) const;
00084 
00085     // encode only tracked parameters
00086     std::string toString() const;
00087     void toString(std::string& result) const;
00088     
00089     //encode tracked and untracked parameters
00090     void allToString(std::string& result) const;
00091 
00092     template<typename T>
00093     T
00094     getParameter(std::string const&) const;
00095 
00096     template<typename T>
00097     T
00098     getParameter(char const*) const;
00099 
00100     ParameterSet const&
00101     getParameterSet(std::string const&) const;
00102 
00103     ParameterSet const&
00104     getParameterSet(char const*) const;
00105 
00106     ParameterSet const&
00107     getUntrackedParameterSet(std::string const& name, ParameterSet const& defaultValue) const;
00108 
00109     ParameterSet const&
00110     getUntrackedParameterSet(char const* name, ParameterSet const& defaultValue) const;
00111 
00112     ParameterSet const&
00113     getUntrackedParameterSet(std::string const& name) const;
00114 
00115     ParameterSet const&
00116     getUntrackedParameterSet(char const* name) const;
00117 
00118     VParameterSet const&
00119     getParameterSetVector(std::string const& name) const;
00120 
00121     VParameterSet const&
00122     getParameterSetVector(char const* name) const;
00123 
00124     VParameterSet const&
00125     getUntrackedParameterSetVector(std::string const& name, VParameterSet const& defaultValue) const;
00126 
00127     VParameterSet const&
00128     getUntrackedParameterSetVector(char const* name, VParameterSet const& defaultValue) const;
00129 
00130     VParameterSet const&
00131     getUntrackedParameterSetVector(std::string const& name) const;
00132 
00133     VParameterSet const&
00134     getUntrackedParameterSetVector(char const* name) const;
00135 
00136     template<typename T>
00137     void
00138     addParameter(std::string const& name, T const& value) {
00139       invalidateRegistration(name);
00140       insert(true, name, Entry(name, value, true));
00141     }
00142 
00143     template<typename T>
00144     void
00145     addParameter(char const* name, T const& value) {
00146       invalidateRegistration(name);
00147       insert(true, name, Entry(name, value, true));
00148     }
00149 
00150     template<typename T>
00151     T
00152     getUntrackedParameter(std::string const&, T const&) const;
00153 
00154     template<typename T>
00155     T
00156     getUntrackedParameter(char const*, T const&) const;
00157 
00158     template<typename T>
00159     T
00160     getUntrackedParameter(std::string const&) const;
00161 
00162     template<typename T>
00163     T
00164     getUntrackedParameter(char const*) const;
00165 
00170     std::vector<FileInPath>::size_type
00171     getAllFileInPaths(std::vector<FileInPath>& output) const;
00172 
00173     std::vector<std::string> getParameterNames() const;
00174 
00176     bool exists(std::string const& parameterName) const;
00177 
00179     template<typename T>
00180     bool existsAs(std::string const& parameterName, bool trackiness=true) const {
00181        std::vector<std::string> names = getParameterNamesForType<T>(trackiness);
00182        return std::find(names.begin(), names.end(), parameterName) != names.end();
00183     }
00184 
00185     void deprecatedInputTagWarning(std::string const& name, std::string const& label) const;
00186 
00187     template<typename T>
00188     std::vector<std::string> getParameterNamesForType(bool trackiness = true) const {
00189       std::vector<std::string> result;
00190       // This is icky, but I don't know of another way in the current
00191       // code to get at the character code that denotes type T.
00192       T value = T();
00193       Entry type_translator("", value, trackiness);
00194       char type_code = type_translator.typeCode();
00195 
00196       (void)getNamesByCode_(type_code, trackiness, result);
00197       return result;
00198     }
00199 
00200     template<typename T>
00201     void
00202     addUntrackedParameter(std::string const& name, T const& value) {
00203       insert(true, name, Entry(name, value, false));
00204     }
00205 
00206     template<typename T>
00207     void
00208     addUntrackedParameter(char const* name, T const& value) {
00209       insert(true, name, Entry(name, value, false));
00210     }
00211 
00212     bool empty() const {
00213       return tbl_.empty() && psetTable_.empty() && vpsetTable_.empty();
00214     }
00215 
00216     ParameterSet trackedPart() const;
00217 
00218     // Return the names of all parameters of type ParameterSet,
00219     // pushing the names into the argument 'output'. Return the number
00220     // of names pushed into the vector. If 'trackiness' is true, we
00221     // return tracked parameters; if 'trackiness' is false, w return
00222     // untracked parameters.
00223     size_t getParameterSetNames(std::vector<std::string>& output,
00224                                 bool trackiness = true) const;
00225     size_t getParameterSetNames(std::vector<std::string>& output);
00226     // Return the names of all parameters of type
00227     // vector<ParameterSet>, pushing the names into the argument
00228     // 'output'. Return the number of names pushed into the vector. If
00229     // 'trackiness' is true, we return tracked parameters; if
00230     // 'trackiness' is false, w return untracked parameters.
00231     size_t getParameterSetVectorNames(std::vector<std::string>& output,
00232                                       bool trackiness=true) const;
00233 
00234     // need a simple interface for python
00235     std::string dump() const;
00236 
00237     friend std::ostream& operator << (std::ostream& os, ParameterSet const& pset);
00238 
00239     ParameterSet const& registerIt();
00240 
00241     typedef std::map<std::string, Entry> table;
00242     table const& tbl() const {return tbl_;}
00243 
00244     typedef std::map<std::string, ParameterSetEntry> psettable;
00245     psettable const& psetTable() const {return psetTable_;}
00246 
00247     typedef std::map<std::string, VParameterSetEntry> vpsettable;
00248     vpsettable const& vpsetTable() const {return vpsetTable_;}
00249 
00250     ParameterSet*
00251     getPSetForUpdate(std::string const& name, bool& isTracked);
00252 
00253     ParameterSet*
00254     getPSetForUpdate(std::string const& name) {
00255       bool isTracked = false;
00256       return getPSetForUpdate(name, isTracked);
00257     }
00258 
00259     VParameterSetEntry*
00260     getPSetVectorForUpdate(std::string const& name);
00261 
00262   private:
00263     // decode
00264     bool fromString(std::string const&);
00265     
00266     void toStringImp(std::string&, bool useAll) const;
00267 
00268     table tbl_;
00269     psettable psetTable_;
00270     vpsettable vpsetTable_;
00271 
00272     // If the id_ is invalid, that means a new value should be
00273     // calculated before the value is returned. Upon registration, the
00274     // id_ is made valid. Updating any tracked parameter invalidates the id_.
00275     mutable ParameterSetID id_;
00276 
00277     void invalidateRegistration(std::string const& nameOfTracked) const;
00278 
00279     void calculateID();
00280 
00281     // get the untracked Entry object, throwing an exception if it is
00282     // not found.
00283     Entry const* getEntryPointerOrThrow_(std::string const& name) const;
00284     Entry const* getEntryPointerOrThrow_(char const* name) const;
00285 
00286     // Return the names of all the entries with the given typecode and
00287     // given status (trackiness)
00288     size_t getNamesByCode_(char code,
00289                            bool trackiness,
00290                            std::vector<std::string>& output) const;
00291 
00292 
00293   };  // ParameterSet
00294 
00295   inline
00296   void swap (ParameterSet& a, ParameterSet& b) {
00297     a.swap(b);
00298   }
00299 
00300   bool operator==(ParameterSet const& a, ParameterSet const& b);
00301 
00302   bool isTransientEqual(ParameterSet const& a, ParameterSet const& b);
00303 
00304   inline
00305   bool
00306   operator!=(ParameterSet const& a, ParameterSet const& b) {
00307     return !(a == b);
00308   }
00309 
00310   // Free function to retrieve a parameter set, given the parameter set ID.
00311   ParameterSet const&
00312   getParameterSet(ParameterSetID const& id);
00313 
00314   // specializations
00315   // ----------------------------------------------------------------------
00316 
00317   template<>
00318   bool
00319   ParameterSet::getParameter<bool>(std::string const& name) const;
00320 
00321   // ----------------------------------------------------------------------
00322   // Int32, vInt32
00323 
00324   template<>
00325   int
00326   ParameterSet::getParameter<int>(std::string const& name) const;
00327 
00328   template<>
00329   std::vector<int>
00330   ParameterSet::getParameter<std::vector<int> >(std::string const& name) const;
00331 
00332  // ----------------------------------------------------------------------
00333   // Int64, vInt64
00334 
00335   template<>
00336   long long
00337   ParameterSet::getParameter<long long>(std::string const& name) const;
00338 
00339   template<>
00340   std::vector<long long>
00341   ParameterSet::getParameter<std::vector<long long> >(std::string const& name) const;
00342 
00343   // ----------------------------------------------------------------------
00344   // Uint32, vUint32
00345 
00346   template<>
00347   unsigned int
00348   ParameterSet::getParameter<unsigned int>(std::string const& name) const;
00349 
00350   template<>
00351   std::vector<unsigned int>
00352   ParameterSet::getParameter<std::vector<unsigned int> >(std::string const& name) const;
00353 
00354   // ----------------------------------------------------------------------
00355   // Uint64, vUint64
00356 
00357   template<>
00358   unsigned long long
00359   ParameterSet::getParameter<unsigned long long>(std::string const& name) const;
00360 
00361   template<>
00362   std::vector<unsigned long long>
00363   ParameterSet::getParameter<std::vector<unsigned long long> >(std::string const& name) const;
00364 
00365   // ----------------------------------------------------------------------
00366   // Double, vDouble
00367 
00368   template<>
00369   double
00370   ParameterSet::getParameter<double>(std::string const& name) const;
00371 
00372   template<>
00373   std::vector<double>
00374   ParameterSet::getParameter<std::vector<double> >(std::string const& name) const;
00375 
00376   // ----------------------------------------------------------------------
00377   // String, vString
00378 
00379   template<>
00380   std::string
00381   ParameterSet::getParameter<std::string>(std::string const& name) const;
00382 
00383   template<>
00384   std::vector<std::string>
00385   ParameterSet::getParameter<std::vector<std::string> >(std::string const& name) const;
00386 
00387   // ----------------------------------------------------------------------
00388   // FileInPath
00389 
00390   template<>
00391   FileInPath
00392   ParameterSet::getParameter<FileInPath>(std::string const& name) const;
00393 
00394   // FileInPath can't default-construct something useful, so we specialize
00395   // this template
00396   template<>
00397   std::vector<std::string>
00398   ParameterSet::getParameterNamesForType<FileInPath>(bool trackiness) const;
00399 
00400   // ----------------------------------------------------------------------
00401   // InputTag
00402 
00403   template<>
00404   InputTag
00405   ParameterSet::getParameter<InputTag>(std::string const& name) const;
00406 
00407   // ----------------------------------------------------------------------
00408   // VInputTag
00409 
00410   template<>
00411   std::vector<InputTag>
00412   ParameterSet::getParameter<std::vector<InputTag> >(std::string const& name) const;
00413 
00414    // ----------------------------------------------------------------------
00415    // ESInputTag
00416 
00417    template<>
00418    ESInputTag
00419    ParameterSet::getParameter<ESInputTag>(std::string const& name) const;
00420 
00421    // ----------------------------------------------------------------------
00422    // VESInputTag
00423 
00424    template<>
00425    std::vector<ESInputTag>
00426    ParameterSet::getParameter<std::vector<ESInputTag> >(std::string const& name) const;
00427 
00428   // ----------------------------------------------------------------------
00429   // EventID
00430 
00431   template<>
00432   EventID
00433   ParameterSet::getParameter<EventID>(std::string const& name) const;
00434 
00435   // ----------------------------------------------------------------------
00436   // VEventID
00437 
00438   template<>
00439   std::vector<EventID>
00440   ParameterSet::getParameter<std::vector<EventID> >(std::string const& name) const;
00441 
00442   // ----------------------------------------------------------------------
00443   // LuminosityBlockID
00444 
00445   template<>
00446   LuminosityBlockID
00447   ParameterSet::getParameter<LuminosityBlockID>(std::string const& name) const;
00448 
00449   // ----------------------------------------------------------------------
00450   // VLuminosityBlockID
00451 
00452   template<>
00453   std::vector<LuminosityBlockID>
00454   ParameterSet::getParameter<std::vector<LuminosityBlockID> >(std::string const& name) const;
00455 
00456   // ----------------------------------------------------------------------
00457   // EventRange
00458 
00459   template<>
00460   EventRange
00461   ParameterSet::getParameter<EventRange>(std::string const& name) const;
00462 
00463   // ----------------------------------------------------------------------
00464   // VEventRange
00465 
00466   template<>
00467   std::vector<EventRange>
00468   ParameterSet::getParameter<std::vector<EventRange> >(std::string const& name) const;
00469 
00470   // ----------------------------------------------------------------------
00471   // LuminosityBlockRange
00472 
00473   template<>
00474   LuminosityBlockRange
00475   ParameterSet::getParameter<LuminosityBlockRange>(std::string const& name) const;
00476 
00477   // ----------------------------------------------------------------------
00478   // VLuminosityBlockRange
00479 
00480   template<>
00481   std::vector<LuminosityBlockRange>
00482   ParameterSet::getParameter<std::vector<LuminosityBlockRange> >(std::string const& name) const;
00483 
00484   // ----------------------------------------------------------------------
00485   // PSet, vPSet
00486 
00487   template<>
00488   ParameterSet
00489   ParameterSet::getParameter<ParameterSet>(std::string const& name) const;
00490 
00491   template<>
00492   VParameterSet
00493   ParameterSet::getParameter<VParameterSet>(std::string const& name) const;
00494 
00495   template<>
00496   void
00497   ParameterSet::addParameter<ParameterSet>(std::string const& name, ParameterSet const& value);
00498 
00499   template<>
00500   void
00501   ParameterSet::addParameter<ParameterSet>(char const* name, ParameterSet const& value);
00502 
00503   template<>
00504   void
00505   ParameterSet::addUntrackedParameter<ParameterSet>(std::string const& name, ParameterSet const& value);
00506 
00507   template<>
00508   void
00509   ParameterSet::addUntrackedParameter<ParameterSet>(char const* name, ParameterSet const& value);
00510 
00511   template<>
00512   void
00513   ParameterSet::addParameter<VParameterSet>(std::string const& name, VParameterSet const& value);
00514 
00515   template<>
00516   void
00517   ParameterSet::addParameter<VParameterSet>(char const* name, VParameterSet const& value);
00518 
00519   template<>
00520   void
00521   ParameterSet::addUntrackedParameter<VParameterSet>(std::string const& name, VParameterSet const& value);
00522 
00523   template<>
00524   void
00525   ParameterSet::addUntrackedParameter<VParameterSet>(char const* name, VParameterSet const& value);
00526 
00527   // untracked parameters
00528 
00529   // ----------------------------------------------------------------------
00530   // Bool, vBool
00531 
00532   template<>
00533   bool
00534   ParameterSet::getUntrackedParameter<bool>(std::string const& name, bool const& defaultValue) const;
00535 
00536   template<>
00537   bool
00538   ParameterSet::getUntrackedParameter<bool>(std::string const& name) const;
00539 
00540   // ----------------------------------------------------------------------
00541   // Int32, vInt32
00542 
00543   template<>
00544   int
00545   ParameterSet::getUntrackedParameter<int>(std::string const& name, int const& defaultValue) const;
00546 
00547   template<>
00548   int
00549   ParameterSet::getUntrackedParameter<int>(std::string const& name) const;
00550 
00551   template<>
00552   std::vector<int>
00553   ParameterSet::getUntrackedParameter<std::vector<int> >(std::string const& name, std::vector<int> const& defaultValue) const;
00554 
00555   template<>
00556   std::vector<int>
00557   ParameterSet::getUntrackedParameter<std::vector<int> >(std::string const& name) const;
00558 
00559   // ----------------------------------------------------------------------
00560   // Uint32, vUint32
00561 
00562   template<>
00563   unsigned int
00564   ParameterSet::getUntrackedParameter<unsigned int>(std::string const& name, unsigned int const& defaultValue) const;
00565 
00566   template<>
00567   unsigned int
00568   ParameterSet::getUntrackedParameter<unsigned int>(std::string const& name) const;
00569 
00570   template<>
00571   std::vector<unsigned int>
00572   ParameterSet::getUntrackedParameter<std::vector<unsigned int> >(std::string const& name, std::vector<unsigned int> const& defaultValue) const;
00573 
00574   template<>
00575   std::vector<unsigned int>
00576   ParameterSet::getUntrackedParameter<std::vector<unsigned int> >(std::string const& name) const;
00577 
00578   // ----------------------------------------------------------------------
00579   // Uint64, vUint64
00580 
00581   template<>
00582   unsigned long long
00583   ParameterSet::getUntrackedParameter<unsigned long long>(std::string const& name, unsigned long long const& defaultValue) const;
00584 
00585   template<>
00586   unsigned long long
00587   ParameterSet::getUntrackedParameter<unsigned long long>(std::string const& name) const;
00588 
00589   template<>
00590   std::vector<unsigned long long>
00591   ParameterSet::getUntrackedParameter<std::vector<unsigned long long> >(std::string const& name, std::vector<unsigned long long> const& defaultValue) const;
00592 
00593   template<>
00594   std::vector<unsigned long long>
00595   ParameterSet::getUntrackedParameter<std::vector<unsigned long long> >(std::string const& name) const;
00596 
00597   // ----------------------------------------------------------------------
00598   // Int64, Vint64
00599 
00600   template<>
00601   long long
00602   ParameterSet::getUntrackedParameter<long long>(std::string const& name, long long const& defaultValue) const;
00603 
00604   template<>
00605   long long
00606   ParameterSet::getUntrackedParameter<long long>(std::string const& name) const;
00607 
00608   template<>
00609   std::vector<long long>
00610   ParameterSet::getUntrackedParameter<std::vector<long long> >(std::string const& name, std::vector<long long> const& defaultValue) const;
00611 
00612   template<>
00613   std::vector<long long>
00614   ParameterSet::getUntrackedParameter<std::vector<long long> >(std::string const& name) const;
00615 
00616   // ----------------------------------------------------------------------
00617   // Double, vDouble
00618 
00619   template<>
00620   double
00621   ParameterSet::getUntrackedParameter<double>(std::string const& name, double const& defaultValue) const;
00622 
00623   template<>
00624   double
00625   ParameterSet::getUntrackedParameter<double>(std::string const& name) const;
00626 
00627   template<>
00628   std::vector<double>
00629   ParameterSet::getUntrackedParameter<std::vector<double> >(std::string const& name, std::vector<double> const& defaultValue) const;
00630 
00631   template<>
00632   std::vector<double>
00633   ParameterSet::getUntrackedParameter<std::vector<double> >(std::string const& name) const;
00634 
00635   // ----------------------------------------------------------------------
00636   // String, vString
00637 
00638   template<>
00639   std::string
00640   ParameterSet::getUntrackedParameter<std::string>(std::string const& name, std::string const& defaultValue) const;
00641 
00642   template<>
00643   std::string
00644   ParameterSet::getUntrackedParameter<std::string>(std::string const& name) const;
00645 
00646   template<>
00647   std::vector<std::string>
00648   ParameterSet::getUntrackedParameter<std::vector<std::string> >(std::string const& name, std::vector<std::string> const& defaultValue) const;
00649 
00650   template<>
00651   std::vector<std::string>
00652   ParameterSet::getUntrackedParameter<std::vector<std::string> >(std::string const& name) const;
00653 
00654   // ----------------------------------------------------------------------
00655   //  FileInPath
00656 
00657   template<>
00658   FileInPath
00659   ParameterSet::getUntrackedParameter<FileInPath>(std::string const& name, FileInPath const& defaultValue) const;
00660 
00661   template<>
00662   FileInPath
00663   ParameterSet::getUntrackedParameter<FileInPath>(std::string const& name) const;
00664 
00665   // ----------------------------------------------------------------------
00666   // InputTag, VInputTag
00667 
00668   template<>
00669   InputTag
00670   ParameterSet::getUntrackedParameter<InputTag>(std::string const& name, InputTag const& defaultValue) const;
00671 
00672   template<>
00673   InputTag
00674   ParameterSet::getUntrackedParameter<InputTag>(std::string const& name) const;
00675 
00676   template<>
00677   std::vector<InputTag>
00678   ParameterSet::getUntrackedParameter<std::vector<InputTag> >(std::string const& name,
00679                                       std::vector<InputTag> const& defaultValue) const;
00680 
00681   template<>
00682   std::vector<InputTag>
00683   ParameterSet::getUntrackedParameter<std::vector<InputTag> >(std::string const& name) const;
00684 
00685   // ----------------------------------------------------------------------
00686   // EventID, VEventID
00687 
00688   template<>
00689   EventID
00690   ParameterSet::getUntrackedParameter<EventID>(std::string const& name, EventID const& defaultValue) const;
00691 
00692   template<>
00693   EventID
00694   ParameterSet::getUntrackedParameter<EventID>(std::string const& name) const;
00695 
00696   template<>
00697   std::vector<EventID>
00698   ParameterSet::getUntrackedParameter<std::vector<EventID> >(std::string const& name,
00699                                       std::vector<EventID> const& defaultValue) const;
00700   template<>
00701   std::vector<EventID>
00702   ParameterSet::getUntrackedParameter<std::vector<EventID> >(std::string const& name) const;
00703 
00704   // ----------------------------------------------------------------------
00705   // LuminosityBlockID, VLuminosityBlockID
00706 
00707   template<>
00708   LuminosityBlockID
00709   ParameterSet::getUntrackedParameter<LuminosityBlockID>(std::string const& name, LuminosityBlockID const& defaultValue) const;
00710 
00711   template<>
00712   LuminosityBlockID
00713   ParameterSet::getUntrackedParameter<LuminosityBlockID>(std::string const& name) const;
00714 
00715   template<>
00716   std::vector<LuminosityBlockID>
00717   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockID> >(std::string const& name,
00718                                       std::vector<LuminosityBlockID> const& defaultValue) const;
00719   template<>
00720   std::vector<LuminosityBlockID>
00721   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockID> >(std::string const& name) const;
00722 
00723   // ----------------------------------------------------------------------
00724   // EventRange, VEventRange
00725 
00726   template<>
00727   EventRange
00728   ParameterSet::getUntrackedParameter<EventRange>(std::string const& name, EventRange const& defaultValue) const;
00729 
00730   template<>
00731   EventRange
00732   ParameterSet::getUntrackedParameter<EventRange>(std::string const& name) const;
00733 
00734   template<>
00735   std::vector<EventRange>
00736   ParameterSet::getUntrackedParameter<std::vector<EventRange> >(std::string const& name,
00737                                       std::vector<EventRange> const& defaultValue) const;
00738   template<>
00739   std::vector<EventRange>
00740   ParameterSet::getUntrackedParameter<std::vector<EventRange> >(std::string const& name) const;
00741 
00742   // ----------------------------------------------------------------------
00743   // LuminosityBlockRange, VLuminosityBlockRange
00744 
00745   template<>
00746   LuminosityBlockRange
00747   ParameterSet::getUntrackedParameter<LuminosityBlockRange>(std::string const& name, LuminosityBlockRange const& defaultValue) const;
00748 
00749   template<>
00750   LuminosityBlockRange
00751   ParameterSet::getUntrackedParameter<LuminosityBlockRange>(std::string const& name) const;
00752 
00753   template<>
00754   std::vector<LuminosityBlockRange>
00755   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockRange> >(std::string const& name,
00756                                       std::vector<LuminosityBlockRange> const& defaultValue) const;
00757   template<>
00758   std::vector<LuminosityBlockRange>
00759   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockRange> >(std::string const& name) const;
00760 
00761   // specializations
00762   // ----------------------------------------------------------------------
00763   // Bool, vBool
00764 
00765   template<>
00766   bool
00767   ParameterSet::getParameter<bool>(char const* name) const;
00768 
00769   // ----------------------------------------------------------------------
00770   // Int32, vInt32
00771 
00772   template<>
00773   int
00774   ParameterSet::getParameter<int>(char const* name) const;
00775 
00776   template<>
00777   std::vector<int>
00778   ParameterSet::getParameter<std::vector<int> >(char const* name) const;
00779 
00780  // ----------------------------------------------------------------------
00781   // Int64, vInt64
00782 
00783   template<>
00784   long long
00785   ParameterSet::getParameter<long long>(char const* name) const;
00786 
00787   template<>
00788   std::vector<long long>
00789   ParameterSet::getParameter<std::vector<long long> >(char const* name) const;
00790 
00791   // ----------------------------------------------------------------------
00792   // Uint32, vUint32
00793 
00794   template<>
00795   unsigned int
00796   ParameterSet::getParameter<unsigned int>(char const* name) const;
00797 
00798   template<>
00799   std::vector<unsigned int>
00800   ParameterSet::getParameter<std::vector<unsigned int> >(char const* name) const;
00801 
00802   // ----------------------------------------------------------------------
00803   // Uint64, vUint64
00804 
00805   template<>
00806   unsigned long long
00807   ParameterSet::getParameter<unsigned long long>(char const* name) const;
00808 
00809   template<>
00810   std::vector<unsigned long long>
00811   ParameterSet::getParameter<std::vector<unsigned long long> >(char const* name) const;
00812 
00813   // ----------------------------------------------------------------------
00814   // Double, vDouble
00815 
00816   template<>
00817   double
00818   ParameterSet::getParameter<double>(char const* name) const;
00819 
00820   template<>
00821   std::vector<double>
00822   ParameterSet::getParameter<std::vector<double> >(char const* name) const;
00823 
00824   // ----------------------------------------------------------------------
00825   // String, vString
00826 
00827   template<>
00828   std::string
00829   ParameterSet::getParameter<std::string>(char const* name) const;
00830 
00831   template<>
00832   std::vector<std::string>
00833   ParameterSet::getParameter<std::vector<std::string> >(char const* name) const;
00834 
00835   // ----------------------------------------------------------------------
00836   // FileInPath
00837 
00838   template<>
00839   FileInPath
00840   ParameterSet::getParameter<FileInPath>(char const* name) const;
00841 
00842   // ----------------------------------------------------------------------
00843   // InputTag
00844 
00845   template<>
00846   InputTag
00847   ParameterSet::getParameter<InputTag>(char const* name) const;
00848 
00849   // ----------------------------------------------------------------------
00850   // VInputTag
00851 
00852   template<>
00853   std::vector<InputTag>
00854   ParameterSet::getParameter<std::vector<InputTag> >(char const* name) const;
00855 
00856   // ----------------------------------------------------------------------
00857   // EventID
00858 
00859   template<>
00860   EventID
00861   ParameterSet::getParameter<EventID>(char const* name) const;
00862 
00863   // ----------------------------------------------------------------------
00864   // VEventID
00865 
00866   template<>
00867   std::vector<EventID>
00868   ParameterSet::getParameter<std::vector<EventID> >(char const* name) const;
00869 
00870   // ----------------------------------------------------------------------
00871   // LuminosityBlockID
00872 
00873   template<>
00874   LuminosityBlockID
00875   ParameterSet::getParameter<LuminosityBlockID>(char const* name) const;
00876 
00877   // ----------------------------------------------------------------------
00878   // VLuminosityBlockID
00879 
00880   template<>
00881   std::vector<LuminosityBlockID>
00882   ParameterSet::getParameter<std::vector<LuminosityBlockID> >(char const* name) const;
00883 
00884   // ----------------------------------------------------------------------
00885   // EventRange
00886 
00887   template<>
00888   EventRange
00889   ParameterSet::getParameter<EventRange>(char const* name) const;
00890 
00891   // ----------------------------------------------------------------------
00892   // VEventRange
00893 
00894   template<>
00895   std::vector<EventRange>
00896   ParameterSet::getParameter<std::vector<EventRange> >(char const* name) const;
00897 
00898   // ----------------------------------------------------------------------
00899   // LuminosityBlockRange
00900 
00901   template<>
00902   LuminosityBlockRange
00903   ParameterSet::getParameter<LuminosityBlockRange>(char const* name) const;
00904 
00905   // ----------------------------------------------------------------------
00906   // VLuminosityBlockRange
00907 
00908   template<>
00909   std::vector<LuminosityBlockRange>
00910   ParameterSet::getParameter<std::vector<LuminosityBlockRange> >(char const* name) const;
00911 
00912   // ----------------------------------------------------------------------
00913   // PSet, vPSet
00914 
00915   template<>
00916   ParameterSet
00917   ParameterSet::getParameter<ParameterSet>(char const* name) const;
00918 
00919   template<>
00920   VParameterSet
00921   ParameterSet::getParameter<VParameterSet>(char const* name) const;
00922 
00923   // untracked parameters
00924 
00925   // ----------------------------------------------------------------------
00926   // Bool, vBool
00927 
00928   template<>
00929   bool
00930   ParameterSet::getUntrackedParameter<bool>(char const* name, bool const& defaultValue) const;
00931 
00932   template<>
00933   bool
00934   ParameterSet::getUntrackedParameter<bool>(char const* name) const;
00935 
00936   // ----------------------------------------------------------------------
00937   // Int32, vInt32
00938 
00939   template<>
00940   int
00941   ParameterSet::getUntrackedParameter<int>(char const* name, int const& defaultValue) const;
00942 
00943   template<>
00944   int
00945   ParameterSet::getUntrackedParameter<int>(char const* name) const;
00946 
00947   template<>
00948   std::vector<int>
00949   ParameterSet::getUntrackedParameter<std::vector<int> >(char const* name, std::vector<int> const& defaultValue) const;
00950 
00951   template<>
00952   std::vector<int>
00953   ParameterSet::getUntrackedParameter<std::vector<int> >(char const* name) const;
00954 
00955   // ----------------------------------------------------------------------
00956   // Uint32, vUint32
00957 
00958   template<>
00959   unsigned int
00960   ParameterSet::getUntrackedParameter<unsigned int>(char const* name, unsigned int const& defaultValue) const;
00961 
00962   template<>
00963   unsigned int
00964   ParameterSet::getUntrackedParameter<unsigned int>(char const* name) const;
00965 
00966   template<>
00967   std::vector<unsigned int>
00968   ParameterSet::getUntrackedParameter<std::vector<unsigned int> >(char const* name, std::vector<unsigned int> const& defaultValue) const;
00969 
00970   template<>
00971   std::vector<unsigned int>
00972   ParameterSet::getUntrackedParameter<std::vector<unsigned int> >(char const* name) const;
00973 
00974   // ----------------------------------------------------------------------
00975   // Uint64, vUint64
00976 
00977   template<>
00978   unsigned long long
00979   ParameterSet::getUntrackedParameter<unsigned long long>(char const* name, unsigned long long const& defaultValue) const;
00980 
00981   template<>
00982   unsigned long long
00983   ParameterSet::getUntrackedParameter<unsigned long long>(char const* name) const;
00984 
00985   template<>
00986   std::vector<unsigned long long>
00987   ParameterSet::getUntrackedParameter<std::vector<unsigned long long> >(char const* name, std::vector<unsigned long long> const& defaultValue) const;
00988 
00989   template<>
00990   std::vector<unsigned long long>
00991   ParameterSet::getUntrackedParameter<std::vector<unsigned long long> >(char const* name) const;
00992 
00993   // ----------------------------------------------------------------------
00994   // Int64, Vint64
00995 
00996   template<>
00997   long long
00998   ParameterSet::getUntrackedParameter<long long>(char const* name, long long const& defaultValue) const;
00999 
01000   template<>
01001   long long
01002   ParameterSet::getUntrackedParameter<long long>(char const* name) const;
01003 
01004   template<>
01005   std::vector<long long>
01006   ParameterSet::getUntrackedParameter<std::vector<long long> >(char const* name, std::vector<long long> const& defaultValue) const;
01007 
01008   template<>
01009   std::vector<long long>
01010   ParameterSet::getUntrackedParameter<std::vector<long long> >(char const* name) const;
01011 
01012   // ----------------------------------------------------------------------
01013   // Double, vDouble
01014 
01015   template<>
01016   double
01017   ParameterSet::getUntrackedParameter<double>(char const* name, double const& defaultValue) const;
01018 
01019   template<>
01020   double
01021   ParameterSet::getUntrackedParameter<double>(char const* name) const;
01022 
01023   template<>
01024   std::vector<double>
01025   ParameterSet::getUntrackedParameter<std::vector<double> >(char const* name, std::vector<double> const& defaultValue) const;
01026 
01027   template<>
01028   std::vector<double>
01029   ParameterSet::getUntrackedParameter<std::vector<double> >(char const* name) const;
01030 
01031   // ----------------------------------------------------------------------
01032   // String, vString
01033 
01034   template<>
01035   std::string
01036   ParameterSet::getUntrackedParameter<std::string>(char const* name, std::string const& defaultValue) const;
01037 
01038   template<>
01039   std::string
01040   ParameterSet::getUntrackedParameter<std::string>(char const* name) const;
01041 
01042   template<>
01043   std::vector<std::string>
01044   ParameterSet::getUntrackedParameter<std::vector<std::string> >(char const* name, std::vector<std::string> const& defaultValue) const;
01045 
01046   template<>
01047   std::vector<std::string>
01048   ParameterSet::getUntrackedParameter<std::vector<std::string> >(char const* name) const;
01049 
01050   // ----------------------------------------------------------------------
01051   //  FileInPath
01052 
01053   template<>
01054   FileInPath
01055   ParameterSet::getUntrackedParameter<FileInPath>(char const* name, FileInPath const& defaultValue) const;
01056 
01057   template<>
01058   FileInPath
01059   ParameterSet::getUntrackedParameter<FileInPath>(char const* name) const;
01060 
01061   // ----------------------------------------------------------------------
01062   // InputTag, VInputTag
01063 
01064   template<>
01065   InputTag
01066   ParameterSet::getUntrackedParameter<InputTag>(char const* name, InputTag const& defaultValue) const;
01067 
01068   template<>
01069   InputTag
01070   ParameterSet::getUntrackedParameter<InputTag>(char const* name) const;
01071 
01072   template<>
01073   std::vector<InputTag>
01074   ParameterSet::getUntrackedParameter<std::vector<InputTag> >(char const* name,
01075                                       std::vector<InputTag> const& defaultValue) const;
01076 
01077   template<>
01078   std::vector<InputTag>
01079   ParameterSet::getUntrackedParameter<std::vector<InputTag> >(char const* name) const;
01080 
01081   // ----------------------------------------------------------------------
01082   // EventID, VEventID
01083 
01084   template<>
01085   EventID
01086   ParameterSet::getUntrackedParameter<EventID>(char const* name, EventID const& defaultValue) const;
01087 
01088   template<>
01089   EventID
01090   ParameterSet::getUntrackedParameter<EventID>(char const* name) const;
01091 
01092   template<>
01093   std::vector<EventID>
01094   ParameterSet::getUntrackedParameter<std::vector<EventID> >(char const* name,
01095                                       std::vector<EventID> const& defaultValue) const;
01096   template<>
01097   std::vector<EventID>
01098   ParameterSet::getUntrackedParameter<std::vector<EventID> >(char const* name) const;
01099 
01100   // ----------------------------------------------------------------------
01101   // LuminosityBlockID, VLuminosityBlockID
01102 
01103   template<>
01104   LuminosityBlockID
01105   ParameterSet::getUntrackedParameter<LuminosityBlockID>(char const* name, LuminosityBlockID const& defaultValue) const;
01106 
01107   template<>
01108   LuminosityBlockID
01109   ParameterSet::getUntrackedParameter<LuminosityBlockID>(char const* name) const;
01110 
01111   template<>
01112   std::vector<LuminosityBlockID>
01113   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockID> >(char const* name,
01114                                       std::vector<LuminosityBlockID> const& defaultValue) const;
01115   template<>
01116   std::vector<LuminosityBlockID>
01117   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockID> >(char const* name) const;
01118 
01119   // ----------------------------------------------------------------------
01120   // EventRange, VEventRange
01121 
01122   template<>
01123   EventRange
01124   ParameterSet::getUntrackedParameter<EventRange>(char const* name, EventRange const& defaultValue) const;
01125 
01126   template<>
01127   EventRange
01128   ParameterSet::getUntrackedParameter<EventRange>(char const* name) const;
01129 
01130   template<>
01131   std::vector<EventRange>
01132   ParameterSet::getUntrackedParameter<std::vector<EventRange> >(char const* name,
01133                                       std::vector<EventRange> const& defaultValue) const;
01134   template<>
01135   std::vector<EventRange>
01136   ParameterSet::getUntrackedParameter<std::vector<EventRange> >(char const* name) const;
01137 
01138   // ----------------------------------------------------------------------
01139   // LuminosityBlockRange, VLuminosityBlockRange
01140 
01141   template<>
01142   LuminosityBlockRange
01143   ParameterSet::getUntrackedParameter<LuminosityBlockRange>(char const* name, LuminosityBlockRange const& defaultValue) const;
01144 
01145   template<>
01146   LuminosityBlockRange
01147   ParameterSet::getUntrackedParameter<LuminosityBlockRange>(char const* name) const;
01148 
01149   template<>
01150   std::vector<LuminosityBlockRange>
01151   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockRange> >(char const* name,
01152                                       std::vector<LuminosityBlockRange> const& defaultValue) const;
01153   template<>
01154   std::vector<LuminosityBlockRange>
01155   ParameterSet::getUntrackedParameter<std::vector<LuminosityBlockRange> >(char const* name) const;
01156 
01157   // ----------------------------------------------------------------------
01158   // PSet, vPSet
01159 
01160   template<>
01161   ParameterSet
01162   ParameterSet::getUntrackedParameter<ParameterSet>(char const* name, ParameterSet const& defaultValue) const;
01163 
01164   template<>
01165   ParameterSet
01166   ParameterSet::getUntrackedParameter<ParameterSet>(std::string const& name, ParameterSet const& defaultValue) const;
01167 
01168   template<>
01169   ParameterSet
01170   ParameterSet::getUntrackedParameter<ParameterSet>(char const* name) const;
01171 
01172   template<>
01173   ParameterSet
01174   ParameterSet::getUntrackedParameter<ParameterSet>(std::string const& name) const;
01175 
01176   template<>
01177   VParameterSet
01178   ParameterSet::getUntrackedParameter<VParameterSet>(char const* name, VParameterSet const& defaultValue) const;
01179 
01180   template<>
01181   VParameterSet
01182   ParameterSet::getUntrackedParameter<VParameterSet>(char const* name) const;
01183 
01184   template<>
01185   VParameterSet
01186   ParameterSet::getUntrackedParameter<VParameterSet>(std::string const& name, VParameterSet const& defaultValue) const;
01187 
01188   template<>
01189   VParameterSet
01190   ParameterSet::getUntrackedParameter<VParameterSet>(std::string const& name) const;
01191 
01192   template<>
01193   std::vector<std::string>
01194   ParameterSet::getParameterNamesForType<ParameterSet>(bool trackiness) const;
01195 
01196   template<>
01197   std::vector<std::string>
01198   ParameterSet::getParameterNamesForType<VParameterSet>(bool trackiness) const;
01199 
01200   ParameterSet::Bool
01201   operator&&(ParameterSet::Bool a, ParameterSet::Bool b);
01202 
01203 }  // namespace edm
01204 #endif