Function that fills variables of trigger objects associated to specified trigger chains comparing offline muons.
87 {
88
90
92
93
95
96
97 auto offPt = Monitored::Scalar<float>(chain+"_offPt",-999.);
98 auto offEta = Monitored::Scalar<float>(chain+"_offEta",-999.);
99 auto offPhi = Monitored::Scalar<float>(chain+"_offPhi",-999.);
100 offPt =
mu->pt()/1
e3 *
mu->charge();
103 float offCharge =
mu->charge();
104
105
106 if(
chain.find(
"probe") != std::string::npos ){
107 if(
chain.find(
"L1MU14FCH") != std::string::npos){
109 }
110 else if(
chain.find(
"L1MU18VFCH") != std::string::npos){
112 }
113 else
114 {
115 return StatusCode::SUCCESS;
116 }
117
118
120 if( tag == nullptr ) return StatusCode::SUCCESS;
121
122
123
124 auto passL2InsideOut = Monitored::Scalar<bool>(chain+"_passL2InsideOut",false);
125 auto passL2SA = Monitored::Scalar<bool>(chain+"_passL2SA",false);
126 auto offdR = Monitored::Scalar<float>(chain+"_offdR",1000.);
127 const auto* tag_ms_track =
tag->trackParticle(xAOD::Muon::TrackParticleType::MuonSpectrometerTrackParticle);
128 if( !tag_ms_track) return StatusCode::SUCCESS;
129 const auto* probe_ms_track =
mu->trackParticle(xAOD::Muon::TrackParticleType::MuonSpectrometerTrackParticle);
130 if( !probe_ms_track ) return StatusCode::SUCCESS;
132
133 passL2InsideOut = false;
134 passL2SA = false;
135
136
137 int legIndex_probe = 1;
140 "HLT_MuonL2SAInfo",
143 legIndex_probe );
144
145 for(const TrigCompositeUtils::LinkInfo<xAOD::L2StandAloneMuonContainer>& probe_L2SALinkInfo : featureCont){
146 ATH_CHECK( probe_L2SALinkInfo.isValid() );
148 if(
m_matchTool->isMatchedL2SA( (*probe_L2SAobject), mu ) ){
150 }
151 }
152
153 if(passL2SA == true){
154 if(
m_matchTool->isMatchedL2InsideOut( Trig_L2IOobject, mu ))
155 {
156 bool isPass = false;
158 passL2InsideOut = isPass;
159 }
160 }
161 else{
162 return StatusCode::SUCCESS;
163 }
164
165
166 fill(
m_group+
"_"+chain, passL2InsideOut, passL2SA, offPt);
167
169 fill(
m_group+
"_"+chain, passL2InsideOut, passL2SA, offEta, offPhi, offdR);
170 }
171 }
172 else{
173 if( Trig_L2IOobject == nullptr ) return StatusCode::SUCCESS;
174 if( !
m_matchTool->isMatchedL2InsideOut(Trig_L2IOobject, mu) )
return StatusCode::SUCCESS;
175
176
177
178 enum chamberID {
179 Inn_Barrel = 0,
180 Mid_Barrel,
181 Out_Barrel,
182 Inn_Endcap,
183 Mid_Endcap,
184 Out_Endcap
185 };
186 std::vector< int > L2Muon_chamberID_index;
187 auto mon_L2Muon_chamberID_index =
Monitored::Collection(chain+
"_L2Muon_chamberID_index",L2Muon_chamberID_index);
188 for(
int i = 0;
i < 6;
i++){
189 L2Muon_chamberID_index.push_back(i);
190 }
191
192
193 auto dRmin = Monitored::Scalar<float>(chain+"_dRmin",1000.);
195
196
197 const float ETA_OF_BARREL = 1.05;
198 auto regionBE = Monitored::Scalar<int>(chain+"_regionBE",-999);
199 auto isBarrel = Monitored::Scalar<bool>(chain+
"_isBarrel",
false);
200 auto isBarrelA = Monitored::Scalar<bool>(chain+"_isBarrelA",false);
201 auto isBarrelC = Monitored::Scalar<bool>(chain+"_isBarrelC",false);
202 auto isEndcap = Monitored::Scalar<bool>(chain+"_isEndcap",false);
203 auto isEndcapA = Monitored::Scalar<bool>(chain+"_isEndcapA",false);
204 auto isEndcapC = Monitored::Scalar<bool>(chain+"_isEndcapC",false);
205
206
207 auto pt4to6 = Monitored::Scalar<bool>(chain+"_pt4to6",false);
208 auto pt6to8 = Monitored::Scalar<bool>(chain+"_pt6to8",false);
209 auto ptover8 = Monitored::Scalar<bool>(chain+"_ptover8",false);
210
211
212 if( std::abs(offEta) < ETA_OF_BARREL ) {
213 regionBE = 0;
215 if( offEta > 0. ) isBarrelA = true;
216 else isBarrelC = true;
217 }
218 else{
219 regionBE = 1;
220 isEndcap = true;
221 if( offEta > 0. ) isEndcapA = true;
222 else isEndcapC = true;
223 }
224
225 if( std::abs(offPt) > 4 ){
226 if( std::abs(offPt) < 6 ) pt4to6 = true;
227 else if( std::abs(offPt) < 8 ) pt6to8 = true;
228 else ptover8 = true;
229 }
230
231
232 auto cbioPt = Monitored::Scalar<float>(chain+"_Pt_wrt_offline",-999.);
233 auto cbioEta = Monitored::Scalar<float>(chain+"_Eta_wrt_offline",-999.);
234 auto cbioPhi = Monitored::Scalar<float>(chain+"_Phi_wrt_offline",-999.);
235 cbioPt = Trig_L2IOobject->
pt()/1
e3 * Trig_L2IOobject->
charge();
236 cbioEta = Trig_L2IOobject->
eta();
237 cbioPhi = Trig_L2IOobject->
phi();
238
239
240 auto L2InsideOut_multiplicity = Monitored::Scalar<float>(chain+"_L2InsideOut_track_multiplicity",-999.);
241 L2InsideOut_multiplicity = 0;
242 std::vector< const xAOD::L2CombinedMuon* > Trig_L2IOobjects_tmp;
244 for(const auto& Trig_L2IOobject_tmp : Trig_L2IOobjects_tmp){
245 if( Trig_L2IOobject_tmp->muSATrack()->roiWord() == Trig_L2IOobject->
muSATrack()->
roiWord() ) L2InsideOut_multiplicity++;
246 }
247
248
249 auto ptresol = Monitored::Scalar<float>(chain+"_ptresol",-999.);
251 ptresol = std::abs(cbioPt)/std::abs(offPt) - 1.;
252 }
253
254 std::vector< float > ptresol_pos, ptresol_neg;
257 if( offCharge > 0. ) ptresol_pos.push_back(ptresol);
258 else ptresol_neg.push_back(ptresol);
259
260
261 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Inn_Barrel;
262 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Mid_Barrel;
263 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Out_Barrel;
264 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Inn_Endcap;
265 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Mid_Endcap;
266 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Out_Endcap;
267 auto mon_distance_bw_FTFroad_and_offlinesegment_Inn_Barrel =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Inn_Barrel",distance_bw_FTFroad_and_offlinesegment_Inn_Barrel);
268 auto mon_distance_bw_FTFroad_and_offlinesegment_Mid_Barrel =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Mid_Barrel",distance_bw_FTFroad_and_offlinesegment_Mid_Barrel);
269 auto mon_distance_bw_FTFroad_and_offlinesegment_Out_Barrel =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Out_Barrel",distance_bw_FTFroad_and_offlinesegment_Out_Barrel);
270 auto mon_distance_bw_FTFroad_and_offlinesegment_Inn_Endcap =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Inn_Endcap",distance_bw_FTFroad_and_offlinesegment_Inn_Endcap);
271 auto mon_distance_bw_FTFroad_and_offlinesegment_Mid_Endcap =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Mid_Endcap",distance_bw_FTFroad_and_offlinesegment_Mid_Endcap);
272 auto mon_distance_bw_FTFroad_and_offlinesegment_Out_Endcap =
Monitored::Collection(chain+
"_distance_bw_FTFroad_and_offlinesegment_Out_Endcap",distance_bw_FTFroad_and_offlinesegment_Out_Endcap);
273
274 std::vector< float > distance_bw_FTFroad_and_offlinesegment_vec;
275 std::vector< float > FTFroad_Aw;
276 std::vector< float > FTFroad_Bw;
277 std::vector< bool > FTFroad_fill;
278 for(
int i=0;
i<6;
i++){
279 distance_bw_FTFroad_and_offlinesegment_vec.push_back(10000.);
282 FTFroad_fill.push_back(false);
283 }
284
285
286 std::vector<float> res_Inn_Barrel, res_Mid_Barrel, res_Out_Barrel, res_Inn_Endcap, res_Mid_Endcap, res_Out_Endcap;
293
294
295 std::vector< float > distance_bw_MDT_and_offlinesegment_Inn_Barrel;
296 std::vector< float > distance_bw_MDT_and_offlinesegment_Mid_Barrel;
297 std::vector< float > distance_bw_MDT_and_offlinesegment_Out_Barrel;
298 std::vector< float > distance_bw_MDT_and_offlinesegment_Inn_Endcap;
299 std::vector< float > distance_bw_MDT_and_offlinesegment_Mid_Endcap;
300 std::vector< float > distance_bw_MDT_and_offlinesegment_Out_Endcap;
301 auto mon_distance_bw_MDT_and_offlinesegment_Inn_Barrel =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Inn_Barrel",distance_bw_MDT_and_offlinesegment_Inn_Barrel);
302 auto mon_distance_bw_MDT_and_offlinesegment_Mid_Barrel =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Mid_Barrel",distance_bw_MDT_and_offlinesegment_Mid_Barrel);
303 auto mon_distance_bw_MDT_and_offlinesegment_Out_Barrel =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Out_Barrel",distance_bw_MDT_and_offlinesegment_Out_Barrel);
304 auto mon_distance_bw_MDT_and_offlinesegment_Inn_Endcap =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Inn_Endcap",distance_bw_MDT_and_offlinesegment_Inn_Endcap);
305 auto mon_distance_bw_MDT_and_offlinesegment_Mid_Endcap =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Mid_Endcap",distance_bw_MDT_and_offlinesegment_Mid_Endcap);
306 auto mon_distance_bw_MDT_and_offlinesegment_Out_Endcap =
Monitored::Collection(chain+
"_distance_bw_MDT_and_offlinesegment_Out_Endcap",distance_bw_MDT_and_offlinesegment_Out_Endcap);
307 std::vector< float > distance_bw_MDT_and_offlinesegment_vec;
308 std::vector< int > MDTHitChamber_fill;
309 std::vector< int > MDTHitChamber;
310 std::vector< float > MDTHitR;
311 std::vector< float > MDTHitZ;
312
313
314 std::vector<int> MDT_N_Inn_Barrel, MDT_N_Mid_Barrel, MDT_N_Out_Barrel, MDT_N_Inn_Endcap, MDT_N_Mid_Endcap, MDT_N_Out_Endcap;
321 int n_mdthits_BI = 0;
322 int n_mdthits_BM = 0;
323 int n_mdthits_BO = 0;
324 int n_mdthits_EI = 0;
325 int n_mdthits_EM = 0;
326 int n_mdthits_EO = 0;
327
329 for(int i_tube=0; i_tube<n_mdt_hits; i_tube++){
333 MDTHitChamber.push_back(imr);
336
337 if( imr == Inn_Barrel ){
338 n_mdthits_BI++;
339 res_Inn_Barrel.push_back(
res);
340 }
341 else if( imr == Mid_Barrel ){
342 n_mdthits_BM++;
343 res_Mid_Barrel.push_back(
res);
344 }
345 else if( imr == Out_Barrel ){
346 n_mdthits_BO++;
347 res_Out_Barrel.push_back(
res);
348 }
349 else if( imr == Inn_Endcap ){
350 n_mdthits_EI++;
351 res_Inn_Endcap.push_back(
res);
352 }
353 else if( imr == Mid_Endcap ){
354 n_mdthits_EM++;
355 res_Mid_Endcap.push_back(
res);
356 }
357 else if( imr == Out_Endcap ){
358 n_mdthits_EO++;
359 res_Out_Endcap.push_back(
res);
360 }
361 }
362
363
364 std::vector<bool> superpoint_exist_pt4to6, superpoint_exist_pt6to8, superpoint_exist_ptover8;
365 auto mon_superpoint_exist_pt4to6 =
Monitored::Collection(chain+
"_superpoint_pt4to6",superpoint_exist_pt4to6);
366 auto mon_superpoint_exist_pt6to8 =
Monitored::Collection(chain+
"_superpoint_pt6to8",superpoint_exist_pt6to8);
367 auto mon_superpoint_exist_ptover8 =
Monitored::Collection(chain+
"_superpoint_ptover8",superpoint_exist_ptover8);
368 std::vector<bool> segment_superpoint_exist(6, false);
369 std::vector<bool> offlinesegment_exist_pt4to6, offlinesegment_exist_pt6to8, offlinesegment_exist_ptover8;
370 auto mon_offlinesegment_exist_pt4to6 =
Monitored::Collection(chain+
"_offlinesegment_pt4to6",offlinesegment_exist_pt4to6);
371 auto mon_offlinesegment_exist_pt6to8 =
Monitored::Collection(chain+
"_offlinesegment_pt6to8",offlinesegment_exist_pt6to8);
372 auto mon_offlinesegment_exist_ptover8 =
Monitored::Collection(chain+
"_offlinesegment_ptover8",offlinesegment_exist_ptover8);
373
374
375 auto superpoint_multiplicity = Monitored::Scalar<int>(chain+"_superpoint_multiplicity",0);
376 std::vector< bool > superpoint_exist;
377 std::vector< float > superpointR;
378 int Num_L2Muon_chamberID = 12;
379 for( int i_chamber = 0; i_chamber < Num_L2Muon_chamberID; i_chamber++){
381 superpoint_exist.push_back(false);
382 }
383 else{
384 superpoint_exist.push_back(true);
385 superpoint_multiplicity++;
386 }
388 }
389
390
391 std::vector< bool > segment_exist(6, false);
392 for(
unsigned int i_seg = 0; i_seg <
mu->nMuonSegments(); i_seg++){
394 if(!segment) continue;
395 float segmentX = segment->
x();
396 float segmentY = segment->
y();
397 float segmentZ = segment->
z();
398 float segmentR = std::sqrt( std::pow(segmentX, 2.0) + std::pow(segmentY, 2.0) );
399 float segmentPx = segment->
px();
400 float segmentPy = segment->
py();
401 float segmentPz = segment->
pz();
402 float segmentSector = segment->
sector();
403 using namespace Muon::MuonStationIndex;
405 float distance_bw_FTFroad_and_offlinesegment = 99999.;
406 float distance_bw_MDT_and_offlinesegment = 99999.;
407 int roadChamberIndex = -1;
408 int MDTChamberIndex = -1;
409 if( segmentChamberIndex == 0 || segmentChamberIndex == 1 ){
410 segment_exist.at(Inn_Barrel) = true;
411 roadChamberIndex = Inn_Barrel;
412 MDTChamberIndex = Inn_Barrel;
413 }
414 else if( segmentChamberIndex == 2 || segmentChamberIndex == 3 ){
415 segment_exist.at(Mid_Barrel) = true;
416 roadChamberIndex = Mid_Barrel;
417 MDTChamberIndex = Mid_Barrel;
418 }
419 else if( segmentChamberIndex == 4 || segmentChamberIndex == 5 ){
420 segment_exist.at(Out_Barrel) = true;
421 roadChamberIndex = Out_Barrel;
422 MDTChamberIndex = Out_Barrel;
423 }
424 else if( segmentChamberIndex == 7 || segmentChamberIndex == 8 ){
425 segment_exist.at(Inn_Endcap) = true;
426 roadChamberIndex = Inn_Endcap;
427 MDTChamberIndex = Inn_Endcap;
428 }
429 else if( segmentChamberIndex == 9 || segmentChamberIndex == 10 ){
430 segment_exist.at(Mid_Endcap) = true;
431 roadChamberIndex = Mid_Endcap;
432 MDTChamberIndex = Mid_Endcap;
433 }
434 else if( segmentChamberIndex == 11 || segmentChamberIndex == 12 ){
435 segment_exist.at(Out_Endcap) = true;
436 roadChamberIndex = Out_Endcap;
437 MDTChamberIndex = Out_Endcap;
438 }
439
440
441 if( roadChamberIndex != -1 ){
442 if( FTFroad_Aw.at(roadChamberIndex) >
ZERO_LIMIT || FTFroad_Bw.at(roadChamberIndex) >
ZERO_LIMIT ){
443 FTFroad_fill.at(roadChamberIndex) = true;
444 if( FTFroad_Aw.at(roadChamberIndex) <
ZERO_LIMIT) distance_bw_FTFroad_and_offlinesegment = segmentR - FTFroad_Bw.at(roadChamberIndex);
445 else{
446 float ia = 1.0/FTFroad_Aw.at(roadChamberIndex);
447 float iaq = ia * ia;
448 distance_bw_FTFroad_and_offlinesegment = (segmentZ - ia * (segmentR - FTFroad_Bw.at(roadChamberIndex)))/std::sqrt(1.0 + iaq);
449 }
450 if( std::abs(distance_bw_FTFroad_and_offlinesegment) < std::abs(distance_bw_FTFroad_and_offlinesegment_vec.at(roadChamberIndex)) )
451 distance_bw_FTFroad_and_offlinesegment_vec.at(roadChamberIndex) = distance_bw_FTFroad_and_offlinesegment;
452 }
453 }
454
455
456 if( MDTChamberIndex != -1 ){
457 float sector_phi =
M_PI*(segmentSector - 1.0)/8.0;
458 float segmentR_projection = segmentX * std::cos(sector_phi) + segmentY * std::sin(sector_phi);
459 float segmentPr_projection = segmentPx * std::cos(sector_phi) + segmentPy * std::sin(sector_phi);
460
461 for(unsigned int i_tube=0; i_tube<MDTHitChamber.size(); i_tube++){
462 if( MDTHitChamber.at(i_tube) != MDTChamberIndex ) continue;
463 if( MDTChamberIndex < 3 ){
464 if( std::abs(segmentPz) <
ZERO_LIMIT ) distance_bw_MDT_and_offlinesegment = MDTHitZ.at(i_tube) - segmentZ;
465 else{
466 float denominator = segmentPr_projection/segmentPz;
467 if( std::abs(denominator) <
ZERO_LIMIT )
continue;
468 distance_bw_MDT_and_offlinesegment = MDTHitZ.at(i_tube) - ((MDTHitR.at(i_tube) - segmentR_projection)/denominator + segmentZ);
469 }
470 }
471 else{
473 distance_bw_MDT_and_offlinesegment = MDTHitR.at(i_tube) - segmentR;
474 }
475 else{
476 float coeffi = (MDTHitZ.at(i_tube) - segmentZ)/segmentPz;
477 float segmentR_extrapolated = std::sqrt(std::pow(segmentX + coeffi * segmentPx, 2.0) + std::pow(segmentY + coeffi * segmentPy, 2.0));
478 distance_bw_MDT_and_offlinesegment = MDTHitR.at(i_tube) - segmentR_extrapolated;
479 }
480 }
481 distance_bw_MDT_and_offlinesegment_vec.push_back(distance_bw_MDT_and_offlinesegment);
482 MDTHitChamber_fill.push_back(MDTHitChamber.at(i_tube));
483 }
484 }
485 }
486
487 if( FTFroad_fill.at(Inn_Barrel) ){
488 distance_bw_FTFroad_and_offlinesegment_Inn_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Inn_Barrel));
489 }
490 if( FTFroad_fill.at(Mid_Barrel) ){
491 distance_bw_FTFroad_and_offlinesegment_Mid_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Mid_Barrel));
492 }
493 if( FTFroad_fill.at(Out_Barrel) ){
494 distance_bw_FTFroad_and_offlinesegment_Out_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Out_Barrel));
495 }
496 if( FTFroad_fill.at(Inn_Endcap) ){
497 distance_bw_FTFroad_and_offlinesegment_Inn_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Inn_Endcap));
498 }
499 if( FTFroad_fill.at(Mid_Endcap) ){
500 distance_bw_FTFroad_and_offlinesegment_Mid_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Mid_Endcap));
501 }
502 if( FTFroad_fill.at(Out_Endcap) ){
503 distance_bw_FTFroad_and_offlinesegment_Out_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Out_Endcap));
504 }
505
506 for(
unsigned int i = 0;
i < distance_bw_MDT_and_offlinesegment_vec.size();
i++ ){
507 if( MDTHitChamber_fill.at(i) == Inn_Barrel ){
508 distance_bw_MDT_and_offlinesegment_Inn_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
509 }
510 else if( MDTHitChamber_fill.at(i) == Mid_Barrel ){
511 distance_bw_MDT_and_offlinesegment_Mid_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
512 }
513 else if( MDTHitChamber_fill.at(i) == Out_Barrel ){
514 distance_bw_MDT_and_offlinesegment_Out_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
515 }
516 else if( MDTHitChamber_fill.at(i) == Inn_Endcap ){
517 distance_bw_MDT_and_offlinesegment_Inn_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
518 }
519 else if( MDTHitChamber_fill.at(i) == Mid_Endcap ){
520 distance_bw_MDT_and_offlinesegment_Mid_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
521 }
522 else if( MDTHitChamber_fill.at(i) == Out_Endcap ){
523 distance_bw_MDT_and_offlinesegment_Out_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
524 }
525 else{
526 ATH_MSG_WARNING(
"undefined chamberID is pushed back into MDTHitChamber_fill" );
527 }
528 }
529
530 if( segment_exist.at(Inn_Barrel) ){
531 MDT_N_Inn_Barrel.push_back(n_mdthits_BI);
532 segment_superpoint_exist.at(Inn_Barrel) = superpoint_exist.at(Inn_Barrel);
533 }
534 if( segment_exist.at(Mid_Barrel) ){
535 MDT_N_Mid_Barrel.push_back(n_mdthits_BM);
536 segment_superpoint_exist.at(Mid_Barrel) = superpoint_exist.at(Mid_Barrel);
537 }
538 if( segment_exist.at(Out_Barrel) ){
539 MDT_N_Out_Barrel.push_back(n_mdthits_BO);
540 segment_superpoint_exist.at(Out_Barrel) = superpoint_exist.at(Out_Barrel);
541 }
542 if( segment_exist.at(Inn_Endcap) ){
543 MDT_N_Inn_Endcap.push_back(n_mdthits_EI);
544 segment_superpoint_exist.at(Inn_Endcap) = superpoint_exist.at(Inn_Endcap);
545 }
546 if( segment_exist.at(Mid_Endcap) ){
547 MDT_N_Mid_Endcap.push_back(n_mdthits_EM);
548 segment_superpoint_exist.at(Mid_Endcap) = superpoint_exist.at(Mid_Endcap);
549 }
550 if( segment_exist.at(Out_Endcap) ){
551 MDT_N_Out_Endcap.push_back(n_mdthits_EO);
552 segment_superpoint_exist.at(Out_Endcap) = superpoint_exist.at(Out_Endcap);
553 }
554
555 if( pt4to6 ){
556 offlinesegment_exist_pt4to6 = segment_exist;
557 superpoint_exist_pt4to6 = segment_superpoint_exist;
558 }
559 else if( pt6to8 ){
560 offlinesegment_exist_pt6to8 = segment_exist;
561 superpoint_exist_pt6to8 = segment_superpoint_exist;
562 }
563 else if( ptover8 ){
564 offlinesegment_exist_ptover8 = segment_exist;
565 superpoint_exist_ptover8 = segment_superpoint_exist;
566 }
567
568 fill(
m_group+
"_"+chain, dRmin, isBarrel, isEndcap);
569 fill(
m_group+
"_"+chain, cbioPt, isBarrel, isEndcap);
571 fill(
m_group+
"_"+chain, cbioPhi, isBarrel, isEndcap);
572 fill(
m_group+
"_"+chain, L2InsideOut_multiplicity, offPt, isBarrel, isEndcap);
573 fill(
m_group+
"_"+chain, ptresol, offEta, pt4to6, pt6to8, ptover8);
574 fill(
m_group+
"_"+chain, ptresol, offPt, isBarrelA, isBarrelC, isEndcapA, isEndcapC);
575 fill(
m_group+
"_"+chain, mon_ptresol_pos, mon_ptresol_neg, isBarrelA, isBarrelC, isEndcapA, isEndcapC);
576 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Inn_Barrel, pt4to6, pt6to8, ptover8);
577 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Mid_Barrel, pt4to6, pt6to8, ptover8);
578 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Out_Barrel, pt4to6, pt6to8, ptover8);
579 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Inn_Endcap, pt4to6, pt6to8, ptover8);
580 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Mid_Endcap, pt4to6, pt6to8, ptover8);
581 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Out_Endcap, pt4to6, pt6to8, ptover8);
588 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Inn_Barrel);
589 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Mid_Barrel);
590 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Out_Barrel);
591 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Inn_Endcap);
592 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Mid_Endcap);
593 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Out_Endcap);
600 fill(
m_group+
"_"+chain, superpoint_multiplicity, regionBE, pt4to6, pt6to8, ptover8);
601 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_pt4to6, mon_offlinesegment_exist_pt4to6);
602 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_pt6to8, mon_offlinesegment_exist_pt6to8);
603 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_ptover8, mon_offlinesegment_exist_ptover8);
604 }
605
606 return StatusCode::SUCCESS;
607}
ElementLink()
Default constructor.
std::pair< std::vector< unsigned int >, bool > res
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
const xAOD::Muon * searchTagOfflineMuon(const EventContext &ctx, const xAOD::Muon *probe) const
StatusCode isPassedmuCombHypo(const std::string &chain, const xAOD::L2CombinedMuon *Trig_L2IOobjects, bool &pass_muCombHypo) const
std::map< std::string, double > m_plateaus
const xAOD::L2CombinedMuon * searchL2InsideOut(const EventContext &ctx, const xAOD::Muon *mu, const std::string &trigger) const
ToolHandle< MuonMatchingTool > m_matchTool
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
float charge() const
get seeding muon charge
virtual double pt() const
The transverse momentum ( ) of the particle.
const xAOD::L2StandAloneMuon * muSATrack() const
Get the SA muon as a bare pointer.
int mdtHitChamber(unsigned int tube) const
float roadAw(int station, int sector) const
Slope.
float roadBw(int station, int sector) const
Intercept.
float mdtHitZ(unsigned int tube) const
float mdtHitResidual(unsigned int tube) const
int mdtHitIsOutlier(unsigned int tube) const
float mdtHitR(unsigned int tube) const
uint32_t nMdtHits() const
Get the online ID, offline ID, R, Z, redidual, time, space and sigma of each MDT tube.
uint32_t roiWord() const
Get the RoI ID of the seeding LVL1 muon.
float superPointR(int chamber) const
Get the measured radious of the muon in one particular super point.
float y() const
Returns the x position.
float pz() const
Returns the pz.
float py() const
Returns the py.
::Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index.
float z() const
Returns the y position.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
constexpr int toInt(const EnumType enumVal)
@ ACTIVE
The link was still active for one-or-more of the HLT Chains requested in the TDT.
const std::string & featureString()
static const unsigned int requireDecision
static const unsigned int includeFailedDecisions
Run3 synonym of alsoDeactivateTEs.
static const unsigned int lastFeatureOfType
Run 3 "enum". Only return the final feature along each route through the navigation.
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
L2CombinedMuon_v1 L2CombinedMuon
Define the latest version of the muon CB class.
L2StandAloneMuonContainer_v2 L2StandAloneMuonContainer
Define the latest version of the muon SA container.
MuonSegment_v1 MuonSegment
Reference the current persistent version: