ATLAS Offline Software
Loading...
Searching...
No Matches
VP1Trig::VP1TriggerProcessor Class Reference

#include <VP1TriggerProcessor.h>

Inheritance diagram for VP1Trig::VP1TriggerProcessor:
Collaboration diagram for VP1Trig::VP1TriggerProcessor:

Public Member Functions

 VP1TriggerProcessor ()
virtual ~VP1TriggerProcessor ()
void initialize ()
void loadData (StoreGateSvc *m_storeGate)
void clearSystem ()
bool getInitStatus ()
bool getDaqStatus ()
char getDataFormat ()
QString getTrigLvl ()
int getMuonsInEvt ()
void setDataFormat (char ctnid)
void setTrigLvl (const QString &triglvl)
QList< QTreeWidgetItem * > getQTrigData (const QString &)
void log_info (const QString &msg)
void log_warning (const QString &msg)
void log_verbose (const QString &msg)
void log_error (const QString &msg)
void log_fatal (const QString &msg)
void log_debug (const QString &msg)
std::string prefix (std::string str)
QString qstr (char c)
QString qstr (const std::string &str)

Static Public Member Functions

static const QString pfx1 ()
static const QString pfx2 ()
static const QString pfx3 ()

Private Member Functions

void processData ()

Private Attributes

std::unique_ptr< VP1TriggerSystemm_triggersystem
bool m_initStatus
bool m_daqStatus
QString m_trigLvl
char m_dataFormat
QTreeWidgetItem * m_L1_QData
QTreeWidgetItem * m_L2_QData
QTreeWidgetItem * m_EF_QData
QList< QTreeWidgetItem * > m_trigLvlDataSet
std::string m_name
int m_lvl

Detailed Description

Definition at line 32 of file VP1TriggerProcessor.h.

Constructor & Destructor Documentation

◆ VP1TriggerProcessor()

VP1Trig::VP1TriggerProcessor::VP1TriggerProcessor ( )

◆ ~VP1TriggerProcessor()

VP1Trig::VP1TriggerProcessor::~VP1TriggerProcessor ( )
virtual

Definition at line 48 of file VP1TriggerProcessor.cxx.

49{
50 log_verbose("destructor");
51}

Member Function Documentation

◆ clearSystem()

void VP1Trig::VP1TriggerProcessor::clearSystem ( )

Definition at line 297 of file VP1TriggerProcessor.cxx.

298{
299 log_info("clearSystem()");
300
301 m_triggersystem->clearTriggerHandles();
302
303 m_trigLvlDataSet.clear();
304
305 m_L1_QData->takeChildren();
306 m_L2_QData->takeChildren();
307 m_EF_QData->takeChildren();
308}//END: clearSystem
std::unique_ptr< VP1TriggerSystem > m_triggersystem
QList< QTreeWidgetItem * > m_trigLvlDataSet

◆ getDaqStatus()

bool VP1Trig::VP1TriggerProcessor::getDaqStatus ( )

Definition at line 327 of file VP1TriggerProcessor.cxx.

328{
329 log_verbose("User request: return daq status");
330 return m_daqStatus;
331}

◆ getDataFormat()

char VP1Trig::VP1TriggerProcessor::getDataFormat ( )

Definition at line 336 of file VP1TriggerProcessor.cxx.

337{
338 log_verbose("User request: return data container export type");
339 return m_dataFormat;
340}

◆ getInitStatus()

bool VP1Trig::VP1TriggerProcessor::getInitStatus ( )

Definition at line 318 of file VP1TriggerProcessor.cxx.

319{
320 log_verbose("User request: return status of initalization");
321 return m_initStatus;
322}

◆ getMuonsInEvt()

int VP1Trig::VP1TriggerProcessor::getMuonsInEvt ( )

Definition at line 354 of file VP1TriggerProcessor.cxx.

355{
356 log_verbose("User request: return number of muons in event");
357 return muonsInEvt;
358}
int muonsInEvt

◆ getQTrigData()

QList< QTreeWidgetItem * > VP1Trig::VP1TriggerProcessor::getQTrigData ( const QString & triglvl)

Definition at line 363 of file VP1TriggerProcessor.cxx.

