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)); }
43{
44
45 std::vector<QString> headerID(3), barrelID, endcapID, generalID,
46 barrelData, endcapData, generalData;
47
48
49 headerID[0]=QString("Barrel");
50 headerID[1]=QString("Endcap");
51 headerID[2]=QString("General");
52
53
55
56
57
58 std::vector<const MuonFeatureDetails*>::const_iterator itMfd;
59
61
62 int id = (*itMfd)->id();
63 if(id!=1) continue;
64
65
66 int systemID = (*itMfd)->roi_system();
67
68
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
81 if(systemID==0) {
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;
87 isL1emuOkForTriggerPlane = true;
88 }
89
90
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 {
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
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
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
124 int n_mdt_hits_inner = 0;
125 int n_mdt_hits_middle = 0;
126 int n_mdt_hits_outer = 0;
127
128
129 if(systemID==0) {
130 for(
int i_tube=0; i_tube<(
int)mdt_tube_residual.size(); i_tube++) {
132 float res = mdt_tube_residual[i_tube];
133 float r = mdt_tube_r[i_tube];
134 int imr = 2;
135
136
137 if (
r<650) { imr=0; }
138 else if(
r<850) { imr=1; }
139
140
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 }
179 else{
180 for(
int i_tube=0; i_tube<(
int)mdt_tube_residual.size(); i_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
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 }
226
227
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
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
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
281 if(systemID==0) {
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{
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
315
316
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())) {
321
325
329
330 return true;
331 }
332 else
333 log_warning(
"processitem(): No Barrel, Endcap or General data found.");
334 }
335 else
336 log_error(
"processitem(): ID-Data size matching failed!");
337 }
338 else
339 log_error(
"processitem(): incorrect headerID size!");
340 return false;
341
342}
std::pair< std::vector< unsigned int >, bool > res
void log_error(const QString &msg)
void log_warning(const QString &msg)