ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
graphics
VP1
RunVP1Light
src
VP1LightRun.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
// Author: Riccardo.Maria.Bianchi@cern.ch, Apr 2017
6
// Update: Apr 2019
7
8
#include "
RunVP1Light/VP1LightRun.h
"
9
10
#include "
VP1Gui/VP1Gui.h
"
11
#include "
VP1UtilsBase/VP1FileUtilities.h
"
12
13
// C++ includes
14
#include <vector>
15
#include <stdexcept>
16
#include <iostream>
17
#include <iomanip>
18
#include <cstdint>
// for uint64_t (unsigned long long)
19
#include <cstdlib>
//For setenv
20
#include <chrono>
21
// #include <ctime>
22
23
using namespace
std
;
24
25
26
class
StoreGateSvc
;
27
class
ISvcLocator;
28
class
IToolSvc;
29
30
VP1LightRun::VP1LightRun
(
const
std::string& name) :
31
m_vp1gui
(0)
32
{
33
std::cout <<
"VP1LightRun - name: "
<< name << std::endl;
34
m_noGui
=
false
;
35
36
// Pick up patched Coin
37
::setenv(
"LCGPATCH_COINMULTISELECT"
,
"1"
,1);
38
}
39
40
//____________________________________________________________________
41
VP1LightRun::~VP1LightRun
()
42
{
43
}
44
45
//____________________________________________________________________
46
bool
VP1LightRun::initialize
()
47
{
48
// msg(MSG::DEBUG) << " in initialize() " << endreq;
49
std::cout <<
" in initialize() "
<< std::endl;
50
51
52
53
54
std::vector<std::string>::iterator it, itE =
m_initialvp1files
.end();
55
for
(it =
m_initialvp1files
.begin();it!=itE;++it) {
56
}
57
58
// dummy objects
59
StoreGateSvc
* evtStore =
nullptr
;
60
StoreGateSvc
* detStore =
nullptr
;
61
ISvcLocator* serviceLocator =
nullptr
;
62
IToolSvc* toolSvc =
nullptr
;
63
64
// create VP1 GUI!
65
m_vp1gui
=
new
VP1Gui
( evtStore, detStore, serviceLocator, toolSvc,
66
m_initialvp1files
,
67
m_initialCruiseMode
,
m_initialCruiseSeconds
,
68
(
m_mfOn
?
m_mfSourceDir
:
""
),
69
(
m_mfOn
?
m_mfLocalCopyDir
:
""
),
70
m_mfLimit
,
71
(
m_mfOn
?
m_mfAvailableLocalInputDirectories
: std::vector<std::string>() ) );
72
73
#ifdef JFBCOMMENTOUT
74
if
(!
m_vp1gui
->argumentsAreValid()) {
75
std::cout <<
"arguments not valid..."
<< std::endl;
76
delete
m_vp1gui
;
77
m_vp1gui
= 0;
78
exit(1);
//Should we do this? It is kind of nice to not have to dig through the logfile to find the failure.
79
return
false
;
// StatusCode::FAILURE;
80
}
81
std::cout <<
"OK! Returning TRUE..."
<< std::endl;
82
#endif
83
return
true
;
//StatusCode::SUCCESS;
84
}
85
86
//____________________________________________________________________
87
bool
VP1LightRun::execute
()
88
{
89
// msg(MSG::DEBUG) <<" in execute() " << endreq;
90
std::cout <<
"VP1LightRun:: in execute() "
<< std::endl;
91
92
// std::cout << "m_vp1gui: " << m_vp1gui << " - m_noGui: " << m_noGui << " - m_vp1gui->hasBeenInitialised(): " << m_vp1gui->hasBeenInitialised() << std::endl;
93
if
(!
m_vp1gui
) {
94
std::cout <<
"no vp1gui. Returning..."
<< std::endl;
95
return
false
;
//StatusCode::FAILURE;
96
}
97
98
if
( !
m_noGui
&& !
m_vp1gui
->hasBeenInitialised() ) {
99
std::cout <<
"Launching VP1...!!"
<< std::endl;
100
m_vp1gui
->init();
//Launch!
101
}
102
103
if
(
true
) {
104
// Get run/event number:
105
const
uint64_t eventNumber = 0;
//evt->event_ID()->event_number();
106
int
runNumber = 0;
//evt->event_ID()->run_number();
107
// msg(MSG::DEBUG) << " Got run number = " << runNumber << ", event number = " << eventNumber << endreq;
108
std::cout <<
" Got run number = "
<< runNumber <<
", event number = "
<< eventNumber << std::endl;
109
110
// Get time stamp:
111
// unsigned time = evt->event_ID()->time_stamp();//0 means no info.
112
std::chrono::time_point<std::chrono::system_clock> now;
113
now = std::chrono::system_clock::now();
114
unsigned
time = std::chrono::duration_cast<std::chrono::seconds>( now.time_since_epoch() ).count();
115
std::cout <<
" Got timestamp = "
<< time << std::endl;
116
117
// Get L1 trigger type
118
unsigned
int
trigType = 0;
//_trig ? _trig->level1TriggerType() : 0;
119
120
if
(
m_noGui
||
m_vp1gui
->executeNewEvent(runNumber,eventNumber,trigType,time)) {
121
return
true
;
//StatusCode::SUCCESS;
122
}
else
{
123
// msg(MSG::INFO) << " Ending application gracefully." << endreq;
124
std::cout <<
" Ending application gracefully."
<< std::endl;
125
return
false
;
//StatusCode::FAILURE;
126
}
127
};
128
129
std::cout <<
"VP1LightRun::execute() returns TRUE..."
<< std::endl;
130
return
true
;
//StatusCode::SUCCESS;
131
132
}
133
134
//____________________________________________________________________
135
bool
VP1LightRun::finalize
()
136
{
137
// msg(MSG::DEBUG) <<" in finalize() " << endreq;
138
std::cout <<
" in finalize() "
<< std::endl;
139
140
if
(!
m_vp1gui
)
141
return
false
;
//StatusCode::FAILURE;
142
143
if
(!
m_noGui
)
144
m_vp1gui
->cleanup();
145
delete
m_vp1gui
;
146
147
return
true
;
// StatusCode::SUCCESS;
148
}
149
150
//____________________________________________________________________
151
void
VP1LightRun::handle
()
152
{
153
std::cout <<
" in handle() "
<< std::endl;
154
155
// msg(MSG::INFO) << "Handling incident '" << inc.type() << "'" << endreq;
156
157
if
(!
m_vp1gui
) {
158
// msg(MSG::INFO) << "Aborting due to null VP1Gui pointer." << endreq;
159
std::cout <<
"Aborting due to null VP1Gui pointer."
<< std::endl;
160
return
;
161
}
162
163
std::vector<std::string> vect;
164
// StringArrayProperty inputCollections("InputCollections", vect);
165
//
166
// sc = propertyServer->getProperty(&inputCollections);
167
// if(!sc.isSuccess()) {
168
// msg(MSG::INFO) << "Could not get InputCollections property" << endreq;
169
// return;
170
// }
171
// else
172
// msg(MSG::DEBUG) << " Got InputCollections property" << endreq;
173
//
174
// std::vector<std::string>::const_iterator iter = inputCollections.value().begin();
175
// std::vector<std::string>::const_iterator last = inputCollections.value().end();
176
// for(; iter != last; iter++) {
177
// if(*iter != fileInc->fileName())
178
// vect.push_back(*iter);
179
// }
180
181
if
(
m_mfOn
) {
182
std::string strNewFileName =
m_vp1gui
->nextRequestedEventFile();
183
184
if
(strNewFileName.empty())
185
return
;
186
if
(!
VP1FileUtilities::fileExistsAndReadable
(strNewFileName)) {
187
// msg(MSG::WARNING) << " File requested by VP1 does not exists or is not readable: "<<strNewFileName<<". Ending." << endreq;
188
cout <<
" File requested by VP1 does not exists or is not readable: "
<<strNewFileName<<
". Ending."
<< endl;
189
return
;
190
}
191
192
vect.push_back(strNewFileName);
193
// msg(MSG::INFO) << " Setting next event file: " << strNewFileName<< endreq;
194
cout <<
" Setting next event file: "
<< strNewFileName<< endl;
195
}
196
else
{
197
std::vector<std::string> strNewFileNames =
m_vp1gui
->userRequestedFiles();
198
for
(
unsigned
i=0; i<strNewFileNames.size(); ++i) {
199
const
std::string& strNewFileName = strNewFileNames[i];
200
if
(strNewFileName.empty())
201
continue
;
202
if
(!
VP1FileUtilities::fileExistsAndReadable
(strNewFileName)) {
203
// msg(MSG::WARNING) << " File requested by VP1 does not exists or is not readable: " << strNewFileName << endreq;
204
cout <<
" File requested by VP1 does not exists or is not readable: "
<< strNewFileName << endl;
205
continue
;
206
}
207
vect.push_back(strNewFileName);
208
// msg(MSG::INFO) << " Setting next event file: " << strNewFileName<< endreq;
209
cout <<
" Setting next event file: "
<< strNewFileName<< endl;
210
}
211
}
212
213
// StringArrayProperty newInputCollections("InputCollections", vect);
214
//
215
// if(propertyServer->setProperty(newInputCollections)!=StatusCode::SUCCESS)
216
// msg(MSG::WARNING) << "Could not set new InputCollections property" << endreq;
217
// else
218
// msg(MSG::DEBUG) << " InputCollections property set" << endreq;
219
}
VP1FileUtilities.h
VP1Gui.h
VP1LightRun.h
StoreGateSvc
The Athena Transient Store API.
Definition
StoreGateSvc.h:120
VP1FileUtilities::fileExistsAndReadable
static bool fileExistsAndReadable(const std::string &)
Definition
VP1FileUtilities.cxx:211
VP1Gui
Definition
VP1Gui.h:28
VP1LightRun::m_initialCruiseSeconds
unsigned m_initialCruiseSeconds
Definition
VP1LightRun.h:45
VP1LightRun::initialize
bool initialize()
Definition
VP1LightRun.cxx:46
VP1LightRun::handle
void handle()
Definition
VP1LightRun.cxx:151
VP1LightRun::m_mfLocalCopyDir
std::string m_mfLocalCopyDir
Definition
VP1LightRun.h:52
VP1LightRun::m_initialvp1files
std::vector< std::string > m_initialvp1files
Definition
VP1LightRun.h:43
VP1LightRun::VP1LightRun
VP1LightRun(const std::string &name)
Definition
VP1LightRun.cxx:30
VP1LightRun::execute
bool execute()
Definition
VP1LightRun.cxx:87
VP1LightRun::m_mfSourceDir
std::string m_mfSourceDir
Definition
VP1LightRun.h:51
VP1LightRun::m_initialCruiseMode
std::string m_initialCruiseMode
Definition
VP1LightRun.h:44
VP1LightRun::m_noGui
bool m_noGui
Definition
VP1LightRun.h:47
VP1LightRun::m_mfAvailableLocalInputDirectories
std::vector< std::string > m_mfAvailableLocalInputDirectories
Definition
VP1LightRun.h:54
VP1LightRun::m_mfOn
bool m_mfOn
Definition
VP1LightRun.h:50
VP1LightRun::finalize
bool finalize()
Definition
VP1LightRun.cxx:135
VP1LightRun::~VP1LightRun
~VP1LightRun()
Definition
VP1LightRun.cxx:41
VP1LightRun::m_mfLimit
int m_mfLimit
Definition
VP1LightRun.h:53
VP1LightRun::m_vp1gui
VP1Gui * m_vp1gui
Definition
VP1LightRun.h:41
std
STL namespace.
Generated on
for ATLAS Offline Software by
1.17.0