21 constexpr
double barrel_end = 1.05;
22 constexpr
double eifi_boundary = 1.3;
23 constexpr
double endcap_end = 1.9;
24 constexpr
double trigger_end = 2.4;
27 constexpr
double tgc_coin_phi_small_offset = 0.0001;
30 constexpr
double nsw_rmax = 5000;
31 constexpr
double nsw_rmin = 900;
32 constexpr
double nsw_z = 7824.46;
33 constexpr
double nsw_rindex_div = 255;
34 constexpr
double nsw_rindex_step = ( nsw_rmax - nsw_rmin ) / nsw_rindex_div;
81 std::unique_ptr<TObjArray> monTrigs( Str.Tokenize(
";") );
82 for(
int i = 0 ;
i < monTrigs->GetEntries() ;
i++){
83 TString monTrig = monTrigs->At(
i)->GetName();
84 if(monTrig.IsNull())
continue;
89 std::unique_ptr<TObjArray> monElement( monTrig.Tokenize(
",") );
90 for(
int j = 0 ; j < monElement->GetEntries() ; j++){
91 std::string sysItem = monElement->At(j)->GetName();
92 if(sysItem.empty())
continue;
93 std::string
item = sysItem.substr(4,sysItem.size());
102 monObj.
rpcR = (
item.find(
'R')!=std::string::npos);
103 monObj.
rpcM = (
item.find(
'M')!=std::string::npos);
106 monObj.
tgcF = (
item.find(
'F')!=std::string::npos);
107 monObj.
tgcC = (
item.find(
'C')!=std::string::npos);
108 monObj.
tgcH = (
item.find(
'H')!=std::string::npos);
118 std::unique_ptr<TObjArray> arr( Str.Tokenize(
",") );
119 for(
int i = 0 ;
i < arr->GetEntries() ;
i++){
120 std::string
name = arr->At(
i)->GetName();
131 while(getline(
fi,
str)){
139 return StatusCode::SUCCESS;
152 return StatusCode::FAILURE;
154 std::set<std::string> available_muon_triggers;
156 if( chainGroup !=
nullptr ){
157 auto triggerList = chainGroup->getListOfTriggers();
158 if( !triggerList.empty() ){
159 for(
const auto &trig : triggerList) {
160 std::string thisTrig = trig;
161 if( thisTrig.find(
"mu")==std::string::npos && thisTrig.find(
"MU")==std::string::npos)
continue;
164 for(
const auto& comb : fc.getCombinations()){
165 auto initRoIs = comb.get<
TrigRoiDescriptor>(
"initialRoI",TrigDefs::alsoDeactivateTEs);
166 for(
const auto& roi : initRoIs){
167 if( roi.empty() )
continue;
168 if( roi.cptr()==nullptr )
continue;
170 available_muon_triggers.insert(thisTrig);
175 for(
const auto& roiLinkInfo : initialRoIs) {
176 if( !roiLinkInfo.isValid() )
continue;
177 auto roiEL = roiLinkInfo.link;
178 if( !roiEL.isValid() )
continue;
180 if( roi==
nullptr )
continue;
182 available_muon_triggers.insert(thisTrig);
188 for(
const auto& trig : available_muon_triggers){
193 return StatusCode::SUCCESS;
196 std::set<std::string>
200 std::set<std::string> list_of_single_muon_triggers;
203 if( chainGroup !=
nullptr ){
204 auto triggerList = chainGroup->getListOfTriggers();
205 if( !triggerList.empty() ){
206 for(
const auto &trig : triggerList) {
207 if( trig.find(
"HLT_mu") != 0 )
continue;
208 if( trig.find(
'-') != std::string::npos )
continue;
209 if( trig.find(
"L1MU") == std::string::npos )
continue;
210 if( trig.find(
"mu") != trig.rfind(
"mu") )
continue;
211 if( trig.find(
"MU") != trig.rfind(
"MU") )
continue;
212 list_of_single_muon_triggers.insert( trig );
217 return list_of_single_muon_triggers;
225 if(primVtxContainer.
isValid()){
226 for(
const auto vtx : *primVtxContainer){
237 std::vector<TgcRawDataMonitorAlgorithm::TimedMuonRoI>
239 std::vector<TimedMuonRoI> AllBCMuonRoIs;
247 for(
const auto roi : *handle.
cptr()){
248 isRun3 = roi->isRun3();
250 AllBCMuonRoIs.push_back(myMuonRoI);
258 for(
const auto roi : *handle.
cptr()){
260 AllBCMuonRoIs.push_back(myMuonRoI);
267 for(
const auto roi : *handle.
cptr()){
269 AllBCMuonRoIs.push_back(myMuonRoI);
276 for(
const auto roi : *handle.
cptr()){
278 AllBCMuonRoIs.push_back(myMuonRoI);
285 for(
const auto roi : *handle.
cptr()){
287 AllBCMuonRoIs.push_back(myMuonRoI);
293 return AllBCMuonRoIs;
299 if( not roiVec.empty() ){
303 roi_variables.push_back(roi_bcid);
305 roi_variables.push_back(roi_pileup);
307 roi_variables.push_back(roi_lumiBlock);
311 roi_variables.push_back(roi_timing);
315 roi_variables.push_back(roi_currentBC);
319 roi_variables.push_back(roi_previousBC);
323 roi_variables.push_back(roi_nextBC);
325 return m.muonRoI->getRoI();
327 roi_variables.push_back(roi_roiNumber);
329 return (
m.muonRoI->getHemisphere() ==
xAOD::MuonRoI::Positive)?(
m.muonRoI->getSectorID()+1):(-1 *
m.muonRoI->getSectorID()-1);
331 roi_variables.push_back(roi_sector);
333 return m.muonRoI->getSectorID()+1;
335 roi_variables.push_back(roi_sectorAbs);
337 return (
m.muonRoI->getBW3Coincidence()) ? ((
m.muonRoI->getHemisphere() ==
xAOD::MuonRoI::Positive)?(
m.muonRoI->getSectorID()+1):(-1 *
m.muonRoI->getSectorID()-1)) : (-999);
339 roi_variables.push_back(roi_sector_wBW3Coin);
341 return (
m.muonRoI->getInnerCoincidence()) ? ((
m.muonRoI->getHemisphere() ==
xAOD::MuonRoI::Positive)?(
m.muonRoI->getSectorID()+1):(-1 *
m.muonRoI->getSectorID()-1)) : (-999);
343 roi_variables.push_back(roi_sector_wInnerCoin);
345 return m.muonRoI->eta();
347 roi_variables.push_back(roi_eta);
351 roi_variables.push_back(roi_eta_rpc);
355 roi_variables.push_back(roi_eta_tgc);
357 return (
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel && std::abs(
m.muonRoI->eta()) < 1.3 &&
m.muonRoI->getInnerCoincidence());
359 roi_variables.push_back(roi_wInnerCoinEtaUpTo1p3);
361 return (
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel && std::abs(
m.muonRoI->eta()) > 1.3 &&
m.muonRoI->getInnerCoincidence());
363 roi_variables.push_back(roi_wInnerCoinEtaBeyond1p3);
365 return (
m.muonRoI->getInnerCoincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->eta()):(-10);
367 roi_variables.push_back(roi_eta_wInnerCoin);
369 return (
m.muonRoI->getBW3Coincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->eta()):(-10);
371 roi_variables.push_back(roi_eta_wBW3Coin);
373 return (!
m.muonRoI->getInnerCoincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->eta()):(-10);
375 roi_variables.push_back(roi_eta_wInnerCoinVeto);
377 return (!
m.muonRoI->getBW3Coincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->eta()):(-10);
379 roi_variables.push_back(roi_eta_wBW3CoinVeto);
381 return m.muonRoI->phi();
383 roi_variables.push_back(roi_phi);
387 roi_variables.push_back(roi_phi_sideA);
391 roi_variables.push_back(roi_phi_sideC);
395 roi_variables.push_back(roi_phi_rpc);
399 roi_variables.push_back(roi_phi_tgc);
401 return (
m.muonRoI->getInnerCoincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->phi()):(-10);;
403 roi_variables.push_back(roi_phi_wInnerCoin);
405 return (
m.muonRoI->getBW3Coincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->phi()):(-10);;
407 roi_variables.push_back(roi_phi_wBW3Coin);
409 return (!
m.muonRoI->getInnerCoincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->phi()):(-10);;
411 roi_variables.push_back(roi_phi_wInnerCoinVeto);
413 return (!
m.muonRoI->getBW3Coincidence() &&
m.muonRoI->getSource() !=
xAOD::MuonRoI::Barrel)?(
m.muonRoI->phi()):(-10);;
415 roi_variables.push_back(roi_phi_wBW3CoinVeto);
419 roi_variables.push_back(roi_phi_wBW3Coin_sideA);
423 roi_variables.push_back(roi_phi_wBW3Coin_sideC);
427 roi_variables.push_back(roi_phi_wBW3CoinVeto_sideA);
431 roi_variables.push_back(roi_phi_wBW3CoinVeto_sideC);
433 return m.muonRoI->getThrNumber();
435 roi_variables.push_back(roi_thr);
439 roi_variables.push_back(roi_rpc);
443 roi_variables.push_back(roi_tgc);
447 roi_variables.push_back(roi_barrel);
451 roi_variables.push_back(roi_endcap);
455 roi_variables.push_back(roi_forward);
459 roi_variables.push_back(roi_phi_barrel);
463 roi_variables.push_back(roi_phi_endcap);
467 roi_variables.push_back(roi_phi_forward);
471 roi_variables.push_back(roi_sideA);
475 roi_variables.push_back(roi_sideC);
477 return m.muonRoI->getThrNumber() == 1;
479 roi_variables.push_back(thrmask1);
481 return m.muonRoI->getThrNumber() == 2;
483 roi_variables.push_back(thrmask2);
485 return m.muonRoI->getThrNumber() == 3;
487 roi_variables.push_back(thrmask3);
489 return m.muonRoI->getThrNumber() == 4;
491 roi_variables.push_back(thrmask4);
493 return m.muonRoI->getThrNumber() == 5;
495 roi_variables.push_back(thrmask5);
497 return m.muonRoI->getThrNumber() == 6;
499 roi_variables.push_back(thrmask6);
501 return m.muonRoI->getThrNumber() == 7;
503 roi_variables.push_back(thrmask7);
505 return m.muonRoI->getThrNumber() == 8;
507 roi_variables.push_back(thrmask8);
509 return m.muonRoI->getThrNumber() == 9;
511 roi_variables.push_back(thrmask9);
513 return m.muonRoI->getThrNumber() == 10;
515 roi_variables.push_back(thrmask10);
517 return m.muonRoI->getThrNumber() == 11;
519 roi_variables.push_back(thrmask11);
521 return m.muonRoI->getThrNumber() == 12;
523 roi_variables.push_back(thrmask12);
525 return m.muonRoI->getThrNumber() == 13;
527 roi_variables.push_back(thrmask13);
529 return m.muonRoI->getThrNumber() == 14;
531 roi_variables.push_back(thrmask14);
533 return m.muonRoI->getThrNumber() == 15;
535 roi_variables.push_back(thrmask15);
539 roi_variables.push_back(roi_charge);
541 return m.muonRoI->getBW3Coincidence();
543 roi_variables.push_back(roi_bw3coin);
547 roi_variables.push_back(roi_bw3coinveto);
549 return m.muonRoI->getInnerCoincidence();
551 roi_variables.push_back(roi_innercoin);
555 roi_variables.push_back(roi_innveto);
557 return m.muonRoI->getGoodMF();
559 roi_variables.push_back(roi_goodmf);
563 roi_variables.push_back(roi_badmf);
565 return m.muonRoI->isMoreCandInRoI();
567 roi_variables.push_back(roi_ismorecand);
571 roi_variables.push_back(roi_posCharge);
575 roi_variables.push_back(roi_negCharge);
585 ATH_MSG_DEBUG(
"Filling histograms for MuonRoIs after trigger decision");
587 std::set<unsigned int> allCands;
588 std::set<unsigned int> ctpMuonCands;
589 std::set<unsigned int> inputMuonCands;
591 bool isRun2Legacy =
false;
594 if(monObj.title.find(
"Run2Legacy")==std::string::npos)
continue;
595 auto fc =
getTrigDecisionTool()->features(monObj.trigItem.data(),TrigDefs::alsoDeactivateTEs);
596 for(
const auto& comb : fc.getCombinations()){
597 auto initRoIs = comb.get<
TrigRoiDescriptor>(
"initialRoI",TrigDefs::alsoDeactivateTEs);
598 for(
const auto& roi : initRoIs){
599 if( roi.empty() )
continue;
600 if( roi.cptr()==nullptr )
continue;
601 ctpMuonCands.insert(roi.cptr()->roiWord());
602 allCands.insert(roi.cptr()->roiWord());
607 for(
const auto& roiLinkInfo : initialRoIs) {
608 if( !roiLinkInfo.isValid() )
continue;
609 auto roiEL = roiLinkInfo.link;
610 if( !roiEL.isValid() )
continue;
612 if( roi==
nullptr )
continue;
613 ctpMuonCands.insert(roi->roiWord());
614 allCands.insert(roi->roiWord());
619 for(
const auto& allBcMuonRoI : roiVec){
629 if(monObj.tgcH && !roi->
getGoodMF())
continue;
631 inputMuonCands.insert(roi->
roiWord());
632 allCands.insert(roi->
roiWord());
634 if(!isRun3 && isRun2Legacy && monObj.title.find(
"Run2Legacy")==std::string::npos)
continue;
635 if(!isRun3 && !isRun2Legacy && (monObj.title.find(
"Run2Legacy")!=std::string::npos||monObj.title.find(
"Run3")!=std::string::npos))
continue;
636 if(isRun3 && monObj.title.find(
"Run3")==std::string::npos)
continue;
638 if(ctpMuonCands.size()==0 && inputMuonCands.size()<monObj.multiplicity)
continue;
640 std::vector<int> roiMatching_CTPin;
641 std::vector<int> roiMatching_CTPout;
643 std::vector<double> roi_Eta;
644 std::vector<double> roi_Phi;
645 std::vector<double> roi_dRmin;
646 std::vector<double> roi_pTdiff;
647 std::vector<int> roi_ThrNum;
648 std::vector<int> roi_Charge;
649 std::vector<int> roi_BW3Coin;
650 std::vector<int> roi_InnerCoin;
651 std::vector<int> roi_GoodMF;
652 std::vector<int> roi_IsMoreCandInRoI;
653 std::vector<int> roi_PhiOverlap;
654 std::vector<int> roi_EtaOverlap;
655 std::vector<int> roi_isVetoed;
656 std::vector<bool> roi_inOk_outOk;
657 std::vector<bool> roi_inOk_outNg;
658 std::vector<bool> roi_inNg_outOk;
660 for(
const auto& allBcMuonRoI : roiVec){
662 bool ctp_in = inputMuonCands.find(roi->
roiWord())!=inputMuonCands.end();
663 bool ctp_out = ctpMuonCands.find(roi->
roiWord())!=ctpMuonCands.end();
664 if(!ctp_in && !ctp_out)
continue;
665 roiMatching_CTPin.push_back(ctp_in?1:0);
666 roiMatching_CTPout.push_back(ctp_out?1:0);
669 for(
const auto& allBcMuonRoI2 : roiVec){
671 if(roi == roi2)
continue;
679 if(dRmin>999) dRmin = -0.05;
680 else if(dRmin>1.0) dRmin = 0.95;
681 roi_Eta.push_back(roi->
eta());
682 roi_Phi.push_back(roi->
phi());
683 roi_dRmin.push_back(dRmin);
684 roi_pTdiff.push_back(pTdiff);
693 roi_isVetoed.push_back(roi->
isVetoed());
694 roi_inOk_outOk.push_back( ctp_in && ctp_out );
695 roi_inOk_outNg.push_back( ctp_in && !ctp_out );
696 roi_inNg_outOk.push_back( !ctp_in && ctp_out );
724 ctpMonVariables.push_back(val_roiMatching_CTPin);
725 ctpMonVariables.push_back(val_roiMatching_CTPout);
726 ctpMonVariables.push_back(val_ctpMultiplicity);
727 ctpMonVariables.push_back(val_rawMultiplicity);
728 ctpMonVariables.push_back(val_countDiff);
729 ctpMonVariables.push_back(val_roi_Eta);
730 ctpMonVariables.push_back(val_roi_Phi);
731 ctpMonVariables.push_back(val_roi_dRmin);
732 ctpMonVariables.push_back(val_roi_pTdiff);
733 ctpMonVariables.push_back(val_roi_ThrNum);
734 ctpMonVariables.push_back(val_roi_Charge);
735 ctpMonVariables.push_back(val_roi_BW3Coin);
736 ctpMonVariables.push_back(val_roi_InnerCoin);
737 ctpMonVariables.push_back(val_roi_GoodMF);
738 ctpMonVariables.push_back(val_roi_IsMoreCandInRoI);
739 ctpMonVariables.push_back(val_roi_PhiOverlap);
740 ctpMonVariables.push_back(val_roi_EtaOverlap);
741 ctpMonVariables.push_back(val_roi_isVetoed);
742 ctpMonVariables.push_back(val_roi_inOk_outOk);
743 ctpMonVariables.push_back(val_roi_inOk_outNg);
744 ctpMonVariables.push_back(val_roi_inNg_outOk);
747 ATH_MSG_DEBUG(
"End filling histograms for MuonRoIs after trigger decision");
761 return StatusCode::FAILURE;
768 return StatusCode::SUCCESS;
775 const bool expressPass =
passBits & TrigDefs::Express_passed;
778 return StatusCode::SUCCESS;
786 return StatusCode::SUCCESS;
796 double primaryVertexZ = (primVertex!=
nullptr)?(primVertex->
z()):(-999);
812 std::map<const xAOD::MuonRoI*,std::set<std::string>> roiAndMenu;
813 std::map<std::string,std::vector<const xAOD::MuonRoI*>> menuAndRoIs;
818 std::vector < const xAOD::Muon* > oflmuons;
819 std::set < const xAOD::Muon* > biasedMuons;
820 std::vector < TimedMuon > mymuons;
821 std::map < std::string, std::vector< ExtPos > > extpositions;
822 std::vector< ExtPos > extpositions_pivot;
823 std::vector<double> deltaR_muons;
824 std::vector<double> deltaR_muons_roi;
825 std::vector<double> deltaR_muons_hlt;
826 std::vector<double> muon2pv_dz;
827 std::vector<double> muon2pv_dca;
828 std::vector<double> mymuon2pv_dz;
829 std::vector<double> mymuon2pv_dca;
834 return StatusCode::SUCCESS;
837 for (
const auto muon : *muons) {
839 if (
muon ==
nullptr)
continue;
841 if (
muon->pt() < 1000.)
continue;
844 if (
muon->muonType() > xAOD::Muon::MuonType::MuonStandAlone )
continue;
846 oflmuons.push_back(
muon);
848 double dz=-999,dca=-999;
854 if(primVertex==
nullptr)
continue;
855 auto trackParticle =
muon->primaryTrackParticle();
856 if(trackParticle!=
nullptr){
857 dz = trackParticle->z0() - primVertex->
z();
858 dca = trackParticle->d0();
860 muon2pv_dz.push_back(dz);
861 muon2pv_dca.push_back(dca);
867 bool isolated =
true;
873 for(
const auto muon2 : *muons){
875 if (muon2 ==
nullptr)
continue;
878 if(
muon == muon2 )
continue;
881 if( muon2->pt() < 1000. )
continue;
885 if ( muon2->muonType() > xAOD::Muon::MuonType::MuonStandAlone )
continue;
889 ( (std::abs(
muon->eta()) < barrel_end && std::abs(muon2->eta()) < barrel_end) ||
890 (std::abs(
muon->eta()) > barrel_end && std::abs(muon2->eta()) > barrel_end) ) )
continue;
894 deltaR_muons.push_back(dr_muons);
905 for (
const auto &trigName : list_of_single_muon_triggers) {
908 const bool expressPass =
passBits & TrigDefs::Express_passed;
909 if(!expressPass)
continue;
913 ATH_MSG_DEBUG(
"This muon trigger, " << trigName <<
", is fired in this event!!");
918 for(
const auto& comb : fc.getCombinations()){
919 if(!comb.active())
continue;
921 for(
const auto& mucont : MuFeatureContainers){
922 if(mucont.empty())
continue;
923 if(mucont.te()==
nullptr)
continue;
924 if(!mucont.te()->getActiveState())
continue;
925 for(
const auto hltmu : *mucont.cptr()){
926 if (hltmu ==
nullptr)
continue;
927 if (hltmu->pt() < 1000.)
continue;
929 deltaR_muons_hlt.push_back(
dr);
933 biasedMuons.insert(muon2);
941 for (
const auto& aaa : features) {
942 if (!aaa.isValid())
continue;
943 auto hltmu_link = aaa.link;
944 if (!hltmu_link.isValid())
continue;
945 auto hltmu = *hltmu_link;
946 if (hltmu ==
nullptr)
continue;
947 if (hltmu->pt() < 1000.)
continue;
949 deltaR_muons_hlt.push_back(
dr);
953 biasedMuons.insert(muon2);
959 if(!probeOK)
continue;
963 double m2 = 2. *
muon->pt() * muon2->pt() * ( std::cosh(
muon->eta() - muon2->eta()) -
std::cos(
muon->phi() - muon2->phi()) );
964 double m = (
m2>0.) ? ( std::sqrt(
m2) ) : (0.);
965 double mdiff = std::abs(
m -
m_zMass );
969 ATH_MSG_DEBUG(
"Final condition of probleOK for this muon is: " << probeOK);
975 if(!probeOK)
continue;
981 if ( std::abs(
muon->eta()) > 0.5
984 if(
muon->eta()<0 &&
z>0 )
continue;
985 if(
muon->eta()>0 &&
z<0 )
continue;
986 xAOD::Muon::TrackParticleType trkPtclType;
994 if(trackParticle==
nullptr)
continue;
995 auto matrix = std::make_unique<Amg::Transform3D>();
998 auto disc = std::make_unique < Trk::DiscSurface > (*
matrix,
1003 trackParticle->perigeeParameters(),
1008 if(extTrkParams !=
nullptr){
1009 if( std::abs(extTrkParams->position().z() -
z) > 10. )
continue;
1012 ext.extPos = extTrkParams->position();
1013 ext.extVec = extTrkParams->momentum();
1014 Amg::Vector3D extVec(extTrkParams->position().x(),extTrkParams->position().y(),
z);
1017 if( std::abs( std::abs(
z) -
m_M3_Z ) < 10. &&
1018 std::abs(
muon->eta() ) > 1.05 &&
1019 std::abs(
muon->eta() ) < 2.40){
1020 extpositions_pivot.push_back(
ext);
1022 for(
const auto& cham :
ext.passedChambers){
1023 extpositions[cham].push_back(
ext);
1035 if (AllBCMuonRoIs.size()==0) {
1036 ATH_MSG_DEBUG(
"No RoI matching possible as no container has been retrieved");
1037 mymuons.push_back(mymuon);
1040 for(
const auto& allBcMuonRoI : AllBCMuonRoIs){
1043 deltaR_muons_roi.push_back(
dr);
1045 if(roiAndMenu.count(roi)>0)mymuon.
matchedL1Items.insert( roiAndMenu[roi].
begin(), roiAndMenu[roi].
end() );
1056 for (
int ithr = 1; ithr <= 15 ; ++ithr) {
1071 mymuons.push_back(mymuon);
1072 mymuon2pv_dz.push_back(dz);
1073 mymuon2pv_dca.push_back(dca);
1103 oflmuon_num,oflmuon_muonType,oflmuon_author,oflmuon_quality,oflmuon_pt,oflmuon_eta,oflmuon_phi,oflmuon_pvdz,oflmuon_pvdca,
1104 oflmuon_probe_num,oflmuon_probe_muonType,oflmuon_probe_author,oflmuon_probe_quality,oflmuon_probe_pt,oflmuon_probe_eta,oflmuon_probe_phi,oflmuon_probe_pvdz,oflmuon_probe_pvdca,
1105 oflmuon_deltaR, oflmuon_deltaR_roi, oflmuon_deltaR_hlt
1111 oflmuon_variables.push_back(oflmuon_num);
1112 oflmuon_variables.push_back(oflmuon_muonType);
1113 oflmuon_variables.push_back(oflmuon_author);
1114 oflmuon_variables.push_back(oflmuon_quality);
1115 oflmuon_variables.push_back(oflmuon_pt);
1116 oflmuon_variables.push_back(oflmuon_eta);
1117 oflmuon_variables.push_back(oflmuon_phi);
1121 return m.muon->charge();
1123 oflmuon_variables.push_back(muon_charge);
1125 return (
m.muon->charge()>0);
1127 oflmuon_variables.push_back(muon_chargePos);
1129 return (
m.muon->charge()<0);
1131 oflmuon_variables.push_back(muon_chargeNeg);
1133 return (
m.muon->pt()>pt_4_cut)?
m.muon->eta():-10;
1135 oflmuon_variables.push_back(muon_eta4gev);
1137 return (
m.muon->pt()>pt_4_cut)?
m.muon->phi():-10;
1139 oflmuon_variables.push_back(muon_phi4gev);
1141 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary)?
m.muon->phi():-10;
1143 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3);
1145 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary &&
m.muon->eta()>0)?
m.muon->phi():-10;
1147 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3A);
1149 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>barrel_end && std::abs(
m.muon->eta())<eifi_boundary &&
m.muon->eta()<0)?
m.muon->phi():-10;
1151 oflmuon_variables.push_back(muon_phi4gev_1p05eta1p3C);
1153 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end)?
m.muon->phi():-10;
1155 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4);
1157 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end &&
m.muon->eta()>0)?
m.muon->phi():-10;
1159 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4A);
1161 return (
m.muon->pt()>pt_4_cut && std::abs(
m.muon->eta())>eifi_boundary && std::abs(
m.muon->eta())<trigger_end &&
m.muon->eta()<0)?
m.muon->phi():-10;
1163 oflmuon_variables.push_back(muon_phi4gev_1p3eta2p4C);
1165 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut) ?
m.muon->phi() : -10;
1167 oflmuon_variables.push_back(muon_phi4gev_rpc);
1169 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1171 oflmuon_variables.push_back(muon_phi4gev_rpcA);
1173 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1175 oflmuon_variables.push_back(muon_phi4gev_rpcC);
1177 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut) ?
m.muon->phi() : -10;
1179 oflmuon_variables.push_back(muon_phi4gev_tgc);
1181 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1183 oflmuon_variables.push_back(muon_phi4gev_tgcA);
1185 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_4_cut &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1187 oflmuon_variables.push_back(muon_phi4gev_tgcC);
1189 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->phi() : -10;
1191 oflmuon_variables.push_back(muon_phi0gev_tgc);
1193 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() > 0) ?
m.muon->phi() : -10;
1195 oflmuon_variables.push_back(muon_phi0gev_tgcA);
1197 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->eta() < 0) ?
m.muon->phi() : -10;
1199 oflmuon_variables.push_back(muon_phi0gev_tgcC);
1201 return (
m.muon->pt() > pt_30_cut) ?
m.muon->eta() : -10;
1203 oflmuon_variables.push_back(muon_eta);
1205 return (
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1207 oflmuon_variables.push_back(muon_phi);
1209 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1211 oflmuon_variables.push_back(muon_phi_rpc);
1213 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()>0) ?
m.muon->phi() : -10;
1215 oflmuon_variables.push_back(muon_phi_rpcA);
1217 return (std::abs(
m.muon->eta()) < barrel_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()<0) ?
m.muon->phi() : -10;
1219 oflmuon_variables.push_back(muon_phi_rpcC);
1221 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut) ?
m.muon->phi() : -10;
1223 oflmuon_variables.push_back(muon_phi_tgc);
1225 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()>0) ?
m.muon->phi() : -10;
1227 oflmuon_variables.push_back(muon_phi_tgcA);
1229 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end &&
m.muon->pt() > pt_30_cut &&
m.muon->eta()<0) ?
m.muon->phi() : -10;
1231 oflmuon_variables.push_back(muon_phi_tgcC);
1235 oflmuon_variables.push_back(muon_pt_rpc);
1237 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < trigger_end) ?
m.muon->pt() /
Gaudi::Units::GeV : -10;
1239 oflmuon_variables.push_back(muon_pt_tgc);
1241 return (std::abs(
m.muon->eta()) < barrel_end);
1243 oflmuon_variables.push_back(muon_barrel);
1245 return (std::abs(
m.muon->eta()) > barrel_end && std::abs(
m.muon->eta()) < endcap_end);
1247 oflmuon_variables.push_back(muon_endcap);
1249 return (std::abs(
m.muon->eta()) > endcap_end && std::abs(
m.muon->eta()) < trigger_end);
1251 oflmuon_variables.push_back(muon_forward);
1253 return m.matchedL1ThrInclusiveTGC.find(1) !=
m.matchedL1ThrInclusiveTGC.end();
1255 oflmuon_variables.push_back(muon_l1passThr1TGC);
1257 return m.matchedL1ThrInclusive.find(1) !=
m.matchedL1ThrInclusive.end();
1259 oflmuon_variables.push_back(muon_l1passThr1);
1261 return m.matchedL1ThrInclusive.find(2) !=
m.matchedL1ThrInclusive.end();
1263 oflmuon_variables.push_back(muon_l1passThr2);
1265 return m.matchedL1ThrInclusive.find(3) !=
m.matchedL1ThrInclusive.end();
1267 oflmuon_variables.push_back(muon_l1passThr3);
1269 return m.matchedL1ThrInclusive.find(4) !=
m.matchedL1ThrInclusive.end();
1271 oflmuon_variables.push_back(muon_l1passThr4);
1273 return m.matchedL1ThrInclusive.find(5) !=
m.matchedL1ThrInclusive.end();
1275 oflmuon_variables.push_back(muon_l1passThr5);
1277 return m.matchedL1ThrInclusive.find(6) !=
m.matchedL1ThrInclusive.end();
1279 oflmuon_variables.push_back(muon_l1passThr6);
1281 return m.matchedL1ThrInclusive.find(7) !=
m.matchedL1ThrInclusive.end();
1283 oflmuon_variables.push_back(muon_l1passThr7);
1285 return m.matchedL1ThrInclusive.find(8) !=
m.matchedL1ThrInclusive.end();
1287 oflmuon_variables.push_back(muon_l1passThr8);
1289 return m.matchedL1ThrInclusive.find(9) !=
m.matchedL1ThrInclusive.end();
1291 oflmuon_variables.push_back(muon_l1passThr9);
1293 return m.matchedL1ThrInclusive.find(10) !=
m.matchedL1ThrInclusive.end();
1295 oflmuon_variables.push_back(muon_l1passThr10);
1297 return m.matchedL1ThrInclusive.find(11) !=
m.matchedL1ThrInclusive.end();
1299 oflmuon_variables.push_back(muon_l1passThr11);
1301 return m.matchedL1ThrInclusive.find(12) !=
m.matchedL1ThrInclusive.end();
1303 oflmuon_variables.push_back(muon_l1passThr12);
1305 return m.matchedL1ThrInclusive.find(13) !=
m.matchedL1ThrInclusive.end();
1307 oflmuon_variables.push_back(muon_l1passThr13);
1309 return m.matchedL1ThrInclusive.find(14) !=
m.matchedL1ThrInclusive.end();
1311 oflmuon_variables.push_back(muon_l1passThr14);
1313 return m.matchedL1ThrInclusive.find(15) !=
m.matchedL1ThrInclusive.end();
1315 oflmuon_variables.push_back(muon_l1passThr15);
1317 return m.matchedL1Charge;
1319 oflmuon_variables.push_back(muon_l1passCharge);
1321 return m.passBW3Coin;
1323 oflmuon_variables.push_back(muon_l1passBW3Coin);
1325 return !
m.passBW3Coin;
1327 oflmuon_variables.push_back(muon_l1passBW3CoinVeto);
1329 return m.passInnerCoin;
1331 oflmuon_variables.push_back(muon_l1passInnerCoin);
1333 return !
m.passInnerCoin;
1335 oflmuon_variables.push_back(muon_l1passInnerCoinVeto);
1337 return m.passGoodMF;
1339 oflmuon_variables.push_back(muon_l1passGoodMF);
1341 return !
m.passGoodMF;
1343 oflmuon_variables.push_back(muon_l1passBadMF);
1345 return m.passIsMoreCandInRoI;
1347 oflmuon_variables.push_back(muon_l1passIsMoreCandInRoI);
1350 ATH_MSG_DEBUG(
"End filling offline muon-related histograms");
1369 std::map<int, SG::ReadHandle<Muon::TgcCoinDataContainer> > tgcCoin;
1370 tgcCoin[-1] = tgcCoinPrev;
1371 tgcCoin[0] = tgcCoinCurr;
1372 tgcCoin[+1] = tgcCoinNext;
1375 if(tgcCoinNextNext.
isValid())tgcCoin[+2] = tgcCoinNextNext;
1377 std::vector< TgcTrig > tgcTrigMap_SL;
1378 std::vector< TgcTrig > tgcTrigMap_SL_Endcap;
1379 std::vector< TgcTrig > tgcTrigMap_SL_Forward;
1380 std::vector< TgcTrig > tgcTrigMap_HPT_Wire;
1381 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Wire;
1382 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Wire;
1383 std::vector< TgcTrig > tgcTrigMap_HPT_Strip;
1384 std::vector< TgcTrig > tgcTrigMap_HPT_Endcap_Strip;
1385 std::vector< TgcTrig > tgcTrigMap_HPT_Forward_Strip;
1386 std::vector< TgcTrig > tgcTrigMap_LPT_Wire;
1387 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Wire;
1388 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Wire;
1389 std::vector< TgcTrig > tgcTrigMap_LPT_Strip;
1390 std::vector< TgcTrig > tgcTrigMap_LPT_Endcap_Strip;
1391 std::vector< TgcTrig > tgcTrigMap_LPT_Forward_Strip;
1392 std::vector< TgcTrig > tgcTrigMap_EIFI_Wire;
1393 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Wire;
1394 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Wire;
1395 std::vector< TgcTrig > tgcTrigMap_EIFI_Strip;
1396 std::vector< TgcTrig > tgcTrigMap_EIFI_Endcap_Strip;
1397 std::vector< TgcTrig > tgcTrigMap_EIFI_Forward_Strip;
1398 std::vector< TgcTrigTile > tgcTrigTileMap;
1399 std::vector< TgcTrigNsw > tgcTrigNswMap;
1400 std::vector< TgcTrigRpc > tgcTrigRpcMap;
1401 std::vector< TgcTrigEifi > tgcTrigEifiMap;
1402 int n_TgcCoin_detElementIsNull = 0;
1403 int n_TgcCoin_postOutPtrIsNull = 0;
1404 for (
auto thisCoin : tgcCoin) {
1405 int bunch = thisCoin.first;
1406 for (
const auto tgccnt : *(thisCoin.second)) {
1407 for (
const auto data : *tgccnt) {
1408 if (
data->detectorElementOut() ==
nullptr ) n_TgcCoin_detElementIsNull++;
1409 if (
data->posOutPtr() ==
nullptr ) n_TgcCoin_postOutPtrIsNull++;
1411 int slsector = (
data->isForward()) ? (
data->phi() % 24 + 1) : ( (
data->phi() + 1) % 48 + 1);
1412 if(!
data->isAside()) slsector *= -1;
1415 if (
data->isInner() &&
data->isStrip()) {
1419 rpcCoin.
bunch = bunch;
1420 rpcCoin.
currBc = (bunch==0);
1425 tgcTrigRpcMap.push_back(rpcCoin);
1426 }
else if (
data->isInner() && !
data->isStrip()) {
1430 int boardID = (std::abs(nswCoin.
slSector)-1) / 2 + 1;
1435 nswCoin.
bunch = bunch;
1436 nswCoin.
currBc = (bunch==0);
1440 if(nswCoin.
R!=0 && nswCoin.
Phi!=0)
1441 tgcTrigNswMap.push_back(nswCoin);
1442 }
else if (!
data->isInner() &&
data->isStrip()) {
1446 tileCoin.
bunch = bunch;
1447 tileCoin.
currBc = (bunch==0);
1450 tgcTrigTileMap.push_back(tileCoin);
1451 }
else if (!
data->isInner() && !
data->isStrip()) {
1454 eifiCoin.
bunch = bunch;
1455 eifiCoin.
currBc = (bunch==0);
1456 tgcTrigEifiMap.push_back(eifiCoin);
1460 if (
data->detectorElementOut() ==
nullptr ||
1461 data->posOutPtr() == nullptr )
continue;
1465 tgcTrig.
x_In = posIn[0];
1466 tgcTrig.
y_In = posIn[1];
1467 tgcTrig.
z_In = posIn[2];
1469 tgcTrig.
x_Out = posOut[0];
1470 tgcTrig.
y_Out = posOut[1];
1471 tgcTrig.
z_Out = posOut[2];
1472 tgcTrig.
eta = posOut.eta();
1473 tgcTrig.
phi = posOut.phi();
1482 for(
const auto&
ext : extpositions_pivot){
1484 if(
data->isAside() &&
ext.extPos.z()<0)
continue;
1485 if(!
data->isAside()&&
ext.extPos.z()>0)
continue;
1492 for (
const auto&
muon : oflmuons) {
1495 if(
dr > max_dr )
continue;
1501 for(
const auto&
muon : biasedMuons){
1504 if(
dr > max_dr )
continue;
1511 if(biasedMuons.size()>=2) tgcTrig.
isBiased = 0;
1521 etaout = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidout)));
1525 etain = std::abs(
int(
m_idHelperSvc->tgcIdHelper().stationEta(tcdidin)));
1528 tgcTrig.
etain = etain;
1537 tgcTrig.
sector = slsector;
1543 tgcTrig.
bunch = bunch;
1546 if( !
data->isInner() ){
1548 tgcTrigMap_SL_Endcap.push_back(tgcTrig);
1549 tgcTrigMap_SL.push_back(tgcTrig);
1551 tgcTrigMap_SL_Forward.push_back(tgcTrig);
1552 tgcTrigMap_SL.push_back(tgcTrig);
1555 tgcTrigMap_HPT_Endcap_Strip.push_back(tgcTrig);
1556 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1558 tgcTrigMap_HPT_Endcap_Wire.push_back(tgcTrig);
1559 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1563 tgcTrigMap_HPT_Forward_Strip.push_back(tgcTrig);
1564 tgcTrigMap_HPT_Strip.push_back(tgcTrig);
1566 tgcTrigMap_HPT_Forward_Wire.push_back(tgcTrig);
1567 tgcTrigMap_HPT_Wire.push_back(tgcTrig);
1571 tgcTrigMap_LPT_Endcap_Strip.push_back(tgcTrig);
1572 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1574 tgcTrigMap_LPT_Endcap_Wire.push_back(tgcTrig);
1575 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1579 tgcTrigMap_LPT_Forward_Strip.push_back(tgcTrig);
1580 tgcTrigMap_LPT_Strip.push_back(tgcTrig);
1582 tgcTrigMap_LPT_Forward_Wire.push_back(tgcTrig);
1583 tgcTrigMap_LPT_Wire.push_back(tgcTrig);
1587 tgcTrigMap_EIFI_Endcap_Strip.push_back(tgcTrig);
1588 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1590 tgcTrigMap_EIFI_Endcap_Wire.push_back(tgcTrig);
1591 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1595 tgcTrigMap_EIFI_Forward_Strip.push_back(tgcTrig);
1596 tgcTrigMap_EIFI_Strip.push_back(tgcTrig);
1598 tgcTrigMap_EIFI_Forward_Wire.push_back(tgcTrig);
1599 tgcTrigMap_EIFI_Wire.push_back(tgcTrig);
1610 for(
auto& sl : tgcTrigMap_SL){
1611 if( sl.bunch != 0 )
continue;
1612 for(
auto& inner : tgcTrigRpcMap){
1613 if( sl.isForward == 1 )
break;
1614 if( sl.sector != inner.slSector )
continue;
1615 inner.roiEta = sl.eta;
1616 inner.roiPhi = sl.phi;
1617 inner.roiNum = sl.roi;
1618 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1619 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1620 inner.goodBcid0 = inner.deltaBcid==0;
1621 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1622 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1623 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1624 sl.rpc.push_back(&inner);
1626 for(
auto& inner : tgcTrigNswMap){
1627 if( sl.sector != inner.slSector )
continue;
1628 if( sl.isForward != inner.isForward )
continue;
1630 inner.roiEta = sl.eta;
1631 inner.roiPhi = sl.phi;
1632 inner.roiNum = sl.roi;
1634 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1635 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1636 inner.goodBcid0 = inner.deltaBcid==0;
1637 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1638 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1639 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1640 sl.nsw.push_back(&inner);
1643 for(
auto& inner : tgcTrigTileMap){
1644 if( sl.isForward == 1 )
break;
1645 if( sl.sector != inner.slSector )
continue;
1646 inner.roiEta = sl.eta;
1647 inner.roiPhi = sl.phi;
1648 inner.roiNum = sl.roi;
1649 inner.deltaBcid = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bcid - sl.bcid) : -999;
1650 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1651 inner.goodBcid0 = inner.deltaBcid==0;
1652 inner.goodBcid1 = (std::abs(inner.deltaBcid)<=1 || (16-std::abs(inner.deltaBcid))<=1);
1653 inner.goodBcid2 = (std::abs(inner.deltaBcid)<=2 || (16-std::abs(inner.deltaBcid))<=2);
1654 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1655 sl.tile.push_back(&inner);
1657 for(
auto& inner : tgcTrigEifiMap){
1658 if( sl.isForward == 1 )
break;
1659 if( sl.sector != inner.slSector )
continue;
1660 inner.roiEta = sl.eta;
1661 inner.roiPhi = sl.phi;
1662 inner.roiNum = sl.roi;
1663 inner.deltaTiming = (sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0) ? (inner.bunch - sl.bunch) : -999;
1664 inner.goodTiming = (inner.bunch==sl.bunch && sl.bunch==0 && sl.muonMatched==1 && sl.isBiased==0);
1665 sl.eifi.push_back(&inner);
1669 std::vector< TgcTrigTile > tgcTrigTileMap_allmods;
1670 for(
auto& inner : tgcTrigTileMap){
1671 if(inner.roiNum<0)
continue;
1672 for(
int i = 0 ;
i < 12 ;
i++){
1674 if((inner.tmdbDecisions>>
i) & 0x1){
1676 tgcTrigTileMap_allmods.push_back(inner2);
1684 tgcCoin_variables.push_back(mon_bcid);
1685 tgcCoin_variables.push_back(mon_pileup);
1686 tgcCoin_variables.push_back(mon_lb);
1688 auto mon_nTgcCoin_detElementIsNull =
Monitored::Scalar<int>(
"nTgcCoinDetElementIsNull", n_TgcCoin_detElementIsNull);
1689 auto mon_nTgcCoin_postOutPtrIsNull =
Monitored::Scalar<int>(
"nTgcCoinPostOutPtrIsNull", n_TgcCoin_postOutPtrIsNull);
1690 tgcCoin_variables.push_back(mon_nTgcCoin_detElementIsNull);
1691 tgcCoin_variables.push_back(mon_nTgcCoin_postOutPtrIsNull);
1693 std::vector<Monitored::ObjectsCollection<std::vector<TgcTrig>,
double>> vo_coin;
1694 vo_coin.reserve(38 * 21);
1696 fillTgcCoin(
"SL",tgcTrigMap_SL,vo_coin,tgcCoin_variables);
1697 fillTgcCoin(
"SL_Endcap",tgcTrigMap_SL_Endcap,vo_coin,tgcCoin_variables);
1698 fillTgcCoin(
"SL_Forward",tgcTrigMap_SL_Forward,vo_coin,tgcCoin_variables);
1699 fillTgcCoin(
"HPT_Wire",tgcTrigMap_HPT_Wire,vo_coin,tgcCoin_variables);
1700 fillTgcCoin(
"HPT_Endcap_Wire",tgcTrigMap_HPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1701 fillTgcCoin(
"HPT_Forward_Wire",tgcTrigMap_HPT_Forward_Wire,vo_coin,tgcCoin_variables);
1702 fillTgcCoin(
"HPT_Strip",tgcTrigMap_HPT_Strip,vo_coin,tgcCoin_variables);
1703 fillTgcCoin(
"HPT_Endcap_Strip",tgcTrigMap_HPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1704 fillTgcCoin(
"HPT_Forward_Strip",tgcTrigMap_HPT_Forward_Strip,vo_coin,tgcCoin_variables);
1705 fillTgcCoin(
"LPT_Wire",tgcTrigMap_LPT_Wire,vo_coin,tgcCoin_variables);
1706 fillTgcCoin(
"LPT_Endcap_Wire",tgcTrigMap_LPT_Endcap_Wire,vo_coin,tgcCoin_variables);
1707 fillTgcCoin(
"LPT_Forward_Wire",tgcTrigMap_LPT_Forward_Wire,vo_coin,tgcCoin_variables);
1708 fillTgcCoin(
"LPT_Strip",tgcTrigMap_LPT_Strip,vo_coin,tgcCoin_variables);
1709 fillTgcCoin(
"LPT_Endcap_Strip",tgcTrigMap_LPT_Endcap_Strip,vo_coin,tgcCoin_variables);
1710 fillTgcCoin(
"LPT_Forward_Strip",tgcTrigMap_LPT_Forward_Strip,vo_coin,tgcCoin_variables);
1711 fillTgcCoin(
"EIFI_Wire",tgcTrigMap_EIFI_Wire,vo_coin,tgcCoin_variables);
1712 fillTgcCoin(
"EIFI_Endcap_Wire",tgcTrigMap_EIFI_Endcap_Wire,vo_coin,tgcCoin_variables);
1713 fillTgcCoin(
"EIFI_Forward_Wire",tgcTrigMap_EIFI_Forward_Wire,vo_coin,tgcCoin_variables);
1714 fillTgcCoin(
"EIFI_Strip",tgcTrigMap_EIFI_Strip,vo_coin,tgcCoin_variables);
1715 fillTgcCoin(
"EIFI_Endcap_Strip",tgcTrigMap_EIFI_Endcap_Strip,vo_coin,tgcCoin_variables);
1716 fillTgcCoin(
"EIFI_Forward_Strip",tgcTrigMap_EIFI_Forward_Strip,vo_coin,tgcCoin_variables);
1718 std::vector<Monitored::ObjectsCollection<std::vector<ExtTrigInfo>,
double>> vo_exttriginfo;
1719 vo_exttriginfo.reserve(13 * 5);
1720 std::vector<ExtTrigInfo> extTrigInfo_SL;
1721 std::vector<ExtTrigInfo> extTrigInfo_HPT_Wire;
1722 std::vector<ExtTrigInfo> extTrigInfo_HPT_Strip;
1723 std::vector<ExtTrigInfo> extTrigInfo_LPT_Wire;
1724 std::vector<ExtTrigInfo> extTrigInfo_LPT_Strip;
1725 fillTgcCoinEff(
"SL",tgcTrigMap_SL,extpositions_pivot,extTrigInfo_SL,vo_exttriginfo,tgcCoin_variables);
1726 fillTgcCoinEff(
"HPT_Wire",tgcTrigMap_HPT_Wire,extpositions_pivot,extTrigInfo_HPT_Wire,vo_exttriginfo,tgcCoin_variables);
1727 fillTgcCoinEff(
"HPT_Strip",tgcTrigMap_HPT_Strip,extpositions_pivot,extTrigInfo_HPT_Strip,vo_exttriginfo,tgcCoin_variables);
1728 fillTgcCoinEff(
"LPT_Wire",tgcTrigMap_LPT_Wire,extpositions_pivot,extTrigInfo_LPT_Wire,vo_exttriginfo,tgcCoin_variables);
1729 fillTgcCoinEff(
"LPT_Strip",tgcTrigMap_LPT_Strip,extpositions_pivot,extTrigInfo_LPT_Strip,vo_exttriginfo,tgcCoin_variables);
1735 tgcCoin_variables.push_back(coin_inner_tgc_roi);
1737 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.sector) : -999;
1739 tgcCoin_variables.push_back(coin_inner_tgc_sector);
1741 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.sector) : -999;
1743 tgcCoin_variables.push_back(coin_inner_tgc_fake_sector);
1746 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.eta) : -999;
1748 tgcCoin_variables.push_back(coin_inner_tgc_eta);
1750 return (
m.bunch==0 &&
m.muonMatched==1 &&
m.isBiased==0) ? (
m.phi) : -999;
1752 tgcCoin_variables.push_back(coin_inner_tgc_phi);
1755 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.eta) : -999;
1757 tgcCoin_variables.push_back(coin_inner_tgc_fake_eta);
1759 return (
m.bunch==0 &&
m.muonMatched==0 &&
m.loosemuonMatched==0 &&
m.isBiased==0) ? (
m.phi) : -999;
1761 tgcCoin_variables.push_back(coin_inner_tgc_fake_phi);
1764 return m.isForward==1;
1766 tgcCoin_variables.push_back(coin_inner_tgc_forward);
1768 return m.isForward==0;
1770 tgcCoin_variables.push_back(coin_inner_tgc_endcap);
1772 return std::abs(
m.eta) < 1.3;
1774 tgcCoin_variables.push_back(coin_inner_tgc_etaupto1p3);
1776 return std::abs(
m.eta) > 1.3 &&
m.isForward==0;
1778 tgcCoin_variables.push_back(coin_inner_tgc_etafrom1p3_endcap);
1783 tgcCoin_variables.push_back(coin_inner_tgc_coinflagEifi);
1787 tgcCoin_variables.push_back(coin_inner_tgc_coinflagTile);
1791 tgcCoin_variables.push_back(coin_inner_tgc_coinflagRpc);
1795 tgcCoin_variables.push_back(coin_inner_tgc_coinflagNsw);
1799 tgcCoin_variables.push_back(coin_inner_tgc_coinflagC);
1803 return (
m.rpc.size()>0);
1805 tgcCoin_variables.push_back(coin_inner_tgc_anyBcRpc);
1807 for(
const auto& inner :
m.rpc){
1808 if(inner->bunch == -1) return 1.;
1812 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc);
1814 for(
const auto& inner :
m.rpc){
1815 if(inner->bunch == 0) return 1.;
1819 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc);
1821 for(
const auto& inner :
m.rpc){
1822 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1826 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid0);
1828 for(
const auto& inner :
m.rpc){
1829 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1833 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid1);
1835 for(
const auto& inner :
m.rpc){
1836 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1840 tgcCoin_variables.push_back(coin_inner_tgc_currBcRpc_goodBcid2);
1842 for(
const auto& inner :
m.rpc){
1843 if(inner->bunch == 1) return 1.;
1847 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc);
1849 for(
const auto& inner :
m.rpc){
1850 if(inner->bunch == 2) return 1.;
1854 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc);
1857 for(
const auto& inner :
m.rpc){
1858 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1862 tgcCoin_variables.push_back(coin_inner_tgc_prevBcRpc_goodBcid0);
1864 for(
const auto& inner :
m.rpc){
1865 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1869 tgcCoin_variables.push_back(coin_inner_tgc_nextBcRpc_goodBcid0);
1870 auto coin_inner_tgc_nextnextBcRpc_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcRpc_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&
m){
1871 for(
const auto& inner :
m.rpc){
1872 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1876 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcRpc_goodBcid0);
1880 return (
m.nsw.size()>0);
1882 tgcCoin_variables.push_back(coin_inner_tgc_anyBcNsw);
1884 for(
const auto& inner :
m.nsw){
1885 if(inner->bunch == -1) return 1.;
1889 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw);
1891 for(
const auto& inner :
m.nsw){
1892 if(inner->bunch == 0) return 1.;
1896 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw);
1898 for(
const auto& inner :
m.nsw){
1899 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1903 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid0);
1905 for(
const auto& inner :
m.nsw){
1906 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1910 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid1);
1912 for(
const auto& inner :
m.nsw){
1913 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1917 tgcCoin_variables.push_back(coin_inner_tgc_currBcNsw_goodBcid2);
1919 for(
const auto& inner :
m.nsw){
1920 if(inner->bunch == 1) return 1.;
1924 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw);
1926 for(
const auto& inner :
m.nsw){
1927 if(inner->bunch == 2) return 1.;
1931 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw);
1934 for(
const auto& inner :
m.nsw){
1935 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
1939 tgcCoin_variables.push_back(coin_inner_tgc_prevBcNsw_goodBcid0);
1941 for(
const auto& inner :
m.nsw){
1942 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
1946 tgcCoin_variables.push_back(coin_inner_tgc_nextBcNsw_goodBcid0);
1947 auto coin_inner_tgc_nextnextBcNsw_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcNsw_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&
m){
1948 for(
const auto& inner :
m.nsw){
1949 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
1953 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcNsw_goodBcid0);
1957 return (
m.tile.size()>0);
1959 tgcCoin_variables.push_back(coin_inner_tgc_anyBcTile);
1961 for(
const auto& inner :
m.tile){
1962 if(inner->bunch == -1) return 1.;
1966 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile);
1968 for(
const auto& inner :
m.tile){
1969 if(inner->bunch == 0) return 1.;
1973 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile);
1975 for(
const auto& inner :
m.tile){
1976 if(inner->bunch == 0 && inner->goodBcid0 == 1) return 1.;
1980 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid0);
1982 for(
const auto& inner :
m.tile){
1983 if(inner->bunch == 0 && inner->goodBcid1 == 1) return 1.;
1987 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid1);
1989 for(
const auto& inner :
m.tile){
1990 if(inner->bunch == 0 && inner->goodBcid2 == 1) return 1.;
1994 tgcCoin_variables.push_back(coin_inner_tgc_currBcTile_goodBcid2);
1996 for(
const auto& inner :
m.tile){
1997 if(inner->bunch == 1) return 1.;
2001 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile);
2003 for(
const auto inner :
m.tile){
2004 if(inner->bunch == 2) return 1.;
2008 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile);
2011 for(
const auto& inner :
m.tile){
2012 if(inner->bunch == -1 && inner->goodBcid0 == 1) return 1.;
2016 tgcCoin_variables.push_back(coin_inner_tgc_prevBcTile_goodBcid0);
2018 for(
const auto& inner :
m.tile){
2019 if(inner->bunch == 1 && inner->goodBcid0 == 1) return 1.;
2023 tgcCoin_variables.push_back(coin_inner_tgc_nextBcTile_goodBcid0);
2024 auto coin_inner_tgc_nextnextBcTile_goodBcid0=
Monitored::Collection(
"coin_inner_tgc_nextnextBcTile_goodBcid0",tgcTrigMap_SL,[](
const TgcTrig&
m){
2025 for(
const auto inner :
m.tile){
2026 if(inner->bunch == 2 && inner->goodBcid0 == 1) return 1.;
2030 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcTile_goodBcid0);
2034 return (
m.eifi.size()>0);
2036 tgcCoin_variables.push_back(coin_inner_tgc_anyBcEifi);
2038 for(
const auto& inner :
m.eifi){
2039 if(inner->bunch == -1) return 1.;
2043 tgcCoin_variables.push_back(coin_inner_tgc_prevBcEifi);
2045 for(
const auto& inner :
m.eifi){
2046 if(inner->bunch == 0) return 1.;
2050 tgcCoin_variables.push_back(coin_inner_tgc_currBcEifi);
2052 for(
const auto& inner :
m.eifi){
2053 if(inner->bunch == 1) return 1.;
2057 tgcCoin_variables.push_back(coin_inner_tgc_nextBcEifi);
2059 for(
const auto inner :
m.eifi){
2060 if(inner->bunch == 2) return 1.;
2064 tgcCoin_variables.push_back(coin_inner_tgc_nextnextBcEifi);
2071 tgcCoin_variables.push_back(coin_inner_rpc_slSector);
2073 return (
m.goodTiming) ?
m.slSector : -999;
2075 tgcCoin_variables.push_back(coin_inner_rpc_slSector_goodTiming);
2079 tgcCoin_variables.push_back(coin_inner_rpc_roiEta);
2083 tgcCoin_variables.push_back(coin_inner_rpc_roiPhi);
2087 tgcCoin_variables.push_back(coin_inner_rpc_roiNum);
2091 tgcCoin_variables.push_back(coin_inner_rpc_deltaBcid);
2093 return m.deltaTiming;
2095 tgcCoin_variables.push_back(coin_inner_rpc_deltaTiming);
2099 tgcCoin_variables.push_back(coin_inner_rpc_rpcEta);
2103 tgcCoin_variables.push_back(coin_inner_rpc_rpcPhi);
2107 tgcCoin_variables.push_back(coin_inner_rpc_rpcDEta);
2111 tgcCoin_variables.push_back(coin_inner_rpc_rpcDPhi);
2115 tgcCoin_variables.push_back(coin_inner_rpc_currBc);
2119 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid0);
2123 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid1);
2127 tgcCoin_variables.push_back(coin_inner_rpc_goodBcid2);
2129 return m.goodTiming;
2131 tgcCoin_variables.push_back(coin_inner_rpc_goodTiming);
2138 tgcCoin_variables.push_back(coin_inner_nsw_deltaR);
2142 tgcCoin_variables.push_back(coin_inner_nsw_slSector);
2144 return (
m.goodTiming) ?
m.slSector : -999;
2146 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming);
2148 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0) ?
m.slSector : -999;
2150 tgcCoin_variables.push_back(coin_inner_nsw_slSector_endcap);
2152 return (
m.isForward==1) ?
m.slSector : -999;
2154 tgcCoin_variables.push_back(coin_inner_nsw_slSector_forward);
2156 return (std::abs(
m.roiEta)>1.3 &&
m.isForward==0 &&
m.goodTiming) ?
m.slSector : -999;
2158 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_endcap);
2160 return (
m.isForward==1 &&
m.goodTiming) ?
m.slSector : -999;
2162 tgcCoin_variables.push_back(coin_inner_nsw_slSector_goodTiming_forward);
2166 tgcCoin_variables.push_back(coin_inner_nsw_roiEta);
2170 tgcCoin_variables.push_back(coin_inner_nsw_roiPhi);
2174 tgcCoin_variables.push_back(coin_inner_nsw_roiNum);
2178 tgcCoin_variables.push_back(coin_inner_nsw_deltaBcid);
2180 return m.deltaTiming;
2182 tgcCoin_variables.push_back(coin_inner_nsw_deltaTiming);
2186 tgcCoin_variables.push_back(coin_inner_nsw_R);
2190 tgcCoin_variables.push_back(coin_inner_nsw_Phi);
2192 return m.deltaTheta;
2194 tgcCoin_variables.push_back(coin_inner_nsw_deltaTheta);
2196 return m.isForward==1;
2198 tgcCoin_variables.push_back(coin_inner_nsw_isForward);
2200 return m.isForward==0;
2202 tgcCoin_variables.push_back(coin_inner_nsw_isEndcap);
2206 tgcCoin_variables.push_back(coin_inner_nsw_currBc);
2208 return (
m.isForward==0 &&
m.currBc==1);
2210 tgcCoin_variables.push_back(coin_inner_nsw_endcap_currBc);
2212 return (
m.isForward==1 &&
m.currBc==1);
2214 tgcCoin_variables.push_back(coin_inner_nsw_forward_currBc);
2218 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid0);
2222 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid1);
2226 tgcCoin_variables.push_back(coin_inner_nsw_goodBcid2);
2228 return m.goodTiming;
2230 tgcCoin_variables.push_back(coin_inner_nsw_goodTiming);
2233 return m.slInputIndex;
2235 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex);
2237 return (
m.isAside==1 &&
m.isForward==0) ?
m.slInputIndex : -999;
2239 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AEndcap);
2241 return (
m.isAside==0 &&
m.isForward==0) ?
m.slInputIndex : -999;
2243 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CEndcap);
2245 return (
m.isAside==1 &&
m.isForward==1) ?
m.slInputIndex : -999;
2247 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_AForward);
2249 return (
m.isAside==0 &&
m.isForward==1) ?
m.slInputIndex : -999;
2251 tgcCoin_variables.push_back(coin_inner_nsw_slInputIndex_CForward);
2254 return (
m.goodTiming==1 &&
m.goodBcid0==1);
2256 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid0);
2258 return (
m.goodTiming==1 &&
m.goodBcid1==1);
2260 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid1);
2262 return (
m.goodTiming==1 &&
m.goodBcid2==1);
2264 tgcCoin_variables.push_back(coin_inner_nsw_goodTimingBcid2);
2266 return m.deltaTiming==-1;
2268 tgcCoin_variables.push_back(coin_inner_nsw_BcPrev);
2270 return m.deltaTiming==0;
2272 tgcCoin_variables.push_back(coin_inner_nsw_BcCurr);
2274 return m.deltaTiming==1;
2276 tgcCoin_variables.push_back(coin_inner_nsw_BcNext);
2278 return m.deltaTiming==2;
2280 tgcCoin_variables.push_back(coin_inner_nsw_BcNextNext);
2286 tgcCoin_variables.push_back(coin_inner_tile_slSector);
2288 return (
m.goodTiming) ?
m.slSector : -999;
2290 tgcCoin_variables.push_back(coin_inner_tile_slSector_goodTiming);
2294 tgcCoin_variables.push_back(coin_inner_tile_roiEta);
2298 tgcCoin_variables.push_back(coin_inner_tile_roiPhi);
2302 tgcCoin_variables.push_back(coin_inner_tile_roiNum);
2306 tgcCoin_variables.push_back(coin_inner_tile_deltaBcid);
2308 return m.deltaTiming;
2310 tgcCoin_variables.push_back(coin_inner_tile_deltaTiming);
2312 return m.tmdbDecisions;
2314 tgcCoin_variables.push_back(coin_inner_tile_tmdbDecisions);
2318 tgcCoin_variables.push_back(coin_inner_tile_currBc);
2322 tgcCoin_variables.push_back(coin_inner_tile_goodBcid0);
2326 tgcCoin_variables.push_back(coin_inner_tile_goodBcid1);
2330 tgcCoin_variables.push_back(coin_inner_tile_goodBcid2);
2332 return m.goodTiming;
2334 tgcCoin_variables.push_back(coin_inner_tile_goodTiming);
2339 tgcCoin_variables.push_back(coin_inner_tile2_slSector);
2343 tgcCoin_variables.push_back(coin_inner_tile2_currBc);
2345 return m.tmdbDecisions;
2347 tgcCoin_variables.push_back(coin_inner_tile2_tmdbDecisions);
2351 return (
m.goodTiming) ?
m.slSector : -999;
2353 tgcCoin_variables.push_back(coin_inner_eifi_slSector_goodTiming);
2357 tgcCoin_variables.push_back(coin_inner_eifi_slSector);
2361 tgcCoin_variables.push_back(coin_inner_eifi_roiEta);
2365 tgcCoin_variables.push_back(coin_inner_eifi_roiPhi);
2369 tgcCoin_variables.push_back(coin_inner_eifi_roiNum);
2371 return m.deltaTiming;
2373 tgcCoin_variables.push_back(coin_inner_eifi_deltaTiming);
2377 tgcCoin_variables.push_back(coin_inner_eifi_currBc);
2379 return m.goodTiming;
2381 tgcCoin_variables.push_back(coin_inner_eifi_goodTiming);
2392 return StatusCode::SUCCESS;
2396 const std::vector<TgcTrig>& tgcTrigs,
2477 const std::vector<TgcTrig>& tgcTrigs,
2478 const std::vector<ExtPos>& extpositions_pivot,
2479 std::vector<ExtTrigInfo>& extTrigInfoVec,
2482 for(
const auto&
ext : extpositions_pivot){
2485 bool matchedQ =
false;
2486 bool matchedF =
false;
2487 bool matchedC =
false;
2488 bool matchedH =
false;
2489 bool matchedEI =
false;
2490 bool matchedTile =
false;
2491 bool matchedRPC =
false;
2492 bool matchedNSW =
false;
2493 for(
const auto& tgcTrig : tgcTrigs){
2494 if(tgcTrig.bunch!=0)
continue;
2495 if(tgcTrig.isAside==1 &&
ext.extPos.z()<0)
continue;
2496 if(tgcTrig.isAside==0 &&
ext.extPos.z()>0)
continue;
2498 const Amg::Vector3D posOut(tgcTrig.x_Out,tgcTrig.y_Out,tgcTrig.z_Out);
2501 TVector2
vec(tgcTrig.x_Out,tgcTrig.y_Out);
2503 double deltaR =
vec.Mod() - TVector2(
ext.extPos.x(),
ext.extPos.y()).Mod();
2507 int charge = (tgcTrig.isPositiveDeltaR==0) ? (-1) : (+1);
2508 matchedQ |= (
ext.muon->charge()*
charge>0);
2518 extTrigInfo.
eta =
ext.extPos.eta();
2519 extTrigInfo.
phi =
ext.extPos.phi();
2529 extTrigInfoVec.push_back(extTrigInfo);
2561 double rindex = (
r - nsw_rmin) / nsw_rindex_step;
2566 double max_dr = 999;
2578 std::vector<bool>
passed;
2579 passed.reserve(mymuons.size());
2580 for(
const auto& mymuon : mymuons){
2581 passed.push_back( mymuon.matchedL1Items.find(
item) != mymuon.matchedL1Items.end() );
2583 auto passed_rois = menuAndRoIs[
item];
2588 thrMonVariables.push_back(lumiBlock_l1item);
2591 thrMonVariables.push_back(muon_passed_l1item);
2594 return (m.muon->pt() > pt_30_cut) ? m.muon->eta() : -10;
2596 thrMonVariables.push_back(muon_eta_l1item);
2598 return (m.muon->pt() > pt_30_cut) ? m.muon->phi() : -10;
2600 thrMonVariables.push_back(muon_phi_l1item);
2602 return (std::abs(m.muon->eta()) < barrel_end) ? m.muon->pt() / Gaudi::Units::GeV : -10;
2604 thrMonVariables.push_back(muon_pt_rpc_l1item);
2606 return (std::abs(m.muon->eta()) > barrel_end && std::abs(m.muon->eta()) < trigger_end) ? m.muon->pt() / Gaudi::Units::GeV : -10;
2608 thrMonVariables.push_back(muon_pt_tgc_l1item);
2610 return (std::abs(m.muon->eta()) < barrel_end && m.muon->pt() > pt_30_cut) ? m.muon->phi() : -10;
2612 thrMonVariables.push_back(muon_phi_rpc_l1item);
2614 return (std::abs(m.muon->eta()) > barrel_end && std::abs(m.muon->eta()) < trigger_end && m.muon->pt() > pt_30_cut) ? m.muon->phi() : -10;
2616 thrMonVariables.push_back(muon_phi_tgc_l1item);
2619 thrMonVariables.push_back(l1item_roi_eta);
2621 thrMonVariables.push_back(l1item_roi_phi);
2623 return (m->getSource()==xAOD::MuonRoI::Barrel)?(m->phi()):(-10);
2626 return (m->getSource()!=xAOD::MuonRoI::Barrel)?(m->phi()):(-10);
2628 thrMonVariables.push_back(l1item_roi_phi_tgc);
2631 return (m->getSource() == xAOD::MuonRoI::Barrel) ? m->phi() : -10;
2633 thrMonVariables.push_back(l1item_roi_phi_barrel);
2635 return (m->getSource() == xAOD::MuonRoI::Endcap) ? m->phi() : -10;
2637 thrMonVariables.push_back(l1item_roi_phi_endcap);
2639 return (m->getSource() == xAOD::MuonRoI::Forward) ? m->phi() : -10;
2641 thrMonVariables.push_back(l1item_roi_phi_forward);
2643 return m->getHemisphere() == xAOD::MuonRoI::Positive;
2645 thrMonVariables.push_back(l1item_roi_sideA);
2647 return m->getHemisphere() == xAOD::MuonRoI::Negative;
2649 thrMonVariables.push_back(l1item_roi_sideC);
2654 thrMonVariables.push_back(l1item_roi_roiNumber);
2657 return (m->getHemisphere() == xAOD::MuonRoI::Positive)?(m->getSectorID()+1):(-1 * m->getSectorID()-1);
2659 thrMonVariables.push_back(l1item_roi_sector);
2661 return m->getSource() == xAOD::MuonRoI::Barrel;
2663 thrMonVariables.push_back(l1item_roi_barrel);
2665 return m->getSource() == xAOD::MuonRoI::Endcap;
2667 thrMonVariables.push_back(l1item_roi_endcap);
2669 return m->getSource() == xAOD::MuonRoI::Forward;
2671 thrMonVariables.push_back(l1item_roi_forward);
2673 return m->getThrNumber();
2675 thrMonVariables.push_back(l1item_roi_thrNumber);
2678 return (m->getSource()==xAOD::MuonRoI::Barrel)?(m->isMoreCandInRoI()):(-1);
2680 thrMonVariables.push_back(l1item_roi_ismorecand);
2682 return (m->getSource()!=xAOD::MuonRoI::Barrel)?(m->getBW3Coincidence()):(-1);
2684 thrMonVariables.push_back(l1item_roi_bw3coin);
2686 return (m->getSource()!=xAOD::MuonRoI::Barrel)?(m->getInnerCoincidence()):(-1);
2688 thrMonVariables.push_back(l1item_roi_innercoin);
2690 return (m->getSource()!=xAOD::MuonRoI::Barrel)?(m->getGoodMF()):(-1);
2692 thrMonVariables.push_back(l1item_roi_goodmf);
2707 std::map<const xAOD::Muon*, std::set<std::string>> map_muon_and_tgchits;
2708 if(tgcPrd.
isValid() && muonMgr!=
nullptr){
2711 std::vector < TGC::TgcHit > tgcHits;
2712 std::map<std::string, std::vector<TGC::TgcHit>> tgcHitsMap;
2713 for (
const auto tgccnt : *tgcPrd) {
2714 for (
const auto data : *tgccnt) {
2724 const int bcmask =
data->getBcBitMap();
2726 shortWidth,longWidth,
length,
2729 if(extpositions.find(tgcHit.
cham_name())!=extpositions.end()){
2730 for(
auto& cham : extpositions[tgcHit.
cham_name()]){
2731 double newX = cham.extPos.x() + cham.extVec.x() / cham.extVec.z() * ( tgcHit.
Z() - cham.extPos.z() );
2732 double newY = cham.extPos.y() + cham.extVec.y() / cham.extVec.z() * ( tgcHit.
Z() - cham.extPos.z() );
2736 double chamPhi = detEle->
center().phi();
2737 TVector2 extPos(newX,newY);
2738 TVector2 hitPos(tgcHit.
X(),tgcHit.
Y());
2739 TVector2 rot_extPos = extPos.Rotate(-chamPhi +
M_PI/2.);
2740 TVector2 rot_hitPos = hitPos.Rotate(-chamPhi +
M_PI/2.);
2741 double res = (tgcHit.
isStrip())?
std::sin( rot_extPos.DeltaPhi( rot_hitPos ) ) * rot_extPos.Mod(): rot_hitPos.Y() - rot_extPos.Y();
2744 cham.chambersHasHit.insert(tgcHit.
type_name());
2745 map_muon_and_tgchits[cham.muon].insert(tgcHit.
channel_name());
2749 tgcHits.push_back(tgcHit);
2750 tgcHitsMap[tgcHit.
cham_name() + ( (tgcHit.
isStrip())?(
"S"):(
"W") )].push_back(tgcHit);
2751 tgcHitsMap[tgcHit.
type_name()].push_back(tgcHit);
2755 std::map<std::string, std::vector<int>> tgcHitPhiMap;
2756 std::map<std::string, std::vector<int>> tgcHitEtaMap;
2757 std::map<std::string, std::vector<int>> tgcHitPhiMapGlobal;
2758 std::map<std::string, std::vector<int>> tgcHitTiming;
2759 std::map<std::string, std::vector<int>> tgcHitPhiMapGlobalWithTrack;
2760 std::map<std::string, std::vector<int>> tgcHitTimingWithTrack;
2761 std::map<const std::string, std::vector<TGC::TgcHit>> tgcHitBCMaskMap;
2762 std::vector <int> vec_bw24sectors;
2763 std::vector <int> vec_bw24sectors_wire;
2764 std::vector <int> vec_bw24sectors_strip;
2765 std::vector <int> vec_bwfulleta;
2766 std::vector <int> vec_bwfulleta_wire;
2767 std::vector <int> vec_bwfulleta_strip;
2768 std::vector <int> vec_bwtiming;
2769 std::vector <int> vec_bwtiming_wire;
2770 std::vector <int> vec_bwtiming_strip;
2771 std::vector <int> vec_bw24sectors_wTrack;
2772 std::vector <int> vec_bw24sectors_wire_wTrack;
2773 std::vector <int> vec_bw24sectors_strip_wTrack;
2774 std::vector <int> vec_bwfulleta_wTrack;
2775 std::vector <int> vec_bwfulleta_wire_wTrack;
2776 std::vector <int> vec_bwfulleta_strip_wTrack;
2777 std::vector <int> vec_bwtiming_wTrack;
2778 std::vector <int> vec_bwtiming_wire_wTrack;
2779 std::vector <int> vec_bwtiming_strip_wTrack;
2780 for(
const auto& tgcHit : tgcHits){
2781 bool hasAssociatedGoodMuonTrack =
false;
2782 for(
const auto&
res : tgcHit.residuals()){
2784 if(map_muon_and_tgchits[
muon].
find(tgcHit.channel_name()) == map_muon_and_tgchits[
muon].
end())
continue;
2787 for(
const auto& chamHasHit : map_muon_and_tgchits[
muon]){
2788 if( chamHasHit.find(tgcHit.gap_name()) != std::string::npos )
continue;
2789 if( chamHasHit.find(
"M04") != std::string::npos )
continue;
2790 if( chamHasHit.find(
'W') != std::string::npos ) nWhits++;
2791 if( chamHasHit.find(
'S') != std::string::npos ) nShits++;
2795 hasAssociatedGoodMuonTrack =
true;
2803 if(hasAssociatedGoodMuonTrack) tgcHitBCMaskMap[tgcHit.channel_name()].push_back(tgcHit);
2806 int phimap_index = 0;
2807 int etamap_index = 0;
2808 int phimap_global_index = 0;
2809 m_tgcMonTool->getMapIndex(tgcHit,etamap_index,phimap_index,phimap_global_index );
2810 for(
int bunch = -1 ; bunch <= +1 ; bunch++){
2816 tgcHitPhiMapGlobal[
station_name].push_back(phimap_global_index);
2818 if(hasAssociatedGoodMuonTrack){
2819 tgcHitPhiMapGlobalWithTrack[
station_name].push_back(phimap_global_index);
2825 vec_bwfulleta.push_back(tgcHit.iEta());
2826 vec_bwtiming.push_back(bunch);
2827 if(hasAssociatedGoodMuonTrack){
2828 vec_bw24sectors_wTrack.push_back((tgcHit.iSide()==
TGC::TGCSIDE::TGCASIDE)?(tgcHit.iSec()):(-tgcHit.iSec()));
2829 vec_bwfulleta_wTrack.push_back(tgcHit.iEta());
2830 vec_bwtiming_wTrack.push_back(bunch);
2832 if(tgcHit.isStrip()){
2833 vec_bw24sectors_strip.push_back((tgcHit.iSide()==
TGC::TGCSIDE::TGCASIDE)?(tgcHit.iSec()):(-tgcHit.iSec()));
2834 vec_bwfulleta_strip.push_back(tgcHit.iEta());
2835 vec_bwtiming_strip.push_back(bunch);
2836 if(hasAssociatedGoodMuonTrack){
2837 vec_bw24sectors_strip_wTrack.push_back((tgcHit.iSide()==
TGC::TGCSIDE::TGCASIDE)?(tgcHit.iSec()):(-tgcHit.iSec()));
2838 vec_bwfulleta_strip_wTrack.push_back(tgcHit.iEta());
2839 vec_bwtiming_strip_wTrack.push_back(bunch);
2842 vec_bw24sectors_wire.push_back((tgcHit.iSide()==
TGC::TGCSIDE::TGCASIDE)?(tgcHit.iSec()):(-tgcHit.iSec()));
2843 vec_bwfulleta_wire.push_back(tgcHit.iEta());
2844 vec_bwtiming_wire.push_back(bunch);
2845 if(hasAssociatedGoodMuonTrack){
2846 vec_bw24sectors_wire_wTrack.push_back((tgcHit.iSide()==
TGC::TGCSIDE::TGCASIDE)?(tgcHit.iSec()):(-tgcHit.iSec()));
2847 vec_bwfulleta_wire_wTrack.push_back(tgcHit.iEta());
2848 vec_bwtiming_wire_wTrack.push_back(bunch);
2858 hit_variables.push_back(mon_bcid);
2859 hit_variables.push_back(mon_pileup);
2860 hit_variables.push_back(mon_lb);
2863 hit_variables.push_back(hit_n);
2866 hit_variables.push_back(hit_bcmask);
2869 hit_variables.push_back(hit_sideA);
2872 hit_variables.push_back(hit_sideC);
2875 hit_variables.push_back(hit_bw24sectors);
2876 auto hit_bw24sectors_strip=
Monitored::Collection(
"hit_bw24sectors_strip",vec_bw24sectors_strip,[](
const int&
m){
return m;});
2877 hit_variables.push_back(hit_bw24sectors_strip);
2878 auto hit_bw24sectors_wire=
Monitored::Collection(
"hit_bw24sectors_wire",vec_bw24sectors_wire,[](
const int&
m){
return m;});
2879 hit_variables.push_back(hit_bw24sectors_wire);
2881 hit_variables.push_back(hit_bwfulleta);
2882 auto hit_bwfulleta_strip=
Monitored::Collection(
"hit_bwfulleta_strip",vec_bwfulleta_strip,[](
const int&
m){
return m;});
2883 hit_variables.push_back(hit_bwfulleta_strip);
2884 auto hit_bwfulleta_wire=
Monitored::Collection(
"hit_bwfulleta_wire",vec_bwfulleta_wire,[](
const int&
m){
return m;});
2885 hit_variables.push_back(hit_bwfulleta_wire);
2887 hit_variables.push_back(hit_bwtiming);
2888 auto hit_bwtiming_strip=
Monitored::Collection(
"hit_bwtiming_strip",vec_bwtiming_strip,[](
const int&
m){
return m;});
2889 hit_variables.push_back(hit_bwtiming_strip);
2890 auto hit_bwtiming_wire=
Monitored::Collection(
"hit_bwtiming_wire",vec_bwtiming_wire,[](
const int&
m){
return m;});
2891 hit_variables.push_back(hit_bwtiming_wire);
2893 auto hit_bw24sectors_wTrack=
Monitored::Collection(
"hit_bw24sectors_wTrack",vec_bw24sectors_wTrack,[](
const int&
m){
return m;});
2894 hit_variables.push_back(hit_bw24sectors_wTrack);
2895 auto hit_bw24sectors_strip_wTrack=
Monitored::Collection(
"hit_bw24sectors_strip_wTrack",vec_bw24sectors_strip_wTrack,[](
const int&
m){
return m;});
2896 hit_variables.push_back(hit_bw24sectors_strip_wTrack);
2897 auto hit_bw24sectors_wire_wTrack=
Monitored::Collection(
"hit_bw24sectors_wire_wTrack",vec_bw24sectors_wire_wTrack,[](
const int&
m){
return m;});
2898 hit_variables.push_back(hit_bw24sectors_wire_wTrack);
2899 auto hit_bwfulleta_wTrack=
Monitored::Collection(
"hit_bwfulleta_wTrack",vec_bwfulleta_wTrack,[](
const int&
m){
return m;});
2900 hit_variables.push_back(hit_bwfulleta_wTrack);
2901 auto hit_bwfulleta_strip_wTrack=
Monitored::Collection(
"hit_bwfulleta_strip_wTrack",vec_bwfulleta_strip_wTrack,[](
const int&
m){
return m;});
2902 hit_variables.push_back(hit_bwfulleta_strip_wTrack);
2903 auto hit_bwfulleta_wire_wTrack=
Monitored::Collection(
"hit_bwfulleta_wire_wTrack",vec_bwfulleta_wire_wTrack,[](
const int&
m){
return m;});
2904 hit_variables.push_back(hit_bwfulleta_wire_wTrack);
2905 auto hit_bwtiming_wTrack=
Monitored::Collection(
"hit_bwtiming_wTrack",vec_bwtiming_wTrack,[](
const int&
m){
return m;});
2906 hit_variables.push_back(hit_bwtiming_wTrack);
2907 auto hit_bwtiming_strip_wTrack=
Monitored::Collection(
"hit_bwtiming_strip_wTrack",vec_bwtiming_strip_wTrack,[](
const int&
m){
return m;});
2908 hit_variables.push_back(hit_bwtiming_strip_wTrack);
2909 auto hit_bwtiming_wire_wTrack=
Monitored::Collection(
"hit_bwtiming_wire_wTrack",vec_bwtiming_wire_wTrack,[](
const int&
m){
return m;});
2910 hit_variables.push_back(hit_bwtiming_wire_wTrack);
2912 std::vector<Monitored::ObjectsCollection<std::vector<int>,
double>> varowner;
2913 varowner.reserve(tgcHitPhiMap.size() * 2 + tgcHitPhiMapGlobal.size() * 2 + tgcHitPhiMapGlobalWithTrack.size() * 2);
2914 for (
const auto &phimap : tgcHitPhiMap) {
2915 varowner.push_back(
Monitored::Collection(Form(
"hit_x_%s",phimap.first.data()),tgcHitEtaMap[phimap.first],[](
const int&
m){return m;}));
2916 hit_variables.push_back(varowner.back());
2917 varowner.push_back(
Monitored::Collection(Form(
"hit_y_%s", phimap.first.data()),phimap.second,[](
const int&
m){return m;}));
2918 hit_variables.push_back(varowner.back());
2920 for (
const auto &phimap : tgcHitPhiMapGlobal) {
2921 varowner.push_back(
Monitored::Collection(Form(
"hit_glblphi_%s", phimap.first.data()),phimap.second,[](
const int&
m){return m;}));
2922 hit_variables.push_back(varowner.back());
2923 varowner.push_back(
Monitored::Collection(Form(
"hit_bunch_%s", phimap.first.data()),tgcHitTiming[phimap.first],[](
const int&
m){return m;}));
2924 hit_variables.push_back(varowner.back());
2926 for (
const auto &phimap : tgcHitPhiMapGlobalWithTrack) {
2927 varowner.push_back(
Monitored::Collection(Form(
"hit_glblphi_wTrack_%s", phimap.first.data()),phimap.second,[](
const int&
m){return m;}));
2928 hit_variables.push_back(varowner.back());
2929 varowner.push_back(
Monitored::Collection(Form(
"hit_bunch_wTrack_%s", phimap.first.data()),tgcHitTimingWithTrack[phimap.first],[](
const int&
m){return m;}));
2930 hit_variables.push_back(varowner.back());
2934 std::map<std::string, std::vector<int>> tgcHitBCMaskGlobalIndex;
2935 std::map<std::string, std::vector<int>> tgcHitBCMask;
2936 std::map<std::string, std::vector<int>> tgcHitBCMaskBWSectors;
2937 std::map<std::string, std::vector<int>> tgcHitBCMaskForBWSectors;
2938 for(
const auto& channelNameAndBCMask : tgcHitBCMaskMap){
2940 std::string chamberNameWithWS = channelNameAndBCMask.first.substr(0,16);
2941 int thisChannel =
std::atoi( channelNameAndBCMask.first.substr(18,3).data() );
2942 std::string prev1ChannelName = Form(
"%sCh%03d",chamberNameWithWS.data(),thisChannel-1);
2943 std::string next1ChannelName = Form(
"%sCh%03d",chamberNameWithWS.data(),thisChannel+1);
2945 if(tgcHitBCMaskMap.find(prev1ChannelName)!=tgcHitBCMaskMap.end())
continue;
2946 if(tgcHitBCMaskMap.find(next1ChannelName)!=tgcHitBCMaskMap.end())
continue;
2947 std::string cham_name = channelNameAndBCMask.first.substr(0,12);
2948 int iLay =
std::atoi( channelNameAndBCMask.first.substr(13,2).data() );
2950 int phimap_index = 0;
2951 int etamap_index = 0;
2952 int phimap_global_index = 0;
2953 if(!
m_tgcMonTool->getMapIndex(cham,iLay,etamap_index,phimap_index,phimap_global_index ))
continue;
2955 for(
const auto& tgcHit : channelNameAndBCMask.second){
2956 tgcHitBCMaskGlobalIndex[
station_name].push_back(phimap_global_index);
2960 tgcHitBCMaskForBWSectors[
"All"].push_back(tgcHit.bcmask());
2961 if(chamberNameWithWS.find(
'W')!=std::string::npos){
2963 tgcHitBCMaskForBWSectors[
"Wire"].push_back(tgcHit.bcmask());
2966 tgcHitBCMaskForBWSectors[
"Strip"].push_back(tgcHit.bcmask());
2971 std::vector<Monitored::ObjectsCollection<std::vector<int>,
double>> varowner_bcmask;
2972 varowner_bcmask.reserve(tgcHitBCMask.size() * 2 + tgcHitBCMaskBWSectors.size() * 2);
2973 for(
const auto& chamType : tgcHitBCMaskBWSectors){
2974 varowner_bcmask.push_back(
Monitored::Collection(Form(
"hit_bcmask_bw24sectors_%s",chamType.first.data()),chamType.second,[](
const int&
m){return m;}));
2975 hit_variables.push_back(varowner_bcmask.back());
2976 varowner_bcmask.push_back(
Monitored::Collection(Form(
"hit_bcmask_for_bw24sectors_%s",chamType.first.data()),tgcHitBCMaskForBWSectors[chamType.first],[](
const int&
m){return m;}));
2977 hit_variables.push_back(varowner_bcmask.back());
2979 for(
const auto& stationNameAndBCMask : tgcHitBCMask){
2980 varowner_bcmask.push_back(
Monitored::Collection(Form(
"hit_bcmask_glblphi_%s",stationNameAndBCMask.first.data()),tgcHitBCMaskGlobalIndex[stationNameAndBCMask.first],[](
const int&
m){return m;}));
2981 hit_variables.push_back(varowner_bcmask.back());
2982 varowner_bcmask.push_back(
Monitored::Collection(Form(
"hit_bcmask_%s",stationNameAndBCMask.first.data()),stationNameAndBCMask.second,[](
const int&
m){return m;}));
2983 hit_variables.push_back(varowner_bcmask.back());
2988 std::map<std::string, std::vector<double>> tgcEffPhiMap_Denominator;
2989 std::map<std::string, std::vector<double>> tgcEffEtaMap_Denominator;
2990 std::map<std::string, std::vector<double>> tgcEffPhiMapGlobal_Denominator;
2991 std::map<std::string, std::vector<double>> tgcEffPhiMap_Numerator;
2992 std::map<std::string, std::vector<double>> tgcEffEtaMap_Numerator;
2993 std::map<std::string, std::vector<double>> tgcEffPhiMapGlobal_Numerator;
2994 std::map<std::string, std::vector<double>> tgcEffMapExtX;
2995 std::map<std::string, std::vector<double>> tgcEffMapExtY;
2996 std::map<std::string, std::vector<double>> tgcEffMapHasHit;
2997 for(
const auto& exts : extpositions){
2998 const std::string& cham_name = exts.first;
3003 for(
const auto&
ext : exts.second){
3006 for(
int iLay = 1 ; iLay <= 3 ; iLay++){
3007 int phimap_index = 0;
3008 int etamap_index = 0;
3009 int phimap_global_index = 0;
3010 if(!
m_tgcMonTool->getMapIndex(cham,iLay,etamap_index,phimap_index,phimap_global_index ))
continue;
3012 double newX = extPosLocal.x() - extVecLocal.x() / extVecLocal.z() * extPosLocal.z();
3013 double newY = extPosLocal.y() - extVecLocal.y() / extVecLocal.z() * extPosLocal.z();
3014 for(
int iSorW = 0 ; iSorW < 2 ; iSorW++){
3015 if(cham.
iM()==1 && iLay==2 && iSorW==0)
continue;
3016 std::string gap_name = Form(
"%sL%02d",cham_name.data(),iLay);
3017 std::string type_name = Form(
"%sL%02d%s",cham_name.data(),iLay,(iSorW==0)?(
"S"):(
"W"));
3020 for(
const auto& chamHasHit : map_muon_and_tgchits[
ext.muon]){
3021 if( chamHasHit.find(gap_name) != std::string::npos )
continue;
3022 if( chamHasHit.find(
"M04") != std::string::npos )
continue;
3023 if( chamHasHit.find(
'W') != std::string::npos ) nWhits++;
3024 if( chamHasHit.find(
'S') != std::string::npos ) nShits++;
3029 tgcEffPhiMap_Denominator[
station_name].push_back(phimap_index);
3030 tgcEffEtaMap_Denominator[
station_name].push_back(etamap_index);
3031 tgcEffPhiMapGlobal_Denominator[
station_name].push_back(phimap_global_index);
3032 tgcEffMapExtX[type_name].push_back(newX);
3033 tgcEffMapExtY[type_name].push_back(newY);
3034 double hitExist = 0;
3035 if(
ext.chambersHasHit.find(type_name) !=
ext.chambersHasHit.end()) hitExist=1;
3036 tgcEffPhiMap_Numerator[
station_name].push_back(hitExist);
3037 tgcEffEtaMap_Numerator[
station_name].push_back(hitExist);
3038 tgcEffPhiMapGlobal_Numerator[
station_name].push_back(hitExist);
3039 tgcEffMapHasHit[type_name].push_back(hitExist);
3046 std::vector<Monitored::ObjectsCollection<std::vector<double>,
double>> varowner_hiteff;
3047 std::vector<Monitored::ObjectsCollection<std::vector<TGC::TgcHit>,
double>> varowner_eachchamber;
3048 std::vector<Monitored::ObjectsCollection<std::vector<double>,
double>> varowner_eachchamber_double;
3049 std::map<std::string,std::vector<double>> cham_and_res;
3054 varowner_hiteff.reserve(tgcEffPhiMap_Denominator.size() * 4 + tgcEffPhiMapGlobal_Denominator.size() * 2 + tgcEffMapHasHit.size() * 3);
3055 for (
const auto &phimap : tgcEffPhiMap_Denominator) {
3056 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_effden_x_%s",phimap.first.data()),tgcEffEtaMap_Denominator[phimap.first],[](
const double&
m){return m;}));
3057 hit_variables.push_back(varowner_hiteff.back());
3058 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_effden_y_%s", phimap.first.data()),tgcEffPhiMap_Denominator[phimap.first],[](
const double&
m){return m;}));
3059 hit_variables.push_back(varowner_hiteff.back());
3060 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_effnum_x_%s",phimap.first.data()),tgcEffEtaMap_Numerator[phimap.first],[](
const double&
m){return m;}));
3061 hit_variables.push_back(varowner_hiteff.back());
3062 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_effnum_y_%s", phimap.first.data()),tgcEffPhiMap_Numerator[phimap.first],[](
const double&
m){return m;}));
3063 hit_variables.push_back(varowner_hiteff.back());
3065 for (
const auto &phimap : tgcEffPhiMapGlobal_Denominator) {
3066 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_glblphi_effden_%s", phimap.first.data()),tgcEffPhiMapGlobal_Denominator[phimap.first],[](
const double&
m){return m;}));
3067 hit_variables.push_back(varowner_hiteff.back());
3068 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_glblphi_effnum_%s", phimap.first.data()),tgcEffPhiMapGlobal_Numerator[phimap.first],[](
const double&
m){return m;}));
3069 hit_variables.push_back(varowner_hiteff.back());
3071 for(
const auto& hiteffmap : tgcEffMapHasHit){
3072 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_localX_effden_%s", hiteffmap.first.data()),tgcEffMapExtX[hiteffmap.first],[](
const double&
m){return m;}));
3073 hit_variables.push_back(varowner_hiteff.back());
3074 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_localY_effden_%s", hiteffmap.first.data()),tgcEffMapExtY[hiteffmap.first],[](
const double&
m){return m;}));
3075 hit_variables.push_back(varowner_hiteff.back());
3076 varowner_hiteff.push_back(
Monitored::Collection(Form(
"hit_effnum_%s", hiteffmap.first.data()),tgcEffMapHasHit[hiteffmap.first],[](
const double&
m){return m;}));
3077 hit_variables.push_back(varowner_hiteff.back());
3080 ATH_MSG_DEBUG(
"gap-by-gap occupancy plots and residual plots");
3081 varowner_eachchamber.reserve(tgcHitsMap.size());
3082 varowner_eachchamber_double.reserve(tgcHitsMap.size());
3083 for (
const auto &tgcHitMap : tgcHitsMap) {
3084 auto chanName = tgcHitMap.first;
3085 if(chanName.find(
'L')!=std::string::npos){
3087 hit_variables.push_back(varowner_eachchamber.back());
3089 for(
const auto&tgcHit:tgcHitMap.second){
3090 for(
const auto&tgcRes:tgcHit.residuals()){
3091 cham_and_res[chanName].push_back(tgcRes.second);
3094 varowner_eachchamber_double.push_back(
Monitored::Collection(Form(
"hit_residual_on_%s",chanName.data()),cham_and_res[chanName],[](
const double&
m){return m;}));
3095 hit_variables.push_back(varowner_eachchamber_double.back());
3114 ATH_MSG_DEBUG(
"Filling histograms for MuonRoIs in thresholdPattern");
3134 std::vector<const xAOD::MuonRoI*> passed_rois;
3135 for(
const auto& allBcMuonRoI : AllBCMuonRoIs){
3136 if(allBcMuonRoI.timing!=0)
continue;
3141 passed_rois.push_back(roi);
3143 if(roiAndMenu.count(roi)==0){
3144 std::set<std::string>
items;
3145 roiAndMenu.insert(std::make_pair(roi,
items));
3147 roiAndMenu[roi].insert(
item);
3150 menuAndRoIs.insert(std::make_pair(
item,passed_rois));
3153 ATH_MSG_DEBUG(
"End filling histograms for MuonRoIs in thresholdPattern");