364{
365 log_verbose("User request: return collected trigger data in QTree container format");
366 QList<QTreeWidgetItem *> customDataSet;
367
368 if(m_daqStatus) {
369 if(triglvl.compare("ALL", Qt::CaseInsensitive)==0 || triglvl.compare("L1", Qt::CaseInsensitive)==0 || triglvl.compare("L2", Qt::CaseInsensitive)==0 || triglvl.compare("EF", Qt::CaseInsensitive)==0) {
370 if(m_trigLvl.compare(triglvl, Qt::CaseInsensitive)==0)
371 return m_trigLvlDataSet;
372 else if(m_trigLvl.compare("ALL", Qt::CaseInsensitive)==0) {
373 if(triglvl.compare("ALL", Qt::CaseInsensitive)==0)
374 return m_trigLvlDataSet;
375 else if(triglvl.compare("L1", Qt::CaseInsensitive)==0) {
376 customDataSet << m_L1_QData;
377 return customDataSet;
378 }
379 else if(triglvl.compare("L2", Qt::CaseInsensitive)==0) {
380 customDataSet << m_L2_QData;
381 return customDataSet;
382 }
383 else if(triglvl.compare("EF", Qt::CaseInsensitive)==0) {
384 customDataSet << m_EF_QData;
385 return customDataSet;
386 }
387 }//all available
388 }//available trigger levels
389 }//daq status ok
390 else {
391 log_fatal("User data request: DAQ not available!");
392 return customDataSet;
393 }
394
395 log_error("User requested ["+triglvl+"] trigger data which is not available! Only ["+m_trigLvl+"] available.");
396 return m_trigLvlDataSet;
397}

◆ getTrigLvl()

QString VP1Trig::VP1TriggerProcessor::getTrigLvl ( )

Definition at line 345 of file VP1TriggerProcessor.cxx.

346{
347 log_verbose("User request: return trigger level flag to process");
348 return m_trigLvl;
349}

◆ initialize()

void VP1Trig::VP1TriggerProcessor::initialize ( )

Definition at line 56 of file VP1TriggerProcessor.cxx.

57{
58 log_info("Initializing VP1Trig::VP1TriggerSystem");
59 m_triggersystem = std::make_unique<VP1TriggerSystem>();
60 m_initStatus=true;
61}

◆ loadData()

void VP1Trig::VP1TriggerProcessor::loadData ( StoreGateSvc * m_storeGate)

Definition at line 66 of file VP1TriggerProcessor.cxx.

67{
68 QString method="loadData(): ";
69 log_info("Loading trigger data via VP1TriggerSystem");
70
71 //--- Note: Filling trigger handle (L1, L2, EF) objects via the VP1TriggerSystem. ---
72 if(m_initStatus) {
73 m_daqStatus = m_triggersystem->loadTriggerHandles(storeGate, m_trigLvl);
74 if(m_daqStatus)
76 else
77 log_fatal(method+"system initialized but retrieving data failed!");
78 }
79 else
80 log_error(method+"trigger system not initialized!");
81}

◆ log_debug()

void VP1Trig::Logger::log_debug ( const QString & msg)
inherited

Definition at line 54 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

54 {
55 std::cout<<prefix(m_name)<<"DEBUG "<<msg.toStdString()<<std::endl;
56}
MsgStream & msg
Definition testRead.cxx:32

◆ log_error()

void VP1Trig::Logger::log_error ( const QString & msg)
inherited

Definition at line 46 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

46 {
47 std::cout<<prefix(m_name)<<"ERROR "<<msg.toStdString()<<std::endl;
48}

◆ log_fatal()

void VP1Trig::Logger::log_fatal ( const QString & msg)
inherited

Definition at line 49 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

49 {
50 std::cout<<prefix(m_name)<<"FATAL "<<msg.toStdString()<<std::endl;
51}

◆ log_info()

void VP1Trig::Logger::log_info ( const QString & msg)
inherited

Definition at line 32 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

32 {
33 if(m_lvl>=1)
34 std::cout<<prefix(m_name)<<"INFO "<<msg.toStdString()<<std::endl;
35}

◆ log_verbose()

void VP1Trig::Logger::log_verbose ( const QString & msg)
inherited

Definition at line 40 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

40 {
41 if(m_lvl>=3)
42 std::cout<<prefix(m_name)<<"VERBOSE "<<msg.toStdString()<<std::endl;
43}

◆ log_warning()

void VP1Trig::Logger::log_warning ( const QString & msg)
inherited

Definition at line 36 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

36 {
37 if(m_lvl>=2)
38 std::cout<<prefix(m_name)<<"WARNING "<<msg.toStdString()<<std::endl;
39}

◆ pfx1()

const QString VP1Trig::Logger::pfx1 ( )
inlinestaticinherited

Definition at line 51 of file graphics/VP1/VP1Systems/VP1TriggerSystems/VP1TriggerSystems/Logger.h.

51{return " ";}

◆ pfx2()

const QString VP1Trig::Logger::pfx2 ( )
inlinestaticinherited

Definition at line 52 of file graphics/VP1/VP1Systems/VP1TriggerSystems/VP1TriggerSystems/Logger.h.

52{return " ";}

◆ pfx3()

const QString VP1Trig::Logger::pfx3 ( )
inlinestaticinherited

Definition at line 53 of file graphics/VP1/VP1Systems/VP1TriggerSystems/VP1TriggerSystems/Logger.h.

53{return " ";}

◆ prefix()

std::string VP1Trig::Logger::prefix ( std::string str)
inherited

Definition at line 61 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

62{
63 //15 character prefix standard
64 if(int(str.size())>15) {
65 str.resize(15);
66 str=str+std::string("... ");
67 return str;
68 }
69 else if(int(str.size())==15) {
70 str=str+std::string(" ");
71 return str;
72 }
73 int q=21-int(str.size());
74 for(int i=0;i<q;++i)
75 str=str+std::string(" ");
76 return str;
77}

◆ processData()

void VP1Trig::VP1TriggerProcessor::processData ( )
private

Definition at line 86 of file VP1TriggerProcessor.cxx.

