ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtPadReference.h
Go to the documentation of this file.
1 #ifndef _ATPADREFERENCE_H
2 #define _ATPADREFERENCE_H
3 
4 #include "AtPadBase.h"
5 
6 #include <Rtypes.h>
7 
8 #include <cstddef>
9 #include <functional> // IWYU pragma: keep
10 #include <iosfwd>
11 #include <memory>
12 
13 class TBuffer;
14 class TClass;
15 class TMemberInspector;
16 
17 // The definition of this struct, and the operator overloads have to
18 // be before AtMap where an unordered_map using this as a key is
19 // instatiated.
21  Int_t cobo;
22  Int_t asad;
23  Int_t aget;
24  Int_t ch;
25 };
26 bool operator<(const AtPadReference &l, const AtPadReference &r);
27 bool operator==(const AtPadReference &l, const AtPadReference &r);
28 std::ostream &operator<<(std::ostream &os, const AtPadReference &t);
29 
30 namespace std {
31 template <>
32 struct hash<AtPadReference> {
33  inline size_t operator()(const AtPadReference &x) const
34  {
35  return x.ch + x.aget * 100 + x.asad * 10000 + x.cobo * 1000000;
36  }
37 };
38 } // namespace std
39 
41 private:
42  AtPadReference fRef;
43 
44 public:
45  AtElectronicReference(AtPadReference ref = {}) : fRef(ref) {}
46  virtual std::unique_ptr<AtPadBase> Clone() const override { return std::make_unique<AtElectronicReference>(*this); }
47  AtPadReference GetReference() { return fRef; }
49 };
50 #endif //#ifndef _PADREFERENCE_H
AtElectronicReference::AtElectronicReference
AtElectronicReference(AtPadReference ref={})
Definition: AtPadReference.h:45
AtPadReference::aget
Int_t aget
Definition: AtPadReference.h:23
operator==
bool operator==(const AtPadReference &l, const AtPadReference &r)
Definition: AtPadReference.cxx:16
AtPadReference::cobo
Int_t cobo
Definition: AtPadReference.h:21
operator<<
std::ostream & operator<<(std::ostream &os, const AtPadReference &t)
Definition: AtPadReference.cxx:5
AtElectronicReference::Clone
virtual std::unique_ptr< AtPadBase > Clone() const override
Definition: AtPadReference.h:46
AtElectronicReference::ClassDefOverride
ClassDefOverride(AtElectronicReference, 1)
AtPadBase
Base class for AtPad composition pattern.
Definition: AtPadBase.h:37
AtElectronicReference::GetReference
AtPadReference GetReference()
Definition: AtPadReference.h:47
AtPadReference::asad
Int_t asad
Definition: AtPadReference.h:22
operator<
bool operator<(const AtPadReference &l, const AtPadReference &r)
Definition: AtPadReference.cxx:11
AtElectronicReference
Definition: AtPadReference.h:40
AtPadReference::ch
Int_t ch
Definition: AtPadReference.h:24
AtPadBase.h
AtPadReference
Definition: AtPadReference.h:20
std::hash< AtPadReference >::operator()
size_t operator()(const AtPadReference &x) const
Definition: AtPadReference.h:33