ATLAS Offline Software
Loading...
Searching...
No Matches
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}
setWord1 uint16_t

◆ 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}
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
uint16_t channel_number(uint8_t feb_radius, uint16_t vmm, uint16_t vmm_chan) const
Definition MapperMMG.h:29

◆ 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: