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

#include <VP1TriggerHandleL1.h>

Inheritance diagram for VP1Trig::VP1TriggerHandleL1:
Collaboration diagram for VP1Trig::VP1TriggerHandleL1:

Public Member Functions

 VP1TriggerHandleL1 (Trig::FeatureContainer containerL1, QString trigID)
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 (std::string str)

Static Public Member Functions

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

Private Member Functions

bool processQTrigItem ()
bool processVTrigItem ()
bool processitem ()
bool processFeature (int processId, QString roiId, QString feature)

Private Attributes

Trig::FeatureContainer m_containerL1
QString m_trigID
QTreeWidgetItem * m_qtrigitem
std::vector< std::vector< QString > > m_trigData
bool m_qtrigstatus
bool m_vtrigstatus
std::string m_name
int m_lvl

Friends

class VP1TriggerProcessor

Detailed Description

Definition at line 45 of file VP1TriggerHandleL1.h.

Constructor & Destructor Documentation

◆ VP1TriggerHandleL1()

VP1Trig::VP1TriggerHandleL1::VP1TriggerHandleL1 ( Trig::FeatureContainer containerL1,
QString trigID )
inline

Definition at line 48 of file VP1TriggerHandleL1.h.

49 : Logger("TriggerHandleL1"),
50 m_containerL1(containerL1),
51 m_trigID(trigID),
52 m_qtrigitem(0),
53 m_trigData(0),
54 m_qtrigstatus(false),
55 m_vtrigstatus(false) {};
std::vector< std::vector< QString > > m_trigData
Trig::FeatureContainer m_containerL1

Member Function Documentation

◆ 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}

◆ processFeature()

bool VP1Trig::VP1TriggerHandleL1::processFeature ( int processId,
QString roiId,
QString feature )
private

Definition at line 43 of file VP1TriggerHandleL1.cxx.

44{
45 feature = feature.simplified();
46 QStringList featureSeg = feature.split(QRegExp("\\s+"));
47
48 if(int(featureSeg.size())==22) { //default: 22 [current TrigDecisionTool]
49 std::vector<QString> fdata, fid;
50 QStringList fdataitem;
51 int idx=0, ri_idx=0;
52
53 //**** COLLECT FEATURE ITEM DATA [3.DIM] ***********************************
54 for(int fs=0; fs<int(featureSeg.size()); ++fs) {
55 if(ri_idx<(int(sizeof roiInfoName/sizeof(QString))-1) && idx==1)
56 ++ri_idx;
57
58 if(roiInfoName[ri_idx]==featureSeg[fs]) {
59 if(idx>1 && int(fdataitem.size())>0) {
60 fdata.push_back(fdataitem.join(" "));
61 fdataitem.clear();
62 idx=0;
63 }
64 ++idx;
65 continue;
66 }
67 else {
68 if(!featureSeg[fs].contains("[") && !featureSeg[fs].contains("]"))
69 fdataitem << featureSeg[fs];
70 ++idx;
71
72 if(fs==(int(featureSeg.size())-1) && int(fdataitem.size())>0) {
73 fdata.push_back(fdataitem.join(" "));
74 fdataitem.clear();
75 }
76 }
77 }
78
79 //**** COLLECT FEATURE ITEM DATA [2.DIM] ***********************************
80 //std::cout << "FULL: " << feature.toStdString() << std::endl;
81 if(int(sizeof roiInfoName/sizeof(QString))==int(fdata.size())) {
82 if(processId==0) {
83 for(int v=0; v<int(fdata.size()); ++v) {
84 //std::cout << "SEG: " << roiInfoName[v].toStdString() << " " << fdata[v].toStdString() << std::endl;
85 fid.push_back(roiInfoName[v]);
86 }
87 m_trigData.push_back(fid);
88 }
89 m_trigData.push_back(fdata);
90 roi_id.push_back(roiId);
91 return true;
92 }
93 else {
94 log_error("processFeature(): unexpected vector size: roiInfo["+VP1String::str(int(sizeof roiInfoName/sizeof(QString)))+"], fdata["+VP1String::str(int(featureSeg.size()))+"]!");
95 return false;
96 }
97 }//END: def_22
98 else {
99 //--- Note: This system depends on the return of the ATLAS TrigDecisionTool. In case ---
100 //--- this underlying package has been modified, there are various ways to ---
101 //--- deal with the return more dynamic or adaptive (TODO). In this version ---
102 //--- we however only throw an exception until stable adaptive methods tested. ---
103 log_error("processFeature(): TrigDecisionTool returned "+VP1String::str(int(featureSeg.size()))+" feature segment items!");
104 return false;
105 }
106}//END: processFeature
QString roiInfoName[7]
std::vector< QString > roi_id
static QString str(const QString &s)
Definition VP1String.h:49
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:114

◆ processitem()

bool VP1Trig::VP1TriggerHandleL1::processitem ( )
private

Definition at line 111 of file VP1TriggerHandleL1.cxx.

112{
114 int combId=0, processId=0;
115 QString feature, roiId;
116
117 //Clear ROI vectors
118 m_trigData.clear();
119 roi_id.clear();
120
121 //--- Note: For single muon objects (use combinations only for 2 or more objects) ---
122 //e.g.: std::vector< Feature<TrigRoiDescriptor> > initRois = m_containerL1->get<TrigRoiDescriptor>("initialRoI");
123
124 using namespace Trig;
125 for(cIt = m_containerL1.getCombinations().begin(); cIt != m_containerL1.getCombinations().end(); ++cIt) {
126
127 //IMPORT: all possible features of TrigRoiDescriptor
128 std::vector< Feature<TrigRoiDescriptor> > forID = cIt->get<TrigRoiDescriptor>("forID");
129 std::vector< Feature<TrigRoiDescriptor> > forMS = cIt->get<TrigRoiDescriptor>("forMS");
130 std::vector< Feature<TrigRoiDescriptor> > initialRoI = cIt->get<TrigRoiDescriptor>("initialRoI");
131 std::vector< Feature<TrigRoiDescriptor> > secondaryRoI_L2 = cIt->get<TrigRoiDescriptor>("secondaryRoI_L2");
132 std::vector< Feature<TrigRoiDescriptor> > secondaryRoI_EF = cIt->get<TrigRoiDescriptor>("secondaryRoI_EF");
133 std::vector< Feature<TrigRoiDescriptor> > T2TauFinal = cIt->get<TrigRoiDescriptor>("T2TauFinal");
134 std::vector< Feature<TrigRoiDescriptor> > TrigT2CaloEgamma = cIt->get<TrigRoiDescriptor>("TrigT2CaloEgamma");
135 std::vector< Feature<TrigRoiDescriptor> > TrigT2CaloJet = cIt->get<TrigRoiDescriptor>("TrigT2CaloJet");
136 std::vector< Feature<TrigRoiDescriptor> > TrigT2CosmicJet = cIt->get<TrigRoiDescriptor>("TrigT2CosmicJet");
137 std::vector< Feature<TrigRoiDescriptor> > TrigT2CaloTau = cIt->get<TrigRoiDescriptor>("TrigT2CaloTau");
138
139 //EXPORT: Feature vector contents >>
140 Feature<TrigRoiDescriptor> d;
141 //********************
142 if( !forID.empty() ){
143 for(int dItr=0; dItr<int(forID.size()); ++dItr) {
144 d = forID[dItr];
145 feature = QString::fromStdString(::str(*d.cptr()));
146 roiId = QString("ROI_ID_")+QString::number(combId)+QString(":")+QString::number(dItr);
147 if(!feature.isEmpty()) {
148 bool fstatus = processFeature(processId, roiId, feature); ++processId;
149 if(!fstatus)
150 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
151 }
152 }//loop
153 }//END: forID
154
155 //********************
156 if( !forMS.empty() ){
157 for(int dItr=0; dItr<int(forMS.size()); ++dItr) {
158 d = forMS[dItr];
159 feature = QString::fromStdString(::str(*d.cptr()));
160 roiId = QString("ROI_MS_")+QString::number(combId)+QString(":")+QString::number(dItr);
161 if(!feature.isEmpty()) {
162 bool fstatus = processFeature(processId, roiId, feature); ++processId;
163 if(!fstatus)
164 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
165 }
166 }//loop
167 }//END: forMS
168
169 //********************
170 if( !initialRoI.empty() ){
171 for(int dItr=0; dItr<int(initialRoI.size()); ++dItr) {
172 d = initialRoI[dItr];
173 feature = QString::fromStdString(::str(*d.cptr()));
174 roiId = QString("ROI_Initial_")+QString::number(combId)+QString(":")+QString::number(dItr);
175 if(!feature.isEmpty()) {
176 bool fstatus = processFeature(processId, roiId, feature); ++processId;
177 if(!fstatus)
178 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
179 }
180 }//loop
181 }//END: initialRoI
182
183 //********************
184 if( !secondaryRoI_L2.empty() ){
185 for(int dItr=0; dItr<int(secondaryRoI_L2.size()); ++dItr) {
186 d = secondaryRoI_L2[dItr];
187 feature = QString::fromStdString(::str(*d.cptr()));
188 roiId = QString("ROI_SecondaryL2_")+QString::number(combId)+QString(":")+QString::number(dItr);
189 if(!feature.isEmpty()) {
190 bool fstatus = processFeature(processId, roiId, feature); ++processId;
191 if(!fstatus)
192 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
193 }
194 }//loop
195 }//END: secondaryRoI_L2
196
197 //********************
198 if( !secondaryRoI_EF.empty() ){
199 for(int dItr=0; dItr<int(secondaryRoI_EF.size()); ++dItr) {
200 d = secondaryRoI_EF[dItr];
201 feature = QString::fromStdString(::str(*d.cptr()));
202 roiId = QString("ROI_SecondaryEF_")+QString::number(combId)+QString(":")+QString::number(dItr);
203 if(!feature.isEmpty()) {
204 bool fstatus = processFeature(processId, roiId, feature); ++processId;
205 if(!fstatus)
206 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
207 }
208 }//loop
209 }//END: secondaryRoI_EF
210
211 //********************
212 if( !T2TauFinal.empty() ){
213 for(int dItr=0; dItr<int(T2TauFinal.size()); ++dItr) {
214 d = T2TauFinal[dItr];
215 feature = QString::fromStdString(::str(*d.cptr()));
216 roiId = QString("ROI_T2TauFinal_")+QString::number(combId)+QString(":")+QString::number(dItr);
217 if(!feature.isEmpty()) {
218 bool fstatus = processFeature(processId, roiId, feature); ++processId;
219 if(!fstatus)
220 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
221 }
222 }//loop
223 }//END: T2TauFinal
224
225 //********************
226 if( !TrigT2CaloEgamma.empty() ){
227 for(int dItr=0; dItr<int(TrigT2CaloEgamma.size()); ++dItr) {
228 d = TrigT2CaloEgamma[dItr];
229 feature = QString::fromStdString(::str(*d.cptr()));
230 roiId = QString("ROI_TrigT2CaloEgamma_")+QString::number(combId)+QString(":")+QString::number(dItr);
231 if(!feature.isEmpty()) {
232 bool fstatus = processFeature(processId, roiId, feature); ++processId;
233 if(!fstatus)
234 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
235 }
236 }//loop
237 }//END: TrigT2CaloEgamma
238
239 //********************
240 if( !TrigT2CaloJet.empty() ){
241 for(int dItr=0; dItr<int(TrigT2CaloJet.size()); ++dItr) {
242 d = TrigT2CaloJet[dItr];
243 feature = QString::fromStdString(::str(*d.cptr()));
244 roiId = QString("ROI_TrigT2CaloJet_")+QString::number(combId)+QString(":")+QString::number(dItr);
245 if(!feature.isEmpty()) {
246 bool fstatus = processFeature(processId, roiId, feature); ++processId;
247 if(!fstatus)
248 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
249 }
250 }//loop
251 }//END: TrigT2CaloJet
252
253 //********************
254 if( !TrigT2CosmicJet.empty() ){
255 for(int dItr=0; dItr<int(TrigT2CosmicJet.size()); ++dItr) {
256 d = TrigT2CosmicJet[dItr];
257 feature = QString::fromStdString(::str(*d.cptr()));
258 roiId = QString("ROI_TrigT2CosmicJet_")+QString::number(combId)+QString(":")+QString::number(dItr);
259 if(!feature.isEmpty()) {
260 bool fstatus = processFeature(processId, roiId, feature); ++processId;
261 if(!fstatus)
262 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
263 }
264 }//loop
265 }//END: TrigT2CosmicJet
266
267 //********************
268 if( !TrigT2CaloTau.empty() ){
269 for(int dItr=0; dItr<int(TrigT2CaloTau.size()); ++dItr) {
270 d = TrigT2CaloTau[dItr];
271 feature = QString::fromStdString(::str(*d.cptr()));
272 roiId = QString("ROI_TrigT2CaloTau_")+QString::number(combId)+QString(":")+QString::number(dItr);
273 if(!feature.isEmpty()) {
274 bool fstatus = processFeature(processId, roiId, feature); ++processId;
275 if(!fstatus)
276 log_error("processitem(): feature processing failed for: "+roiId+" > "+qstr(::str(*d.cptr())));
277 }
278 }//loop
279 }//END: TrigT2CaloTau
280
281 ++combId;
282 }//END: loop over chain group items
283
284 //EXPORT TRIGGER DATA -------------------------------------------------------------------------------->
285 if(m_trigData.size()!=0 && m_trigData[0].size()!=0 && roi_id.size()!=0) {
286 //std::cout << "dataSize>" << int(m_trigData.size()) << " idSize>" << int(roi_id.size()) << std::endl;
287 if((int(m_trigData.size())-1)==int(roi_id.size())) {
288 m_trigData.push_back(roi_id); //Append ROI IDs to ROI data (incl. fid, fdata)
289 return true;
290 }
291 else {
292 log_error("processitem(): ROI data and ID entries do not match!");
293 return false;
294 }
295 }
296 else
297 log_error("processitem(): ROI vectors empty: cannot append IDs!");
298 return false;
299 //----------------------------------------------------------------------------------------------------<
300}//END: processitem
Athena::TPCnvVers::Current TrigRoiDescriptor
std::vector< Combination >::const_iterator combination_const_iterator
bool processFeature(int processId, QString roiId, QString feature)
setTeId setLumiBlock roiId

