ATLAS Offline Software
Public Types | Public Member Functions | Private Attributes | List of all members
LVL1TGC::TGCTileMuCoincidenceLUT Class Reference

This class stores the LUT for Tile-Muon coincidence of the Run-3 L1Muon Endcap trigger. More...

#include <TGCTileMuCoincidenceLUT.h>

Collaboration diagram for LVL1TGC::TGCTileMuCoincidenceLUT:

Public Types

enum  TileMuMask {
  TM_NA = 0, TM_D6_L = 1, TM_D6_H = 5, TM_D56_L = 3,
  TM_D56_H = 7
}
 
enum  { N_Input_TileMuModule =4 }
 

Public Member Functions

 TGCTileMuCoincidenceLUT (LVL1TGCTrigger::TGCArguments *, const SG::ReadCondHandleKey< TGCTriggerData > &readCondKey, const std::string &version="NA")
 
virtual ~TGCTileMuCoincidenceLUT ()
 
 TGCTileMuCoincidenceLUT (const TGCTileMuCoincidenceLUT &right)=default
 
TGCTileMuCoincidenceLUToperator= (const TGCTileMuCoincidenceLUT &right)=delete
 
uint16_t getAddr (int16_t side, int16_t sec, int16_t ssc) const
 
int getFlagPT (const int pt, const int16_t ssc, const int16_t sec, const int16_t side) const
 
int getFlagROI (const int roi, const int16_t ssc, const int16_t sec, const int16_t side) const
 
int getTrigMask (const int module, const int16_t ssc, const int16_t sec, const int16_t side) const
 
const std::string & getVersion () const
 
bool readMap ()
 
LVL1TGCTrigger::TGCArgumentstgcArgs ()
 
const LVL1TGCTrigger::TGCArgumentstgcArgs () const
 

Private Attributes

std::unordered_map< uint16_t, uint8_t > m_flagpt
 
std::unordered_map< uint16_t, uint8_t > m_flagroi
 
std::unordered_map< uint16_t, uint16_t > m_trigbit
 
std::string m_verName
 
LVL1TGCTrigger::TGCArgumentsm_tgcArgs
 
const SG::ReadCondHandleKey< TGCTriggerData > & m_readCondKey
 

Detailed Description

This class stores the LUT for Tile-Muon coincidence of the Run-3 L1Muon Endcap trigger.

The contents are read from the Condition database, and are kept in the XXXX object. When the coincidence map is read from the text file, the contents is kept in member variables of this class. Note that the structure is temporary same as Run-2's one.

Contents of Run-3 Tile-Muon LUT

consists of three look-up tables a) Applied pT in SSC (m_flagpt) std::unordered_map<ADDR, PTMASK> where ADDR | 12 bits | uint16_t | side, trigger sector, and SSC PTMASK | 3 bits | uint8_t | bit mask for applied pT for SSC

b)Applied RoI in SSC (m_flagroi) std::unordered_map<ADDR, ROIMASK> where ADDR | 12 bits | uint16_t | side, trigger sector, and SSC ROIMASK | 8 bits | uint8_t | bit mask for applied RoI in SSC

c) Trigger bit for each input (m_trigbit) std::unordered_map<ADDR, TRIGBIT> where TRIGBIT is: | Module D (Tile=3) || Module C (Tile=2) || Module B (Tile=1) || Module A (Tile=0) | | 15 | 14 | 13 | 12 || 11 | 10 | 9 | 8 || 7 | 6 | 5 | 4 || 3 | 2 | 1 | 0 | | 0 | LH | D56| D6 || 0 | LH | D56| D6 || 0 | LH | D56 | D6 || 0 | LH | D56 | D6 | for each Module: [1:0] hit with cell information: D6=0x1, D56=0x3 [2] Low/High threshold: 1 = H, 0=L e.g.) 0x7 = D5+D6 energy exceeds the high threshold

for ADDR, | 11 |10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| |side| Trig. Sector | SSC | where side = 0x0 (A-side), 0x1 (C-side). trig. sector = 0x(0...2f) SSC = 0x(0...12)

Definition at line 61 of file TGCTileMuCoincidenceLUT.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
N_Input_TileMuModule 

Definition at line 89 of file TGCTileMuCoincidenceLUT.h.

◆ TileMuMask

Enumerator
TM_NA 
TM_D6_L 
TM_D6_H 
TM_D56_L 
TM_D56_H 

Definition at line 81 of file TGCTileMuCoincidenceLUT.h.

81  {
82  TM_NA = 0,
83  TM_D6_L = 1,
84  TM_D6_H = 5,
85  TM_D56_L = 3,
86  TM_D56_H = 7
87  };

Constructor & Destructor Documentation

◆ TGCTileMuCoincidenceLUT() [1/2]

LVL1TGC::TGCTileMuCoincidenceLUT::TGCTileMuCoincidenceLUT ( LVL1TGCTrigger::TGCArguments tgcargs,
const SG::ReadCondHandleKey< TGCTriggerData > &  readCondKey,
const std::string &  version = "NA" 
)

Definition at line 17 of file TGCTileMuCoincidenceLUT.cxx.

20  : m_verName(version),
21  m_tgcArgs(tgcargs),
22  m_readCondKey(readCondKey)
23 {
24  if (!tgcArgs()->TILE_MU()) return;
25  if (tgcArgs()->USE_CONDDB()) return;
26 
28  IMessageSvc* msgSvc = 0;
29  ISvcLocator* svcLocator = Gaudi::svcLocator();
30  if (svcLocator->service("MessageSvc", msgSvc) == StatusCode::FAILURE) {
31  return;
32  }
33  MsgStream log(msgSvc, "LVL1TGC::TGCTileMuCoincidenceLUT");
34 
35  // read Inner Coincidence Map
36  if (this->readMap()) {
37  log << MSG::INFO
38  << " TGC TileMu CW version of " << m_verName << " is selected " << endmsg;
39  } else {
40  log << MSG::INFO
41  << " NOT use TileMu " << endmsg;
42  m_flagpt.clear();
43  m_flagroi.clear();
44  m_trigbit.clear();
45  }
46 }

◆ ~TGCTileMuCoincidenceLUT()

LVL1TGC::TGCTileMuCoincidenceLUT::~TGCTileMuCoincidenceLUT ( )
virtual

Definition at line 49 of file TGCTileMuCoincidenceLUT.cxx.

50 {
51 }

◆ TGCTileMuCoincidenceLUT() [2/2]

LVL1TGC::TGCTileMuCoincidenceLUT::TGCTileMuCoincidenceLUT ( const TGCTileMuCoincidenceLUT right)
default

Member Function Documentation

◆ getAddr()

uint16_t LVL1TGC::TGCTileMuCoincidenceLUT::getAddr ( int16_t  side,
int16_t  sec,
int16_t  ssc 
) const

◆ getFlagPT()

int LVL1TGC::TGCTileMuCoincidenceLUT::getFlagPT ( const int  pt,
const int16_t  ssc,
const int16_t  sec,
const int16_t  side 
) const

Definition at line 164 of file TGCTileMuCoincidenceLUT.cxx.

168 {
169  if ((pt<=0)||(pt>TGCTriggerData::N_PT_THRESH)) return -1;
170 
171  uint8_t ptmask = 0x0;
172  if (tgcArgs()->USE_CONDDB()) {
174  const TGCTriggerData* readCdo{*readHandle};
175  ptmask = readCdo->getFlagPtTile(ssc, sec, side);
176  } else {
177  uint16_t addr = this->getAddr(side, sec, ssc);
178  std::unordered_map<uint16_t, uint8_t>::const_iterator it = m_flagpt.find(addr);
179  if(it != m_flagpt.end()) ptmask = it->second;
180  }
181  return (ptmask>>(pt-1)) & 0x1; /* only 1st bit needed (0x1) */
182 }

◆ getFlagROI()

int LVL1TGC::TGCTileMuCoincidenceLUT::getFlagROI ( const int  roi,
const int16_t  ssc,
const int16_t  sec,
const int16_t  side 
) const

Definition at line 184 of file TGCTileMuCoincidenceLUT.cxx.

188 {
189  if ((roi<0)||(roi>=TGCTriggerData::N_ROI_IN_SSC)) return -1;
190 
191  uint8_t roimask = 0x0;
192  if (tgcArgs()->USE_CONDDB()) {
194  const TGCTriggerData* readCdo{*readHandle};
195  roimask = readCdo->getFlagRoiTile(ssc, sec, side);
196  } else {
197  uint16_t addr = this->getAddr(side, sec, ssc);
198  std::unordered_map<uint16_t, uint8_t>::const_iterator it = m_flagroi.find(addr);
199  if(it != m_flagroi.end()) roimask = it->second;
200  }
201  return (roimask >> roi) & 0x1; /* only 1st bit needed (0x1) */
202 }

◆ getTrigMask()

int LVL1TGC::TGCTileMuCoincidenceLUT::getTrigMask ( const int  module,
const int16_t  ssc,
const int16_t  sec,
const int16_t  side 
) const

Definition at line 143 of file TGCTileMuCoincidenceLUT.cxx.

147 {
148  if ((module<0)||(module>=TGCTriggerData::N_TILE_INPUT)) return TM_NA;
149 
150  uint16_t mask = 0x0;
151  if (tgcArgs()->USE_CONDDB()) {
153  const TGCTriggerData* readCdo{*readHandle};
154  mask = readCdo->getTrigMaskTile(ssc, sec, side);
155  } else {
156  uint16_t addr = this->getAddr(side, sec, ssc);
157  std::unordered_map<uint16_t, uint16_t>::const_iterator it = m_trigbit.find(addr);
158  if(it != m_trigbit.end()) mask = it->second;
159  }
160 
161  return mask>>(module*4) & 0x7;
162 }

◆ getVersion()

const std::string& LVL1TGC::TGCTileMuCoincidenceLUT::getVersion ( ) const
inline

Definition at line 78 of file TGCTileMuCoincidenceLUT.h.

78 { return m_verName; }

◆ operator=()

TGCTileMuCoincidenceLUT& LVL1TGC::TGCTileMuCoincidenceLUT::operator= ( const TGCTileMuCoincidenceLUT right)
delete

◆ readMap()

bool LVL1TGC::TGCTileMuCoincidenceLUT::readMap ( )

Definition at line 53 of file TGCTileMuCoincidenceLUT.cxx.

54 {
55  IMessageSvc* msgSvc = 0;
56  ISvcLocator* svcLocator = Gaudi::svcLocator();
57  if (svcLocator->service("MessageSvc", msgSvc) == StatusCode::FAILURE) {
58  return false;
59  }
60  MsgStream log(msgSvc, "LVL1TGC::TGCTileMuCoincidenceLUT");
61 
62  // select right database according to a set of thresholds
63  std::string dbname="";
64  dbname = "TileMuCoincidenceMap." + m_verName + "._12.db";
65 
66  //-----
67 
68  std::string fullName;
69  fullName = PathResolver::FindCalibDirectory("dev")+"/TrigT1TGC/TILE/"+dbname;
70  bool isFound =( fullName.length() > 0 );
71  if( !isFound) {
72  log << MSG::WARNING
73  << " Could not found " << dbname << endmsg;
74  return false ;
75  }
76 
77  std::ifstream file(fullName.c_str(),std::ios::in);
78 
79  static constexpr unsigned int BufferSize = 256;
80  char buf[BufferSize];
81 
82  while (file.getline(buf, BufferSize)) {
83 
84  int16_t sideId = -1;
85  int16_t sectorId = -1;
86  int16_t sscId = -1;
87 
88  std::istringstream header(buf);
89  std::string tag;
90  header >> tag;
91  if(tag == "#") {
92  header >> sideId >> sectorId >> sscId;
93  }
94 
95  // check Id
96  if(sideId < 0 || sideId>=TGCTriggerData::N_SIDE ||
97  sectorId < 0 || sectorId>=TGCTriggerData::N_ENDCAP_SECTOR ||
98  sscId < 0 || sscId>=TGCTriggerData::N_ENDCAP_SSC ) {
99  log << MSG::WARNING
100  << " illegal parameter in database header : " << header.str()
101  << " in file " << dbname
102  << endmsg;
103  file.close();
104  return false;
105  }
106 
107  uint16_t addr = this->getAddr(sideId, sectorId, sscId);
108 
109  uint8_t flagpt = 0;
110  for (size_t pt = 0; pt < TGCTriggerData::N_PT_THRESH; pt++){
111  uint8_t use;
112  header >> use;
113  flagpt |= (use&0x1)<<pt;
114  }
115  m_flagpt[addr] = flagpt;
116 
117  uint8_t roi = 0;
118  for (size_t pos=0; pos< TGCTriggerData::N_ROI_IN_SSC; pos++){
119  uint8_t use;
120  header >> use;
121  roi |= (use&0x1)<<pos;
122  }
123  m_flagroi[addr] = roi;
124 
125  // get trigger word
126  file.getline(buf,BufferSize);
127  std::istringstream cont(buf);
128  uint16_t trigbit = 0x0;
129  for(size_t pos=0; pos < TGCTriggerData::N_TILE_INPUT; pos++){
130  uint16_t word;
131  cont >> word;
132  trigbit |= (word & 0xf)<<(pos*4);
133  }
134  m_trigbit[addr] = trigbit;
135 
136  }
137  file.close();
138 
139  return true;
140 }

◆ tgcArgs() [1/2]

LVL1TGCTrigger::TGCArguments* LVL1TGC::TGCTileMuCoincidenceLUT::tgcArgs ( )
inline

Definition at line 91 of file TGCTileMuCoincidenceLUT.h.

91 { return m_tgcArgs; }

◆ tgcArgs() [2/2]

const LVL1TGCTrigger::TGCArguments* LVL1TGC::TGCTileMuCoincidenceLUT::tgcArgs ( ) const
inline

Definition at line 92 of file TGCTileMuCoincidenceLUT.h.

92 { return m_tgcArgs; }

Member Data Documentation

◆ m_flagpt

std::unordered_map<uint16_t, uint8_t> LVL1TGC::TGCTileMuCoincidenceLUT::m_flagpt
private

Definition at line 95 of file TGCTileMuCoincidenceLUT.h.

◆ m_flagroi

std::unordered_map<uint16_t, uint8_t> LVL1TGC::TGCTileMuCoincidenceLUT::m_flagroi
private

Definition at line 96 of file TGCTileMuCoincidenceLUT.h.

◆ m_readCondKey

const SG::ReadCondHandleKey<TGCTriggerData>& LVL1TGC::TGCTileMuCoincidenceLUT::m_readCondKey
private

Definition at line 101 of file TGCTileMuCoincidenceLUT.h.

◆ m_tgcArgs

LVL1TGCTrigger::TGCArguments* LVL1TGC::TGCTileMuCoincidenceLUT::m_tgcArgs
private

Definition at line 100 of file TGCTileMuCoincidenceLUT.h.

◆ m_trigbit

std::unordered_map<uint16_t, uint16_t> LVL1TGC::TGCTileMuCoincidenceLUT::m_trigbit
private

Definition at line 97 of file TGCTileMuCoincidenceLUT.h.

◆ m_verName

std::string LVL1TGC::TGCTileMuCoincidenceLUT::m_verName
private

Definition at line 99 of file TGCTileMuCoincidenceLUT.h.


The documentation for this class was generated from the following files:
CaloNoise_fillDB.dbname
dbname
Definition: CaloNoise_fillDB.py:43
TGCTriggerData::SECTOR_MASK
static constexpr uint8_t SECTOR_MASK
Mask for trigger sector for the (EIFI/TILE) ADDR.
Definition: TGCTriggerData.h:150
StateLessPT_NewConfig.BufferSize
BufferSize
Definition: StateLessPT_NewConfig.py:370
header
Definition: hcg.cxx:526
LVL1TGC::TGCTileMuCoincidenceLUT::m_trigbit
std::unordered_map< uint16_t, uint16_t > m_trigbit
Definition: TGCTileMuCoincidenceLUT.h:97
TGCTriggerData::ADDR_SECTOR_SHIFT
static constexpr uint8_t ADDR_SECTOR_SHIFT
Bit position of the trigger sector bit in the (EIFI/TILE) ADDR.
Definition: TGCTriggerData.h:156
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
LVL1TGC::TGCTileMuCoincidenceLUT::TM_D56_L
@ TM_D56_L
Definition: TGCTileMuCoincidenceLUT.h:85
TGCTriggerData::N_ENDCAP_SSC
@ N_ENDCAP_SSC
Definition: TGCTriggerData.h:164
LVL1TGC::TGCTileMuCoincidenceLUT::tgcArgs
LVL1TGCTrigger::TGCArguments * tgcArgs()
Definition: TGCTileMuCoincidenceLUT.h:91
WriteCellNoiseToCool.fullName
fullName
Definition: WriteCellNoiseToCool.py:461
skel.it
it
Definition: skel.GENtoEVGEN.py:423
LVL1TGC::TGCTileMuCoincidenceLUT::m_verName
std::string m_verName
Definition: TGCTileMuCoincidenceLUT.h:99
test_pyathena.pt
pt
Definition: test_pyathena.py:11
TGCTriggerData::ADDR_SIDE_SHIFT
static constexpr uint8_t ADDR_SIDE_SHIFT
Bit position of the side bit in the (EIFI/TILE) ADDR.
Definition: TGCTriggerData.h:154
PathResolver::FindCalibDirectory
static std::string FindCalibDirectory(const std::string &logical_file_name)
Definition: PathResolver.h:109
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
python.utils.AtlRunQueryLookup.mask
string mask
Definition: AtlRunQueryLookup.py:460
LVL1TGC::TGCTileMuCoincidenceLUT::TM_D6_L
@ TM_D6_L
Definition: TGCTileMuCoincidenceLUT.h:83
TRT::Hit::side
@ side
Definition: HitInfo.h:83
python.PyAthena.module
module
Definition: PyAthena.py:134
TGCTriggerData::N_ROI_IN_SSC
@ N_ROI_IN_SSC
Definition: TGCTriggerData.h:166
TGCTriggerData::N_TILE_INPUT
@ N_TILE_INPUT
Definition: TGCTriggerData.h:171
LVL1TGC::TGCTileMuCoincidenceLUT::m_tgcArgs
LVL1TGCTrigger::TGCArguments * m_tgcArgs
Definition: TGCTileMuCoincidenceLUT.h:100
TGCTriggerData::SSC_MASK
static constexpr uint8_t SSC_MASK
Mask for SSC for the (EIFI/TILE) ADDR.
Definition: TGCTriggerData.h:152
LVL1TGC::TGCTileMuCoincidenceLUT::getAddr
uint16_t getAddr(int16_t side, int16_t sec, int16_t ssc) const
Definition: TGCTileMuCoincidenceLUT.cxx:204
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
StdJOSetup.msgSvc
msgSvc
Provide convenience handles for various services.
Definition: StdJOSetup.py:36
LVL1TGC::TGCTileMuCoincidenceLUT::readMap
bool readMap()
Definition: TGCTileMuCoincidenceLUT.cxx:53
python.DecayParser.buf
buf
print ("=> [%s]"cmd)
Definition: DecayParser.py:27
TGCTriggerData::getFlagRoiTile
uint8_t getFlagRoiTile(int ssc, int sectorId, int side) const
Definition: TGCTriggerData.cxx:97
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
LVL1TGC::TGCTileMuCoincidenceLUT::m_readCondKey
const SG::ReadCondHandleKey< TGCTriggerData > & m_readCondKey
Definition: TGCTileMuCoincidenceLUT.h:101
file
TFile * file
Definition: tile_monitor.h:29
LVL1TGC::TGCTileMuCoincidenceLUT::TM_D6_H
@ TM_D6_H
Definition: TGCTileMuCoincidenceLUT.h:84
LVL1TGC::TGCTileMuCoincidenceLUT::N_Input_TileMuModule
@ N_Input_TileMuModule
Definition: TGCTileMuCoincidenceLUT.h:89
LVL1TGC::TGCTileMuCoincidenceLUT::m_flagpt
std::unordered_map< uint16_t, uint8_t > m_flagpt
Definition: TGCTileMuCoincidenceLUT.h:95
TGCTriggerData::N_PT_THRESH
@ N_PT_THRESH
Definition: TGCTriggerData.h:161
TGCTriggerData::SIDE_MASK
static constexpr uint8_t SIDE_MASK
Mask for extracting the side from the GLOBALADDR.
Definition: TGCTriggerData.h:107
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
get_generator_info.version
version
Definition: get_generator_info.py:33
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
TGCTriggerData::getFlagPtTile
unsigned char getFlagPtTile(int ssc, int sectorId, int side) const
Definition: TGCTriggerData.cxx:87
TGCTriggerData
Definition: TGCTriggerData.h:102
CaloCondBlobAlgs_fillNoiseFromASCII.tag
string tag
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:24
TGCTriggerData::N_ENDCAP_SECTOR
@ N_ENDCAP_SECTOR
Definition: TGCTriggerData.h:165
makeTOC.header
header
Definition: makeTOC.py:28
LVL1TGC::TGCTileMuCoincidenceLUT::TM_NA
@ TM_NA
Definition: TGCTileMuCoincidenceLUT.h:82
LVL1TGC::TGCTileMuCoincidenceLUT::TM_D56_H
@ TM_D56_H
Definition: TGCTileMuCoincidenceLUT.h:86
TGCTriggerData::N_SIDE
@ N_SIDE
Definition: TGCTriggerData.h:162
LVL1TGC::TGCTileMuCoincidenceLUT::m_flagroi
std::unordered_map< uint16_t, uint8_t > m_flagroi
Definition: TGCTileMuCoincidenceLUT.h:96