All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Class_dict.cpp
Go to the documentation of this file.
1 #include <iostream>
2 #include <string>
3 
4 #define private public
5 #include "../Event.h"
6 #include "../MyTrack.h"
7 #include "../MyVertex.h"
8 #undef private
9 
10 #include "GaudiKernel/DataObject.h"
11 
12 class C_dict {
13 public: C_dict();
14 };
15 
16 void* Event_run( void* o ) {
17  static long r;
18  r = ((Event*)o)->run();
19  return &r;
20 }
21 void Event_setRun( void* o, std::vector<void*> argv) {
22  ((Event*)o)->setRun( *(long*)(argv[0]) );
23  return;
24 }
25 
26 void* MyTrack_event( void* o ) {
27  return const_cast<Event*>(((MyTrack*)o)->event());
28 }
29 void MyTrack_setEvent( void* o, std::vector<void*> argv) {
30  ((MyTrack*)o)->setEvent( (Event*)(argv[0]) );
31  return;
32 }
33 
34 static C_dict instance;
35 
37 {
38  MetaClass* meta1 = new MetaClass("Event", "Event header");
39  meta1->addField("event", "long", "Event Number", OffsetOf(Event,m_event));
40  meta1->addField("run", "long", "Run Number", OffsetOf(Event,m_run));
41  meta1->addField("time", "Time", "Event creation Time", OffsetOf(Event,m_time));
42  meta1->addMethod("getRun", "Get run number", "long", Event_run );
43  std::vector<std::string> argnames1;
44  argnames1.push_back("long");
45  meta1->addMethod("setRun", "Set run number", argnames1, Event_setRun );
46 
47  MetaClass* meta2 = new MetaClass("Time", "Absolute time (64-bit) in ns");
48  meta2->addField("time", "longlong", "Time",OffsetOf(Gaudi::Time,m_time));
49 
50  MetaClass* meta3 = new MetaClass("MyTrack", "Track test object");
51  meta3->addField("px", "float", "Momentum in x direction", OffsetOf(MyTrack,m_px));
52  meta3->addField("py", "float", "Momentum in y direction", OffsetOf(MyTrack,m_py));
53  meta3->addField("pz", "float", "Momentum in z direction", OffsetOf(MyTrack,m_pz));
54  meta3->addField("event", "SmartRef<Event>", "Link to event root",OffsetOf(MyTrack,m_event));
55  meta3->addField("decay", "SmartRef<MyVertex>", "Link to decay Vertex", OffsetOf(MyTrack,m_decay));
56  meta3->addMethod("getEvent", "Get Event pointer", "Event*", MyTrack_event );
57  std::vector<std::string> argnames3;
58  argnames3.push_back("Event*");
59  meta3->addMethod("setEvent", "Set Event", argnames3, MyTrack_setEvent );
60 
61  MetaClass* meta4 = new MetaClass("MyVertex", "Vertex test object");
62  meta4->addField("x", "double", "Position in x", OffsetOf(MyVertex,m_x));
63  meta4->addField("y", "double", "Position in y", OffsetOf(MyVertex,m_y));
64  meta4->addField("z", "double", "Position in z", OffsetOf(MyVertex,m_z));
65  meta4->addField("mother", "SmartRef<MyTrack>", "Link to mother Track", OffsetOf(MyVertex,m_mother));
66  meta4->addField("daughters", "SmartRefVector<MyTrack>", "Link to daughter Tracks", OffsetOf(MyVertex,m_daughters));
67 }
68 
Essential information of the event used in examples It can be identified by "/Event".
Definition: Event.h:23
void * Event_run(void *o)
Definition: Class_dict.cpp:16
list argv
Definition: gaudirun.py:227
Based on seal::Time.
Definition: Time.h:213
Simple class that represents a vertex for testing purposes.
Definition: MyVertex.h:23
void * MyTrack_event(void *o)
Definition: Class_dict.cpp:26
void Event_setRun(void *o, std::vector< void * > argv)
Definition: Class_dict.cpp:21
void MyTrack_setEvent(void *o, std::vector< void * > argv)
Definition: Class_dict.cpp:29