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

#include <VP1TriggerHandleL2.h>

Inheritance diagram for VP1Trig::VP1TriggerHandleL2:
Collaboration diagram for VP1Trig::VP1TriggerHandleL2:

Public Member Functions

 VP1TriggerHandleL2 (std::vector< const MuonFeatureDetails * > containerL2)
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 ()

Private Attributes

std::vector< const MuonFeatureDetails * > m_containerL2
QTreeWidgetItem * m_qtrigData
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 28 of file VP1TriggerHandleL2.h.

Constructor & Destructor Documentation

◆ VP1TriggerHandleL2()

VP1Trig::VP1TriggerHandleL2::VP1TriggerHandleL2 ( std::vector< const MuonFeatureDetails * > containerL2)
inline

Definition at line 31 of file VP1TriggerHandleL2.h.

32 : Logger("TriggerHandleL2"),
33 m_containerL2(containerL2),
34 m_qtrigData(0),
35 m_trigData(0),
36 m_qtrigstatus(false),
37 m_vtrigstatus(false) {};
std::vector< std::vector< QString > > m_trigData
std::vector< const MuonFeatureDetails * > m_containerL2

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}

◆ processitem()

bool VP1Trig::VP1TriggerHandleL2::processitem ( )
private

if(off_match){ tube = (QString::number(i_tube));
barrelID.push_back(QString("muFast_MDT_Inn_residual_barrel_OffMatch Tube No-")+tube); barrelData.push_back(QString::number(res)); }

if(off_match){ tube = (QString::number(i_tube)); barrelID.push_back(QString("muFast_MDT_Mid_residual_barrel_OffMatch Tube No-")+tube); barrelData.push_back(QString::number(res)); }

if(off_match){ tube = (QString::number(i_tube)); barrelID.push_back(QString("muFast_MDT_Out_residual_barrel_OffMatch tube No-")+tube); barrelData.push_back(QString::number(res)); }

if(off_match){ tube = (QString::number(i_tube)); endcapID.push_back(QString("muFast_MDT_Inn_residual_endcap Tube No-")+tube); endcapData.push_back(QString::number(TGCMidRhoChi2)); }

if(off_match){ tube = (QString::number(i_tube)); endcapID.push_back(QString("muFast_MDT_Mid_residual_endcap_OffMatch Tube No-")+tube); endcapData.push_back(QString::number(TGCMidRhoChi2)); }

if(off_match){ tube = (QString::number(i_tube)); endcapID.push_back(QString("muFast_MDT_Out_residual_endcap_OffMatch Tube No-")+tube); endcapData.push_back(QString::number(TGCMidRhoChi2)); }

Definition at line 42 of file VP1TriggerHandleL2.cxx.

