CMS 3D CMS Logo

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