Jpp  19.1.0-rc.1
the software that should make you happy
JTransmitter.hh
Go to the documentation of this file.
1 #ifndef __JDETECTOR__JTRANSMITTER__
2 #define __JDETECTOR__JTRANSMITTER__
3 
4 #include <istream>
5 #include <ostream>
6 #include <iomanip>
7 
8 #include "JLang/JObjectID.hh"
9 #include "JLang/JMultiEquals.hh"
10 #include "JDetector/JLocation.hh"
12 
13 
14 /**
15  * \file
16  *
17  * Data structure for transmitter.
18  * \author mdejong
19  */
20 namespace JDETECTOR {}
21 namespace JPP { using namespace JDETECTOR; }
22 
23 namespace JDETECTOR {
24 
25  using JLANG::JObjectID;
26  using JLANG::JMultiEquals;
28 
29  /**
30  * Type definition of transmitter.
31  *
32  * The position of the transmitter is defined with respect to the position of the top of the T-bar.
33  */
34  struct JTransmitter :
35  public JObjectID,
36  public JLocation,
37  public JPosition3D,
38  public JMultiEquals<JTransmitter, JObjectID>
39  {
40  /**
41  * Default constructor.
42  */
44  JObjectID (),
45  JLocation (),
46  JPosition3D()
47  {}
48 
49 
50  /**
51  * Constructor.
52  *
53  * \param id identifier
54  * \param location location
55  * \param position position
56  */
57  JTransmitter(const int id,
58  const JLocation location,
59  const JPosition3D& position) :
60  JObjectID (id),
61  JLocation (location),
62  JPosition3D(position)
63  {}
64 
65 
66  /**
67  * Read transmitter from input.
68  *
69  * \param in input stream
70  * \param transmitter transmitter
71  * \return input stream
72  */
73  friend inline std::istream& operator>>(std::istream& in, JTransmitter& transmitter)
74  {
75  in >> static_cast<JObjectID&> (transmitter);
76  in >> static_cast<JLocation&> (transmitter);
77  in >> static_cast<JPosition3D&>(transmitter);
78 
79  return in;
80  }
81 
82 
83  /**
84  * Write transmitter to output.
85  *
86  * \param out output stream
87  * \param transmitter transmitter
88  * \return output stream
89  */
90  friend inline std::ostream& operator<<(std::ostream& out, const JTransmitter& transmitter)
91  {
92  out << static_cast<const JObjectID&> (transmitter);
93  out << ' ';
94  out << static_cast<const JLocation&> (transmitter);
95  out << ' ';
96  out << static_cast<const JPosition3D&>(transmitter);
97 
98  return out;
99  }
100  };
101 }
102 
103 #endif
Logical location of module.
Logical location of module.
Definition: JLocation.hh:39
Data structure for position in three dimensions.
Definition: JPosition3D.hh:38
Auxiliary class for object identification.
Definition: JObjectID.hh:25
file Auxiliary data structures and methods for detector calibration.
Definition: JAnchor.hh:12
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Type definition of transmitter.
Definition: JTransmitter.hh:39
JTransmitter(const int id, const JLocation location, const JPosition3D &position)
Constructor.
Definition: JTransmitter.hh:57
friend std::istream & operator>>(std::istream &in, JTransmitter &transmitter)
Read transmitter from input.
Definition: JTransmitter.hh:73
friend std::ostream & operator<<(std::ostream &out, const JTransmitter &transmitter)
Write transmitter to output.
Definition: JTransmitter.hh:90
JTransmitter()
Default constructor.
Definition: JTransmitter.hh:43
Template definition of auxiliary base class for data structures composed of multiple base classes wit...
Definition: JMultiEquals.hh:32