43{
44 //Vectors Data Structure Init ------------------------------>
45 std::vector<QString> headerID(3), barrelID, endcapID, generalID,
46 barrelData, endcapData, generalData;
47
48 //Define Header IDs (thus pre-define vector data structure)
49 headerID[0]=QString("Barrel");
50 headerID[1]=QString("Endcap");
51 headerID[2]=QString("General");
52
53 //Clear Export Vector
54 m_trigData.clear();
55 //----------------------------------------------------------<
56
57 //Muon feature iterator
58 std::vector<const MuonFeatureDetails*>::const_iterator itMfd;
59 //bool off_match = false; never used, code commented out below
60 for(itMfd=m_containerL2.begin(); itMfd!=m_containerL2.end(); ++itMfd) {
61 //Check ID
62 int id = (*itMfd)->id();
63 if(id!=1) continue; //muFast_Muon
64
65 //RoI System
66 int systemID = (*itMfd)->roi_system(); //0:barrel, 1:endcap, 2:forward
67
68 //Flow
69 bool isL1hitThere = false;
70 bool isL1emuOkForTriggerPlane = false;
71
72 int nRPC = (*itMfd)->pad_hit_onlineId().size();
73
74 int nTGCMidRho = (*itMfd)->tgc_Mid_rho_N();
75 int nTGCMidPhi = (*itMfd)->tgc_Mid_phi_N();
76
77 float TGCMidRhoChi2 = (*itMfd)->tgc_Mid_rho_chi2();
78 float TGCMidPhiChi2 = (*itMfd)->tgc_Mid_phi_chi2();
79
80 //Process systems
81 if(systemID==0) { //RPC
82 float rpc1_z = (*itMfd)->rpc1_z();
83 float rpc2_z = (*itMfd)->rpc2_z();
84 const float NO_VALUE = 99999;
85 if(nRPC!=0) isL1hitThere = true;
86 if(fabs(rpc1_z-NO_VALUE) > ZERO_LIMIT && fabs(rpc1_z) > ZERO_LIMIT && fabs(rpc2_z-NO_VALUE) > ZERO_LIMIT && fabs(rpc2_z) > ZERO_LIMIT) {
87 isL1emuOkForTriggerPlane = true;
88 }
89
90 //Dump to vectors
91 barrelID.push_back("RPC-1: Z");
92 barrelData.push_back(QString::number(rpc1_z));
93
94 barrelID.push_back("RPC-2: Z");
95 barrelData.push_back(QString::number(rpc2_z));
96
97 barrelID.push_back("RPC: nHits");
98 barrelData.push_back(QString::number(nRPC));
99 } else { //TGC
100 const float NO_VALUE = -99999;
101 if(nTGCMidRho!=0 && nTGCMidPhi!=0) isL1hitThere = true;
102 if(fabs(TGCMidRhoChi2 - NO_VALUE) > ZERO_LIMIT && fabs(TGCMidPhiChi2 - NO_VALUE) > ZERO_LIMIT) isL1emuOkForTriggerPlane = true;
103
104 //Dump to vectors
105 endcapID.push_back("TGC Mid nHits: Rho");
106 endcapData.push_back(QString::number(nTGCMidRho));
107
108 endcapID.push_back("TGC Mid nHits: Phi");
109 endcapData.push_back(QString::number(nTGCMidPhi));
110
111 endcapID.push_back("TGC Mid Chi2: Rho");
112 endcapData.push_back(QString::number(TGCMidRhoChi2));
113
114 endcapID.push_back("TGC Mid Chi2: Phi");
115 endcapData.push_back(QString::number(TGCMidPhiChi2));
116 }
117
118 //Loop over each MDT tube
119 std::vector<float> mdt_tube_residual = (*itMfd)->mdt_tube_residual();
120 std::vector<float> mdt_tube_r = (*itMfd)->mdt_tube_r();
121 std::vector<float> mdt_tube_z = (*itMfd)->mdt_tube_z();
122
123 //INIT counters
124 int n_mdt_hits_inner = 0;
125 int n_mdt_hits_middle = 0;
126 int n_mdt_hits_outer = 0;
127
128 //Process systems
129 if(systemID==0) { //Barrel
130 for(int i_tube=0; i_tube<(int)mdt_tube_residual.size(); i_tube++) {
131 QString tube;
132 float res = mdt_tube_residual[i_tube];
133 float r = mdt_tube_r[i_tube];
134 int imr = 2;
135
136 //Flags
137 if (r<650) { imr=0; }
138 else if(r<850) { imr=1; }
139
140 //Dump to vectors
141 if(imr==0) {
142 n_mdt_hits_inner++;
143 tube = (QString::number(i_tube));
144 barrelID.push_back(QString("muFast_MDT_Inn_residual_barrel Tube No-")+tube);
145 barrelData.push_back(QString::number(res));
146
152 }
153 else if(imr==1) {
154 n_mdt_hits_middle++;
155 tube = (QString::number(i_tube));
156 barrelID.push_back(QString("muFast_MDT_Mid_residual_barrel Tube No-")+tube);
157 barrelData.push_back(QString::number(res));
158
164 }
165 else if(imr==2) {
166 n_mdt_hits_outer++;
167 tube = (QString::number(i_tube));
168 barrelID.push_back(QString("muFast_MDT_Out_residual_barrel tube No-")+tube);
169 barrelData.push_back(QString::number(res));
170
176 }
177 }
178 }//END: systemID=0
179 else{ //Endcap
180 for(int i_tube=0; i_tube<(int)mdt_tube_residual.size(); i_tube++) {
181 QString tube;
182 float z = mdt_tube_z[i_tube];
183 int imr = 2;
184
185 if ( fabs(z) < 10000 ) { imr=0; }
186 else if( fabs(z) < 15000 ) { imr=1; }
187
188 //Dump to vectors
189 if(imr == 0) {
190 n_mdt_hits_inner++;
191 tube = (QString::number(i_tube));
192 endcapID.push_back(QString("muFast_MDT_Inn_residual_endcap Tube No-")+tube);
193 endcapData.push_back(QString::number(TGCMidRhoChi2));
194
200 }
201 else if(imr == 1) {
202 n_mdt_hits_middle++;
203 tube = (QString::number(i_tube));
204 endcapID.push_back(QString("muFast_MDT_Mid_residual_endcap Tube No-")+tube);
205 endcapData.push_back(QString::number(TGCMidRhoChi2));
206
212 } else if(imr == 2) {
213 n_mdt_hits_outer++;
214 tube = (QString::number(i_tube));
215 endcapID.push_back(QString("muFast_MDT_Out_residual_endcap Tube No-" )+tube);
216 endcapData.push_back(QString::number(TGCMidRhoChi2));
217
223 }
224 }
225 }//END: Endcap
226
227 //MDT flow
228 bool isMDThitThereForTriggerPlane = false;
229 bool isMDTFitOkForTriggerPlane = false;
230 bool isMDTFitOkFor2Plane = false;
231
232 int nMDT = (*itMfd)->mdt_onlineId().size();
233
234 float MDTInnChi2 = (*itMfd)->mdt_Inner_fit_chi();
235 float MDTMidChi2 = (*itMfd)->mdt_Middle_fit_chi();
236 float MDTOutChi2 = (*itMfd)->mdt_Outer_fit_chi();
237
238 const float MDT_CHI2_NO_VALUE = -99999;
239
240 if(n_mdt_hits_middle != 0) isMDThitThereForTriggerPlane = true;
241 if(fabs(MDTMidChi2-MDT_CHI2_NO_VALUE) > ZERO_LIMIT) isMDTFitOkForTriggerPlane = true;
242 if(isMDTFitOkForTriggerPlane && (fabs(MDTInnChi2 - MDT_CHI2_NO_VALUE) > ZERO_LIMIT || fabs(MDTOutChi2 - MDT_CHI2_NO_VALUE) > ZERO_LIMIT) ) {
243 isMDTFitOkFor2Plane = true;
244 }
245
246 //DEFs
247 int isL1hitTheret, isL1emuOkForTriggerPlanet, isMDThitTheret, isMDTFitOkForTriggerPlanet, isMDTFitOkFor2Planet;
248
249 if(isL1hitThere==true) isL1hitTheret=1;
250 else isL1hitTheret=0;
251
252 if(isL1emuOkForTriggerPlane==true) isL1emuOkForTriggerPlanet=1;
253 else isL1emuOkForTriggerPlanet=0;
254
255 if(isMDThitThereForTriggerPlane==true) isMDThitTheret=1;
256 else isMDThitTheret=0;
257
258 if(isMDTFitOkForTriggerPlane==true) isMDTFitOkForTriggerPlanet=1;
259 else isMDTFitOkForTriggerPlanet=0;
260
261 if(isMDTFitOkFor2Plane==true) isMDTFitOkFor2Planet=1;
262 else isMDTFitOkFor2Planet=0;
263
264 //Dump to vectors
265 generalID.push_back("isL1hitThere");
266 generalData.push_back(QString::number(isL1hitTheret));
267
268 generalID.push_back("L1emuOkForTriggerPlane");
269 generalData.push_back(QString::number(isL1emuOkForTriggerPlanet));
270
271 generalID.push_back("isMDThitThere");
272 generalData.push_back(QString::number(isMDThitTheret));
273
274 generalID.push_back("FitOkForTriggerPlane");
275 generalData.push_back(QString::number(isMDTFitOkForTriggerPlanet));
276
277 generalID.push_back("FitOkFor2Plane");
278 generalData.push_back(QString::number(isMDTFitOkFor2Planet));
279
280 //Dump to vectors
281 if(systemID==0) { //Barrel
282 barrelID.push_back("muFast_RPC_Pad_N" );
283 barrelData.push_back(QString::number(nRPC));
284
285 barrelID.push_back("muFast_MDT_Inn_fit_chi2_barrel");
286 barrelData.push_back(QString::number(MDTInnChi2));
287
288 barrelID.push_back("muFast_MDT_Mid_fit_chi2_barrel");
289 barrelData.push_back(QString::number(MDTMidChi2));
290
291 barrelID.push_back("muFast_MDT_Out_fit_chi2_barrel");
292 barrelData.push_back(QString::number(MDTOutChi2));
293
294 } else{ //Endcap
295 endcapID.push_back("muFast_TGC_Mid_rho_chi2");
296 endcapData.push_back(QString::number(TGCMidRhoChi2));
297
298 endcapID.push_back("muFast_TGC_Mid_phi_chi2" );
299 endcapData.push_back(QString::number(TGCMidPhiChi2));
300
301 endcapID.push_back("muFast_MDT_Inn_fit_chi2_endcap");
302 endcapData.push_back(QString::number(MDTInnChi2));
303
304 endcapID.push_back("FitOkFor2Plane");
305 endcapData.push_back(QString::number(MDTMidChi2));
306
307 endcapID.push_back("muFast_MDT_Out_fit_chi2_endcap");
308 endcapData.push_back(QString::number(MDTOutChi2));
309
310 endcapID.push_back("muFast_MDT_N_endcap");
311 endcapData.push_back(QString::number(nMDT));
312 }
313 }
314 //END: Looping MuonFeatureDetails
315
316 //Export Trigger Data according to pre-def. structure ------>
317 if(int(headerID.size())==3) {
318 if(int(barrelID.size())==int(barrelData.size()) && int(endcapID.size())==int(endcapData.size()) && int(generalID.size())==int(generalData.size())) {
319 if(int(barrelData.size())!=0 || int(endcapData.size())!=0 || int(generalData.size())) {
320 m_trigData.push_back(headerID); //[0]
321
322 m_trigData.push_back(barrelID); //[1]
323 m_trigData.push_back(endcapID); //[2]
324 m_trigData.push_back(generalID); //[3]
325
326 m_trigData.push_back(barrelData); //[4]
327 m_trigData.push_back(endcapData); //[5]
328 m_trigData.push_back(generalData); //[6]
329
330 return true;
331 }//one or more non-empty vectors
332 else
333 log_warning("processitem(): No Barrel, Endcap or General data found.");
334 }//ID-Data size match
335 else
336 log_error("processitem(): ID-Data size matching failed!");
337 }//header size
338 else
339 log_error("processitem(): incorrect headerID size!");
340 return false;
341 //----------------------------------------------------------<
342}//END: processitem
std::pair< std::vector< unsigned int >, bool > res
#define z
const float ZERO_LIMIT
int r
Definition globals.cxx:22

◆ processQTrigItem()

bool VP1Trig::VP1TriggerHandleL2::processQTrigItem ( )
private

Definition at line 347 of file VP1TriggerHandleL2.cxx.

348{
349 //Process Handle item
350 bool status = processitem();
351
352 if(status) {
353 //VARs
354 m_qtrigData = new QTreeWidgetItem(0);
355 QTreeWidgetItem* dataL2item;
356 int x_id=0, x_data=0, diff=0, avail=0;
357
358 //DEFs
359 QString sep = " = ";
360
361 if(int(m_trigData.size())>1 && int(m_trigData[0].size())!=0 && int(m_trigData.size())==(int(m_trigData[0].size())*2)+1) {
362
363 diff=int(m_trigData[0].size());
364 for(int x=1; x<=int(m_trigData[0].size()); ++x) {
365 x_id=x;
366 x_data=x_id+diff;
367 if((x_data<int(m_trigData.size())) && (int(m_trigData[x_id].size())==int(m_trigData[x_data].size())) && (int(m_trigData[x_data].size())>0)) {
368 //New Item
369 dataL2item = new QTreeWidgetItem(m_qtrigData);
370
371 //Set ID
372 dataL2item->setText(0, m_trigData[0][x-1]);
373
374 //Load Data
375 QList<QTreeWidgetItem *> dataList;
376 for(int i=0; i<int(m_trigData[x_id].size()); ++i)
377 dataList.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(m_trigData[x_id][i]+sep+m_trigData[x_data][i])));
378 dataL2item->insertChildren(0, dataList);
379 //y loop
380 ++avail;
381 }//avail. range
382 }//x loop
383
384 //Data available
385 if(avail>0) m_qtrigstatus=true;
386 else m_qtrigstatus=false;
387 }//vector check
388 else {
389 log_error("processQTrigItem(): L2 data not available!");
390 m_qtrigstatus=false;
391 }
392 }
393 else
394 m_qtrigstatus=false;
395
396 return m_qtrigstatus;
397}//END: processQTrigItem
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
Definition Jet.cxx:631
#define x
status
Definition merge.py:16

◆ processVTrigItem()

bool VP1Trig::VP1TriggerHandleL2::processVTrigItem ( )
private

Definition at line 402 of file VP1TriggerHandleL2.cxx.

403{
404 //Process Handle item
405 bool status = processitem();
406
407 if(status)
408 m_vtrigstatus=true;
409 else
410 m_vtrigstatus=false;
411
412 return m_vtrigstatus;
413}//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}
static Double_t ss

◆ 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 41 of file VP1TriggerHandleL2.h.

Member Data Documentation

◆ m_containerL2

std::vector<const MuonFeatureDetails*> VP1Trig::VP1TriggerHandleL2::m_containerL2
private

Definition at line 45 of file VP1TriggerHandleL2.h.

◆ m_lvl

int VP1Trig::Logger::m_lvl
privateinherited

◆ m_name

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

◆ m_qtrigData

QTreeWidgetItem* VP1Trig::VP1TriggerHandleL2::m_qtrigData
private

Definition at line 57 of file VP1TriggerHandleL2.h.

◆ m_qtrigstatus

bool VP1Trig::VP1TriggerHandleL2::m_qtrigstatus
private

Definition at line 63 of file VP1TriggerHandleL2.h.

◆ m_trigData

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

Definition at line 60 of file VP1TriggerHandleL2.h.

◆ m_vtrigstatus

bool VP1Trig::VP1TriggerHandleL2::m_vtrigstatus
private

Definition at line 64 of file VP1TriggerHandleL2.h.


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