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 (const 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_middle = 0;
125
126 //Process systems
127 if(systemID==0) { //Barrel
128 for(int i_tube=0; i_tube<(int)mdt_tube_residual.size(); i_tube++) {
129 QString tube;
130 float res = mdt_tube_residual[i_tube];
131 float r = mdt_tube_r[i_tube];
132 int imr = 2;
133
134 //Flags
135 if (r<650) { imr=0; }
136 else if(r<850) { imr=1; }
137
138 //Dump to vectors
139 if(imr==0) {
140 tube = (QString::number(i_tube));
141 barrelID.push_back(QString("muFast_MDT_Inn_residual_barrel Tube No-")+tube);
142 barrelData.push_back(QString::number(res));
143
149 }
150 else if(imr==1) {
151 n_mdt_hits_middle++;
152 tube = (QString::number(i_tube));
153 barrelID.push_back(QString("muFast_MDT_Mid_residual_barrel Tube No-")+tube);
154 barrelData.push_back(QString::number(res));
155
161 }
162 else if(imr==2) {
163 tube = (QString::number(i_tube));
164 barrelID.push_back(QString("muFast_MDT_Out_residual_barrel tube No-")+tube);
165 barrelData.push_back(QString::number(res));
166
172 }
173 }
174 }//END: systemID=0
175 else{ //Endcap
176 for(int i_tube=0; i_tube<(int)mdt_tube_residual.size(); i_tube++) {
177 QString tube;
178 float z = mdt_tube_z[i_tube];
179 int imr = 2;
180
181 if ( fabs(z) < 10000 ) { imr=0; }
182 else if( fabs(z) < 15000 ) { imr=1; }
183
184 //Dump to vectors
185 if(imr == 0) {
186 tube = (QString::number(i_tube));
187 endcapID.push_back(QString("muFast_MDT_Inn_residual_endcap Tube No-")+tube);
188 endcapData.push_back(QString::number(TGCMidRhoChi2));
189
195 }
196 else if(imr == 1) {
197 n_mdt_hits_middle++;
198 tube = (QString::number(i_tube));
199 endcapID.push_back(QString("muFast_MDT_Mid_residual_endcap Tube No-")+tube);
200 endcapData.push_back(QString::number(TGCMidRhoChi2));
201
207 } else if(imr == 2) {
208 tube = (QString::number(i_tube));
209 endcapID.push_back(QString("muFast_MDT_Out_residual_endcap Tube No-" )+tube);
210 endcapData.push_back(QString::number(TGCMidRhoChi2));
211
217 }
218 }
219 }//END: Endcap
220
221 //MDT flow
222 bool isMDThitThereForTriggerPlane = false;
223 bool isMDTFitOkForTriggerPlane = false;
224 bool isMDTFitOkFor2Plane = false;
225
226 int nMDT = (*itMfd)->mdt_onlineId().size();
227
228 float MDTInnChi2 = (*itMfd)->mdt_Inner_fit_chi();
229 float MDTMidChi2 = (*itMfd)->mdt_Middle_fit_chi();
230 float MDTOutChi2 = (*itMfd)->mdt_Outer_fit_chi();
231
232 const float MDT_CHI2_NO_VALUE = -99999;
233
234 if(n_mdt_hits_middle != 0) isMDThitThereForTriggerPlane = true;
235 if(fabs(MDTMidChi2-MDT_CHI2_NO_VALUE) > ZERO_LIMIT) isMDTFitOkForTriggerPlane = true;
236 if(isMDTFitOkForTriggerPlane && (fabs(MDTInnChi2 - MDT_CHI2_NO_VALUE) > ZERO_LIMIT || fabs(MDTOutChi2 - MDT_CHI2_NO_VALUE) > ZERO_LIMIT) ) {
237 isMDTFitOkFor2Plane = true;
238 }
239
240 //DEFs
241 int isL1hitTheret, isL1emuOkForTriggerPlanet, isMDThitTheret, isMDTFitOkForTriggerPlanet, isMDTFitOkFor2Planet;
242
243 if(isL1hitThere==true) isL1hitTheret=1;
244 else isL1hitTheret=0;
245
246 if(isL1emuOkForTriggerPlane==true) isL1emuOkForTriggerPlanet=1;
247 else isL1emuOkForTriggerPlanet=0;
248
249 if(isMDThitThereForTriggerPlane==true) isMDThitTheret=1;
250 else isMDThitTheret=0;
251
252 if(isMDTFitOkForTriggerPlane==true) isMDTFitOkForTriggerPlanet=1;
253 else isMDTFitOkForTriggerPlanet=0;
254
255 if(isMDTFitOkFor2Plane==true) isMDTFitOkFor2Planet=1;
256 else isMDTFitOkFor2Planet=0;
257
258 //Dump to vectors
259 generalID.push_back("isL1hitThere");
260 generalData.push_back(QString::number(isL1hitTheret));
261
262 generalID.push_back("L1emuOkForTriggerPlane");
263 generalData.push_back(QString::number(isL1emuOkForTriggerPlanet));
264
265 generalID.push_back("isMDThitThere");
266 generalData.push_back(QString::number(isMDThitTheret));
267
268 generalID.push_back("FitOkForTriggerPlane");
269 generalData.push_back(QString::number(isMDTFitOkForTriggerPlanet));
270
271 generalID.push_back("FitOkFor2Plane");
272 generalData.push_back(QString::number(isMDTFitOkFor2Planet));
273
274 //Dump to vectors
275 if(systemID==0) { //Barrel
276 barrelID.push_back("muFast_RPC_Pad_N" );
277 barrelData.push_back(QString::number(nRPC));
278
279 barrelID.push_back("muFast_MDT_Inn_fit_chi2_barrel");
280 barrelData.push_back(QString::number(MDTInnChi2));
281
282 barrelID.push_back("muFast_MDT_Mid_fit_chi2_barrel");
283 barrelData.push_back(QString::number(MDTMidChi2));
284
285 barrelID.push_back("muFast_MDT_Out_fit_chi2_barrel");
286 barrelData.push_back(QString::number(MDTOutChi2));
287
288 } else{ //Endcap
289 endcapID.push_back("muFast_TGC_Mid_rho_chi2");
290 endcapData.push_back(QString::number(TGCMidRhoChi2));
291
292 endcapID.push_back("muFast_TGC_Mid_phi_chi2" );
293 endcapData.push_back(QString::number(TGCMidPhiChi2));
294
295 endcapID.push_back("muFast_MDT_Inn_fit_chi2_endcap");
296 endcapData.push_back(QString::number(MDTInnChi2));
297
298 endcapID.push_back("FitOkFor2Plane");
299 endcapData.push_back(QString::number(MDTMidChi2));
300
301 endcapID.push_back("muFast_MDT_Out_fit_chi2_endcap");
302 endcapData.push_back(QString::number(MDTOutChi2));
303
304 endcapID.push_back("muFast_MDT_N_endcap");
305 endcapData.push_back(QString::number(nMDT));
306 }
307 }
308 //END: Looping MuonFeatureDetails
309
310 //Export Trigger Data according to pre-def. structure ------>
311 if(int(headerID.size())==3) {
312 if(int(barrelID.size())==int(barrelData.size()) && int(endcapID.size())==int(endcapData.size()) && int(generalID.size())==int(generalData.size())) {
313 if(int(barrelData.size())!=0 || int(endcapData.size())!=0 || int(generalData.size())) {
314 m_trigData.push_back(headerID); //[0]
315
316 m_trigData.push_back(barrelID); //[1]
317 m_trigData.push_back(endcapID); //[2]
318 m_trigData.push_back(generalID); //[3]
319
320 m_trigData.push_back(barrelData); //[4]
321 m_trigData.push_back(endcapData); //[5]
322 m_trigData.push_back(generalData); //[6]
323
324 return true;
325 }//one or more non-empty vectors
326 else
327 log_warning("processitem(): No Barrel, Endcap or General data found.");
328 }//ID-Data size match
329 else
330 log_error("processitem(): ID-Data size matching failed!");
331 }//header size
332 else
333 log_error("processitem(): incorrect headerID size!");
334 return false;
335 //----------------------------------------------------------<
336}//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 341 of file VP1TriggerHandleL2.cxx.

342{
343 //Process Handle item
344 bool status = processitem();
345
346 if(status) {
347 //VARs
348 m_qtrigData = new QTreeWidgetItem(0);
349 QTreeWidgetItem* dataL2item;
350 int x_id=0, x_data=0, diff=0, avail=0;
351
352 //DEFs
353 QString sep = " = ";
354
355 if(int(m_trigData.size())>1 && int(m_trigData[0].size())!=0 && int(m_trigData.size())==(int(m_trigData[0].size())*2)+1) {
356
357 diff=int(m_trigData[0].size());
358 for(int x=1; x<=int(m_trigData[0].size()); ++x) {
359 x_id=x;
360 x_data=x_id+diff;
361 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)) {
362 //New Item
363 dataL2item = new QTreeWidgetItem(m_qtrigData);
364
365 //Set ID
366 dataL2item->setText(0, m_trigData[0][x-1]);
367
368 //Load Data
369 QList<QTreeWidgetItem *> dataList;
370 for(int i=0; i<int(m_trigData[x_id].size()); ++i)
371 dataList.append(new QTreeWidgetItem((QTreeWidget*)0, QStringList(m_trigData[x_id][i]+sep+m_trigData[x_data][i])));
372 dataL2item->insertChildren(0, dataList);
373 //y loop
374 ++avail;
375 }//avail. range
376 }//x loop
377
378 //Data available
379 if(avail>0) m_qtrigstatus=true;
380 else m_qtrigstatus=false;
381 }//vector check
382 else {
383 log_error("processQTrigItem(): L2 data not available!");
384 m_qtrigstatus=false;
385 }
386 }
387 else
388 m_qtrigstatus=false;
389
390 return m_qtrigstatus;
391}//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 396 of file VP1TriggerHandleL2.cxx.

397{
398 //Process Handle item
399 bool status = processitem();
400
401 if(status)
402 m_vtrigstatus=true;
403 else
404 m_vtrigstatus=false;
405
406 return m_vtrigstatus;
407}//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 ( 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}

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