30 return StatusCode::SUCCESS;
59 Quality =
muon->quality();
65 tp =
muon->trackParticle(xAOD::Muon::ExtrapolatedMuonSpectrometerTrackParticle);
68 tp =
muon->trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle);
79 deltaZ0 =
tp->z0() +
tp->vz() - pvtx->
z();
84 fill(
tool,
Author, Quality,
Type,
Eta,
Phi,
Pt, D0,
Z0, chi2ndof, deltaZ0, D0sig);
86 return StatusCode::SUCCESS;
136 for(
unsigned int n=0;
n<vecMuons.size();
n++) {
138 xAOD::Muon::MuonType muonType =
muon->muonType();
139 xAOD::Muon::Quality muonQuality =
muon->quality();
146 MuonPhi =
muon->phi();
159 uint8_t hitval_numberOfBLayerHits, hitval_numberOfPixelHits, hitval_numberOfSCTHits, hitval_numberOfTRTHits;
171 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
172 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
173 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
174 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
175 fill(
tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
176 MuonsNBHitsAvg = hitval_numberOfBLayerHits / vecMuons.size();
177 MuonsNPixHitsAvg = hitval_numberOfPixelHits / vecMuons.size();
178 MuonsNSCTHitsAvg = hitval_numberOfSCTHits / vecMuons.size();
179 MuonsNTRTHitsAvg = hitval_numberOfTRTHits / vecMuons.size();
180 fill(
tool, MuonsNBHitsAvg, MuonsNPixHitsAvg, MuonsNSCTHitsAvg, MuonsNTRTHitsAvg);
183 uint8_t hitval_nEtaLayer1{0}, hitval_nEtaLayer2{0}, hitval_nEtaLayer3{0}, hitval_nEtaLayer4{0};
184 uint8_t hitval_nPhiLayer1{0}, hitval_nPhiLayer2{0}, hitval_nPhiLayer3{0}, hitval_nPhiLayer4{0};
193 MuonsEtaHitsLayer1 =
static_cast<unsigned int>(hitval_nEtaLayer1);
194 MuonsEtaHitsLayer2 =
static_cast<unsigned int>(hitval_nEtaLayer2);
195 MuonsEtaHitsLayer3 =
static_cast<unsigned int>(hitval_nEtaLayer3);
196 MuonsEtaHitsLayer4 =
static_cast<unsigned int>(hitval_nEtaLayer4);
197 MuonsPhiHitsLayer1 =
static_cast<unsigned int>(hitval_nPhiLayer1);
198 MuonsPhiHitsLayer2 =
static_cast<unsigned int>(hitval_nPhiLayer2);
199 MuonsPhiHitsLayer3 =
static_cast<unsigned int>(hitval_nPhiLayer3);
200 MuonsPhiHitsLayer4 =
static_cast<unsigned int>(hitval_nPhiLayer4);
201 fill(
tool, MuonsEtaHitsLayer1, MuonsEtaHitsLayer2, MuonsEtaHitsLayer3, MuonsEtaHitsLayer4, MuonsPhiHitsLayer1, MuonsPhiHitsLayer2, MuonsPhiHitsLayer3, MuonsPhiHitsLayer4);
206 MuonEtaMedium = cbtp->
eta();
207 MuonPhiMedium = cbtp->
phi();
208 fill(
tool, MuonEtaMedium, MuonPhiMedium);
211 MuonEtaTight = cbtp->
eta();
212 MuonPhiTight = cbtp->
phi();
213 fill(
tool, MuonEtaTight, MuonPhiTight);
217 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
218 MuonDPTCBME = (cbtp->
pt() - metp->
pt()) / cbtp->
pt();
219 MuonDPTIDMECB = (idtp->
pt() - metp->
pt()) / cbtp->
pt();
222 fill(
tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
235 uint8_t hitval_numberOfBLayerHits{0}, hitval_numberOfPixelHits{0}, hitval_numberOfSCTHits{0}, hitval_numberOfTRTHits{0};
240 MuonsNBHits =
static_cast<unsigned int>(hitval_numberOfBLayerHits);
241 MuonsNPixHits =
static_cast<unsigned int>(hitval_numberOfPixelHits);
242 MuonsNSCTHits =
static_cast<unsigned int>(hitval_numberOfSCTHits);
243 MuonsNTRTHits =
static_cast<unsigned int>(hitval_numberOfTRTHits);
244 fill(
tool, MuonsNBHits, MuonsNPixHits, MuonsNSCTHits, MuonsNTRTHits);
248 MuonDPTIDME = (idtp->
pt() - metp->
pt()) / idtp->
pt();
251 fill(
tool, MuonDPTIDME, MuonsIDchi2ndof, MuonsMEchi2ndof);
257 auto muonEta =
muon->eta();
259 if (muonEta > 1.05) {
261 }
else if (muonEta > 0) {
263 }
else if (muonEta > -1.05) {
265 }
else if (muonEta <= -1.05) {
271 auto muonEta =
muon->eta();
272 if (muonEta > 1.05) {
274 }
else if (muonEta > 0) {
276 }
else if (muonEta > -1.05) {
278 }
else if (muonEta <= -1.05) {
284 auto muonEta =
muon->eta();
285 if (muonEta > 1.05) {
287 }
else if (muonEta > 0) {
289 }
else if (muonEta > -1.05) {
291 }
else if (muonEta <= -1.05) {
297 return StatusCode::SUCCESS;
334 xAOD::Muon::Quality muonQuality =
muon->quality();
335 xAOD::Muon::MuonType muonType =
muon->muonType();
337 MuonLumiBlock = lumiBlockID;
341 MuonAuthor = muonAuthor;
342 MuonQuality = muonQuality;
345 MuonPhi =
muon->phi();
351 MuonEtaHi =
muon->eta();
352 MuonPhiHi =
muon->phi();
354 fill(
tool, MuonEtaHi, MuonPhiHi, MuonPtHi);
358 for (
size_t nSeg=0; nSeg <
muon->nMuonSegments(); nSeg++) {
364 MuonSmallSectorR = MuonLargeSectorR = std::hypot(muonSegment->
x(), muonSegment->
y());
365 MuonSmallSectorZ = MuonLargeSectorZ = muonSegment->
z();
366 MuonSector = muonSegment->
sector();
368 int sector = muonSegment->
sector();
369 if(sector % 2 == 0) {
370 fill(
tool, MuonLargeSectorZ, MuonLargeSectorR, MuonSector, MuonCIndex);
372 fill(
tool, MuonSmallSectorZ, MuonSmallSectorR, MuonSector, MuonCIndex);
374 const double muonSegmentEta =
Amg::Vector3D(muonSegment->
px(), muonSegment->
py(), muonSegment->
pz()).eta();
375 if (std::abs(muonSegmentEta) > 1.05) {
376 SegmentXPosEndcap = muonSegment->
x();
377 SegmentYPosEndcap = muonSegment->
y();
378 fill(
tool, SegmentXPosEndcap, SegmentYPosEndcap);
380 SegmentXPosBarrel = muonSegment->
x();
381 SegmentYPosBarrel = muonSegment->
y();
382 fill(
tool, SegmentXPosBarrel, SegmentYPosBarrel);
387 return StatusCode::SUCCESS;
409 std::vector<const xAOD::Muon*> vecAllCombinedMuons;
410 std::vector<const xAOD::Muon*> vecCombinedMuons;
411 std::vector<const xAOD::Muon*> vecNoTrigCombinedMuons;
414 std::vector<const xAOD::Muon*> vecAllNonCombinedMuons;
415 std::vector<const xAOD::Muon*> vecNonCombinedMuons;
416 std::vector<const xAOD::Muon*> vecNoTrigNonCombinedMuons;
426 bool isTriggered =
false;
441 xAOD::Muon::MuonType muonType =
muon->muonType();
443 vecAllCombinedMuons.push_back(
muon);
445 vecCombinedMuons.push_back(
muon);
448 MuonPrefix =
"TrigCB";
451 vecNoTrigCombinedMuons.push_back(
muon);
452 MuonPrefix =
"NoTrigCB";
453 n_muons_no_trig_cb++;
457 vecAllNonCombinedMuons.push_back(
muon);
459 vecNonCombinedMuons.push_back(
muon);
461 n_muons_trig_noncb++;
462 MuonPrefix =
"TrigNonCB";
465 vecNoTrigNonCombinedMuons.push_back(
muon);
466 MuonPrefix =
"NoTrigNonCB";
467 n_muons_no_trig_noncb++;
471 for (
size_t nSeg=0; nSeg <
muon->nMuonSegments(); nSeg++) {
472 LumiBlockNumberOfSegments =
evt.lumiBlock();
473 fill(
tool, LumiBlockNumberOfSegments);
477 NMuonsTrig = n_muons_trig;
478 NMuonsTrigCB = n_muons_trig_cb;
479 NMuonsTrigNonCB = n_muons_trig_noncb;
480 NMuonsNoTrigCB = n_muons_no_trig_cb;
481 NMuonsNoTrigNonCB = n_muons_no_trig_noncb;
482 fill(
tool, NMuons, NMuonsTrig, NMuonsTrigCB, NMuonsTrigNonCB, NMuonsNoTrigCB, NMuonsNoTrigNonCB);
484 LumiBlockNumberOfMuonTracks =
evt.lumiBlock();
485 fill(
tool, LumiBlockNumberOfMuonTracks);
503 return StatusCode::SUCCESS;
525 std::map<int, int> mapTagged_Resonance;
526 std::vector<const xAOD::Muon*> vecMuons;
527 for (
unsigned int n=0;
n<muonCandidates.size();
n++)
528 mapTagged_Resonance[
n]=0;
529 for (
unsigned int n=0;
n<muonCandidates.size();
n++){
530 const TLorentzVector& tVec1 = muonCandidates[
n]->p4();
531 for (
unsigned int m=
n+1;
m<muonCandidates.size();
m++) {
532 const TLorentzVector& tVec2 = muonCandidates[
m]->p4();
533 const TLorentzVector candidate = tVec1 + tVec2;
534 const float resonance_Mass = candidate.M() *
MeVtoGeV;
535 const float resonance_Eta = candidate.Eta();
536 if (muonCandidates[
n]->
charge()==muonCandidates[
m]->
charge())
continue;
542 if (mapTagged_Resonance[
n]!=1) vecMuons.push_back(muonCandidates[
n]);
543 mapTagged_Resonance[
n]=1;
544 if (mapTagged_Resonance[
m]!=1) vecMuons.push_back(muonCandidates[
m]);
545 mapTagged_Resonance[
m]=1;
547 if (muonCandidates[
n]->
charge()<0){
548 muMinusEta = tVec1.Eta();
549 muPlusEta = tVec2.Eta();
552 muMinusEta = tVec2.Eta();
553 muPlusEta = tVec1.Eta();
555 const char* EtaReg =
"";
557 if ((muMinusEta>1.05)&&(muPlusEta>1.05)){
560 Mass2D = resonance_Mass;
562 }
else if ((muMinusEta>1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
565 Mass2D = resonance_Mass;
567 }
else if ((muMinusEta>1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
570 Mass2D = resonance_Mass;
572 }
else if ((muMinusEta>1.05)&&(muPlusEta<-1.05)){
575 Mass2D = resonance_Mass;
577 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>1.05)){
580 Mass2D = resonance_Mass;
582 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
585 Mass2D = resonance_Mass;
587 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
590 Mass2D = resonance_Mass;
592 }
else if ((muMinusEta>0.)&&(muMinusEta<1.05)&&(muPlusEta<-1.05)){
595 Mass2D = resonance_Mass;
597 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>1.05)){
600 Mass2D = resonance_Mass;
602 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
605 Mass2D = resonance_Mass;
607 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
610 Mass2D = resonance_Mass;
612 }
else if ((muMinusEta>-1.05)&&(muMinusEta<0.)&&(muPlusEta<-1.05)){
615 Mass2D = resonance_Mass;
617 }
else if ((muMinusEta<-1.05)&&(muPlusEta>1.05)){
620 Mass2D = resonance_Mass;
622 }
else if ((muMinusEta<-1.05)&&(muPlusEta>0.)&&(muPlusEta<1.05)){
625 Mass2D = resonance_Mass;
627 }
else if ((muMinusEta<-1.05)&&(muPlusEta>-1.05)&&(muPlusEta<0.)){
630 Mass2D = resonance_Mass;
632 }
else if ((muMinusEta<-1.05)&&(muPlusEta<-1.05)){
635 Mass2D = resonance_Mass;
641 Mass = resonance_Mass;
645 fill(
tool, Mass,
Eta, Eta2, Eta2D, muMinusEta, muPlusEta);
647 MuonLumiBlock = lumiBlockID;
655 return StatusCode::SUCCESS;
662 std::vector<const xAOD::Muon*> vecMuons_ZBoson_Candidates;
663 std::vector<const xAOD::Muon*> vecMuons_Jpsi_Candidates;
667 xAOD::Muon::MuonType muonType =
muon->muonType();
671 if (cbtpLink.
isValid()) cbtp = *cbtpLink;
683 vecMuons_ZBoson_Candidates.push_back(
muon);
691 vecMuons_Jpsi_Candidates.push_back(
muon);
699 return StatusCode::SUCCESS;
713 return StatusCode::FAILURE;
718 if (!Vertices.isValid()) {
720 return StatusCode::FAILURE;
729 return StatusCode::FAILURE;
737 return StatusCode::SUCCESS;
745 for(
const auto vertex : Vertices){
756 int trackCategoryID = -1;
758 if (sIdentifier ==
"NoTrigNonCB") trackCategoryID = 1;
759 else if (sIdentifier ==
"NoTrigCB") trackCategoryID = 2;
760 else if (sIdentifier ==
"NonCB") trackCategoryID = 3;
761 else if (sIdentifier ==
"CB") trackCategoryID = 4;
762 else if (sIdentifier ==
"AllNonCB") trackCategoryID = 5;
763 else if (sIdentifier ==
"AllCB") trackCategoryID = 6;
765 else if (sIdentifier ==
"Z") trackCategoryID = 8;
766 else if (sIdentifier ==
"Jpsi") trackCategoryID = 9;
768 else if (sIdentifier ==
"ME_EC") trackCategoryID = 11;
769 else if (sIdentifier ==
"ME_BC") trackCategoryID = 12;
770 else if (sIdentifier ==
"ME_BA") trackCategoryID = 13;
771 else if (sIdentifier ==
"ME_EA") trackCategoryID = 14;
773 else if (sIdentifier ==
"MS_EC") trackCategoryID = 16;
774 else if (sIdentifier ==
"MS_BC") trackCategoryID = 17;
775 else if (sIdentifier ==
"MS_BA") trackCategoryID = 18;
776 else if (sIdentifier ==
"MS_EA") trackCategoryID = 19;
778 else if (sIdentifier ==
"ID_EC") trackCategoryID = 21;
779 else if (sIdentifier ==
"ID_BC") trackCategoryID = 22;
780 else if (sIdentifier ==
"ID_BA") trackCategoryID = 23;
781 else if (sIdentifier ==
"ID_EA") trackCategoryID = 24;
783 return trackCategoryID;