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 ElementLink<xAOD::TrackParticleContainer> &tag_ms_track =
tag->muonSpectrometerTrackParticleLink();
128 if( !tag_ms_track.
isValid() )
return StatusCode::SUCCESS;
129 const ElementLink<xAOD::TrackParticleContainer> &probe_ms_track =
mu->muonSpectrometerTrackParticleLink();
130 if( !probe_ms_track.
isValid() )
return StatusCode::SUCCESS;
131 float tpext_deta = (*tag_ms_track)->eta() - (*probe_ms_track)->eta();
133 offdR = std::sqrt(tpext_deta*tpext_deta + tpext_dphi*tpext_dphi);
134
135 passL2InsideOut = false;
136 passL2SA = false;
137
138
139 int legIndex_probe = 1;
142 "HLT_MuonL2SAInfo",
145 legIndex_probe );
146
147 for(const TrigCompositeUtils::LinkInfo<xAOD::L2StandAloneMuonContainer>& probe_L2SALinkInfo : featureCont){
148 ATH_CHECK( probe_L2SALinkInfo.isValid() );
149 const ElementLink<xAOD::L2StandAloneMuonContainer> probe_L2SAobject = probe_L2SALinkInfo.link;
150 if(
m_matchTool->isMatchedL2SA( (*probe_L2SAobject), mu ) ){
152 }
153 }
154
155 if(passL2SA == true){
156 if(
m_matchTool->isMatchedL2InsideOut( Trig_L2IOobject, mu ))
157 {
158 bool isPass = false;
160 passL2InsideOut = isPass;
161 }
162 }
163 else{
164 return StatusCode::SUCCESS;
165 }
166
167
168 fill(
m_group+
"_"+chain, passL2InsideOut, passL2SA, offPt);
169
171 fill(
m_group+
"_"+chain, passL2InsideOut, passL2SA, offEta, offPhi, offdR);
172 }
173 }
174 else{
175 if( Trig_L2IOobject == nullptr ) return StatusCode::SUCCESS;
176 if( !
m_matchTool->isMatchedL2InsideOut(Trig_L2IOobject, mu) )
return StatusCode::SUCCESS;
177
178
179
180 enum chamberID {
181 Inn_Barrel = 0,
182 Mid_Barrel,
183 Out_Barrel,
184 Inn_Endcap,
185 Mid_Endcap,
186 Out_Endcap
187 };
188 std::vector< int > L2Muon_chamberID_index;
189 auto mon_L2Muon_chamberID_index =
Monitored::Collection(chain+
"_L2Muon_chamberID_index",L2Muon_chamberID_index);
190 for(
int i = 0;
i < 6;
i++){
191 L2Muon_chamberID_index.push_back(i);
192 }
193
194
195 auto dRmin = Monitored::Scalar<float>(chain+"_dRmin",1000.);
197
198
199 const float ETA_OF_BARREL = 1.05;
200 auto regionBE = Monitored::Scalar<int>(chain+"_regionBE",-999);
201 auto isBarrel = Monitored::Scalar<bool>(chain+
"_isBarrel",
false);
202 auto isBarrelA = Monitored::Scalar<bool>(chain+"_isBarrelA",false);
203 auto isBarrelC = Monitored::Scalar<bool>(chain+"_isBarrelC",false);
204 auto isEndcap = Monitored::Scalar<bool>(chain+"_isEndcap",false);
205 auto isEndcapA = Monitored::Scalar<bool>(chain+"_isEndcapA",false);
206 auto isEndcapC = Monitored::Scalar<bool>(chain+"_isEndcapC",false);
207
208
209 auto pt4to6 = Monitored::Scalar<bool>(chain+"_pt4to6",false);
210 auto pt6to8 = Monitored::Scalar<bool>(chain+"_pt6to8",false);
211 auto ptover8 = Monitored::Scalar<bool>(chain+"_ptover8",false);
212
213
214 if( std::abs(offEta) < ETA_OF_BARREL ) {
215 regionBE = 0;
217 if( offEta > 0. ) isBarrelA = true;
218 else isBarrelC = true;
219 }
220 else{
221 regionBE = 1;
222 isEndcap = true;
223 if( offEta > 0. ) isEndcapA = true;
224 else isEndcapC = true;
225 }
226
227 if( std::abs(offPt) > 4 ){
228 if( std::abs(offPt) < 6 ) pt4to6 = true;
229 else if( std::abs(offPt) < 8 ) pt6to8 = true;
230 else ptover8 = true;
231 }
232
233
234 auto cbioPt = Monitored::Scalar<float>(chain+"_Pt_wrt_offline",-999.);
235 auto cbioEta = Monitored::Scalar<float>(chain+"_Eta_wrt_offline",-999.);
236 auto cbioPhi = Monitored::Scalar<float>(chain+"_Phi_wrt_offline",-999.);
237 cbioPt = Trig_L2IOobject->
pt()/1
e3 * Trig_L2IOobject->
charge();
238 cbioEta = Trig_L2IOobject->
eta();
239 cbioPhi = Trig_L2IOobject->
phi();
240
241
242 auto L2InsideOut_multiplicity = Monitored::Scalar<float>(chain+"_L2InsideOut_track_multiplicity",-999.);
243 L2InsideOut_multiplicity = 0;
244 std::vector< const xAOD::L2CombinedMuon* > Trig_L2IOobjects_tmp;
246 for(const auto& Trig_L2IOobject_tmp : Trig_L2IOobjects_tmp){
247 if( Trig_L2IOobject_tmp->muSATrack()->roiWord() == Trig_L2IOobject->
muSATrack()->
roiWord() ) L2InsideOut_multiplicity++;
248 }
249
250
251 auto ptresol = Monitored::Scalar<float>(chain+"_ptresol",-999.);
253 ptresol = std::abs(cbioPt)/std::abs(offPt) - 1.;
254 }
255
256 std::vector< float > ptresol_pos, ptresol_neg;
259 if( offCharge > 0. ) ptresol_pos.push_back(ptresol);
260 else ptresol_neg.push_back(ptresol);
261
262
263 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Inn_Barrel;
264 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Mid_Barrel;
265 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Out_Barrel;
266 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Inn_Endcap;
267 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Mid_Endcap;
268 std::vector< float > distance_bw_FTFroad_and_offlinesegment_Out_Endcap;
269 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);
270 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);
271 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);
272 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);
273 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);
274 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);
275
276 std::vector< float > distance_bw_FTFroad_and_offlinesegment_vec;
277 std::vector< float > FTFroad_Aw;
278 std::vector< float > FTFroad_Bw;
279 std::vector< bool > FTFroad_fill;
280 for(
int i=0;
i<6;
i++){
281 distance_bw_FTFroad_and_offlinesegment_vec.push_back(10000.);
284 FTFroad_fill.push_back(false);
285 }
286
287
288 std::vector<float> res_Inn_Barrel, res_Mid_Barrel, res_Out_Barrel, res_Inn_Endcap, res_Mid_Endcap, res_Out_Endcap;
295
296
297 std::vector< float > distance_bw_MDT_and_offlinesegment_Inn_Barrel;
298 std::vector< float > distance_bw_MDT_and_offlinesegment_Mid_Barrel;
299 std::vector< float > distance_bw_MDT_and_offlinesegment_Out_Barrel;
300 std::vector< float > distance_bw_MDT_and_offlinesegment_Inn_Endcap;
301 std::vector< float > distance_bw_MDT_and_offlinesegment_Mid_Endcap;
302 std::vector< float > distance_bw_MDT_and_offlinesegment_Out_Endcap;
303 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);
304 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);
305 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);
306 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);
307 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);
308 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);
309 std::vector< float > distance_bw_MDT_and_offlinesegment_vec;
310 std::vector< int > MDTHitChamber_fill;
311 std::vector< int > MDTHitChamber;
312 std::vector< float > MDTHitR;
313 std::vector< float > MDTHitZ;
314
315
316 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;
323 int n_mdthits_BI = 0;
324 int n_mdthits_BM = 0;
325 int n_mdthits_BO = 0;
326 int n_mdthits_EI = 0;
327 int n_mdthits_EM = 0;
328 int n_mdthits_EO = 0;
329
331 for(int i_tube=0; i_tube<n_mdt_hits; i_tube++){
335 MDTHitChamber.push_back(imr);
338
339 if( imr == Inn_Barrel ){
340 n_mdthits_BI++;
341 res_Inn_Barrel.push_back(
res);
342 }
343 else if( imr == Mid_Barrel ){
344 n_mdthits_BM++;
345 res_Mid_Barrel.push_back(
res);
346 }
347 else if( imr == Out_Barrel ){
348 n_mdthits_BO++;
349 res_Out_Barrel.push_back(
res);
350 }
351 else if( imr == Inn_Endcap ){
352 n_mdthits_EI++;
353 res_Inn_Endcap.push_back(
res);
354 }
355 else if( imr == Mid_Endcap ){
356 n_mdthits_EM++;
357 res_Mid_Endcap.push_back(
res);
358 }
359 else if( imr == Out_Endcap ){
360 n_mdthits_EO++;
361 res_Out_Endcap.push_back(
res);
362 }
363 }
364
365
366 std::vector<bool> superpoint_exist_pt4to6, superpoint_exist_pt6to8, superpoint_exist_ptover8;
367 auto mon_superpoint_exist_pt4to6 =
Monitored::Collection(chain+
"_superpoint_pt4to6",superpoint_exist_pt4to6);
368 auto mon_superpoint_exist_pt6to8 =
Monitored::Collection(chain+
"_superpoint_pt6to8",superpoint_exist_pt6to8);
369 auto mon_superpoint_exist_ptover8 =
Monitored::Collection(chain+
"_superpoint_ptover8",superpoint_exist_ptover8);
370 std::vector<bool> segment_superpoint_exist(6, false);
371 std::vector<bool> offlinesegment_exist_pt4to6, offlinesegment_exist_pt6to8, offlinesegment_exist_ptover8;
372 auto mon_offlinesegment_exist_pt4to6 =
Monitored::Collection(chain+
"_offlinesegment_pt4to6",offlinesegment_exist_pt4to6);
373 auto mon_offlinesegment_exist_pt6to8 =
Monitored::Collection(chain+
"_offlinesegment_pt6to8",offlinesegment_exist_pt6to8);
374 auto mon_offlinesegment_exist_ptover8 =
Monitored::Collection(chain+
"_offlinesegment_ptover8",offlinesegment_exist_ptover8);
375
376
377 auto superpoint_multiplicity = Monitored::Scalar<int>(chain+"_superpoint_multiplicity",0);
378 std::vector< bool > superpoint_exist;
379 std::vector< float > superpointR;
380 int Num_L2Muon_chamberID = 12;
381 for( int i_chamber = 0; i_chamber < Num_L2Muon_chamberID; i_chamber++){
383 superpoint_exist.push_back(false);
384 }
385 else{
386 superpoint_exist.push_back(true);
387 superpoint_multiplicity++;
388 }
390 }
391
392
393 std::vector< bool > segment_exist(6, false);
394 for(
unsigned int i_seg = 0; i_seg <
mu->nMuonSegments(); i_seg++){
396 if(!segment) continue;
397 float segmentX = segment->
x();
398 float segmentY = segment->
y();
399 float segmentZ = segment->
z();
400 float segmentR = std::sqrt( std::pow(segmentX, 2.0) + std::pow(segmentY, 2.0) );
401 float segmentPx = segment->
px();
402 float segmentPy = segment->
py();
403 float segmentPz = segment->
pz();
404 float segmentSector = segment->
sector();
405 using namespace Muon::MuonStationIndex;
407 float distance_bw_FTFroad_and_offlinesegment = 99999.;
408 float distance_bw_MDT_and_offlinesegment = 99999.;
409 int roadChamberIndex = -1;
410 int MDTChamberIndex = -1;
411 if( segmentChamberIndex == 0 || segmentChamberIndex == 1 ){
412 segment_exist.at(Inn_Barrel) = true;
413 roadChamberIndex = Inn_Barrel;
414 MDTChamberIndex = Inn_Barrel;
415 }
416 else if( segmentChamberIndex == 2 || segmentChamberIndex == 3 ){
417 segment_exist.at(Mid_Barrel) = true;
418 roadChamberIndex = Mid_Barrel;
419 MDTChamberIndex = Mid_Barrel;
420 }
421 else if( segmentChamberIndex == 4 || segmentChamberIndex == 5 ){
422 segment_exist.at(Out_Barrel) = true;
423 roadChamberIndex = Out_Barrel;
424 MDTChamberIndex = Out_Barrel;
425 }
426 else if( segmentChamberIndex == 7 || segmentChamberIndex == 8 ){
427 segment_exist.at(Inn_Endcap) = true;
428 roadChamberIndex = Inn_Endcap;
429 MDTChamberIndex = Inn_Endcap;
430 }
431 else if( segmentChamberIndex == 9 || segmentChamberIndex == 10 ){
432 segment_exist.at(Mid_Endcap) = true;
433 roadChamberIndex = Mid_Endcap;
434 MDTChamberIndex = Mid_Endcap;
435 }
436 else if( segmentChamberIndex == 11 || segmentChamberIndex == 12 ){
437 segment_exist.at(Out_Endcap) = true;
438 roadChamberIndex = Out_Endcap;
439 MDTChamberIndex = Out_Endcap;
440 }
441
442
443 if( roadChamberIndex != -1 ){
444 if( FTFroad_Aw.at(roadChamberIndex) >
ZERO_LIMIT || FTFroad_Bw.at(roadChamberIndex) >
ZERO_LIMIT ){
445 FTFroad_fill.at(roadChamberIndex) = true;
446 if( FTFroad_Aw.at(roadChamberIndex) <
ZERO_LIMIT) distance_bw_FTFroad_and_offlinesegment = segmentR - FTFroad_Bw.at(roadChamberIndex);
447 else{
448 float ia = 1.0/FTFroad_Aw.at(roadChamberIndex);
449 float iaq = ia * ia;
450 distance_bw_FTFroad_and_offlinesegment = (segmentZ - ia * (segmentR - FTFroad_Bw.at(roadChamberIndex)))/std::sqrt(1.0 + iaq);
451 }
452 if( std::abs(distance_bw_FTFroad_and_offlinesegment) < std::abs(distance_bw_FTFroad_and_offlinesegment_vec.at(roadChamberIndex)) )
453 distance_bw_FTFroad_and_offlinesegment_vec.at(roadChamberIndex) = distance_bw_FTFroad_and_offlinesegment;
454 }
455 }
456
457
458 if( MDTChamberIndex != -1 ){
459 float sector_phi =
M_PI*(segmentSector - 1.0)/8.0;
460 float segmentR_projection = segmentX * std::cos(sector_phi) + segmentY * std::sin(sector_phi);
461 float segmentPr_projection = segmentPx * std::cos(sector_phi) + segmentPy * std::sin(sector_phi);
462
463 for(unsigned int i_tube=0; i_tube<MDTHitChamber.size(); i_tube++){
464 if( MDTHitChamber.at(i_tube) != MDTChamberIndex ) continue;
465 if( MDTChamberIndex < 3 ){
466 if( std::abs(segmentPz) <
ZERO_LIMIT ) distance_bw_MDT_and_offlinesegment = MDTHitZ.at(i_tube) - segmentZ;
467 else{
468 float denominator = segmentPr_projection/segmentPz;
469 if( std::abs(denominator) <
ZERO_LIMIT )
continue;
470 distance_bw_MDT_and_offlinesegment = MDTHitZ.at(i_tube) - ((MDTHitR.at(i_tube) - segmentR_projection)/denominator + segmentZ);
471 }
472 }
473 else{
475 distance_bw_MDT_and_offlinesegment = MDTHitR.at(i_tube) - segmentR;
476 }
477 else{
478 float coeffi = (MDTHitZ.at(i_tube) - segmentZ)/segmentPz;
479 float segmentR_extrapolated = std::sqrt(std::pow(segmentX + coeffi * segmentPx, 2.0) + std::pow(segmentY + coeffi * segmentPy, 2.0));
480 distance_bw_MDT_and_offlinesegment = MDTHitR.at(i_tube) - segmentR_extrapolated;
481 }
482 }
483 distance_bw_MDT_and_offlinesegment_vec.push_back(distance_bw_MDT_and_offlinesegment);
484 MDTHitChamber_fill.push_back(MDTHitChamber.at(i_tube));
485 }
486 }
487 }
488
489 if( FTFroad_fill.at(Inn_Barrel) ){
490 distance_bw_FTFroad_and_offlinesegment_Inn_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Inn_Barrel));
491 }
492 if( FTFroad_fill.at(Mid_Barrel) ){
493 distance_bw_FTFroad_and_offlinesegment_Mid_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Mid_Barrel));
494 }
495 if( FTFroad_fill.at(Out_Barrel) ){
496 distance_bw_FTFroad_and_offlinesegment_Out_Barrel.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Out_Barrel));
497 }
498 if( FTFroad_fill.at(Inn_Endcap) ){
499 distance_bw_FTFroad_and_offlinesegment_Inn_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Inn_Endcap));
500 }
501 if( FTFroad_fill.at(Mid_Endcap) ){
502 distance_bw_FTFroad_and_offlinesegment_Mid_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Mid_Endcap));
503 }
504 if( FTFroad_fill.at(Out_Endcap) ){
505 distance_bw_FTFroad_and_offlinesegment_Out_Endcap.push_back(distance_bw_FTFroad_and_offlinesegment_vec.at(Out_Endcap));
506 }
507
508 for(
unsigned int i = 0;
i < distance_bw_MDT_and_offlinesegment_vec.size();
i++ ){
509 if( MDTHitChamber_fill.at(i) == Inn_Barrel ){
510 distance_bw_MDT_and_offlinesegment_Inn_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
511 }
512 else if( MDTHitChamber_fill.at(i) == Mid_Barrel ){
513 distance_bw_MDT_and_offlinesegment_Mid_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
514 }
515 else if( MDTHitChamber_fill.at(i) == Out_Barrel ){
516 distance_bw_MDT_and_offlinesegment_Out_Barrel.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
517 }
518 else if( MDTHitChamber_fill.at(i) == Inn_Endcap ){
519 distance_bw_MDT_and_offlinesegment_Inn_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
520 }
521 else if( MDTHitChamber_fill.at(i) == Mid_Endcap ){
522 distance_bw_MDT_and_offlinesegment_Mid_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
523 }
524 else if( MDTHitChamber_fill.at(i) == Out_Endcap ){
525 distance_bw_MDT_and_offlinesegment_Out_Endcap.push_back(distance_bw_MDT_and_offlinesegment_vec.at(i));
526 }
527 else{
528 ATH_MSG_WARNING(
"undefined chamberID is pushed back into MDTHitChamber_fill" );
529 }
530 }
531
532 if( segment_exist.at(Inn_Barrel) ){
533 MDT_N_Inn_Barrel.push_back(n_mdthits_BI);
534 segment_superpoint_exist.at(Inn_Barrel) = superpoint_exist.at(Inn_Barrel);
535 }
536 if( segment_exist.at(Mid_Barrel) ){
537 MDT_N_Mid_Barrel.push_back(n_mdthits_BM);
538 segment_superpoint_exist.at(Mid_Barrel) = superpoint_exist.at(Mid_Barrel);
539 }
540 if( segment_exist.at(Out_Barrel) ){
541 MDT_N_Out_Barrel.push_back(n_mdthits_BO);
542 segment_superpoint_exist.at(Out_Barrel) = superpoint_exist.at(Out_Barrel);
543 }
544 if( segment_exist.at(Inn_Endcap) ){
545 MDT_N_Inn_Endcap.push_back(n_mdthits_EI);
546 segment_superpoint_exist.at(Inn_Endcap) = superpoint_exist.at(Inn_Endcap);
547 }
548 if( segment_exist.at(Mid_Endcap) ){
549 MDT_N_Mid_Endcap.push_back(n_mdthits_EM);
550 segment_superpoint_exist.at(Mid_Endcap) = superpoint_exist.at(Mid_Endcap);
551 }
552 if( segment_exist.at(Out_Endcap) ){
553 MDT_N_Out_Endcap.push_back(n_mdthits_EO);
554 segment_superpoint_exist.at(Out_Endcap) = superpoint_exist.at(Out_Endcap);
555 }
556
557 if( pt4to6 ){
558 offlinesegment_exist_pt4to6 = segment_exist;
559 superpoint_exist_pt4to6 = segment_superpoint_exist;
560 }
561 else if( pt6to8 ){
562 offlinesegment_exist_pt6to8 = segment_exist;
563 superpoint_exist_pt6to8 = segment_superpoint_exist;
564 }
565 else if( ptover8 ){
566 offlinesegment_exist_ptover8 = segment_exist;
567 superpoint_exist_ptover8 = segment_superpoint_exist;
568 }
569
570 fill(
m_group+
"_"+chain, dRmin, isBarrel, isEndcap);
571 fill(
m_group+
"_"+chain, cbioPt, isBarrel, isEndcap);
573 fill(
m_group+
"_"+chain, cbioPhi, isBarrel, isEndcap);
574 fill(
m_group+
"_"+chain, L2InsideOut_multiplicity, offPt, isBarrel, isEndcap);
575 fill(
m_group+
"_"+chain, ptresol, offEta, pt4to6, pt6to8, ptover8);
576 fill(
m_group+
"_"+chain, ptresol, offPt, isBarrelA, isBarrelC, isEndcapA, isEndcapC);
577 fill(
m_group+
"_"+chain, mon_ptresol_pos, mon_ptresol_neg, isBarrelA, isBarrelC, isEndcapA, isEndcapC);
578 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Inn_Barrel, pt4to6, pt6to8, ptover8);
579 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Mid_Barrel, pt4to6, pt6to8, ptover8);
580 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Out_Barrel, pt4to6, pt6to8, ptover8);
581 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Inn_Endcap, pt4to6, pt6to8, ptover8);
582 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Mid_Endcap, pt4to6, pt6to8, ptover8);
583 fill(
m_group+
"_"+chain, mon_distance_bw_FTFroad_and_offlinesegment_Out_Endcap, pt4to6, pt6to8, ptover8);
590 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Inn_Barrel);
591 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Mid_Barrel);
592 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Out_Barrel);
593 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Inn_Endcap);
594 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Mid_Endcap);
595 fill(
m_group+
"_"+chain, mon_distance_bw_MDT_and_offlinesegment_Out_Endcap);
602 fill(
m_group+
"_"+chain, superpoint_multiplicity, regionBE, pt4to6, pt6to8, ptover8);
603 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_pt4to6, mon_offlinesegment_exist_pt4to6);
604 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_pt6to8, mon_offlinesegment_exist_pt6to8);
605 fill(
m_group+
"_"+chain, mon_L2Muon_chamberID_index, mon_superpoint_exist_ptover8, mon_offlinesegment_exist_ptover8);
606 }
607
608 return StatusCode::SUCCESS;
609}
std::pair< std::vector< unsigned int >, bool > res
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
bool isValid() const
Test to see if the link can be dereferenced.
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: