CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DualHistoAxis.cc
Go to the documentation of this file.
2 
3 #include "Alignment/Geners/interface/binaryIO.hh"
4 #include "Alignment/Geners/interface/IOException.hh"
5 #include "Alignment/Geners/interface/CPP11_auto_ptr.hh"
6 
7 namespace npstat {
8  bool DualHistoAxis::write(std::ostream& of) const
9  {
10  unsigned char c = uniform_;
11  gs::write_pod(of, c);
12  if (uniform_)
13  return !of.fail() && u_.classId().write(of) && u_.write(of);
14  else
15  return !of.fail() && a_.classId().write(of) && a_.write(of);
16  }
17 
18  DualHistoAxis* DualHistoAxis::read(const gs::ClassId& id, std::istream& in)
19  {
20  static const gs::ClassId current(gs::ClassId::makeId<DualHistoAxis>());
21  current.ensureSameId(id);
22 
23  unsigned char c;
24  gs::read_pod(in, &c);
25  gs::ClassId clid(in, 1);
26  if (in.fail())
27  throw gs::IOReadFailure("In npstat::DualHistoAxis::read: "
28  "input stream failure");
29  if (c)
30  {
31  CPP11_auto_ptr<HistoAxis> axis(HistoAxis::read(clid, in));
32  return new DualHistoAxis(*axis);
33  }
34  else
35  {
36  CPP11_auto_ptr<NUHistoAxis> axis(NUHistoAxis::read(clid, in));
37  return new DualHistoAxis(*axis);
38  }
39  }
40 }
bool write(std::ostream &of) const
Definition: NUHistoAxis.cc:162
bool write(std::ostream &of) const
Definition: DualHistoAxis.cc:8
bool write(std::ostream &of) const
Definition: HistoAxis.cc:143
gs::ClassId classId() const
Definition: HistoAxis.h:122
static HistoAxis * read(const gs::ClassId &id, std::istream &in)
Definition: HistoAxis.cc:152
static DualHistoAxis * read(const gs::ClassId &id, std::istream &in)
gs::ClassId classId() const
Definition: NUHistoAxis.h:101
static NUHistoAxis * read(const gs::ClassId &id, std::istream &in)
Definition: NUHistoAxis.cc:171
Represent both equidistant and non-uniform histogram axis binning.