46 #include "eformat/DetectorMask.h"
47 #include "eformat/SourceIdentifier.h"
56 m_innerTrackletSlotHolder( tgcArgs() ),
61 LVL1TGCTrigger::~LVL1TGCTrigger()
77 m_tgcArgs.set_MSGLEVEL(msgLevel());
78 m_tgcArgs.set_SHPT_ORED( m_SHPTORED.value() );
79 m_tgcArgs.set_USE_INNER( m_USEINNER.value() );
80 m_tgcArgs.set_INNER_VETO( m_INNERVETO.value() );
81 m_tgcArgs.set_TILE_MU( m_TILEMU.value() );
82 m_tgcArgs.set_USE_NSW( m_USENSW.value() );
83 m_tgcArgs.set_USE_BIS78( m_USEBIS78.value() );
84 m_tgcArgs.set_FORCE_NSW_COIN( m_FORCENSWCOIN.value() );
86 m_tgcArgs.set_USE_CONDDB( m_USE_CONDDB.value() );
87 m_tgcArgs.set_useRun3Config( m_useRun3Config.value() );
89 m_tgcArgs.set_NSWSideInfo( m_NSWSideInfo.value() );
91 ATH_CHECK( m_readCondKey.initialize(!m_useRun3Config.value()) );
92 ATH_CHECK( m_readLUTs_CondKey.initialize(m_useRun3Config.value()) );
96 if(m_useRun3Config.value()){
97 m_tgcArgs.set_USE_CONDDB(
false);
110 ATH_CHECK(m_keyNSWTrigOut.initialize(tgcArgs()->USE_NSW()));
111 ATH_CHECK(m_keyBIS78TrigOut.initialize(tgcArgs()->USE_BIS78()));
112 ATH_CHECK(m_muctpiPhase1Key.initialize(tgcArgs()->useRun3Config()));
113 ATH_CHECK(m_keyTgcRdo.initialize(tgcArgs()->useRun3Config()));
117 m_MaskedChannel.clear();
119 return StatusCode::SUCCESS;
125 ATH_MSG_DEBUG(
"LVL1TGCTrigger::finalize() called" <<
" m_nEventInSector = " << m_nEventInSector);
127 if (m_db)
delete m_db;
130 return StatusCode::SUCCESS;
137 const EventContext& ctx = getContext();
141 if(getCabling().isFailure())
return StatusCode::FAILURE;
149 if(getMaskedChannel().isFailure())
return StatusCode::FAILURE;
154 bool doTileMu = m_tgcArgs.TILE_MU();
156 if (doTileMu && !m_tgcArgs.useRun3Config()) {
163 bool doNSW = m_tgcArgs.USE_NSW();
166 bool doBIS78 = m_tgcArgs.USE_BIS78();
169 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>> tgcrdo;
174 if(!readTgcDigitContainer.
isValid()){
176 return StatusCode::FAILURE;
181 ATH_CHECK(wh_muctpiTgc.
record(std::make_unique<LVL1MUONIF::Lvl1MuCTPIInputPhase1>()));
187 sc = StatusCode::SUCCESS;
190 if (doTileMu && bc == m_CurrentBunchTag) {
191 ATH_CHECK(m_system->getTMDB()->retrieve(m_keyTileMu));
195 if(doNSW && bc==m_CurrentBunchTag){
196 ATH_CHECK(m_system->getNSW()->retrieve(m_keyNSWTrigOut));
200 if(doBIS78 && bc == m_CurrentBunchTag){
201 ATH_CHECK(m_system->getBIS78()->retrieve(m_keyBIS78TrigOut));
204 if (m_ProcessAllBunches || bc == m_CurrentBunchTag) {
205 m_bctagInProcess = bc;
206 sc = processOneBunch(tgc_container, muctpiinputPhase1, tgcrdo);
208 if (
sc.isFailure()) {
209 ATH_MSG_FATAL(
"Fail to process the bunch " << m_bctagInProcess);
219 ATH_MSG_WARNING(
"Cannot retrieve TgcRdoContainer with key=" << m_keyTgcRdoIn.key());
221 }
else if(rdoContIn->
size()>0) {
223 for(; itR!=rdoContIn->
end(); ++itR){
224 const TgcRdo* rdoIn = (*itR);
226 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>
::iterator itRdo = tgcrdo.find(subDetectorRod);
227 if (itRdo!=tgcrdo.end()) {
231 itRdo->second->push_back(std::make_unique<TgcRawData>(*rd));
239 auto trgContainer=std::make_unique<TgcRdoContainer>();
240 for(
const auto& tgcRdoMap : tgcrdo){
241 for(
const auto rawData : *tgcRdoMap.second){
242 trgContainer->push_back(rawData);
252 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
254 ATH_MSG_DEBUG(
"start processOneBunch: for BC=" << m_bctagInProcess);
256 std::map<Identifier, int> tgcDigitIDs;
260 doMaskOperation(tgc_container, tgcDigitIDs);
264 fillTGCEvent(tgcDigitIDs,
event);
268 m_TimingManager->increaseBunchCounter();
269 m_system->distributeSignal(&
event);
272 m_innerTrackletSlotHolder.clearTriggerBits();
276 for(
int j=0; j<m_system->getNumberOfOctant(); j+=1){
277 for(
int k=0;
k<m_system->getNumberOfModule();
k+=1){
279 if((sector!=0)&&(sector->
hasHit())){
281 m_TimingManager->startPatchPanel(sector, m_db);
282 m_TimingManager->startSlaveBoard(sector);
283 if (m_OutputTgcRDO.value()) recordRdoSLB(sector, tgcrdo);
292 int muctpiBcId = m_bctagInProcess - muctpiBcId_offset;
294 int sectoraddr_endcap = 0;
295 int sectoraddr_forward = 0;
296 for(
int j=0; j<m_system->getNumberOfOctant(); j+=1){
297 for(
int k=0;
k<m_system->getNumberOfModule();
k+=1){
300 if(sector==0)
continue;
302 m_TimingManager->startHighPtBoard(sector);
303 if (m_OutputTgcRDO.value()) recordRdoHPT(sector, tgcrdo);
311 m_innerTrackletSlotHolder.getInnerTrackletSlots(
i, j,
k, innerTrackletSlots);
315 m_TimingManager->startSectorLogic(sector);
319 if (m_OutputTgcRDO.value() && m_tgcArgs.USE_INNER()) recordRdoInner(sector, tgcrdo);
322 if (m_OutputTgcRDO.value()) recordRdoSL(sector, tgcrdo);
328 std::shared_ptr<TGCTrackSelectorOut> trackSelectorOut;
331 std::shared_ptr<LVL1TGC::TGCNSW> nsw = m_system->getNSW();
337 if(trackSelectorOut != 0) FillSectorLogicData(&sldata,trackSelectorOut.get());
339 if ( m_tgcArgs.USE_NSW() ){
358 if(trackSelectorOut != 0) FillSectorLogicData(&sldata,trackSelectorOut.get());
360 if ( m_tgcArgs.USE_NSW() ) {
378 trackSelectorOut.get()->
reset();
387 return StatusCode::SUCCESS;
393 std::map<Identifier, int>& TgcDigitIDs)
400 if (
h->bcTag()!=m_bctagInProcess)
continue;
403 const auto itCh = m_MaskedChannel.find(
channelId);
404 if (itCh!=m_MaskedChannel.end() && itCh->second==0) {
413 for(
const auto& [Id, OnOff] : m_MaskedChannel) {
416 TgcDigitIDs.emplace(Id, 1);
426 void LVL1TGCTrigger::fillTGCEvent(
const std::map<Identifier, int>& tgcDigitIDs,
TGCEvent&
event)
429 for(
const auto& itCh : tgcDigitIDs) {
451 int subDetectorID, srodID, sswID, sbLoc, channelID;
458 fstatus = m_cabling->getReadoutIDfromOfflineID(
channelId,
464 fstatus = m_cabling->getSLBIDfromReadoutID(
phi, isAside, isEndcap,
467 srodID, sswID,sbLoc);
471 <<
" octant#=" << octantNumber
472 <<
" mod#=" << moduleNumber
473 <<
" layer#=" << layerNumber <<
" r#=" << rNumber
474 <<
" isStrip=" << wireOrStrip
475 <<
" ch#=" << channelNumber <<
endmsg
476 <<
" --> readoutID: sudetID=" << subDetectorID
477 <<
" srodID=" << srodID <<
" sswID=" << sswID
478 <<
" slbID=" << slbID <<
" chID=" << channelID);
483 event.NewASDOut(
index,
494 <<
" vector size : " <<
event.GetNASDOut() );
495 for(
int iout=1; iout<=
event.GetNASDOut(); iout++){
496 TGCASDOut* asdout = (
event.GetASDOutVector()[iout-1]);
516 if(trackSelectorOut ==0)
return;
521 sldata->
bcid(m_bctagInProcess - muctpiBcId_offset);
542 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
546 int subDetectorId, rodId, sswId, sbLoc, secId, secIdEIFI;
548 bool isAside, isEndcap;
int phi, moduleType,
id, phiEIFI;
549 isAside = (sector->
getSideId()==0 ? 1 : 0);
564 phiEIFI = (secIdEIFI+23+sector->
getOctantId()*3)%24+1;
567 const int NumberOfSLBType = 6;
569 for(
int itype=0; itype<NumberOfSLBType; itype++) {
570 moduleType = getLPTTypeInRawData(itype);
575 if (0==slb)
continue;
578 if (0==
out)
continue;
585 m_cabling->getReadoutIDfromSLBID((isEIFI ? phiEIFI :
phi),
588 subDetectorId, rodId,
593 <<
" side=" << ((isAside) ?
"A":
"C")
594 <<
" region=" << ((isEndcap) ?
"Endcap" :
"Forward")
595 <<
" type=" << moduleType
597 <<
" subDetectorId=" << subDetectorId
598 <<
" rodId=" << rodId
599 <<
" sswId=" << sswId
600 <<
" sbLoc=" << sbLoc);
605 for(
int iData=0; iData<
out->getNumberOfData(); iData++) {
606 if (!
out->getHit(iData))
continue;
610 int subMat = iData % 4;
621 static_cast<uint16_t>(subDetectorId),
626 type,
out->getDev(iData), seg, subMat,
627 out->getPos(iData)));
628 addRawData(std::move(rawdata), tgcrdo);
632 bool setEIFITriggerBit =
633 m_innerTrackletSlotHolder.setTriggerBit(sector->
getSideId(),
639 static_cast<unsigned int>(subMat),
642 if(!setEIFITriggerBit) {
645 <<
" slotId= " << phiEIFI
646 <<
" region= " << (isEndcap ?
"EI" :
"FI")
648 <<
" subMat(iBit)= " <<
static_cast<unsigned int>(subMat) );
652 ATH_MSG_DEBUG(
" recordRdoSLB : reg=" << (isEndcap ?
"EC" :
"FWD")
653 <<
" srod=" << rodId <<
" sswId=" << sswId
654 <<
" SBLoc=" << sbLoc <<
" type=" << itype
655 <<
" iData(subMat:seg)=" << iData <<
" pos="
656 <<
out->getPos(iData) <<
" dev=" <<
out->getDev(iData) );
666 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
668 if(sector->
hasHit() ==
false)
return;
671 int subDetectorId, rodId, sswId, sbLoc, secId;
674 int startEndcapSector, coverageOfEndcapSector;
675 int startForwardSector, coverageOfForwardSector;
677 m_cabling->getCoveragefromSRodID(rodId,
679 coverageOfEndcapSector,
681 coverageOfForwardSector
702 secId = sectorId % coverageOfEndcapSector;
704 secId = sectorId % coverageOfForwardSector;
707 phi = (isEndcap ? (sectorId+46)%48+1 : (sectorId+23)%24+1);
709 for(
int itype=0; itype<2; itype++) {
711 for(
unsigned int ihpb=0; ihpb<sector->
getNumberOfHPB(itype); ihpb++) {
713 if (0==hpb)
continue;
715 if (0==
out)
continue;
719 subDetectorId, rodId, sswId, sbLoc);
728 if (!
out->getSel(ichip, icand))
continue;
731 int hitId =
out->getHitID(ichip, icand);
732 m_cabling->getRDOHighPtIDfromSimHighPtID(!isEndcap,
isStrip,
734 bool isHPT =
out->getPt(ichip,icand)==
PtHigh ? 1 : 0;
736 static_cast<uint16_t>(subDetectorId),
740 isStrip, (!isEndcap), secId, chip, icand,
742 out->getPos(ichip, icand),
743 out->getDev(ichip, icand),
745 addRawData(std::move(rawdata), tgcrdo);
749 <<
" side=" << ( (isAside)?
"A" :
"C")
750 << (isEndcap ?
"EC" :
"FWD")
751 <<
" w/s=" << ( (
isStrip)?
"s" :
"w")
752 <<
" id=" << hpb->
getId()
756 <<
" block=" <<
out->getHitID(ichip, icand)
757 <<
" subMatrix=" <<
out->getPos(ichip, icand)
758 <<
" dev=" <<
out->getDev(ichip, icand)
759 <<
" srod=" << rodId <<
" sswId=" << sswId <<
" SBLoc=" << sbLoc );
762 if ( m_tgcArgs.SHPT_ORED() &&
766 if (hitId == 1) oredId = 5;
767 else if (hitId == 2) oredId = 6;
768 else if (hitId == 5) oredId = 1;
769 else if (hitId == 6) oredId = 2;
771 std::unique_ptr<TgcRawData> rawdata2(
773 static_cast<uint16_t>(subDetectorId),
777 isStrip, (!isEndcap), secId, chip, icand,
779 out->getPos(ichip, icand),
780 out->getDev(ichip, icand),
782 addRawData(std::move(rawdata2), tgcrdo);
799 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
803 if (!isEndcap)
return;
809 int phi = (sectorId+46)%48+1;
812 int subDetectorId=0, rodId=0, sswId=0, sbLoc=0;
814 bool status = m_cabling->getSReadoutIDfromSLID(
phi, isAside, isEndcap,
815 subDetectorId, rodId, sswId, sbLoc);
817 ATH_MSG_WARNING(
"TGCcablingSvc::ReadoutIDfromSLID fails in recordRdoInner()" );
824 int startEndcapSector, coverageOfEndcapSector;
825 int startForwardSector, coverageOfForwardSector;
826 if (!m_cabling->getCoveragefromSRodID(rodId,
828 coverageOfEndcapSector,
830 coverageOfForwardSector
833 ATH_MSG_WARNING(
"LVL1TGCTrigger::recordRdoInner --- bad rodId " << rodId );
839 secId = sectorId % coverageOfEndcapSector;
841 secId = sectorId % coverageOfForwardSector;
850 m_innerTrackletSlotHolder.getInnerTrackletSlots(sector->
getSideId(),
851 octant,
module, innerTrackletSlots);
853 std::array<int, n_slots>inner_eifi;
854 m_innerTrackletSlotHolder.getInnerTrackletBits(innerTrackletSlots, inner_eifi);
856 for (
int i_slot = 0; i_slot < n_slots; i_slot++) {
857 if (inner_eifi[i_slot] > 0) {
859 static_cast<uint16_t>(subDetectorId),
865 static_cast<uint16_t>(inner_eifi[i_slot]),
868 addRawData(std::move(rawdata_eifi), tgcrdo);
873 int inner_tile = m_system->getTMDB()->getInnerTileBits(sector->
getSideId(), sectorId);
875 if (inner_tile > 0) {
879 static_cast<uint16_t>(subDetectorId),
887 addRawData(std::move(rawdata_tile), tgcrdo);
893 std::shared_ptr<const LVL1TGC::NSWTrigOut> nsw_trigout = m_system->getNSW()->getOutput(region, !isAside, sectorId);
894 for (
int icand=0; icand<(
int)nsw_trigout->
getNSWeta().size(); icand++ ){
896 static_cast<uint16_t>(subDetectorId),
909 addRawData(std::move(rawdata_nsw), tgcrdo);
915 std::shared_ptr<const LVL1TGC::BIS78TrigOut> bis78_trigout = m_system->getBIS78()->getOutput(sectorId);
916 for (
int icand=0; icand<(
int)bis78_trigout->
getBIS78eta().size(); icand++ ){
918 static_cast<uint16_t>(subDetectorId),
929 addRawData(std::move(rawdata_bis78), tgcrdo);
936 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
939 std::shared_ptr<TGCTrackSelectorOut> selectorOut;
942 if (selectorOut ==
nullptr)
return;
951 int Zdir= (isAside) ? 1 : -1;
965 int startEndcapSector, coverageOfEndcapSector;
966 int startForwardSector, coverageOfForwardSector;
968 m_cabling->getCoveragefromSRodID(rodId,
970 coverageOfEndcapSector,
972 coverageOfForwardSector
976 secId = sectorId % coverageOfEndcapSector;
978 secId = sectorId % coverageOfForwardSector;
982 phi = (isEndcap ? (sectorId+46)%48+1 : (sectorId+23)%24+1);
985 int subDetectorId = 0, sswId = 0, sbLoc = 0;
986 bool status = m_cabling->getSReadoutIDfromSLID(
phi, isAside, isEndcap,
987 subDetectorId, rodId, sswId, sbLoc);
990 << (isEndcap ?
" Endcap-" :
" Forward-")
991 << (isAside ?
"A " :
"C ")
997 int inner=0, coinFlag=0;
999 for (
unsigned int icand=0; icand < (
unsigned int)selectorOut->
getNCandidate(); ++icand) {
1001 bool muplus = getCharge(selectorOut->
getDR(icand), Zdir)==1 ? 1 : 0;
1003 roi = ((selectorOut->
getR(icand))<<2)+(selectorOut->
getPhi(icand));
1012 static_cast<uint16_t>(subDetectorId),
1020 addRawData(std::move(rawdata), tgcrdo);
1023 <<
" side=" << (isAside ?
"A " :
"C ")
1024 <<
" reg=" << (isEndcap ?
"EC" :
"FWD")
1026 <<
" cand=" <<
index
1027 <<
" charge=" << (muplus ?
"mu+" :
"mu-")
1031 <<
" srod=" << rodId <<
" sswId=" << sswId <<
" SBLoc=" << sbLoc
1032 <<
" inner=" << inner <<
" coinFlag=" << coinFlag );
1040 std::string
fname=m_MaskFileName12.value();
1041 if (
fname.empty())
return StatusCode::SUCCESS;
1050 return StatusCode::FAILURE;
1055 std::vector<std::string>
mask;
1057 while(getline(
fin,aLine)) {
1058 if (aLine.compare(0,3,
"///")!=0)
break;
1060 int id_type =
atoi(aLine.c_str());
1061 while(getline(
fin,aLine)) {
1062 if (!aLine.empty())
mask.push_back(aLine);
1067 std::vector<int>
ids;
1069 int nmasked=0, nfired=0;
1070 for(
int ich=0; ich<(
int)
mask.size(); ich++) {
1071 std::string
ch =
mask[ich];
1072 extractFromString(
ch,
ids);
1075 if (id_type==1 &&
ids.size()==8) {
1076 int sysno1 = (
ids[1]==-99 ? -1 :
ids[1]);
int sysno2=(
ids[1]==-99 ? 1 :
ids[1]);
1077 int octno1 = (
ids[2]==-99 ? 0 :
ids[2]);
int octno2=(
ids[2]==-99 ? 7 :
ids[2]);
1078 for(
int sysno=sysno1; sysno<=sysno2; sysno+=2) {
1079 for(
int octno=octno1; octno<=octno2; octno++) {
1080 bool status = m_cabling->getOfflineIDfromOnlineID(
ID,sysno,octno,
1083 <<
" sys=" << sysno <<
" oct=" << octno <<
" modno=" <<
ids[3]
1084 <<
" layerno=" <<
ids[4] <<
" rNumber=" <<
ids[5]
1085 <<
" strip=" <<
ids[6] <<
" chno=" <<
ids[7] );
1088 ATH_MSG_WARNING(
"This onlineID is not valid and cannot be converted to offline ID." );
1090 <<
" layerno=" <<
ids[4] <<
" rNumber=" <<
ids[5]
1091 <<
" strip=" <<
ids[6] <<
" chno=" <<
ids[7] );
1093 m_MaskedChannel.insert(std::map<Identifier, int>::value_type(
ID, OnOff));
1094 if (OnOff==0) nmasked+=1;
1095 else if (OnOff==1) nfired+=1;
1100 }
else if (id_type==2 &&
ids.size()==6) {
1101 int sysno1 = (
ids[1]==-99 ? 103 :
ids[1]);
int sysno2=(
ids[1]==-99 ? 104 :
ids[1]);
1102 int octno1 = (
ids[2]==-99 ? 0 :
ids[2]);
int octno2=(
ids[2]==-99 ? 7 :
ids[2]);
1103 for(
int sysno=sysno1; sysno<=sysno2; sysno+=1) {
1104 for(
int octno=octno1; octno<=octno2; octno++) {
1105 bool status = m_cabling->getOfflineIDfromReadoutID(
ID, sysno,octno,
ids[3],
ids[4],
ids[5]);
1107 <<
" subdetectorID=" << sysno <<
" rodId=" << octno <<
" sswID=" <<
ids[3]
1108 <<
" SBLoc=" <<
ids[4] <<
" channelId=" <<
ids[5] );
1110 ATH_MSG_WARNING(
"This readoutID is not valid and cannot be converted to offline ID " );
1111 ATH_MSG_WARNING(
"subdetectorID=" << sysno <<
" rodId=" << octno <<
" sswID=" <<
ids[3]
1112 <<
" SBLoc=" <<
ids[4] <<
" channelId=" <<
ids[5] );
1114 m_MaskedChannel.insert(std::map<Identifier, int>::value_type(
ID, OnOff));
1115 if (OnOff==0) nmasked+=1;
1116 else if (OnOff==1) nfired+=1;
1121 }
else if (id_type==3 &&
ids.size()==2) {
1124 m_MaskedChannel.insert(std::map<Identifier, int>::value_type(
ID, OnOff));
1125 if (OnOff==0) nmasked+=1;
1126 else if (OnOff==1) nfired+=1;
1129 ATH_MSG_INFO(
"Invalid input. Idtype or number of parameters are invalid: idtype=" << id_type
1130 <<
" number of elements = " <<
ids.size() );
1131 return StatusCode::FAILURE;
1135 ATH_MSG_INFO(
"Total number of masked channels ... " << nmasked);
1136 ATH_MSG_INFO(
"Total number of fired channels ... " << nfired);
1138 return StatusCode::SUCCESS;
1143 if (m_bsMetaDataContRHKey.key().empty())
return StatusCode::SUCCESS;
1145 ATH_MSG_DEBUG(
"Retrieving Detector Mask from ByteStream metadata container");
1147 if (bsmdc.isValid() && !bsmdc->empty()) {
1152 std::vector<eformat::SubDetector> subDetOff;
1153 eformat::helper::DetectorMask(~detMaskLeast, ~detMaskMost).sub_detectors(subDetOff);
1154 auto sideA = std::find_if(subDetOff.begin(), subDetOff.end(), [](
const eformat::SubDetector &
s) {
1155 return (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_STGC_ENDCAP_A_SIDE); });
1156 auto sideC = std::find_if(subDetOff.begin(), subDetOff.end(), [](
const eformat::SubDetector &
s) {
1157 return (s == eformat::MUON_MMEGA_ENDCAP_C_SIDE || s == eformat::MUON_STGC_ENDCAP_C_SIDE); });
1159 if (
sideA !=
std::end(subDetOff)) tgcArgs()->set_NSWSideInfo(m_NSWSideInfo.value().erase(0,1));
1160 else if (
sideC !=
std::end(subDetOff)) tgcArgs()->set_NSWSideInfo(m_NSWSideInfo.value().erase(1,1));
1163 return StatusCode::SUCCESS;
1167 void LVL1TGCTrigger::extractFromString(
const std::string&
str, std::vector<int> &
v) {
1169 if (
str.empty())
return;
1172 if (
line.empty())
break;
1173 int i =
line.find(
' ');
1174 if (
i==(
int)std::string::npos && !
line.empty()) {
1178 std::string temp =
line;
1179 temp.erase(
i,
line.size());
1180 v.push_back(
atoi(temp.c_str()));
1186 int LVL1TGCTrigger::getCharge(
int dR,
int ) {
1190 return (dR >=0 ? 1 : -1 );
1195 int LVL1TGCTrigger::getLPTTypeInRawData(
int type)
1216 bool LVL1TGCTrigger::addRawData(std::unique_ptr<TgcRawData> rawdata,
1217 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
1221 std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>
::iterator itRdo = tgcrdo.find(subDetectorRod);
1223 if (itRdo==tgcrdo.end()) {
1228 tgcrdo.insert(std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>::
value_type(subDetectorRod, std::move(thisRdo)));
1230 itRdo->second->push_back(std::move(rawdata));
1243 ATH_CHECK(service(
"Muon::TGCCablingServerSvc", TgcCabGet));
1248 int maxRodId, maxSRodId, maxSswId, maxSbloc,minChannelId, maxChannelId;
1249 m_cabling->getReadoutIDRanges( maxRodId, maxSRodId, maxSswId, maxSbloc,minChannelId, maxChannelId);
1250 if (maxRodId ==12) {
1253 ATH_MSG_FATAL(
"Old TGCcablingSvc(octant segmentation) can not be used !");
1254 return StatusCode::FAILURE;
1258 m_system = std::make_unique<TGCElectronicsSystem>(&m_tgcArgs,m_db);
1260 m_TimingManager = std::make_unique<TGCTimingManager>(m_readCondKey);
1261 m_TimingManager->setBunchCounter(0);
1262 m_nEventInSector = 0;
1266 return StatusCode::SUCCESS;