ATLAS Offline Software
Public Member Functions | List of all members
Muon::nsw::MapperMMG Class Reference

#include <MapperMMG.h>

Collaboration diagram for Muon::nsw::MapperMMG:

Public Member Functions

 MapperMMG ()
 
virtual ~MapperMMG ()
 
uint16_t channel_number (uint8_t feb_radius, uint16_t vmm, uint16_t vmm_chan) const
 
bool vmm_info (uint8_t mod_radius, uint16_t channel_number, uint8_t &feb_radius, uint16_t &vmm, uint16_t &vmm_chan) const
 
bool elink_info (uint8_t mod_radius, uint16_t channel_number, uint &elink) const
 

Detailed Description

Definition at line 14 of file MapperMMG.h.

Constructor & Destructor Documentation

◆ MapperMMG()

Muon::nsw::MapperMMG::MapperMMG ( )
inline

Definition at line 17 of file MapperMMG.h.

17 {};

◆ ~MapperMMG()

virtual Muon::nsw::MapperMMG::~MapperMMG ( )
inlinevirtual

Definition at line 18 of file MapperMMG.h.

18 {};

Member Function Documentation

◆ channel_number()

uint16_t Muon::nsw::MapperMMG::channel_number ( uint8_t  feb_radius,
uint16_t  vmm,
uint16_t  vmm_chan 
) const
inline

Definition at line 29 of file MapperMMG.h.

30 {
31  // Retrieve the strip number for a given vmm/vmm_channel.
32  // Input feb_radius is expected in [0, 15]
33  // Layers with ID (0, 2, 4, 6) have even MMFE8 on the left side, odd on the right
34  // Layers with ID (1, 3, 5, 7) have even MMFE8 on the right side, odd on the left
35  // VMMs and VMM channels are always counted inwards in even radii
36 
37  uint16_t outw_vmm = vmm;
38  uint16_t outw_chan = vmm_chan;
39 
40  if ((feb_radius % 2) == 0) {
41  outw_vmm = Muon::nsw::VMM_per_MMFE8 - vmm - 1;
42  outw_chan = Muon::nsw::VMM_channels - vmm_chan - 1;
43  }
44 
45  return ((feb_radius < 10 ? feb_radius : feb_radius - 10) * Muon::nsw::VMM_per_MMFE8 + outw_vmm) * Muon::nsw::VMM_channels + outw_chan + 1;
46 }

◆ elink_info()

bool Muon::nsw::MapperMMG::elink_info ( uint8_t  mod_radius,
uint16_t  channel_number,
uint elink 
) const
inline

Definition at line 70 of file MapperMMG.h.

70  {
71  uint16_t vmm{0}, vmm_chan{0};
72  uint8_t feb_radius{0};
73  vmm_info(mod_radius, channel_number, feb_radius, vmm, vmm_chan);
74  if(feb_radius <= 11){ // febs 0-11 are only read out through 1 elink
75  elink=0;
76  return true;
77  } else if(feb_radius >= 12 && feb_radius <= 15){
78  // for febs at radius 12 to 15 vmms 0-3 are connected to sroc 2 while vmms 3-7 are connected to sroc 3. This mapping is configurable in the ROC but not forssen to change before RUN4
79  if (vmm < 4){
80  elink = 2;
81  } else {
82  elink = 3;
83  }
84  return true;
85  }
86  return false;
87 
88 
89 
90 }

◆ vmm_info()

bool Muon::nsw::MapperMMG::vmm_info ( uint8_t  mod_radius,
uint16_t  channel_number,
uint8_t &  feb_radius,
uint16_t &  vmm,
uint16_t &  vmm_chan 
) const
inline

Definition at line 51 of file MapperMMG.h.

52 {
53  // Retrieve {feb radius [0, 15], vmm number [0, 7], vmm channel [0, 63]} for a given strip
54  // Input mod_radius is expected in [0, 1].
55 
56  channel_number -= 1;
60  if (mod_radius == 1) feb_radius += 10;
61 
62  if ((feb_radius % 2) == 0) {
63  vmm = Muon::nsw::VMM_per_MMFE8 - vmm - 1;
64  vmm_chan = Muon::nsw::VMM_channels - vmm_chan - 1;
65  }
66 
67  return true;
68 }

The documentation for this class was generated from the following file:
Muon::nsw::VMM_channels
@ VMM_channels
Definition: NSWDecodeHelper.h:29
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
Muon::nsw::MapperMMG::vmm_info
bool vmm_info(uint8_t mod_radius, uint16_t channel_number, uint8_t &feb_radius, uint16_t &vmm, uint16_t &vmm_chan) const
Definition: MapperMMG.h:51
Muon::nsw::MapperMMG::channel_number
uint16_t channel_number(uint8_t feb_radius, uint16_t vmm, uint16_t vmm_chan) const
Definition: MapperMMG.h:29
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
Muon::nsw::VMM_per_MMFE8
@ VMM_per_MMFE8
Definition: NSWDecodeHelper.h:26