ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
graphics
VP1
VP1Systems
VP1RawDataSystems
src
VP1RawDataSystem.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
7
// //
8
// Implementation of class VP1RawDataSystem //
9
// //
10
// Author: Thomas H. Kittelmann (Thomas.Kittelmann@cern.ch) //
11
// Initial version: June 2008 (rewritten January 2009) //
12
// //
14
15
#include "
VP1RawDataSystems/VP1RawDataSystem.h
"
16
#include "
VP1RawDataSystems/VP1RawDataSysController.h
"
17
#include "
VP1RawDataSystems/VP1RawDataColl_PixelRDO.h
"
18
#include "
VP1RawDataSystems/VP1RawDataColl_SCT_RDO.h
"
19
#include "
VP1RawDataSystems/VP1RawDataColl_TRT_RDO.h
"
20
#include "
VP1RawDataSystems/VP1RawDataColl_BCM_RDO.h
"
21
#include "
VP1RawDataSystems/VP1RawDataColl_LUCID.h
"
22
#include "
VP1RawDataSystems/VP1RawDataCommonData.h
"
23
#include "
VP1RawDataSystems/VP1RawDataHandleBase.h
"
24
#include "
VP1Base/VP1Serialise.h
"
25
#include "
VP1Base/VP1Deserialise.h
"
26
#include "
VP1Base/VP1CollectionWidget.h
"
27
#include "
VP1Base/VP1CameraHelper.h
"
28
#include <Inventor/nodes/SoSeparator.h>
29
#include <Inventor/nodes/SoSwitch.h>
30
#include <Inventor/nodes/SoTransform.h>
31
#include <Inventor/SoPath.h>
32
33
//____________________________________________________________________
34
class
VP1RawDataSystem::Imp
{
35
public
:
36
Imp
(
VP1RawDataSystem
*
tc
) :
theclass
(
tc
),
controller
(0),
common
(0) {}
37
VP1RawDataSystem
*
theclass
;
38
VP1RawDataSysController
*
controller
;
39
VP1RawDataCommonData
*
common
;
40
41
template
<
class
T>
42
QList<VP1RawDataCollBase*>
createSpecificCollections
() {
43
QList<VP1RawDataCollBase*> l;
44
for
(
const
QString&
name
: T::availableCollections(
theclass
)) {
45
ensureInitCommonData
();
46
T * col =
new
T(
common
,
name
);
47
col->init();
48
l << col;
49
}
50
return
l;
51
}
52
QList<VP1RawDataCollBase*>
createCollections
() {
53
QList<VP1RawDataCollBase*> l;
54
l << createSpecificCollections<VP1RawDataColl_PixelRDO>();
55
l << createSpecificCollections<VP1RawDataColl_SCT_RDO>();
56
l << createSpecificCollections<VP1RawDataColl_TRT_RDO>();
57
l << createSpecificCollections<VP1RawDataColl_BCM_RDO>();
58
l << createSpecificCollections<VP1RawDataColl_LUCID>();
59
return
l;
60
}
61
62
void
ensureInitCommonData
() {
63
if
(!
common
) {
64
theclass
->ensureBuildController();
65
common
=
new
VP1RawDataCommonData
(
theclass
,
controller
);
66
}
67
}
68
69
};
70
71
//_____________________________________________________________________________________
72
VP1RawDataSystem::VP1RawDataSystem
()
73
:
IVP13DSystemSimple
(
"RawHits"
,
74
"System showing Raw Data (RDO's, BCM hits, ...)"
,
75
"Thomas.Kittelmann@cern.ch"
),
76
m_d
(new
Imp
(this))
77
{
78
}
79
80
//____________________________________________________________________
81
VP1RawDataSystem::~VP1RawDataSystem
()
82
{
83
delete
m_d
;
84
}
85
86
//_____________________________________________________________________________________
87
void
VP1RawDataSystem::systemerase
()
88
{
89
//Save present states and then clear all event data and related gui elements.
90
if
(
m_d
->controller)
91
m_d
->controller->collWidget()->clear();
92
93
if
(
m_d
->common)
94
m_d
->common->clearEventData();
95
}
96
97
//_____________________________________________________________________________________
98
void
VP1RawDataSystem::systemuncreate
()
99
{
100
delete
m_d
->common;
101
m_d
->common = 0;
102
}
103
104
//_____________________________________________________________________________________
105
void
VP1RawDataSystem::buildEventSceneGraph
(
StoreGateSvc
*, SoSeparator *root)
106
{
107
root->addChild(
m_d
->controller->drawOptions());
108
109
//Create collection list based on contents of event store, populate
110
//gui and apply states:
111
m_d
->controller->collWidget()->setCollections(
m_d
->createCollections());
112
113
//Add collections to event scenegraph:
114
for
(
VP1StdCollection
* col :
m_d
->controller->collWidget()->collections<
VP1StdCollection
>())
115
root->addChild(col->collSwitch());
116
}
117
118
//_____________________________________________________________________________________
119
QWidget *
VP1RawDataSystem::buildController
()
120
{
121
m_d
->controller =
new
VP1RawDataSysController
(
this
);
122
return
m_d
->controller;
123
}
124
125
//_____________________________________________________________________________________
126
void
VP1RawDataSystem::userPickedNode
(SoNode*, SoPath * pickedPath) {
127
messageVerbose
(
"userPickedNode"
);
128
129
//Look for separator whose first child is known transform (also pop a few times).
130
m_d
->ensureInitCommonData();
131
VP1RawDataHandleBase
* handle(0);
132
int
i(1);
133
for
(; i < pickedPath->getLength(); ++i) {
134
if
(pickedPath->getNodeFromTail(i)->getTypeId()==SoSeparator::getClassTypeId()) {
135
SoSeparator * sep =
static_cast<
SoSeparator*
>
(pickedPath->getNodeFromTail(i));
136
if
(sep->getNumChildren()>0&&sep->getChild(0)->getTypeId()==SoTransform::getClassTypeId()) {
137
SoTransform * transform =
static_cast<
SoTransform*
>
(sep->getChild(0));
138
handle =
m_d
->common->getHandle(transform);
139
if
(handle)
140
break
;
141
}
142
}
143
}
144
for
(
int
j=0;j<i;++j)
145
pickedPath->pop();
146
147
if
(!handle) {
148
message
(
"WARNING: Unknown node clicked."
);
149
return
;
150
}
151
152
if
(
m_d
->controller->printInfoOnClick()) {
153
message
(handle->clicked(
m_d
->controller->printVerboseInfoOnClick()));
154
}
155
if
(
m_d
->controller->zoomOnClick()) {
156
std::set<SoCamera*> cameras(
getCameraList
());
157
std::set<SoCamera*>::iterator it,itE = cameras.end();
158
for
(it=cameras.begin();it!=itE;++it)
159
VP1CameraHelper::animatedZoomToPath
(*it,handle->coll()->collSep(),pickedPath,2.0,1.0);
160
}
161
162
}
163
164
//_____________________________________________________________________________________
165
QByteArray
VP1RawDataSystem::saveState
()
166
{
167
VP1Serialise
serialise(0
/*version*/
,
this
);
168
ensureBuildController
();
169
170
serialise.save(
IVP13DSystemSimple::saveState
());
171
172
serialise.save(
m_d
->controller->collWidget());
173
serialise.save(
m_d
->controller->saveSettings());
174
175
serialise.disableUnsavedChecks();
//We do the testing in the controller
176
177
return
serialise.result();
178
}
179
180
//_____________________________________________________________________________________
181
void
VP1RawDataSystem::restoreFromState
(QByteArray ba)
182
{
183
VP1Deserialise
state
(ba,
this
);
184
if
(
state
.version()<0||
state
.version()>0) {
185
message
(
"Warning: State data in .vp1 file is in wrong format - ignoring!"
);
186
return
;
187
}
188
ensureBuildController
();
189
IVP13DSystemSimple::restoreFromState
(
state
.restoreByteArray());
190
191
state
.restore(
m_d
->controller->collWidget());
192
m_d
->controller->restoreSettings(
state
.restoreByteArray());
193
194
state
.disableUnrestoredChecks();
//We do the testing in the controller
195
}
tc
static Double_t tc
Definition
LArPhysWaveHECTool.cxx:38
VP1CameraHelper.h
VP1CollectionWidget.h
VP1Deserialise.h
VP1RawDataColl_BCM_RDO.h
VP1RawDataColl_LUCID.h
VP1RawDataColl_PixelRDO.h
VP1RawDataColl_SCT_RDO.h
VP1RawDataColl_TRT_RDO.h
VP1RawDataCommonData.h
VP1RawDataHandleBase.h
VP1RawDataSysController.h
VP1RawDataSystem.h
VP1Serialise.h
IVP13DSystemSimple::IVP13DSystemSimple
IVP13DSystemSimple(const QString &name, const QString &information, const QString &contact_info)
Definition
IVP13DSystemSimple.cxx:50
IVP13DSystemSimple::ensureBuildController
void ensureBuildController()
Definition
IVP13DSystemSimple.cxx:90
IVP13DSystem::getCameraList
CamList getCameraList()
Definition
IVP13DSystem.cxx:395
IVP1System::messageVerbose
void messageVerbose(const QString &) const
Definition
IVP1System.cxx:354
IVP1System::restoreFromState
virtual void restoreFromState(QByteArray)
Definition
IVP1System.cxx:302
IVP1System::name
const QString & name() const
Definition
IVP1System.cxx:50
IVP1System::state
State state() const
Definition
IVP1System.cxx:129
IVP1System::message
void message(const QString &) const
Definition
IVP1System.cxx:336
IVP1System::saveState
virtual QByteArray saveState()
Definition
IVP1System.cxx:294
StoreGateSvc
The Athena Transient Store API.
Definition
StoreGateSvc.h:120
VP1CameraHelper::animatedZoomToPath
static VP1CameraHelper * animatedZoomToPath(SoCamera *camera, SoGroup *sceneroot, SoPath *path, double duration_in_secs=1.0, double clipVolPercent=100.0, double slack=1.0, const SbVec3f &lookat=SbVec3f(999, 999, 999), const SbVec3f &upvec=SbVec3f(999, 999, 999), bool varySpeed=true, bool forceCircular=false)
Definition
VP1CameraHelper.cxx:371
VP1Deserialise
Definition
VP1Deserialise.h:44
VP1RawDataCommonData
Definition
VP1RawDataCommonData.h:31
VP1RawDataHandleBase
Definition
VP1RawDataHandleBase.h:34
VP1RawDataSysController
Definition
VP1RawDataSysController.h:24
VP1RawDataSystem::Imp
Definition
VP1RawDataSystem.cxx:34
VP1RawDataSystem::Imp::createCollections
QList< VP1RawDataCollBase * > createCollections()
Definition
VP1RawDataSystem.cxx:52
VP1RawDataSystem::Imp::controller
VP1RawDataSysController * controller
Definition
VP1RawDataSystem.cxx:38
VP1RawDataSystem::Imp::ensureInitCommonData
void ensureInitCommonData()
Definition
VP1RawDataSystem.cxx:62
VP1RawDataSystem::Imp::Imp
Imp(VP1RawDataSystem *tc)
Definition
VP1RawDataSystem.cxx:36
VP1RawDataSystem::Imp::createSpecificCollections
QList< VP1RawDataCollBase * > createSpecificCollections()
Definition
VP1RawDataSystem.cxx:42
VP1RawDataSystem::Imp::theclass
VP1RawDataSystem * theclass
Definition
VP1RawDataSystem.cxx:37
VP1RawDataSystem::buildController
virtual QWidget * buildController()
Definition
VP1RawDataSystem.cxx:119
VP1RawDataSystem::systemuncreate
void systemuncreate()
Definition
VP1RawDataSystem.cxx:98
VP1RawDataSystem::buildEventSceneGraph
void buildEventSceneGraph(StoreGateSvc *sg, SoSeparator *root)
Definition
VP1RawDataSystem.cxx:105
VP1RawDataSystem::m_d
Imp * m_d
Definition
VP1RawDataSystem.h:40
VP1RawDataSystem::restoreFromState
void restoreFromState(QByteArray)
Definition
VP1RawDataSystem.cxx:181
VP1RawDataSystem::VP1RawDataSystem
VP1RawDataSystem()
Definition
VP1RawDataSystem.cxx:72
VP1RawDataSystem::~VP1RawDataSystem
virtual ~VP1RawDataSystem()
Definition
VP1RawDataSystem.cxx:81
VP1RawDataSystem::saveState
QByteArray saveState()
Definition
VP1RawDataSystem.cxx:165
VP1RawDataSystem::userPickedNode
void userPickedNode(SoNode *pickedNode, SoPath *pickedPath)
Definition
VP1RawDataSystem.cxx:126
VP1RawDataSystem::systemerase
void systemerase()
Definition
VP1RawDataSystem.cxx:87
VP1Serialise
Definition
VP1Serialise.h:45
VP1StdCollection
Definition
VP1StdCollection.h:31
common
Definition
common.py:1
Generated on
for ATLAS Offline Software by
1.17.0