rivet is hosted by Hepforge, IPPP Durham
Rivet  2.7.0
RivetYODA.hh
1 #ifndef RIVET_RIVETYODA_HH
2 #define RIVET_RIVETYODA_HH
3 
4 #include "Rivet/Config/RivetCommon.hh"
5 #include "YODA/AnalysisObject.h"
6 #include "YODA/Counter.h"
7 #include "YODA/Histo1D.h"
8 #include "YODA/Histo2D.h"
9 #include "YODA/Profile1D.h"
10 #include "YODA/Profile2D.h"
11 #include "YODA/Scatter1D.h"
12 #include "YODA/Scatter2D.h"
13 #include "YODA/Scatter3D.h"
14 
15 namespace Rivet {
16 
17  typedef std::shared_ptr<YODA::AnalysisObject> AnalysisObjectPtr;
18  typedef std::shared_ptr<YODA::Counter> CounterPtr;
19  typedef std::shared_ptr<YODA::Histo1D> Histo1DPtr;
20  typedef std::shared_ptr<YODA::Histo2D> Histo2DPtr;
21  typedef std::shared_ptr<YODA::Profile1D> Profile1DPtr;
22  typedef std::shared_ptr<YODA::Profile2D> Profile2DPtr;
23  typedef std::shared_ptr<YODA::Scatter1D> Scatter1DPtr;
24  typedef std::shared_ptr<YODA::Scatter2D> Scatter2DPtr;
25  typedef std::shared_ptr<YODA::Scatter3D> Scatter3DPtr;
26 
27  using YODA::AnalysisObject;
28  using YODA::Counter;
29  using YODA::Histo1D;
30  using YODA::HistoBin1D;
31  using YODA::Histo2D;
32  using YODA::HistoBin2D;
33  using YODA::Profile1D;
34  using YODA::ProfileBin1D;
35  using YODA::Profile2D;
36  using YODA::ProfileBin2D;
37  using YODA::Scatter1D;
38  using YODA::Point1D;
39  using YODA::Scatter2D;
40  using YODA::Point2D;
41  using YODA::Scatter3D;
42  using YODA::Point3D;
43 
44 
46  map<string, AnalysisObjectPtr> getRefData(const string& papername);
47 
49  string getDatafilePath(const string& papername);
50 
51 
54  template<typename T> struct ReferenceTraits {};
55  template<> struct ReferenceTraits<Counter> { typedef Counter RefT; };
56  template<> struct ReferenceTraits<Scatter1D> { typedef Scatter1D RefT; };
57  template<> struct ReferenceTraits<Histo1D> { typedef Scatter2D RefT; };
58  template<> struct ReferenceTraits<Profile1D> { typedef Scatter2D RefT; };
59  template<> struct ReferenceTraits<Scatter2D> { typedef Scatter2D RefT; };
60  template<> struct ReferenceTraits<Histo2D> { typedef Scatter3D RefT; };
61  template<> struct ReferenceTraits<Profile2D> { typedef Scatter3D RefT; };
62  template<> struct ReferenceTraits<Scatter3D> { typedef Scatter3D RefT; };
63 
64 
68  template <typename T>
69  inline bool aocopy(AnalysisObjectPtr src, AnalysisObjectPtr dst) {
70  shared_ptr<T> tsrc = dynamic_pointer_cast<T>(src);
71  if ( !tsrc ) return false;
72  shared_ptr<T> tdst = dynamic_pointer_cast<T>(dst);
73  if ( !tdst ) return false;
74  *tdst = *tsrc;
75  return true;
76  }
77 
81  template <typename T>
82  inline bool aoadd(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale) {
83  shared_ptr<T> tsrc = dynamic_pointer_cast<T>(src);
84  if ( !tsrc ) return false;
85  shared_ptr<T> tdst = dynamic_pointer_cast<T>(dst);
86  if ( !tdst ) return false;
87  tsrc->scaleW(scale);
88  *tdst += *tsrc;
89  return true;
90  }
91 
94  bool copyao(AnalysisObjectPtr src, AnalysisObjectPtr dst);
95 
99  bool addaos(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale);
100 
103  // inline bool bookingCompatible(CounterPtr, CounterPtr) {
104  // return true;
105  // }
106  template <typename TPtr>
107  inline bool bookingCompatible(TPtr a, TPtr b) {
108  return a->sameBinning(*b);
109  }
110  inline bool bookingCompatible(CounterPtr, CounterPtr) {
111  return true;
112  }
113  inline bool bookingCompatible(Scatter1DPtr a, Scatter1DPtr b) {
114  return a->numPoints() == b->numPoints();
115  }
116  inline bool bookingCompatible(Scatter2DPtr a, Scatter2DPtr b) {
117  return a->numPoints() == b->numPoints();
118  }
119  inline bool bookingCompatible(Scatter3DPtr a, Scatter3DPtr b) {
120  return a->numPoints() == b->numPoints();
121  }
122 
123 }
124 
125 #endif
Definition: ALICE_2010_I880049.cc:13
bool bookingCompatible(TPtr a, TPtr b)
Definition: RivetYODA.hh:107
bool aoadd(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale)
Definition: RivetYODA.hh:82
Definition: RivetYODA.hh:54
bool aocopy(AnalysisObjectPtr src, AnalysisObjectPtr dst)
Definition: RivetYODA.hh:69
string getDatafilePath(const string &papername)
Get the file system path to the reference file for this paper.
Definition: RivetYODA.cc:12
bool addaos(AnalysisObjectPtr dst, AnalysisObjectPtr src, double scale)
Definition: RivetYODA.cc:61
map< string, AnalysisObjectPtr > getRefData(const string &papername)
Function to get a map of all the refdata in a paper with the given papername.
Definition: RivetYODA.cc:23
bool copyao(AnalysisObjectPtr src, AnalysisObjectPtr dst)
Definition: RivetYODA.cc:47