◆ processQTrigItem()

bool VP1Trig::VP1TriggerHandleL1::processQTrigItem ( )
private

Definition at line 305 of file VP1TriggerHandleL1.cxx.

306{
307 //Process Handle item
308 bool status = processitem();
309 m_qtrigitem = new QTreeWidgetItem(0);
310
311 if(status) {
312 //Safety Check: TrigID / content count match
313 if(!(int(m_trigData[int(m_trigData.size())-1].size()) == int(m_trigData.size())-2)) {
314 log_error("processQTrigItem(): mismatch in TrigID / data item count: TrigID size: "+VP1String::str(int(m_trigData[int(m_trigData.size())-1].size()))+" and TrigID data cout: "+VP1String::str(int(m_trigData.size())-2));
315 m_qtrigstatus=false;
316 }
317 else {
318 QTreeWidgetItem* trigId;
319 QString dataItem;
320
321 m_qtrigitem->setText(0, QString("TE: ")+m_trigID);
322
323 for(int x=1; x<int(m_trigData.size()-1); ++x) {
324 trigId = new QTreeWidgetItem(m_qtrigitem);
325 trigId->setText(0, m_trigData[int(m_trigData.size())-1][x-1]);
326
327 QList<QTreeWidgetItem *> data;
328 for(int y=0; y<int(m_trigData[x].size()); ++y) {
329 if(int(m_trigData[0].size())==int(m_trigData[x].size())) {
330 dataItem = m_trigData[0][y]+QString(" ")+m_trigData[x][y];
331 data.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(dataItem)));
332 }
333 else
334 log_error("processQTrigItem(): mismatch in feature ID to data item count!");
335 }//y loop
336 trigId->insertChildren(0, data);
337 }//x loop
338 m_qtrigstatus=true;
339 }//count ok
340 }//status ok
341 else
342 m_qtrigstatus=false;
343
344 return m_qtrigstatus;
345}//END: processQTrigItem
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
#define y
#define x
status
Definition merge.py:16

◆ processVTrigItem()

bool VP1Trig::VP1TriggerHandleL1::processVTrigItem ( )
private

Definition at line 350 of file VP1TriggerHandleL1.cxx.

351{
352 //Process Handle item
353 bool status = processitem();
354
355 if(status)
356 m_vtrigstatus=true;
357 else
358 m_vtrigstatus=false;
359
360 return m_vtrigstatus;
361}//END: processVTrigItem

◆ 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}

◆ qstr() [2/2]

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

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

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

◆ VP1TriggerProcessor

friend class VP1TriggerProcessor
friend

Definition at line 59 of file VP1TriggerHandleL1.h.

Member Data Documentation

◆ m_containerL1

Trig::FeatureContainer VP1Trig::VP1TriggerHandleL1::m_containerL1
private

Definition at line 63 of file VP1TriggerHandleL1.h.

◆ m_lvl

int VP1Trig::Logger::m_lvl
privateinherited

◆ m_name

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

◆ m_qtrigitem

QTreeWidgetItem* VP1Trig::VP1TriggerHandleL1::m_qtrigitem
private

Definition at line 77 of file VP1TriggerHandleL1.h.

◆ m_qtrigstatus

bool VP1Trig::VP1TriggerHandleL1::m_qtrigstatus
private

Definition at line 83 of file VP1TriggerHandleL1.h.

◆ m_trigData

std::vector<std::vector<QString> > VP1Trig::VP1TriggerHandleL1::m_trigData
private

Definition at line 80 of file VP1TriggerHandleL1.h.

◆ m_trigID

QString VP1Trig::VP1TriggerHandleL1::m_trigID
private

Definition at line 64 of file VP1TriggerHandleL1.h.

◆ m_vtrigstatus

bool VP1Trig::VP1TriggerHandleL1::m_vtrigstatus
private

Definition at line 84 of file VP1TriggerHandleL1.h.


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