Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
LVL1TGCTrigger.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // STL
6 #include <sstream>
7 #include <fstream>
8 #include <vector>
9 
10 // TGC
12 #include "TrigT1TGC/TGCASDOut.h"
13 #include "TrigT1TGC/TGCEvent.h"
19 #include "TrigT1TGC/TGCSector.h"
21 #include "TrigT1TGC/TGCNumbering.h"
23 #include "TrigT1TGC/TGCNSW.h"
24 #include "TrigT1TGC/NSWTrigOut.h"
25 #include "TrigT1TGC/TGCBIS78.h"
26 #include "TrigT1TGC/BIS78TrigOut.h"
27 
28 // Other stuff
34 
35 // MuonSpectrometer
39 
42 
43 // DetMask stuff
44 #include "eformat/DetectorMask.h"
45 #include "eformat/SourceIdentifier.h"
46 
47 namespace LVL1TGCTrigger {
48 
49 LVL1TGCTrigger::LVL1TGCTrigger(const std::string& name, ISvcLocator* pSvcLocator)
50 : AthAlgorithm(name,pSvcLocator),
51  m_db(0),
52  m_nEventInSector(0),
53  m_innerTrackletSlotHolder( tgcArgs() ),
54  m_debuglevel(false)
55 {}
56 
58 LVL1TGCTrigger::~LVL1TGCTrigger()
59 {
60  ATH_MSG_DEBUG("LVL1TGCTrigger destructor called");
61  if (m_db) {
62  delete m_db;
63  m_db =0;
64  }
65 }
66 
69 {
70  ATH_MSG_DEBUG("LVL1TGCTrigger::initialize()");
71 
72  m_debuglevel = (msgLevel() <= MSG::DEBUG); // save if threshold for debug
73 
74  m_tgcArgs.set_MSGLEVEL(msgLevel());
75  m_tgcArgs.set_SHPT_ORED( m_SHPTORED.value() );
76  m_tgcArgs.set_USE_INNER( m_USEINNER.value() );
77  m_tgcArgs.set_INNER_VETO( m_INNERVETO.value() );
78  m_tgcArgs.set_TILE_MU( m_TILEMU.value() );
79  m_tgcArgs.set_USE_NSW( m_USENSW.value() );
80  m_tgcArgs.set_USE_BIS78( m_USEBIS78.value() );
81  m_tgcArgs.set_FORCE_NSW_COIN( m_FORCENSWCOIN.value() );
82 
83  m_tgcArgs.set_USE_CONDDB( m_USE_CONDDB.value() );
84  m_tgcArgs.set_useRun3Config( m_useRun3Config.value() );
85 
86  m_tgcArgs.set_NSWSideInfo( m_NSWSideInfo.value() );
87 
88  ATH_CHECK( m_readCondKey.initialize(!m_useRun3Config.value()) );
89  ATH_CHECK( m_readLUTs_CondKey.initialize(m_useRun3Config.value()) );
90 
91  // CondDB is not available for Run3 config. set USE_CONDDB to false to avoid errors.
92  // will be removed the below part.
93  if(m_useRun3Config.value()){
94  m_tgcArgs.set_USE_CONDDB(false);
95  }
96 
97  // initialize TGCDataBase
98  m_db = new TGCDatabaseManager(&m_tgcArgs, m_readCondKey, m_readLUTs_CondKey);
99 
100  // initialize the TGCcabling
101  ATH_CHECK(getCabling());
102 
103  // create TGCElectronicsSystem
104  m_system = std::make_unique<TGCElectronicsSystem>(&m_tgcArgs,m_db);
105 
106  m_TimingManager = std::make_unique<TGCTimingManager>(m_readCondKey);
107  m_TimingManager->setBunchCounter(0);
108 
109  m_nEventInSector = 0;
110 
111  // read and write handle key
112  ATH_CHECK(m_keyTgcRdoIn.initialize());
113  ATH_CHECK(m_keyTgcDigit.initialize());
114  ATH_CHECK(m_keyTileMu.initialize());
115  ATH_CHECK(m_keyNSWTrigOut.initialize(tgcArgs()->USE_NSW())); // to be updated once the Run 3 CondDb becomes available (should be automatically configured by db info)
116  ATH_CHECK(m_keyBIS78TrigOut.initialize(tgcArgs()->USE_BIS78())); // to be updated as well
117  ATH_CHECK(m_muctpiPhase1Key.initialize(tgcArgs()->useRun3Config()));
118  ATH_CHECK(m_keyTgcRdo.initialize(tgcArgs()->useRun3Config()));
119  ATH_CHECK(m_bsMetaDataContRHKey.initialize(SG::AllowEmpty));
120 
121  // clear mask channel map
122  m_MaskedChannel.clear();
123 
124  return StatusCode::SUCCESS;
125 }
126 
129 {
130  ATH_MSG_DEBUG("LVL1TGCTrigger::finalize() called" << " m_nEventInSector = " << m_nEventInSector);
131 
132  if (m_db) delete m_db;
133  m_db = 0 ;
134 
135  return StatusCode::SUCCESS;
136 }
137 
140 {
141  ATH_MSG_DEBUG("execute() called");
142  const EventContext& ctx = getContext();
143 
144  if(!m_cabling) {
145  // get cabling svc
146  if(getCabling().isFailure()) return StatusCode::FAILURE;
147  }
148 
149  // doMaskOperation is performed at the first event
150  // It is better to implement callback against
151  // MuonTGC_CablingSvc::updateCableASDToPP (Susumu Oda, 2010/10/27)
152  if(m_firstTime) {
153  // do mask operation
154  if(getMaskedChannel().isFailure()) return StatusCode::FAILURE;
155  m_firstTime = false;
156  }
157 
158  // Tile-Muon data
159  bool doTileMu = m_tgcArgs.TILE_MU();
160 
161  if (doTileMu && !m_tgcArgs.useRun3Config()) { // for Run-2
162  SG::ReadCondHandle<TGCTriggerData> readHandle{m_readCondKey, ctx};
163  const TGCTriggerData* readCdo{*readHandle};
164  doTileMu = readCdo->isActive(TGCTriggerData::CW_TILE);
165  }
166 
167  // NSW data
168  bool doNSW = m_tgcArgs.USE_NSW();
169 
170  // BIS78 data
171  bool doBIS78 = m_tgcArgs.USE_BIS78();
172 
173  // TgcRdo
174  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>> tgcrdo;
175 
176 
177 
178  SG::ReadHandle<TgcDigitContainer> readTgcDigitContainer(m_keyTgcDigit, ctx);
179  if(!readTgcDigitContainer.isValid()){
180  ATH_MSG_ERROR("Cannot retrieve TgcDigitContainer");
181  return StatusCode::FAILURE;
182  }
183  const TgcDigitContainer* tgc_container = readTgcDigitContainer.cptr();
184 
185  SG::WriteHandle<LVL1MUONIF::Lvl1MuCTPIInputPhase1> wh_muctpiTgc(m_muctpiPhase1Key, ctx);
186  ATH_CHECK(wh_muctpiTgc.record(std::make_unique<LVL1MUONIF::Lvl1MuCTPIInputPhase1>()));
187  LVL1MUONIF::Lvl1MuCTPIInputPhase1* muctpiinputPhase1 = wh_muctpiTgc.ptr();
188 
189  // process one by one
190  StatusCode sc = StatusCode::SUCCESS;
191  for (int bc=TgcDigit::BC_PREVIOUS; bc<=TgcDigit::BC_NEXTNEXT; bc++){
192  sc = StatusCode::SUCCESS;
193 
194  // Use TileMu only if BC_CURRENT
195  if (doTileMu && bc == m_CurrentBunchTag) {
196  ATH_CHECK(m_system->getTMDB()->retrieve(m_keyTileMu, ctx));
197  }
198 
199  // Use NSW trigger output
200  if(doNSW && bc==m_CurrentBunchTag){ // To implement BC-calculation
201  ATH_CHECK(m_system->getNSW()->retrieve(m_keyNSWTrigOut, ctx));
202  }
203 
204  // Use RPC BIS78 trigger output
205  if(doBIS78 && bc == m_CurrentBunchTag){ // Todo: implement BC-calculation
206  ATH_CHECK(m_system->getBIS78()->retrieve(m_keyBIS78TrigOut, ctx));
207  }
208 
209  if (m_ProcessAllBunches || bc == m_CurrentBunchTag) {
210  m_bctagInProcess = bc;
211  sc = processOneBunch(tgc_container, muctpiinputPhase1, tgcrdo);
212  }
213  if (sc.isFailure()) {
214  ATH_MSG_FATAL("Fail to process the bunch " << m_bctagInProcess);
215  return sc;
216  }
217  }
218 
219 
220  // before writing the output TgcRdo container,
221  // read input TgcRdo and copy the tracklet etc.
222  SG::ReadHandle<TgcRdoContainer> rdoContIn(m_keyTgcRdoIn);
223  if(!rdoContIn.isValid()){
224  ATH_MSG_WARNING("Cannot retrieve TgcRdoContainer with key=" << m_keyTgcRdoIn.key());
225  return sc;
226  }else if(rdoContIn->size()>0) {
227  TgcRdoContainer::const_iterator itR = rdoContIn->begin();
228  for(; itR!=rdoContIn->end(); ++itR){
229  const TgcRdo* rdoIn = (*itR);
230  std::pair<int, int> subDetectorRod(rdoIn->subDetectorId(), rdoIn->rodId());
231  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>::iterator itRdo = tgcrdo.find(subDetectorRod);
232  if (itRdo!=tgcrdo.end()) {
233  // if subDetectorId and rodId for input and output RDOs are the same,
234  // copy the tracklet info etc. from input to the output TgcRdo
235  for ( const TgcRawData* rd : *rdoIn ) {
236  itRdo->second->push_back(std::make_unique<TgcRawData>(*rd));
237  }
238  }
239  }
240  }
241 
242  // write tgcL1rdo container
243  SG::WriteHandle<TgcRdoContainer> tgcL1rdoHandle (m_keyTgcRdo, ctx);
244  auto trgContainer=std::make_unique<TgcRdoContainer>();
245  for(const auto& tgcRdoMap : tgcrdo){
246  for(const auto rawData : *tgcRdoMap.second){
247  trgContainer->push_back(rawData);
248  }
249  }
250  ATH_CHECK(tgcL1rdoHandle.record(std::move(trgContainer)));
251 
252  return sc;
253 }
254 
255 StatusCode LVL1TGCTrigger::processOneBunch(const TgcDigitContainer* tgc_container,
256  LVL1MUONIF::Lvl1MuCTPIInputPhase1* muctpiinputPhase1,
257  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
258 {
259  ATH_MSG_DEBUG("start processOneBunch: for BC=" << m_bctagInProcess);
260 
261  std::map<Identifier, int> tgcDigitIDs;
263 
264  // doMaskOperation (masked & fired)
265  doMaskOperation(tgc_container, tgcDigitIDs);
266 
267  // fill ASDOut to this event
268  TGCEvent event;
269  fillTGCEvent(tgcDigitIDs, event);
270  tgcDigitIDs.clear();
271 
272  // process trigger electronics emulation...
273  m_TimingManager->increaseBunchCounter();
274  m_system->distributeSignal(&event);
275 
276  // EIFI trigger bits for SL are cleared.
277  m_innerTrackletSlotHolder.clearTriggerBits();
278 
279  // PatchPanel, SlaveBoard
281  for( int j=0; j<m_system->getNumberOfOctant(); j+=1){
282  for( int k=0; k<m_system->getNumberOfModule(); k+=1){
283  TGCSector* sector = m_system->getSector(i,j,k);
284  if((sector!=0)&&(sector->hasHit())){
285  m_nEventInSector++;
286  m_TimingManager->startPatchPanel(sector, m_db);
287  m_TimingManager->startSlaveBoard(sector);
288  if (m_OutputTgcRDO.value()) recordRdoSLB(sector, tgcrdo);
289  // EIFI trigger bits for SL are filled in this method.
290  }
291  }
292  }
293  }
294 
295  // HighPtBoard, SectorLogic
296  const int muctpiBcId_offset = TgcDigit::BC_CURRENT;
297  int muctpiBcId = m_bctagInProcess - muctpiBcId_offset;
298  for(int i=0; i< LVL1TGC::kNSide; i++) {
299  int sectoraddr_endcap = 0;
300  int sectoraddr_forward = 0;
301  for(int j=0; j<m_system->getNumberOfOctant(); j+=1){
302  for(int k=0; k<m_system->getNumberOfModule(); k+=1){
303  if(k>=9) continue;// skip Inner TGC
304  TGCSector* sector = m_system->getSector(i,j,k);
305  if(sector==0) continue;
306 
307  m_TimingManager->startHighPtBoard(sector);
308  if (m_OutputTgcRDO.value()) recordRdoHPT(sector, tgcrdo);
309 
310  // EIFI trigger bits are checked if Endcap
311  if(sector->getRegionType() == TGCRegionType::ENDCAP && sector->getSL()) {
312  if((sector->hasHit())){
313  // Pointers to store EIFI trigger bits for Endcap SL
315  = {0, 0, 0, 0};
316  m_innerTrackletSlotHolder.getInnerTrackletSlots(i, j, k, innerTrackletSlots);
317  sector->getSL()->setInnerTrackletSlots(innerTrackletSlots);
318  }
319  }
320  m_TimingManager->startSectorLogic(sector);
321  if(sector->hasHit()) sector->clearNumberOfHit();
322 
323  // Fill inner (EIFI/Tile) words
324  if (m_OutputTgcRDO.value() && m_tgcArgs.USE_INNER()) recordRdoInner(sector, tgcrdo);
325 
326  // Fill Lvl1MuCTPInput
327  if (m_OutputTgcRDO.value()) recordRdoSL(sector, tgcrdo);
328 
329  size_t tgcsystem=0,subsystem=0;
332 
333  std::shared_ptr<TGCTrackSelectorOut> trackSelectorOut;
334  sector->getSL()->getTrackSelectorOutput(trackSelectorOut);
335 
336  std::shared_ptr<LVL1TGC::TGCNSW> nsw = m_system->getNSW();
337  int module = sector->getModuleId();
338  int sectorId;
339  if(sector->getRegionType() == TGCRegionType::ENDCAP) {
342  if(trackSelectorOut != 0) FillSectorLogicData(&sldata,trackSelectorOut.get());
343 
344  if ( m_tgcArgs.USE_NSW() ){
345  sectorId = ((module/3)*2+module%3) + sector->getOctantId()*6;
346  std::shared_ptr<const LVL1TGC::NSWTrigOut> pNSWOut = nsw->getOutput(sector->getRegionType(),
347  sector->getSideId(),
348  sectorId);
349  if ( pNSWOut ){
350  // set monitoring flag
351  for(bool NSWmonitor : pNSWOut->getNSWmonitor() ){
352  if ( NSWmonitor ) {
353  sldata.nsw(true);
354  break;
355  }
356  }
357  }
358  }
359  muctpiinputPhase1->setSectorLogicData(sldata,tgcsystem,subsystem,sectoraddr_endcap++,muctpiBcId);
360  } else if(sector->getRegionType() == TGCRegionType::FORWARD) {
363  if(trackSelectorOut != 0) FillSectorLogicData(&sldata,trackSelectorOut.get());
364 
365  if ( m_tgcArgs.USE_NSW() ) {
366  sectorId = (module/3) + sector->getOctantId()*3;
367  std::shared_ptr<const LVL1TGC::NSWTrigOut> pNSWOut = nsw->getOutput(sector->getRegionType(),
368  sector->getSideId(),
369  sectorId);
370  if ( pNSWOut ){
371  // set monitoring flag
372  for(bool NSWmonitor : pNSWOut->getNSWmonitor() ){
373  if ( NSWmonitor ) {
374  sldata.nsw(true);
375  break;
376  }
377  }
378  }
379  }
380  muctpiinputPhase1->setSectorLogicData(sldata,tgcsystem,subsystem,sectoraddr_forward++,muctpiBcId);
381  }
382 
383  trackSelectorOut.get()->reset();
384 
385 
386  } // k Module
387  } // j Octant
388  } // i Side
389 
390  event.Clear();
391 
392  return StatusCode::SUCCESS;
393 }
394 
395 
397 void LVL1TGCTrigger::doMaskOperation(const TgcDigitContainer* tgc_container,
398  std::map<Identifier, int>& TgcDigitIDs)
399 {
400  // (1) skip masked channels
401  for (const TgcDigitCollection* c : *tgc_container) {
402  for (const TgcDigit* h : *c) {
403 
404  // check BCID
405  if (h->bcTag()!=m_bctagInProcess) continue;
406 
407  Identifier channelId = h->identify();
408  const auto itCh = m_MaskedChannel.find(channelId);
409  if (itCh!=m_MaskedChannel.end() && itCh->second==0) {
410  ATH_MSG_DEBUG("This channel is masked! offlineID=" << channelId);
411  continue;
412  }
413  TgcDigitIDs.emplace(channelId, 1);
414  }
415  }
416 
417  // (2) add fired channels by force
418  for(const auto& [Id, OnOff] : m_MaskedChannel) {
419  if (OnOff==1) {
420  ATH_MSG_VERBOSE("This channel is fired by force! offlineID=" << Id);
421  TgcDigitIDs.emplace(Id, 1);
422  }
423  }
424 
425  ATH_MSG_DEBUG("# of total hits " << TgcDigitIDs.size());
426 
427  return;
428 }
429 
431 void LVL1TGCTrigger::fillTGCEvent(const std::map<Identifier, int>& tgcDigitIDs, TGCEvent& event)
432 {
433  // Loop on TGC detectors (collections)
434  for(const auto& itCh : tgcDigitIDs) {
435  const Identifier channelId = itCh.first;
436  int subsystemNumber;
437  int octantNumber;
438  int moduleNumber;
439  int layerNumber;
440  int rNumber;
441  int wireOrStrip;
442  int channelNumber;
443  bool status = m_cabling->getOnlineIDfromOfflineID(channelId,
444  subsystemNumber,
445  octantNumber,
446  moduleNumber,
447  layerNumber,
448  rNumber,
449  wireOrStrip,
450  channelNumber);
451 
452  if(!status) {
453  ATH_MSG_INFO("Fail to getOnlineIDfromOfflineID for " << channelId);
454  } else {
455  bool fstatus;
456  int subDetectorID, srodID, sswID, sbLoc, channelID;
457  int phi=0;
458  int moduleType=0;
459  int slbID=0;
460  bool isAside=true;
461  bool isEndcap=true;
462 
463  fstatus = m_cabling->getReadoutIDfromOfflineID(channelId,
464  subDetectorID,
465  srodID,sswID,
466  sbLoc,channelID);
467 
468  if (fstatus) {
469  fstatus = m_cabling->getSLBIDfromReadoutID(phi, isAside, isEndcap,
470  moduleType, slbID,
471  subDetectorID,
472  srodID, sswID,sbLoc);
473  }
474  if (fstatus) {
475  ATH_MSG_VERBOSE("hit : subsys#=" << subsystemNumber
476  << " octant#=" << octantNumber
477  << " mod#=" << moduleNumber
478  << " layer#=" << layerNumber << " r#=" << rNumber
479  << " isStrip=" << wireOrStrip
480  << " ch#=" << channelNumber << endmsg
481  << " --> readoutID: sudetID=" << subDetectorID
482  << " srodID=" << srodID << " sswID=" << sswID
483  << " slbID=" << slbID << " chID=" << channelID);
484 
485  TGCZDirection zdire = (subsystemNumber==1)? kZ_FORWARD : kZ_BACKWARD;
486  TGCReadoutIndex index(zdire,octantNumber,moduleNumber,rNumber,layerNumber);
487  TGCSignalType signal = (wireOrStrip==1)? STRIP : WIRE;
488  event.NewASDOut(index,
489  signal,
490  channelNumber,
491  0);
492  } else {
493  ATH_MSG_INFO("Fail to getSLBIDfromOfflineID for " << channelId);
494  }
495  }
496  } // End Loop on TGC detectors (collections)
497  if (m_debuglevel) {
498  ATH_MSG_DEBUG("Could make TGCEvent with TgcDigitContainer."
499  << " vector size : " << event.GetNASDOut() );
500  for(int iout=1; iout<= event.GetNASDOut(); iout++){
501  TGCASDOut* asdout = (event.GetASDOutVector()[iout-1]);
502  ATH_MSG_DEBUG( " Z:" << asdout->GetTGCReadoutIndex().GetZDirection() <<
503  " O:" << asdout->GetTGCReadoutIndex().GetOctantNumber() <<
504  " M:" << asdout->GetTGCReadoutIndex().GetModuleNumber() <<
505  " R:" << asdout->GetTGCReadoutIndex().GetRNumber() <<
506  " L:" << asdout->GetTGCReadoutIndex().GetLayerNumber() <<
507  " S:" << asdout->GetSignalType() <<
508  " I:" << asdout->GetHitID() <<
509  " T:" << asdout->GetHitToF() );
510  }
511  }
512 }
513 
514 
516 void LVL1TGCTrigger::FillSectorLogicData(LVL1MUONIF::Lvl1MuSectorLogicDataPhase1 *sldata,
517  const TGCTrackSelectorOut *trackSelectorOut)
518 {
519  // M.Aoki (26/10/2019)
520  // this function will be updated for Run3-specific configuration such as quality flags, 15 thresholds
521  if(trackSelectorOut ==0) return;
522 
523  sldata->clear2candidatesInSector();// for temporary
524 
525  const int muctpiBcId_offset = TgcDigit::BC_CURRENT;
526  sldata->bcid(m_bctagInProcess - muctpiBcId_offset);
527 
528  for(int trackNumber=0;trackNumber!=trackSelectorOut->getNCandidate();trackNumber++){
529 
530  sldata->roi(trackNumber,((trackSelectorOut->getR(trackNumber))<<2)+(trackSelectorOut->getPhi(trackNumber)));
531  sldata->pt(trackNumber,trackSelectorOut->getPtLevel(trackNumber));
532  if (trackSelectorOut->getInnerVeto(trackNumber)) sldata->ovl(trackNumber,1);
533  else sldata->ovl(trackNumber,0);
534  sldata->charge(trackNumber, trackSelectorOut->getCharge(trackNumber));
535  sldata->bw2or3(trackNumber, trackSelectorOut->getCoincidenceType(trackNumber));
536  sldata->goodmf(trackNumber, trackSelectorOut->getGoodMFFlag(trackNumber));
537  sldata->innercoin(trackNumber, trackSelectorOut->getInnerCoincidenceFlag(trackNumber));
538  }
540  sldata->set2candidates(trackNumber);// not used for TGC
541  sldata->clear2candidates(trackNumber);// not used for TGC
542  }
543 }
544 
546 void LVL1TGCTrigger::recordRdoSLB(TGCSector * sector,
547  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
548 {
549  uint16_t bcTag=m_CurrentBunchTag, l1Id=0, bcId=0;
550  // readoutID
551  int subDetectorId, rodId, sswId, sbLoc, secId, secIdEIFI;
552  // SLBID
553  bool isAside, isEndcap; int phi, moduleType, id, phiEIFI;
554  isAside = (sector->getSideId()==0 ? 1 : 0);
555  isEndcap = (sector->getRegionType() == TGCRegionType::ENDCAP ? 1 : 0);
556  int module = sector->getModuleId();
557  // OnlineID moduleNumber
558  // <---- phi ----
559  // EC: 7 6 4 3 1 0 11 10 9
560  // FWD: 8 5 2 14 13 12
561  // [M1, M2, M3] [EI/FI]
562  // secId=0-5(EC), 0-2(FWD) for TgcRawData
563  secId = (isEndcap ? (module/3)*2+module%3 : module/3);
564  // phi=1-48(EC), 1-24(FWD) in detector ID scheme
565  phi = (isEndcap ? (secId+46+sector->getOctantId()*6)%48+1 : (secId+23+sector->getOctantId()*3)%24+1);
566  // secIdEIFI=0-2
567  secIdEIFI = module%3;
568  // phiEIFI=1-24
569  phiEIFI = (secIdEIFI+23+sector->getOctantId()*3)%24+1;
570 
571  // SLB
572  const int NumberOfSLBType = 6;
573  // 0: WT, 1: WD, 2: ST, 3: SD, 4: WI 5:SI
574  for(int itype=0; itype<NumberOfSLBType; itype++) {
575  moduleType = getLPTTypeInRawData(itype);
576 
577  // loop over all SB of each type
578  for(unsigned int index=0; index<sector->getNumberOfSB(itype); index++) {
579  TGCSlaveBoard * slb = sector->getSB(itype, index);
580  if (0==slb) continue;
581  id = slb->getId();
582  const TGCSlaveBoardOut * out = slb->getOutput();
583  if (0==out) continue;
584 
585  bool isEIFI = (moduleType==TgcRawData::SLB_TYPE_INNER_WIRE ||
587 
588  // get ReadoutID
589  bool status =
590  m_cabling->getReadoutIDfromSLBID((isEIFI ? phiEIFI : phi),
591  isAside, isEndcap,
592  moduleType, id,
593  subDetectorId, rodId,
594  sswId, sbLoc);
595  if (!status) {
596  ATH_MSG_DEBUG("TGCcablignSvc::getReadoutIDfromSLBID fails");
597  ATH_MSG_DEBUG( "phi=" << phi
598  << " side=" << ((isAside) ? "A": "C")
599  << " region=" << ((isEndcap) ? "Endcap" : "Forward")
600  << " type=" << moduleType
601  << " id=" << id
602  << " subDetectorId=" << subDetectorId
603  << " rodId=" << rodId
604  << " sswId=" << sswId
605  << " sbLoc=" << sbLoc);
606  continue;
607  }
608 
609  // fill TgcRawData
610  for(int iData=0; iData<out->getNumberOfData(); iData++) { // max 8
611  if (!out->getHit(iData)) continue;
612 
613  // see TGCcabling/TGCId.h (WD=0,SD,WT,ST,SI,WI). Same as TgcRawData
615  int subMat = iData % 4;
616  int seg = 0;
618  if (iData<4) seg= 1;
619  // 13.Jan.2011 reversed by Hisaya
620  // because Layer swap in TGCStripTripletSB::doCoincidence()
621  } else if ( (type==TgcRawData::SLB_TYPE_INNER_WIRE ) ||
623  seg= iData/4;
624  }
625  std::unique_ptr<TgcRawData> rawdata(new TgcRawData(bcTag,
626  static_cast<uint16_t>(subDetectorId),
627  static_cast<uint16_t>(rodId),
628  static_cast<uint16_t>(sswId),
629  static_cast<uint16_t>(sbLoc),
630  l1Id, bcId,
631  type, out->getDev(iData), seg, subMat,
632  out->getPos(iData)));
633  addRawData(std::move(rawdata), tgcrdo);
634 
635  // EIFI trigger bits for SL are filled.
636  if(isEIFI) {
637  bool setEIFITriggerBit =
638  m_innerTrackletSlotHolder.setTriggerBit(sector->getSideId(),
639  phiEIFI,
640  (isEndcap ?
644  static_cast<unsigned int>(subMat),
645  true);
646 
647  if(!setEIFITriggerBit) {
648  ATH_MSG_INFO("Fail to set Inner trigger bit of"
649  << " sideId= " << sector->getSideId()
650  << " slotId= " << phiEIFI
651  << " region= " << (isEndcap ? "EI" : "FI")
652  << " readout= " << (type==TgcRawData::SLB_TYPE_INNER_WIRE ? "WIRE" : "STRIP")
653  << " subMat(iBit)= " << static_cast<unsigned int>(subMat) );
654  }
655  }
656 
657  ATH_MSG_DEBUG(" recordRdoSLB : reg=" << (isEndcap ? "EC" : "FWD")
658  << " srod=" << rodId << " sswId=" << sswId
659  << " SBLoc=" << sbLoc << " type=" << itype
660  << " iData(subMat:seg)=" << iData << " pos="
661  << out->getPos(iData) << " dev=" << out->getDev(iData) );
662  }
663  // end of filling TgcRawData
664 
665  } // end of loop over SB
666  } // end loop for SLB type
667 }
668 
670 void LVL1TGCTrigger::recordRdoHPT(TGCSector* sector,
671  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
672 {
673  if(sector->hasHit() == false) return;
674 
675  // readoutID
676  int subDetectorId, rodId, sswId, sbLoc, secId;
677 
678  // get numbering scheme info from cabling svc
679  int startEndcapSector, coverageOfEndcapSector;
680  int startForwardSector, coverageOfForwardSector;
681  rodId = 1;
682  m_cabling->getCoveragefromSRodID(rodId,
683  startEndcapSector,
684  coverageOfEndcapSector,
685  startForwardSector,
686  coverageOfForwardSector
687  ) ;
688 
689  uint16_t bcTag=m_CurrentBunchTag, l1Id=0, bcId=0;
690 
691  // HPTID
692  bool isAside, isEndcap, isStrip; int phi;
693  isAside = (sector->getSideId()==0);
694  isEndcap = (sector->getRegionType() == TGCRegionType::ENDCAP);
695  int module = sector->getModuleId();
696  // sector Id = 0..47 (Endcap) 0..23 (forward)
697  int sectorId;
698  if (isEndcap){
699  sectorId = ((module/3)*2+module%3) + sector->getOctantId()*6;
700  } else {
701  sectorId = (module/3) + sector->getOctantId()*3;
702  }
703  // secId for TgcRawData
704  // 0-3(EC), 0-1(FWD) for new TGCcabling (1/12sector)
705  // 0-5(EC), 0-2(FWD) for new TGCcabling (octant)
706  if (isEndcap){
707  secId = sectorId % coverageOfEndcapSector;
708  } else {
709  secId = sectorId % coverageOfForwardSector;
710  }
711  // phi=1-48(EC), 1-24(FWD) in detector ID scheme
712  phi = (isEndcap ? (sectorId+46)%48+1 : (sectorId+23)%24+1);
713 
714  for(int itype=0; itype<2; itype++) { // loop over HPB type(wire/strip)
715  isStrip = (itype==0 ? 0 : 1); // 0=wire 1=strip
716  for(unsigned int ihpb=0; ihpb<sector->getNumberOfHPB(itype); ihpb++) { // loop over # of HPB per sector
717  TGCHighPtBoard * hpb = sector->getHPB(itype, ihpb);
718  if (0==hpb) continue;
719  TGCHighPtChipOut * out = hpb->getOutput();
720  if (0==out) continue;
721 
722  // get ReadoutID
723  bool status = m_cabling->getReadoutIDfromHPTID(phi, isAside, isEndcap, isStrip, hpb->getId(),
724  subDetectorId, rodId, sswId, sbLoc);
725  if (!status) {
726  ATH_MSG_WARNING("TGCcablignSvc::getReadoutIDfromHPTID fails");
727  continue;
728  }
729 
730  // loop over chip and candidate
731  for(int ichip=0; ichip<NumberOfChip; ichip++) { // NumberOfChip=2
732  for(int icand=0; icand<TGCHighPtChipOut::s_NHitInTrackSelector; icand++) {
733  if (!out->getSel(ichip, icand)) continue; // should be 1 or 2
734  int chip = ichip;
735  int index = ihpb;
736  int hitId = out->getHitID(ichip, icand);
737  m_cabling->getRDOHighPtIDfromSimHighPtID(!isEndcap, isStrip,
738  index, chip, hitId);
739  bool isHPT = out->getPt(ichip,icand)==PtHigh ? 1 : 0;
740  std::unique_ptr<TgcRawData> rawdata(new TgcRawData(bcTag,
741  static_cast<uint16_t>(subDetectorId),
742  static_cast<uint16_t>(rodId),
743  l1Id,
744  bcId,
745  isStrip, (!isEndcap), secId, chip, icand,
746  isHPT, hitId,
747  out->getPos(ichip, icand),
748  out->getDev(ichip, icand),
749  0));
750  addRawData(std::move(rawdata), tgcrdo);
751 
752  // Print
753  ATH_MSG_DEBUG( "recordRdoHPT : bdTag =" << bcTag
754  << " side=" << ( (isAside)? "A" : "C")
755  << (isEndcap ? "EC" : "FWD")
756  << " w/s=" << ( (isStrip)? "s" : "w")
757  << " id=" << hpb->getId()
758  << " ecId=" << secId
759  << " chip=" << ichip
760  << " cand=" << icand
761  << " block=" << out->getHitID(ichip, icand)
762  << " subMatrix=" << out->getPos(ichip, icand)
763  << " dev=" << out->getDev(ichip, icand)
764  << " srod=" << rodId << " sswId=" << sswId << " SBLoc=" << sbLoc );
765 
766  // Strip HPT hit may be duplicated
767  if ( m_tgcArgs.SHPT_ORED() &&
768  isEndcap && isStrip &&
769  (chip==1) ) {
770  int oredId = -1;
771  if (hitId == 1) oredId = 5;
772  else if (hitId == 2) oredId = 6;
773  else if (hitId == 5) oredId = 1;
774  else if (hitId == 6) oredId = 2;
775  if (oredId >=0) {
776  std::unique_ptr<TgcRawData> rawdata2(
777  new TgcRawData(bcTag,
778  static_cast<uint16_t>(subDetectorId),
779  static_cast<uint16_t>(rodId),
780  l1Id,
781  bcId,
782  isStrip, (!isEndcap), secId, chip, icand,
783  isHPT, oredId,
784  out->getPos(ichip, icand),
785  out->getDev(ichip, icand),
786  0));
787  addRawData(std::move(rawdata2), tgcrdo);
788  }
790 
791  }
792 
793  }
794  }
795  // end loop of candidate and chip
796 
797  } // end loop for # of HPB per sector
798  } // end loop for HPB type
799 }
800 
801 
803 void LVL1TGCTrigger::recordRdoInner(TGCSector * sector,
804  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
805 {
806  bool isAside = sector->getSideId()==0;
807  bool isEndcap = (sector->getRegionType() == TGCRegionType::ENDCAP);
808  if (!isEndcap) return;
809 
810  // sector Id = 0..47, phi = 1..48
811  int module = sector->getModuleId();
812  int octant = sector->getOctantId();
813  int sectorId = ((module/3)*2+module%3) + octant*6;
814  int phi = (sectorId+46)%48+1;
815 
816  // get readout ID
817  int subDetectorId=0, rodId=0, sswId=0, sbLoc=0;
818 
819  bool status = m_cabling->getSReadoutIDfromSLID(phi, isAside, isEndcap,
820  subDetectorId, rodId, sswId, sbLoc);
821  if (!status) {
822  ATH_MSG_WARNING("TGCcablingSvc::ReadoutIDfromSLID fails in recordRdoInner()" );
823  return;
824  }
825 
826  // secID for TGCRawData
827  // 0-3(EC), 0-1(FWD) for 1/12 sector
828  // 0-15(EC), 0-7(FWD) for 1/3 sector covered by SROD in RUn3
829  int startEndcapSector, coverageOfEndcapSector;
830  int startForwardSector, coverageOfForwardSector;
831  if (!m_cabling->getCoveragefromSRodID(rodId,
832  startEndcapSector,
833  coverageOfEndcapSector,
834  startForwardSector,
835  coverageOfForwardSector
836  ) )
837  {
838  ATH_MSG_WARNING("LVL1TGCTrigger::recordRdoInner --- bad rodId " << rodId );
839  return;
840  }
841 
842  int secId = 0;
843  if (isEndcap){
844  secId = sectorId % coverageOfEndcapSector;
845  } else {
846  secId = sectorId % coverageOfForwardSector;
847  }
848 
849  uint16_t bcTag = m_CurrentBunchTag, l1Id = 0, bcId = 0;
850 
851  // EIFI
853 
854  const TGCInnerTrackletSlot* innerTrackletSlots[n_slots] = {0, 0, 0, 0};
855  m_innerTrackletSlotHolder.getInnerTrackletSlots(sector->getSideId(),
856  octant, module, innerTrackletSlots);
857 
858  std::array<int, n_slots>inner_eifi;
859  m_innerTrackletSlotHolder.getInnerTrackletBits(innerTrackletSlots, inner_eifi);
860 
861  for (int i_slot = 0; i_slot < n_slots; i_slot++) {
862  if (inner_eifi[i_slot] > 0) {
863  std::unique_ptr<TgcRawData> rawdata_eifi(new TgcRawData(bcTag,
864  static_cast<uint16_t>(subDetectorId),
865  static_cast<uint16_t>(rodId),
866  l1Id,
867  bcId,
868  (!isEndcap),
869  secId, /*to be checked*/
870  static_cast<uint16_t>(inner_eifi[i_slot]),
871  0, /*fi*/
872  static_cast<uint16_t>(i_slot) /*chamber Id*/));
873  addRawData(std::move(rawdata_eifi), tgcrdo);
874  }
875  }
876 
877  // Tile
878  int inner_tile = m_system->getTMDB()->getInnerTileBits(sector->getSideId(), sectorId);
879 
880  if (inner_tile > 0) {
881  //TgcRawData * rawdata_tile = new TgcRawData(bcTag,
882  //std::shared_ptr<TgcRawData> rawdata_tile (
883  std::unique_ptr<TgcRawData> rawdata_tile (new TgcRawData(bcTag,
884  static_cast<uint16_t>(subDetectorId),
885  static_cast<uint16_t>(rodId),
886  l1Id,
887  bcId,
888  (!isEndcap),
889  secId,
890  inner_tile,
891  0 /*bcid*/ ));
892  addRawData(std::move(rawdata_tile), tgcrdo);
893  }
894 
895  // NSW
896  TGCRegionType region = sector->getRegionType();
897  if ( m_USENSW ) {
898  std::shared_ptr<const LVL1TGC::NSWTrigOut> nsw_trigout = m_system->getNSW()->getOutput(region, !isAside, sectorId);
899  for ( int icand=0; icand<(int)nsw_trigout->getNSWeta().size(); icand++ ){
900  std::unique_ptr<TgcRawData> rawdata_nsw (new TgcRawData(bcTag,
901  static_cast<uint16_t>(subDetectorId),
902  static_cast<uint16_t>(rodId),
903  l1Id,
904  bcId,
905  (!isEndcap),
906  static_cast<uint16_t>(secId), /*?*/
907  static_cast<uint16_t>(nsw_trigout->getNSWeta().at(icand)),
908  static_cast<uint16_t>(nsw_trigout->getNSWphi().at(icand)),
909  static_cast<uint16_t>(icand), //nswcand
910  static_cast<uint16_t>(nsw_trigout->getNSWDtheta().at(icand)),
911  0, //nswphires
912  0, //nswlowres
913  static_cast<uint16_t>(nsw_trigout->getNSWTriggerProcessor().at(icand))));
914  addRawData(std::move(rawdata_nsw), tgcrdo);
915  }
916  }
917 
918  // RPC BIS78
919  if ( m_USEBIS78 ) {
920  std::shared_ptr<const LVL1TGC::BIS78TrigOut> bis78_trigout = m_system->getBIS78()->getOutput(sectorId);
921  for ( int icand=0; icand<(int)bis78_trigout->getBIS78eta().size(); icand++ ){
922  std::unique_ptr<TgcRawData> rawdata_bis78 (new TgcRawData(bcTag,
923  static_cast<uint16_t>(subDetectorId),
924  static_cast<uint16_t>(rodId),
925  l1Id,
926  bcId,
927  (!isEndcap),
928  static_cast<uint16_t>(secId), /*?*/
929  static_cast<uint16_t>(bis78_trigout->getBIS78eta().at(icand)),
930  static_cast<uint16_t>(bis78_trigout->getBIS78phi().at(icand)),
931  static_cast<uint16_t>(icand),
932  static_cast<uint16_t>(bis78_trigout->getBIS78Deta().at(icand)),
933  static_cast<uint16_t>(bis78_trigout->getBIS78Dphi().at(icand))));
934  addRawData(std::move(rawdata_bis78), tgcrdo);
935  }
936  }
937 }
938 
940 void LVL1TGCTrigger::recordRdoSL(TGCSector* sector,
941  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
942 {
943  // check if whether trigger output exists or not
944  std::shared_ptr<TGCTrackSelectorOut> selectorOut;
945  sector->getSL()->getTrackSelectorOutput(selectorOut);
946 
947  if (selectorOut == nullptr) return;
948  if (selectorOut->getNCandidate() == 0) return;
949 
950  // trigger info
951  // bool cand3plus = 0;
952  bool isEndcap = (sector->getRegionType() == TGCRegionType::ENDCAP);
953  bool isAside = (sector->getSideId()==0);
954  bool veto=0;
955  int phi=0, index=0, threshold=0, roi=0;
956  int Zdir= (isAside) ? 1 : -1;
957 
958  // sector Id = 0..47 (Endcap) 0..23 (forward)
959  int module = sector->getModuleId();
960  int sectorId;
961  if (isEndcap){
962  sectorId = ((module/3)*2+module%3) + sector->getOctantId()*6;
963  } else {
964  sectorId = (module/3) + sector->getOctantId()*3;
965  }
966 
967  // secID for TGCRawData
968  // 0-3(EC), 0-1(FWD) for new TGCcabling (1/12sector)
969  // 0-5(EC), 0-2(FWD) for new TGCcabling (octant)
970  int startEndcapSector, coverageOfEndcapSector;
971  int startForwardSector, coverageOfForwardSector;
972  int rodId = 1;
973  m_cabling->getCoveragefromSRodID(rodId,
974  startEndcapSector,
975  coverageOfEndcapSector,
976  startForwardSector,
977  coverageOfForwardSector
978  ) ;
979  int secId = 0;
980  if (isEndcap){
981  secId = sectorId % coverageOfEndcapSector;
982  } else {
983  secId = sectorId % coverageOfForwardSector;
984  }
985 
986  // phi=1-48(EC), 1-24(FWD) in detector ID scheme
987  phi = (isEndcap ? (sectorId+46)%48+1 : (sectorId+23)%24+1);
988 
989  // get readout ID
990  int subDetectorId = 0, sswId = 0, sbLoc = 0;
991  bool status = m_cabling->getSReadoutIDfromSLID(phi, isAside, isEndcap,
992  subDetectorId, rodId, sswId, sbLoc);
993  if (!status) {
994  ATH_MSG_WARNING("TGCcablignSvc::ReadoutIDfromSLID fails"
995  << (isEndcap ? " Endcap-" : " Forward-")
996  << (isAside ? "A " : "C ")
997  << " phi=" << phi );
998  return;
999  }
1000 
1001  // bool overlap = 0;
1002  int inner=0, coinFlag=0;
1003  uint16_t bcTag=m_CurrentBunchTag, l1Id=0, bcId=0;
1004  for (unsigned int icand=0; icand < (unsigned int)selectorOut->getNCandidate(); ++icand) {
1005  index=icand;
1006  bool muplus = getCharge(selectorOut->getDR(icand), Zdir)==1 ? 1 : 0;
1007  threshold = selectorOut->getPtLevel(icand);
1008  roi = ((selectorOut->getR(icand))<<2)+(selectorOut->getPhi(icand));
1009  if (selectorOut->getInnerVeto(icand)) veto = 1;
1010  else veto = 0;
1011 
1012  inner = selectorOut->getInnerCoincidenceFlag(icand);
1013  coinFlag = selectorOut->getCoincidenceType(icand);
1014 
1015  // create TgcRawData
1016  std::unique_ptr<TgcRawData> rawdata(new TgcRawData(bcTag,
1017  static_cast<uint16_t>(subDetectorId),
1018  static_cast<uint16_t>(rodId),
1019  l1Id,
1020  bcId,
1021  (!isEndcap), secId,
1022  inner,
1023  coinFlag,
1024  muplus, threshold, roi));
1025  addRawData(std::move(rawdata), tgcrdo);
1026 
1027  ATH_MSG_DEBUG("recordRdoSL : bcTag =" << bcTag
1028  << " side=" << (isAside ? "A " : "C ")
1029  << " reg=" << (isEndcap ? "EC" : "FWD")
1030  << " phi=" << phi
1031  << " cand=" << index
1032  << " charge=" << (muplus ? "mu+" : "mu-")
1033  << " thre=" << threshold
1034  << " veto=" << veto
1035  << " roi=" << roi
1036  << " srod=" << rodId << " sswId=" << sswId << " SBLoc=" << sbLoc
1037  << " inner=" << inner << " coinFlag=" << coinFlag );
1038  }
1039  }
1040 
1042 // Mask=0/Fire=1
1043 StatusCode LVL1TGCTrigger::getMaskedChannel()
1044 {
1045  std::string fname=m_MaskFileName12.value();
1046  if (fname.empty()) return StatusCode::SUCCESS;
1047 
1048  std::string fullName = PathResolver::find_file (fname, "PWD");
1049  if( fullName.empty())
1050  fullName = PathResolver::find_file (fname, "DATAPATH");
1051 
1052  std::ifstream fin(fullName.c_str());
1053  if (!fin) {
1054  ATH_MSG_FATAL("Cannot open file " << (fullName.empty() ? fname : fullName));
1055  return StatusCode::FAILURE;
1056  } else {
1057  ATH_MSG_INFO("Use mask file : " << fullName);
1058  }
1059  // read database ------------------------------------------------------------------------------
1060  std::vector<std::string> mask;
1061  std::string aLine;
1062  while(getline(fin,aLine)) {
1063  if (aLine.compare(0,3,"///")!=0) break;
1064  }
1065  int id_type = atoi(aLine.c_str());
1066  while(getline(fin,aLine)) {
1067  if (!aLine.empty()) mask.push_back(aLine);
1068  }
1069  fin.close();
1070 
1071  //
1072  std::vector<int> ids;
1073  Identifier ID;
1074  int nmasked=0, nfired=0;
1075  for(int ich=0; ich<(int)mask.size(); ich++) {
1076  std::string ch = mask[ich];
1077  extractFromString(ch, ids);
1078  int OnOff=ids[0]; // 0=off(masked) 1=on(fired)
1079  //
1080  if (id_type==1 && ids.size()==8) { // online
1081  int sysno1 = (ids[1]==-99 ? -1 : ids[1]); int sysno2=(ids[1]==-99 ? 1 : ids[1]);// -1(B) 1(F)
1082  int octno1 = (ids[2]==-99 ? 0 : ids[2]); int octno2=(ids[2]==-99 ? 7 : ids[2]);
1083  for(int sysno=sysno1; sysno<=sysno2; sysno+=2) {
1084  for(int octno=octno1; octno<=octno2; octno++) {
1085  bool status = m_cabling->getOfflineIDfromOnlineID(ID,sysno,octno,
1086  ids[3],ids[4],ids[5],ids[6],ids[7]);
1087  ATH_MSG_VERBOSE( (OnOff==0 ? "Mask" : "Fire") << " : offlineID=" << ID
1088  << " sys=" << sysno << " oct=" << octno << " modno=" << ids[3]
1089  << " layerno=" << ids[4] << " rNumber=" << ids[5]
1090  << " strip=" << ids[6] << " chno=" << ids[7] );
1091 
1092  if (!status) {
1093  ATH_MSG_WARNING("This onlineID is not valid and cannot be converted to offline ID." );
1094  ATH_MSG_WARNING("sys=" << sysno << " oct=" << octno << " modno=" << ids[3]
1095  << " layerno=" << ids[4] << " rNumber=" << ids[5]
1096  << " strip=" << ids[6] << " chno=" << ids[7] );
1097  } else {
1098  m_MaskedChannel.insert(std::map<Identifier, int>::value_type(ID, OnOff));
1099  if (OnOff==0) nmasked+=1;
1100  else if (OnOff==1) nfired+=1;
1101  }
1102  }
1103  }
1104 
1105  } else if (id_type==2 && ids.size()==6) { // readout id
1106  int sysno1 = (ids[1]==-99 ? 103 : ids[1]); int sysno2=(ids[1]==-99 ? 104 : ids[1]);// 103(F), 104(B)
1107  int octno1 = (ids[2]==-99 ? 0 : ids[2]); int octno2=(ids[2]==-99 ? 7 : ids[2]);
1108  for(int sysno=sysno1; sysno<=sysno2; sysno+=1) {
1109  for(int octno=octno1; octno<=octno2; octno++) {
1110  bool status = m_cabling->getOfflineIDfromReadoutID(ID, sysno,octno,ids[3],ids[4],ids[5]);
1111  ATH_MSG_VERBOSE( (OnOff==0 ? "Mask" : "Fire") << " : offlineID=" << ID
1112  << " subdetectorID=" << sysno << " rodId=" << octno << " sswID=" << ids[3]
1113  << " SBLoc=" << ids[4] << " channelId=" << ids[5] );
1114  if (!status) {
1115  ATH_MSG_WARNING("This readoutID is not valid and cannot be converted to offline ID " );
1116  ATH_MSG_WARNING("subdetectorID=" << sysno << " rodId=" << octno << " sswID=" << ids[3]
1117  << " SBLoc=" << ids[4] << " channelId=" << ids[5] );
1118  } else {
1119  m_MaskedChannel.insert(std::map<Identifier, int>::value_type(ID, OnOff));
1120  if (OnOff==0) nmasked+=1;
1121  else if (OnOff==1) nfired+=1;
1122  }
1123  }
1124  }
1125 
1126  } else if (id_type==3 && ids.size()==2) { // offline id
1127  ID = Identifier((unsigned int)ids[1]);
1128  ATH_MSG_DEBUG((OnOff==0 ? "Mask" : "Fire") << " : offlineID=" << ID);
1129  m_MaskedChannel.insert(std::map<Identifier, int>::value_type(ID, OnOff));
1130  if (OnOff==0) nmasked+=1;
1131  else if (OnOff==1) nfired+=1;
1132 
1133  } else {
1134  ATH_MSG_INFO("Invalid input. Idtype or number of parameters are invalid: idtype=" << id_type
1135  << " number of elements = " << ids.size() );
1136  return StatusCode::FAILURE;
1137  }
1138  }
1139  //
1140  ATH_MSG_INFO("Total number of masked channels ... " << nmasked);
1141  ATH_MSG_INFO("Total number of fired channels ... " << nfired);
1142  //
1143  return StatusCode::SUCCESS;
1144 }
1145 
1148  if (m_bsMetaDataContRHKey.key().empty()) return StatusCode::SUCCESS;
1149 
1150  ATH_MSG_DEBUG("Retrieving Detector Mask from ByteStream metadata container");
1151  auto bsmdc = SG::makeHandle(m_bsMetaDataContRHKey);
1152  if (bsmdc.isValid() && !bsmdc->empty()) {
1153  const ByteStreamMetadata* metadata = bsmdc->front();
1154  uint64_t detMaskLeast = metadata->getDetectorMask();
1155  uint64_t detMaskMost = metadata->getDetectorMask2();
1156 
1157  std::vector<eformat::SubDetector> subDetOff;
1158  eformat::helper::DetectorMask(~detMaskLeast, ~detMaskMost).sub_detectors(subDetOff);
1159  auto sideA = std::find_if(subDetOff.begin(), subDetOff.end(), [](const eformat::SubDetector &s) {
1160  return (s == eformat::MUON_MMEGA_ENDCAP_A_SIDE || s == eformat::MUON_STGC_ENDCAP_A_SIDE); });
1161  auto sideC = std::find_if(subDetOff.begin(), subDetOff.end(), [](const eformat::SubDetector &s) {
1162  return (s == eformat::MUON_MMEGA_ENDCAP_C_SIDE || s == eformat::MUON_STGC_ENDCAP_C_SIDE); });
1163 
1164  if (sideA != std::end(subDetOff)) tgcArgs()->set_NSWSideInfo(m_NSWSideInfo.value().erase(0,1));
1165  else if (sideC != std::end(subDetOff)) tgcArgs()->set_NSWSideInfo(m_NSWSideInfo.value().erase(1,1));
1166  else if (sideA != std::end(subDetOff) && sideC != std::end(subDetOff)) tgcArgs()->set_NSWSideInfo("");
1167  }
1168  return StatusCode::SUCCESS;
1169 }
1170 
1172 void LVL1TGCTrigger::extractFromString(const std::string& str, std::vector<int> & v) {
1173  v.clear();
1174  if (str.empty()) return;
1175  std::string line=str;
1176  while(1) {
1177  if (line.empty()) break;
1178  int i = line.find(' ');
1179  if (i==(int)std::string::npos && !line.empty()) {
1180  v.push_back(atoi(line.c_str()));
1181  break;
1182  }
1183  std::string temp = line;
1184  temp.erase(i,line.size());
1185  v.push_back(atoi(temp.c_str()));
1186  line.erase(0,i+1);
1187  }
1188 }
1189 
1191 int LVL1TGCTrigger::getCharge(int dR, int /*Zdir*/) {
1192  // old scheme
1193  // if (dR==0) return (Zdir>0 ? -1 : 1);
1194  // return (dR*Zdir>0 ? 1 : -1);
1195  return (dR >=0 ? 1 : -1 );
1196 }
1197 
1199 // see TGCNumbering.h
1200 int LVL1TGCTrigger::getLPTTypeInRawData(int type)
1201 {
1202  switch(type) {
1203  case WTSB :
1205  case WDSB :
1207  case STSB :
1209  case SDSB :
1211  case WISB :
1213  case SISB :
1215  default :
1216  return -1;
1217  }
1218 }
1219 
1221  bool LVL1TGCTrigger::addRawData(std::unique_ptr<TgcRawData> rawdata,
1222  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>& tgcrdo)
1223 {
1224  ATH_MSG_DEBUG("addRawData() is called.");
1225  std::pair<int, int> subDetectorRod(rawdata->subDetectorId(), rawdata->rodId());
1226  std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>::iterator itRdo = tgcrdo.find(subDetectorRod);
1227 
1228  if (itRdo==tgcrdo.end()) {
1229  // in case TgcRdo with the given subDetectorId and rodId is
1230  // not registered yet, create new TgcRdo and add rawdata to it
1231  std::unique_ptr<TgcRdo> thisRdo(new TgcRdo(rawdata->subDetectorId(), rawdata->rodId(), rawdata->bcId(), rawdata->l1Id()));
1232  thisRdo->push_back(std::move(rawdata));
1233  tgcrdo.insert(std::map<std::pair<int, int>, std::unique_ptr<TgcRdo>>::value_type(subDetectorRod, std::move(thisRdo)));
1234  } else {
1235  itRdo->second->push_back(std::move(rawdata));
1236  }
1237  return true;
1238 }
1239 
1241 StatusCode LVL1TGCTrigger::getCabling()
1242 {
1243  ATH_MSG_DEBUG("LVL1TGCTrigger::getCabling()");
1244 
1245  // get Cabling service
1246  ATH_CHECK(m_cabling.retrieve());
1247 
1248  int maxRodId, maxSRodId, maxSswId, maxSbloc,minChannelId, maxChannelId;
1249  m_cabling->getReadoutIDRanges( maxRodId, maxSRodId, maxSswId, maxSbloc,minChannelId, maxChannelId);
1250  if (maxRodId ==12) {
1251  ATH_MSG_INFO(m_cabling->name() << " is OK");
1252  } else {
1253  ATH_MSG_FATAL("Old TGCcablingSvc(octant segmentation) can not be used !");
1254  return StatusCode::FAILURE;
1255  }
1256 
1257  ATH_MSG_DEBUG("finished LVL1TGCTrigger::getCabling()");
1258 
1259  return StatusCode::SUCCESS;
1260 }
1261 
1262 
1263 } // end of namespace
1264 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
Lvl1MuEndcapSectorLogicDataPhase1.h
TgcRawData::SLB_TYPE_DOUBLET_STRIP
@ SLB_TYPE_DOUBLET_STRIP
Definition: TgcRawData.h:33
LVL1TGCTrigger::TGCRegionType::ENDCAP
@ ENDCAP
LVL1TGCTrigger::TGCSector
Definition: TGCSector.h:32
LVL1MUONIF::Lvl1MuCTPIInputPhase1::setSectorLogicData
void setSectorLogicData(const Lvl1MuSectorLogicDataPhase1 &data, size_t systemAddress, size_t subSystemAddress, size_t sectorAddress, int bcid=0)
Definition: Lvl1MuCTPIInputPhase1.cxx:69
LVL1TGCTrigger::TGCTrackSelectorOut::reset
void reset()
Definition: TGCTrackSelectorOut.cxx:30
LVL1TGCTrigger::PtHigh
const int PtHigh
Definition: TGCHighPtBoard.h:17
LVL1TGCTrigger::TGCTrackSelectorOut::getDR
int getDR(int order) const
Definition: TGCTrackSelectorOut.h:30
LVL1TGC::CSIDE
@ CSIDE
Definition: TGCNumbering.h:15
LVL1TGCTrigger::TGCTrackSelectorOut::getR
int getR(int order) const
Definition: TGCTrackSelectorOut.h:28
python.tests.PyTestsLib.finalize
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
Definition: PyTestsLib.py:50
TGCASDOut.h
LVL1MUONIF::Lvl1MuCTPIInputPhase1::idForwardSystem
static size_t idForwardSystem()
Definition: Lvl1MuCTPIInputPhase1.h:139
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
checkFileSG.line
line
Definition: checkFileSG.py:75
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
TgcRdo
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old TgcRdo
Definition: MuonEventAthenaPoolTPCnv.cxx:188
LVL1TGC::BIS78TrigOut::getBIS78Deta
const std::vector< uint8_t > & getBIS78Deta() const
Definition: BIS78TrigOut.h:64
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
LVL1TGCTrigger::TGCInnerTrackletSlot::WIRE
@ WIRE
Definition: TGCInnerTrackletSlot.h:36
LVL1TGCTrigger::TGCTrackSelectorOut::getInnerVeto
bool getInnerVeto(int order) const
Definition: TGCTrackSelectorOut.h:32
LVL1TGCTrigger::SISB
@ SISB
Definition: TGCNumbering.h:57
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ID
std::vector< Identifier > ID
Definition: CalibHitIDCheck.h:24
PathResolver::find_file
static std::string find_file(const std::string &logical_file_name, const std::string &search_path, SearchType search_type=LocalSearch)
Definition: PathResolver.cxx:251
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
LVL1TGCTrigger::TGCReadoutIndex::GetZDirection
TGCZDirection GetZDirection() const
Definition: TGCReadoutIndex.h:51
LVL1TGCTrigger::TGCInnerTrackletSlot::EI
@ EI
Definition: TGCInnerTrackletSlot.h:34
LVL1TGCTrigger::TGCInnerTrackletSlotHolder::NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR
@ NUMBER_OF_SLOTS_PER_TRIGGER_SECTOR
Definition: TGCInnerTrackletSlotHolder.h:35
TGCTriggerData::CW_TILE
@ CW_TILE
Definition: TGCTriggerData.h:160
TgcDigit::BC_NEXTNEXT
@ BC_NEXTNEXT
Definition: TgcDigit.h:37
LVL1TGCTrigger::TGCSector::getNumberOfHPB
unsigned int getNumberOfHPB(int type) const
Definition: TGCSector.h:165
LVL1TGCTrigger::TGCHighPtChipOut::s_NHitInTrackSelector
static constexpr int s_NHitInTrackSelector
Definition: TGCHighPtChipOut.h:18
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
index
Definition: index.py:1
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::innercoin
int innercoin(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:56
initialize
void initialize()
Definition: run_EoverP.cxx:894
LVL1TGCTrigger::TGCSector::getModuleId
int getModuleId() const
Definition: TGCSector.h:78
WriteCellNoiseToCool.fullName
fullName
Definition: WriteCellNoiseToCool.py:461
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::nsw
int nsw() const
Definition: Lvl1MuSectorLogicDataPhase1.h:49
LVL1TGC::BIS78TrigOut::getBIS78eta
const std::vector< uint8_t > & getBIS78eta() const
Definition: BIS78TrigOut.h:62
LVL1TGCTrigger::kZ_BACKWARD
@ kZ_BACKWARD
Definition: TGCNumbering.h:45
LVL1MUONIF::Lvl1MuCTPIInputPhase1
Class representing (part of) the input data to the MuCTPI for Phase 1.
Definition: Lvl1MuCTPIInputPhase1.h:34
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
TgcDigit::BC_PREVIOUS
@ BC_PREVIOUS
Definition: TgcDigit.h:37
IdentifiableContainerMT::size
size_t size() const
Duplicate of fullSize for backwards compatability.
Definition: IdentifiableContainerMT.h:206
TGCSector.h
TGCNSW.h
NSWTrigOut.h
LVL1TGCTrigger::TGCSectorLogic::setInnerTrackletSlots
void setInnerTrackletSlots(const TGCInnerTrackletSlot *innerTrackletSlots[])
Definition: TGCSectorLogic.cxx:324
LVL1TGCTrigger::SDSB
@ SDSB
Definition: TGCNumbering.h:57
ByteStreamMetadata
This class is the StoreGate data object for bytestream metadata.
Definition: ByteStreamMetadata.h:25
LVL1TGCTrigger::TGCTrackSelectorOut::getNCandidate
int getNCandidate() const
Definition: TGCTrackSelectorOut.h:37
TgcRawData::subDetectorId
uint16_t subDetectorId() const
Definition: TgcRawData.h:264
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::bw2or3
int bw2or3(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:57
LVL1TGCTrigger::TGCRegionType::FORWARD
@ FORWARD
LVL1TGCTrigger::TGCASDOut::GetHitToF
double GetHitToF() const
Definition: TGCASDOut.h:37
TgcRawData::bcId
uint16_t bcId() const
Definition: TgcRawData.h:259
LVL1TGCTrigger::TGCTrackSelectorOut::getPtLevel
int getPtLevel(int order) const
Definition: TGCTrackSelectorOut.h:27
LVL1TGCTrigger::TGCSector::clearNumberOfHit
void clearNumberOfHit()
Definition: TGCSector.h:133
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
LVL1TGCTrigger::TGCSector::getSB
TGCSlaveBoard * getSB(int type, int index) const
Definition: TGCSector.h:142
LVL1MUONIF::Lvl1MuEndcapSectorLogicDataPhase1
Class representing data from an endcap SL board.
Definition: Lvl1MuEndcapSectorLogicDataPhase1.h:26
TGCDatabaseManager.h
TGCElectronicsSystem.h
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::ovl
int ovl(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:51
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
TgcRawData::SLB_TYPE_TRIPLET_WIRE
@ SLB_TYPE_TRIPLET_WIRE
Definition: TgcRawData.h:34
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LVL1TGCTrigger::TGCSector::getRegionType
TGCRegionType getRegionType() const
Definition: TGCSector.h:170
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
LVL1TGCTrigger::TGCASDOut::GetTGCReadoutIndex
const TGCReadoutIndex & GetTGCReadoutIndex() const
Definition: TGCASDOut.h:33
TgcRawData::rodId
uint16_t rodId() const
Definition: TgcRawData.h:268
ThresholdConfig.h
LVL1TGCTrigger::TGCSlaveBoard
Definition: TGCSlaveBoard.h:22
LVL1TGCTrigger::TGCTrackSelectorOut::getCoincidenceType
int getCoincidenceType(int order) const
Definition: TGCTrackSelectorOut.h:34
LArG4FSStartPointFilterLegacy.execute
execute
Definition: LArG4FSStartPointFilterLegacy.py:20
python.checkMetadata.metadata
metadata
Definition: checkMetadata.py:175
LVL1TGCTrigger::NumberOfChip
const int NumberOfChip
Definition: TGCHighPtBoard.h:20
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
LVL1TGC::NSWTrigOut::getNSWeta
const std::vector< uint8_t > & getNSWeta() const
Definition: NSWTrigOut.h:66
Lvl1MuCTPIInputPhase1.h
python.PyAthena.module
module
Definition: PyAthena.py:131
LVL1TGCTrigger::TGCSector::getSideId
LVL1TGC::TGCSide getSideId() const
Definition: TGCSector.h:76
LVL1TGC::BIS78TrigOut::getBIS78Dphi
const std::vector< uint8_t > & getBIS78Dphi() const
Definition: BIS78TrigOut.h:65
LVL1TGCTrigger::TGCReadoutIndex::GetLayerNumber
int GetLayerNumber() const
Definition: TGCReadoutIndex.h:58
LVL1TGC::NSWTrigOut::getNSWmonitor
const std::vector< bool > & getNSWmonitor() const
Definition: NSWTrigOut.h:71
TgcRdo::subDetectorId
uint16_t subDetectorId() const
Definition: TgcRdo.h:134
LVL1TGCTrigger::WDSB
@ WDSB
Definition: TGCNumbering.h:57
LVL1TGCTrigger::TGCSector::getSL
TGCSectorLogic * getSL()
Definition: TGCSector.h:66
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LVL1TGCTrigger::TGCTrackSelectorOut::NCandidateInTrackSelector
@ NCandidateInTrackSelector
Definition: TGCTrackSelectorOut.h:39
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
LVL1TGCTrigger::TGCASDOut::GetSignalType
TGCSignalType GetSignalType() const
Definition: TGCASDOut.h:34
lumiFormat.i
int i
Definition: lumiFormat.py:85
TGCTimingManager.h
LVL1TGCTrigger::TGCHighPtChipOut
Definition: TGCHighPtChipOut.h:16
LVL1TGCTrigger::WTSB
@ WTSB
Definition: TGCNumbering.h:57
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteHandle::ptr
pointer_type ptr()
Dereference the pointer.
LVL1TGCTrigger::TGCTrackSelectorOut::getInnerCoincidenceFlag
int getInnerCoincidenceFlag(int order) const
Definition: TGCTrackSelectorOut.h:36
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LVL1TGCTrigger::TGCASDOut
Definition: TGCASDOut.h:12
TGCEvent.h
Lvl1MuForwardSectorLogicDataPhase1.h
TgcDigitCollection
Definition: TgcDigitCollection.h:17
python.CaloAddPedShiftConfig.str
str
Definition: CaloAddPedShiftConfig.py:42
python.LArMinBiasAlgConfig.int
int
Definition: LArMinBiasAlgConfig.py:59
LVL1TGCTrigger::TGCReadoutIndex::GetOctantNumber
int GetOctantNumber() const
Definition: TGCReadoutIndex.h:55
LVL1TGCTrigger::TGCReadoutIndex::GetModuleNumber
int GetModuleNumber() const
Definition: TGCReadoutIndex.h:56
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::clear2candidates
void clear2candidates(size_t id)
Definition: Lvl1MuSectorLogicDataPhase1.h:69
LVL1TGC::NSWTrigOut::getNSWDtheta
const std::vector< uint8_t > & getNSWDtheta() const
Definition: NSWTrigOut.h:68
LVL1TGCTrigger::WIRE
@ WIRE
Definition: TGCNumbering.h:52
TgcDigitCollection.h
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1
Base class for the data coming from one SL board.
Definition: Lvl1MuSectorLogicDataPhase1.h:35
TgcDigit.h
TGCBIS78.h
LVL1TGCTrigger::TGCInnerTrackletSlot::FI
@ FI
Definition: TGCInnerTrackletSlot.h:33
LVL1TGCTrigger::STSB
@ STSB
Definition: TGCNumbering.h:57
LVL1TGCTrigger::WISB
@ WISB
Definition: TGCNumbering.h:57
TGCReadoutIndex.h
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:239
LVL1TGCTrigger::TGCSlaveBoardOut
Definition: TGCSlaveBoardOut.h:20
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::charge
int charge(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:53
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:79
TriggerThreshold.h
TgcDigit::BC_CURRENT
@ BC_CURRENT
Definition: TgcDigit.h:37
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:233
TgcRawData::l1Id
uint16_t l1Id() const
Definition: TgcRawData.h:255
LVL1TGCTrigger::TGCEvent
Definition: TGCEvent.h:15
TGCTriggerData::isActive
bool isActive(int cwtype) const
Definition: TGCTriggerData.cxx:19
TGCSectorLogic.h
CaloCondBlobAlgs_fillNoiseFromASCII.channelId
channelId
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:122
LVL1TGCTrigger::TGCInnerTrackletSlot::STRIP
@ STRIP
Definition: TGCInnerTrackletSlot.h:37
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
LVL1TGCTrigger
Definition: LVL1TGCTrigger.cxx:47
LVL1TGC::NSWTrigOut::getNSWTriggerProcessor
const std::vector< int > & getNSWTriggerProcessor() const
Definition: NSWTrigOut.h:65
RPDUtils::sideA
unsigned constexpr int sideA
Definition: RPDUtils.h:16
LVL1MUONIF::Lvl1MuCTPIInput::idSideC
static size_t idSideC()
Definition: Lvl1MuCTPIInput.h:67
TgcDigit
Definition: TgcDigit.h:21
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::set2candidates
void set2candidates(size_t id)
Definition: Lvl1MuSectorLogicDataPhase1.h:68
LVL1TGCTrigger::TGCDatabaseManager
Definition: TGCDatabaseManager.h:39
dumpTgcDigiThreshold.isStrip
list isStrip
Definition: dumpTgcDigiThreshold.py:33
bcId
uint16_t bcId(uint32_t data)
Definition: TgcByteStreamData.h:326
PathResolver.h
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:227
LVL1TGCTrigger::TGCSlaveBoard::getId
int getId() const
Definition: TGCSlaveBoard.h:41
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
python.subdetectors.mmg.ids
ids
Definition: mmg.py:8
TGCNumbering.h
threshold
Definition: chainparser.cxx:74
BIS78TrigOut.h
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
LVL1MUONIF::Lvl1MuForwardSectorLogicDataPhase1
Class representing data from an forward SL board.
Definition: Lvl1MuForwardSectorLogicDataPhase1.h:26
LVL1TGC::BIS78TrigOut::getBIS78phi
const std::vector< uint8_t > & getBIS78phi() const
Definition: BIS78TrigOut.h:63
Cut::signal
@ signal
Definition: SUSYToolsAlg.cxx:67
LVL1TGCTrigger::TGCTrackSelectorOut::getCharge
int getCharge(int order) const
Definition: TGCTrackSelectorOut.h:33
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::goodmf
int goodmf(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:55
LVL1TGCTrigger::TGCReadoutIndex::GetRNumber
int GetRNumber() const
Definition: TGCReadoutIndex.h:57
LVL1TGCTrigger::TGCTrackSelectorOut::getPhi
int getPhi(int order) const
Definition: TGCTrackSelectorOut.h:29
LVL1TGC::ASIDE
@ ASIDE
Definition: TGCNumbering.h:14
LVL1TGCTrigger::TGCTrackSelectorOut::getGoodMFFlag
int getGoodMFFlag(int order) const
Definition: TGCTrackSelectorOut.h:35
LVL1MUONIF::Lvl1MuCTPIInputPhase1::idEndcapSystem
static size_t idEndcapSystem()
Definition: Lvl1MuCTPIInputPhase1.h:137
python.AthDsoLogger.fname
string fname
Definition: AthDsoLogger.py:67
python.PyAthena.v
v
Definition: PyAthena.py:154
LVL1TGCTrigger::TGCSignalType
TGCSignalType
Definition: TGCNumbering.h:51
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
DeMoScan.index
string index
Definition: DeMoScan.py:364
python.CaloAddPedShiftConfig.default
default
Definition: CaloAddPedShiftConfig.py:43
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::pt
int pt(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:52
h
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
LVL1TGCTrigger::TGCTrackSelectorOut
Definition: TGCTrackSelectorOut.h:11
LVL1TGCTrigger::TGCHighPtBoard
Definition: TGCHighPtBoard.h:34
LVL1TGCTrigger::TGCRegionType
TGCRegionType
Definition: TGCNumbering.h:49
LVL1TGCTrigger::TGCHighPtBoard::getId
int getId() const
Definition: TGCHighPtBoard.h:124
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TGCTrackSelectorOut.h
TRT::Track::trackNumber
@ trackNumber
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:75
TgcRawData
An unit object of TGC ROD output.
Definition: TgcRawData.h:23
LVL1TGCTrigger::STRIP
@ STRIP
Definition: TGCNumbering.h:52
LVL1TGCTrigger.h
DEBUG
#define DEBUG
Definition: page_access.h:11
bcTag
unsigned bcTag(unsigned bcBitMap)
Definition: TgcByteStreamData.h:359
LVL1TGCTrigger::LVL1TGCTrigger
Definition: LVL1TGCTrigger.h:67
LVL1TGCTrigger::TGCSector::getOctantId
int getOctantId() const
Definition: TGCSector.h:77
LVL1TGCTrigger::TGCSector::hasHit
bool hasHit() const
Definition: TGCSector.h:128
RPDUtils::sideC
unsigned constexpr int sideC
Definition: RPDUtils.h:15
TgcRawData::SLB_TYPE_INNER_STRIP
@ SLB_TYPE_INNER_STRIP
Definition: TgcRawData.h:37
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::roi
int roi(size_t id) const
Definition: Lvl1MuSectorLogicDataPhase1.h:50
LVL1TGCTrigger::TGCSector::getNumberOfSB
unsigned int getNumberOfSB(int type) const
Definition: TGCSector.h:160
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::bcid
int bcid() const
Definition: Lvl1MuSectorLogicDataPhase1.h:48
LVL1TGC::NSWTrigOut::getNSWphi
const std::vector< uint8_t > & getNSWphi() const
Definition: NSWTrigOut.h:67
LVL1TGC::kNSide
@ kNSide
Definition: TGCNumbering.h:16
LVL1TGCTrigger::TGCReadoutIndex
Definition: TGCReadoutIndex.h:13
TGCTriggerData
Definition: TGCTriggerData.h:102
compute_lumi.fin
fin
Definition: compute_lumi.py:19
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
LVL1TGC::TGCSide
TGCSide
The sides of TGC (A- or C-side)
Definition: TGCNumbering.h:13
LVL1TGCTrigger::TGCSectorLogic::getTrackSelectorOutput
void getTrackSelectorOutput(std::shared_ptr< TGCTrackSelectorOut > &trackSelectorOut) const
Definition: TGCSectorLogic.cxx:127
TgcRawData::SLB_TYPE_INNER_WIRE
@ SLB_TYPE_INNER_WIRE
Definition: TgcRawData.h:36
str
Definition: BTagTrackIpAccessor.cxx:11
merge.status
status
Definition: merge.py:17
LVL1TGCTrigger::TGCASDOut::GetHitID
int GetHitID() const
Definition: TGCASDOut.h:35
LVL1MUONIF::Lvl1MuSectorLogicDataPhase1::clear2candidatesInSector
void clear2candidatesInSector()
Definition: Lvl1MuSectorLogicDataPhase1.h:61
TgcRdo
Definition: TgcRdo.h:22
TgcDigitContainer
Use IdentifiableContainer with TgcDigitCollection.
Definition: TgcDigitContainer.h:53
veto
std::vector< std::string > veto
these patterns are anded
Definition: listroot.cxx:191
LVL1TGCTrigger::TGCSlaveBoard::getOutput
TGCSlaveBoardOut * getOutput()
Definition: TGCSlaveBoard.h:38
TgcDigitContainer.h
TgcRawData
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TgcRawData
Definition: MuonEventAthenaPoolTPCnv.cxx:168
LVL1TGCTrigger::TGCZDirection
TGCZDirection
Definition: TGCNumbering.h:43
LVL1TGCTrigger::TGCHighPtBoard::getOutput
TGCHighPtChipOut * getOutput()
Definition: TGCHighPtBoard.cxx:144
LVL1MUONIF::Lvl1MuCTPIInput::idSideA
static size_t idSideA()
Definition: Lvl1MuCTPIInput.h:66
value_type
Definition: EDM_MasterSearch.h:11
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
L1TopoSimulationConfig.subsystem
subsystem
Definition: L1TopoSimulationConfig.py:265
TgcRawData::SLB_TYPE_TRIPLET_STRIP
@ SLB_TYPE_TRIPLET_STRIP
Definition: TgcRawData.h:35
TrigT1TGC_ClassDEF.h
LVL1TGCTrigger::TGCInnerTrackletSlot
Definition: TGCInnerTrackletSlot.h:11
python.compressB64.c
def c
Definition: compressB64.py:93
LVL1TGC::TGCNSW::getOutput
std::shared_ptr< const NSWTrigOut > getOutput(LVL1TGCTrigger::TGCRegionType region, int side, int TGC_TriggerSector) const
Definition: TGCNSW.cxx:52
TgcRdo::rodId
uint16_t rodId() const
Definition: TgcRdo.h:138
LVL1TGCTrigger::kZ_FORWARD
@ kZ_FORWARD
Definition: TGCNumbering.h:44
TgcRawData::SLB_TYPE_DOUBLET_WIRE
@ SLB_TYPE_DOUBLET_WIRE
Definition: TgcRawData.h:32
fitman.k
k
Definition: fitman.py:528
LVL1TGCTrigger::TGCSector::getHPB
TGCHighPtBoard * getHPB(int type, int index) const
Definition: TGCSector.h:148
TgcRawData::SlbType
SlbType
Definition: TgcRawData.h:31
Identifier
Definition: IdentifierFieldParser.cxx:14