rivet is hosted by Hepforge, IPPP Durham
Rivet.hh
Go to the documentation of this file.
00001 #ifndef RIVET_Rivet_HH
00002 #define RIVET_Rivet_HH
00003 
00004 #include "Rivet/Config/RivetConfig.hh"
00005 #include "Rivet/Config/BuildOptions.hh"
00006 
00007 // Bring selected STL classes into the Rivet namespace
00008 #include "Rivet/RivetSTL.hh"
00009 
00010 // Macro to help with overzealous compiler warnings
00011 #ifdef UNUSED
00012 #elif defined(__GNUC__)
00013 # define UNUSED(x) UNUSED_ ## x __attribute__((unused))
00014 #elif defined(__LCLINT__)
00015 # define UNUSED(x) /*@unused@*/ x
00016 #else
00017 # define UNUSED(x) x
00018 #endif
00019 
00020 
00021 namespace Rivet {
00022 
00023   /// A sensible default maximum value of rapidity for Rivet analyses to use.
00024   static const double MAXRAPIDITY = 100000.0;
00025 
00026   /// A function to get the Rivet version string
00027   string version();
00028 
00029 }
00030 
00031 
00032 // AIDA headers
00033 #include "Rivet/RivetYODA.fhh"
00034 
00035 // HepMC headers and helper functions
00036 #include "Rivet/RivetHepMC.hh"
00037 
00038 // Now import some Rivet classes
00039 #include "Rivet/Exceptions.hh"
00040 #include "Rivet/Math/MathUtils.hh"
00041 #include "Rivet/Math/Vectors.hh"
00042 #include "Rivet/Math/Matrices.hh"
00043 #include "Rivet/Math/Units.hh"
00044 #include "Rivet/Tools/Utils.hh"
00045 #include "Rivet/Tools/RivetPaths.hh"
00046 
00047 #include "Rivet/ParticleName.hh"
00048 #include "Rivet/Particle.hh"
00049 
00050 
00051 namespace Rivet {
00052 
00053 
00054   /// Convenient function for streaming out vectors of any streamable object.
00055   template<typename T>
00056   inline std::ostream& operator<<(std::ostream& os, const std::vector<T>& vec) {
00057     os << "[ ";
00058     for (size_t i=0; i<vec.size(); ++i) {
00059       os << vec[i] << " ";
00060     }
00061     os << "]";
00062     return os;
00063   }
00064 
00065 
00066   /// Convenient function for streaming out lists of any streamable object.
00067   template<typename T>
00068   inline std::ostream& operator<<(std::ostream& os, const std::list<T>& vec) {
00069     os << "[ ";
00070     for (size_t i=0; i<vec.size(); ++i) {
00071       os << vec[i] << " ";
00072     }
00073     os << "]";
00074     return os;
00075   }
00076 
00077 
00078 }
00079 
00080 #endif