87{
88 QString method="processData(): ";
89 log_info("Processing trigger data: start");
90
91 //Status flags
92 bool l1status=false,l2status=false,efstatus=false;
93
94 //L2 and EF triggers from L1 handle processor ------------->
95 QTreeWidgetItem * L1_triggers, * L2_triggers, * EF_triggers;
96 L1_triggers = new QTreeWidgetItem(0);
97 L2_triggers = new QTreeWidgetItem(0);
98 EF_triggers = new QTreeWidgetItem(0);
99 L1_triggers->setText(0, QString("Triggers"));
100 L2_triggers->setText(0, QString("Triggers"));
101 EF_triggers->setText(0, QString("Triggers"));
102 //---------------------------------------------------------<
103
104 //--- Note: Handles for L1, L2, EF contain trigger data previously stored in each ---
105 //--- object's containers by the VP1TriggerSystem via loadData() and are ---
106 //--- being modified in each "Fill" section below by calling each handles' ---
107 //--- processing methods, which fill m_trigData with processed data. ---
108
109 //L1 PROCESSING ------------------------------------------------------------------------------>
110 if(m_trigLvl.compare("ALL", Qt::CaseInsensitive)==0 || m_trigLvl.compare("L1", Qt::CaseInsensitive)==0) {
111 std::vector<VP1Trig::VP1TriggerHandleL1> handleL1 = m_triggersystem->getHandleL1();
112 std::vector<VP1Trig::VP1TriggerHandleL1>::iterator l1it;
113
114 if(handleL1.size()>0) {
115 log_info(pfx1()+"processing L1 data: start");
116
117 if(m_dataFormat=='q') {
118 log_verbose("processing sector for QTree format");
119 //************************* INIT *************************//
120 m_L1_QData = new QTreeWidgetItem(0);
121 m_L1_QData->setText(0, QString("L1 Data"));
122
123 //************************* FILL *************************//
124 for(l1it=handleL1.begin(); l1it!=handleL1.end(); ++l1it) {
125 if(l1it->processQTrigItem()) {
126 QString trigID = l1it->m_trigID;
127 if(trigID.contains("L2_"))
128 L2_triggers->addChild(l1it->m_qtrigitem);
129 else if(trigID.contains("EF_"))
130 EF_triggers->addChild(l1it->m_qtrigitem);
131 else
132 L1_triggers->addChild(l1it->m_qtrigitem);
133 }
134 }
135 m_L1_QData->addChild(L1_triggers);
136
137 //************************* DIST *************************//
139
140 //General processing status update
141 if(int(m_L1_QData->childCount())>0)
142 l1status=true;
143 else
144 log_warning("L1 QTree has no children");
145
146 }//END: [q] processing
147 else if(m_dataFormat=='v') {
148 log_verbose("processing sector for vector format");
149 //************************* INIT *************************//
150 int p_success=0, p_failed=0;
151
152 //************************* FILL *************************//
153 for(l1it=handleL1.begin(); l1it!=handleL1.end(); ++l1it) {
154 if(l1it->processVTrigItem())
155 ++p_success;
156 else
157 ++p_failed;
158 }
159
160 //General processing status update
161 if(p_success>0)
162 l1status=true;
163 if(p_failed>0)
164 log_warning("L1 data item(s) failed processing: "+VP1String::str(p_failed));
165 }//END: [v] processing
166 else
167 log_error(method+"data container format invalid!");
168 log_info(pfx1()+"processing L1 data: complete");
169 }//END: size>0
170 else
171 log_warning(method+"L1 data requested but not available");
172 }//END: L1
173 //--------------------------------------------------------------------------------------------<
174
175
176 //L2 PROCESSING ------------------------------------------------------------------------------>
177 if(m_trigLvl.compare("ALL", Qt::CaseInsensitive)==0 || m_trigLvl.compare("L2", Qt::CaseInsensitive)==0) {
178 std::vector<VP1Trig::VP1TriggerHandleL2> handleL2 = m_triggersystem->getHandleL2();
179 std::vector<VP1Trig::VP1TriggerHandleL2>::iterator l2it = handleL2.begin();
180
181 if(handleL2.size()>0) {
182 log_info(pfx1()+"processing L2 data: start");
183 if(m_dataFormat=='q') {
184 log_verbose("processing sector for QTree format");
185 //************************* FILL *************************//
186 if(l2it->processQTrigItem())
187 m_L2_QData = l2it->m_qtrigData;
188 else
189 m_L2_QData = new QTreeWidgetItem(0);
190 m_L2_QData->setText(0, QString("L2 Data"));
191
192 if(int(L2_triggers->childCount())>0)
193 m_L2_QData->insertChild(0,L2_triggers); //from L1 processor
194
195 //************************* DIST *************************//
197
198 //General processing status update
199 if(int(m_L2_QData->childCount())>0)
200 l2status=true;
201 else
202 log_warning("L2 QTree has no children");
203 }//END: [q] processing
204 else if(m_dataFormat=='v') {
205 log_verbose("processing sector for vector format");
206 //************************* FILL *************************//
207 l2it->processVTrigItem();
208
209 //General processing status update
210 l2status=true;
211 }//END: [v] processing
212 else
213 log_error(method+"data container format invalid!");
214 log_info(pfx1()+"processing L2 data: complete");
215 }//END: size>0
216 else
217 log_warning(method+"L2 data requested but not available");
218 }//END: L2
219 //--------------------------------------------------------------------------------------------<
220
221
222 //EF PROCESSING ------------------------------------------------------------------------------>
223 if(m_trigLvl.compare("ALL", Qt::CaseInsensitive)==0 || m_trigLvl.compare("EF", Qt::CaseInsensitive)==0) {
224 std::vector<VP1Trig::VP1TriggerHandleEF> handleEF = m_triggersystem->getHandleEF();
225 std::vector<VP1Trig::VP1TriggerHandleEF>::iterator efit;
226
227 //Muons in event
228 muonsInEvt = int(handleEF.size());
229
230 if(handleEF.size()>0) {
231 log_info(pfx1()+"processing EF data: start");
232 if(m_dataFormat=='q') {
233 log_verbose("processing sector for QTree format");
234 //************************* INIT *************************//
235 m_EF_QData = new QTreeWidgetItem(0);
236 m_EF_QData->setText(0, QString("EF Data"));
237
238 //************************* FILL *************************//
239 if(int(EF_triggers->childCount())>0)
240 m_EF_QData->addChild(EF_triggers); //from L1 processor
241 for(efit=handleEF.begin(); efit!=handleEF.end(); ++efit) {
242 if(efit->processQTrigItem())
243 m_EF_QData->addChild(efit->m_qtrigData);
244 }
245
246 //************************* DIST *************************//
248
249 //General processing status update
250 if(int(m_EF_QData->childCount())>0)
251 efstatus=true;
252 else
253 log_warning("EF QTree has no children");
254 }//END: [q] processing
255 else if(m_dataFormat=='v') {
256 log_verbose("processing sector for vector format");
257 //************************* INIT *************************//
258 int p_success=0, p_failed=0;
259
260 //************************* FILL *************************//
261 for(efit=handleEF.begin(); efit!=handleEF.end(); ++efit) {
262 if(efit->processVTrigItem())
263 ++p_success;
264 else
265 ++p_failed;
266 }
267
268 //General processing status update
269 if(p_success>0)
270 efstatus=true;
271 if(p_failed>0)
272 log_warning("EF data item(s) failed processing: "+VP1String::str(p_failed));
273 }//END: [v] processing
274 else
275 log_error(method+"data container format invalid!");
276 log_info(pfx1()+"processing EF data: complete");
277 }//END: size>0
278 else
279 log_warning(method+"EF data requested but not available");
280 }//END: EF
281 //--------------------------------------------------------------------------------------------<
282
283 //Update DAQ Status flag ~~~~~~~~~~~~~~~
284 if(m_daqStatus) {
285 if(l1status || l2status || efstatus)
286 m_daqStatus=true;
287 else
288 m_daqStatus=false;
289 }//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
290
291 log_info("Processing trigger data: complete");
292}//END: processData
static QString str(const QString &s)
Definition VP1String.h:49

◆ qstr() [1/2]

QString VP1Trig::Logger::qstr ( char c)
inherited

Definition at line 82 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

83{
84 std::stringstream ss; ss<<c;
85 std::string cStr=ss.str();
86 ss.str(std::string()); ss.clear();
87 return QString::fromStdString(cStr);
88}
static Double_t ss

◆ qstr() [2/2]

QString VP1Trig::Logger::qstr ( const std::string & str)
inherited

Definition at line 93 of file graphics/VP1/VP1Systems/VP1TriggerSystems/src/Logger.cxx.

94{
95 return QString::fromStdString(str);
96}

◆ setDataFormat()

void VP1Trig::VP1TriggerProcessor::setDataFormat ( char ctnid)

Definition at line 420 of file VP1TriggerProcessor.cxx.

421{
422 if(ctnid=='v' || ctnid=='q' || ctnid=='a') { //[v]ector, [q]tree, [a]ll available
423 log_verbose("User request: set data container format to "+qstr(ctnid));
424 m_dataFormat = ctnid;
425 }
426 else
427 log_error("setDataFormat(): ["+qstr(ctnid)+"] as data container format not available!");
428}

◆ setTrigLvl()

void VP1Trig::VP1TriggerProcessor::setTrigLvl ( const QString & triglvl)

Definition at line 407 of file VP1TriggerProcessor.cxx.

408{
409 if(triglvl.compare("L1", Qt::CaseInsensitive)==0 || triglvl.compare("L2", Qt::CaseInsensitive)==0 || triglvl.compare("EF", Qt::CaseInsensitive)==0 || triglvl.compare("ALL", Qt::CaseInsensitive)==0) {
410 log_verbose("User request: set trigger level flag to "+triglvl);
411 m_trigLvl = triglvl;
412 }
413 else
414 log_error("setTrigLvl(): ["+triglvl+"] as trigger level flag not available!");
415}

Member Data Documentation

◆ m_daqStatus

bool VP1Trig::VP1TriggerProcessor::m_daqStatus
private

Definition at line 65 of file VP1TriggerProcessor.h.

◆ m_dataFormat

char VP1Trig::VP1TriggerProcessor::m_dataFormat
private

Definition at line 67 of file VP1TriggerProcessor.h.

◆ m_EF_QData

QTreeWidgetItem * VP1Trig::VP1TriggerProcessor::m_EF_QData
private

Definition at line 74 of file VP1TriggerProcessor.h.

◆ m_initStatus

bool VP1Trig::VP1TriggerProcessor::m_initStatus
private

Definition at line 64 of file VP1TriggerProcessor.h.

◆ m_L1_QData

QTreeWidgetItem* VP1Trig::VP1TriggerProcessor::m_L1_QData
private

Definition at line 74 of file VP1TriggerProcessor.h.

◆ m_L2_QData

QTreeWidgetItem * VP1Trig::VP1TriggerProcessor::m_L2_QData
private

Definition at line 74 of file VP1TriggerProcessor.h.

◆ m_lvl

int VP1Trig::Logger::m_lvl
privateinherited

◆ m_name

std::string VP1Trig::Logger::m_name
privateinherited

◆ m_triggersystem

std::unique_ptr<VP1TriggerSystem> VP1Trig::VP1TriggerProcessor::m_triggersystem
private

Definition at line 61 of file VP1TriggerProcessor.h.

◆ m_trigLvl

QString VP1Trig::VP1TriggerProcessor::m_trigLvl
private

Definition at line 66 of file VP1TriggerProcessor.h.

◆ m_trigLvlDataSet

QList<QTreeWidgetItem *> VP1Trig::VP1TriggerProcessor::m_trigLvlDataSet
private

Definition at line 75 of file VP1TriggerProcessor.h.


The documentation for this class was generated from the following files: