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_middle = 0;
125
126
127 if(systemID==0) {
128 for(
int i_tube=0; i_tube<(
int)mdt_tube_residual.size(); i_tube++) {
130 float res = mdt_tube_residual[i_tube];
131 float r = mdt_tube_r[i_tube];
132 int imr = 2;
133
134
135 if (
r<650) { imr=0; }
136 else if(
r<850) { imr=1; }
137
138
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 }
175 else{
176 for(
int i_tube=0; i_tube<(
int)mdt_tube_residual.size(); i_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
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 }
220
221
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
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
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
275 if(systemID==0) {
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{
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
309
310
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())) {
315
319
323
324 return true;
325 }
326 else
327 log_warning(
"processitem(): No Barrel, Endcap or General data found.");
328 }
329 else
330 log_error(
"processitem(): ID-Data size matching failed!");
331 }
332 else
333 log_error(
"processitem(): incorrect headerID size!");
334 return false;
335
336}
std::pair< std::vector< unsigned int >, bool > res
void log_error(const QString &msg)
void log_warning(const QString &msg)