ATLAS Offline Software
IPCMat.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRKALGS_IPCMAT_H
6 #define TRKALGS_IPCMAT_H
7 
8 #include <sys/types.h>
9 #include <sys/ipc.h>
10 #include <sys/msg.h>
11 #include <sys/wait.h>
12 #include <errno.h>
13 #include <stdint.h>
14 #include <unistd.h>
15 #include <string>
16 
17 #define M_ALLOCATE 1
18 #define M_INCR_M 2
19 #define M_INCR_V 3
20 #define M_SCALE_M 4
21 #define M_SCALE_V 5
22 #define M_WRITE_M 6
23 #define M_WRITE_V 7
24 #define M_RESIZE 8
25 #define M_REMOVE_MOD 9
26 #define M_REMOVE_PAR 10
27 #define M_SETSCALE 12
28 #define M_SETVERSION 13
29 #define M_END 255
30 
31 class StatusCode;
32 class IMessageSvc;
33 
34 namespace Trk {
35 
37 class IPCMat {
39 
40  public:
41  IPCMat(IMessageSvc *msgSvc);
42  ~IPCMat(){}
43 
44  IPCMat(const IPCMat&) = delete;
45  IPCMat& operator= (const IPCMat&) = delete;
46 
47  StatusCode init(void);
48  StatusCode allocate(int);
49  StatusCode write(const std::string&,bool);
50  StatusCode end();
52  StatusCode incVec(uint32_t,double);
53  StatusCode scaleMat(int);
54  StatusCode scaleVec(int);
55  StatusCode setScale(int);
56  StatusCode setVersion(float,bool);
57  StatusCode reSize(int);
60 
61  void summary();
62 
63  private:
64  IPCMat(); // don't allow constructor without MessageSvc
65 
66  const std::string &name() const;
67 
68  private:
69  IMessageSvc *m_msgSvc{};
70  int m_ncalls{};
71  int m_msgid{};
72  std::string m_name;
73  MsgStream* m_log{};
75 
76  struct MsgBuf {
77  long mtype;
78  MsgBuf(): mtype(255){}
79  union
80  {
81  char fname[100];
83  double scale;
84  float version;
85  struct
86  {
89  double v;
90  } matrix;
91  } data;
93 
94 
95 };
96 
97 } // end namespace Trk
98 
99 #endif // TRKALGS_IPCMAT_H
pid_t
int32_t pid_t
Definition: FPGATrackSimTypes.h:19
Trk::IPCMat::MsgBuf
Definition: IPCMat.h:76
Trk::IPCMat::end
StatusCode end()
Definition: IPCMat.cxx:324
Trk::IPCMat::setVersion
StatusCode setVersion(float, bool)
Definition: IPCMat.cxx:280
Trk::IPCMat::m_msgSvc
IMessageSvc * m_msgSvc
Definition: IPCMat.h:69
Trk::IPCMat::allocate
StatusCode allocate(int)
Definition: IPCMat.cxx:238
Trk::IPCMat::~IPCMat
~IPCMat()
Definition: IPCMat.h:42
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
Trk::IPCMat::removeAlignPar
StatusCode removeAlignPar(int)
Definition: IPCMat.cxx:159
Trk::IPCMat::scaleMat
StatusCode scaleMat(int)
Definition: IPCMat.cxx:83
Trk::IPCMat::MsgBuf::fname
char fname[100]
Definition: IPCMat.h:81
Trk::IPCMat::MsgBuf::scale
double scale
Definition: IPCMat.h:83
Trk::IPCMat::m_log
MsgStream * m_log
Definition: IPCMat.h:73
Trk::IPCMat::init
StatusCode init(void)
Definition: IPCMat.cxx:177
Trk::IPCMat::m_ipcmat_msgp
struct Trk::IPCMat::MsgBuf m_ipcmat_msgp
Trk::IPCMat::IPCMat
IPCMat()
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
Trk::IPCMat::MsgBuf::MsgBuf
MsgBuf()
Definition: IPCMat.h:78
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::IPCMat::MsgBuf::n
uint32_t n
Definition: IPCMat.h:82
Trk::IPCMat::incMat
StatusCode incMat(uint32_t, uint32_t, double)
Definition: IPCMat.cxx:39
Trk::IPCMat::m_ncalls
int m_ncalls
Definition: IPCMat.h:70
Trk::IPCMat::operator=
IPCMat & operator=(const IPCMat &)=delete
Trk::IPCMat::summary
void summary()
Definition: IPCMat.cxx:342
Trk::IPCMat::IPCMat
IPCMat(const IPCMat &)=delete
Trk::IPCMat::MsgBuf::matrix
struct Trk::IPCMat::MsgBuf::@209::@210 matrix
Trk::IPCMat::m_ipcmat_pid
pid_t m_ipcmat_pid
Definition: IPCMat.h:74
Trk::IPCMat::MsgBuf::data
union Trk::IPCMat::MsgBuf::@209 data
Trk::IPCMat::m_name
std::string m_name
Definition: IPCMat.h:72
Trk::IPCMat::setScale
StatusCode setScale(int)
Definition: IPCMat.cxx:260
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
Trk::IPCMat::MsgBuf::mtype
long mtype
Definition: IPCMat.h:77
Trk::IPCMat::removeModule
StatusCode removeModule(int)
Definition: IPCMat.cxx:141
Trk::IPCMat::incVec
StatusCode incVec(uint32_t, double)
Definition: IPCMat.cxx:58
Trk::IPCMat::MsgBuf::v
double v
Definition: IPCMat.h:89
Trk::IPCMat::scaleVec
StatusCode scaleVec(int)
Definition: IPCMat.cxx:103
Trk::IPCMat::MsgBuf::i
uint32_t i
Definition: IPCMat.h:87
Trk::IPCMat
Definition: IPCMat.h:37
Trk::IPCMat::reSize
StatusCode reSize(int)
Definition: IPCMat.cxx:122
Trk::IPCMat::write
StatusCode write(const std::string &, bool)
Definition: IPCMat.cxx:303
Trk::IPCMat::name
const std::string & name() const
Definition: IPCMat.cxx:32
Trk::IPCMat::MsgBuf::j
uint32_t j
Definition: IPCMat.h:88
Trk::IPCMat::m_msgid
int m_msgid
Definition: IPCMat.h:71
Trk::IPCMat::MsgBuf::version
float version
Definition: IPCMat.h:84