![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
5 #ifndef MUON_MUONSECTORMAPPING_H
6 #define MUON_MUONSECTORMAPPING_H
64 const int idx = sector % 2;
78 if (sector < 10)
return M_PI * (sector - 1) / 8.;
79 return -
M_PI * (2 - (sector - 1) / 8.);
86 int sliceIndex =
static_cast<int>(
val / 2);
87 double valueInSlice =
val - 2 * sliceIndex;
88 int sector = 2 * sliceIndex + 1;
89 if (valueInSlice > 1.2) ++sector;
95 int sectorNext = sector != 16 ? sector + 1 : 1;
96 int sectorBefore = sector != 1 ? sector - 1 : 16;
103 std::vector<int> sectors;
105 return sectors.size() > 1;
109 double sign = toSector ? -1 : 1;
117 if (sector1 == sector2)
return sectorPhi(sector1);
119 int s1 = sector1 < sector2 ? sector1 : sector2;
120 int s2 = sector1 > sector2 ? sector1 : sector2;
121 if (
s2 == 16 && s1 == 1) {
124 }
else if (std::abs(s1 -
s2) > 1) {
125 if (s_debug) std::cout <<
" bad sector combination: not neighbouring " << s1 <<
" " <<
s2 << std::endl;
131 if (phio1 >
M_PI) phio1 -= 2 *
M_PI;
138 if (std::abs(dphi) > 0.3 && s_debug) {
139 std::cout <<
" large dphi detected!!: phi " <<
phi <<
" sector " << sector <<
" phi " <<
sectorPhi(sector) <<
" " <<
phi
140 <<
" dphi " << dphi << std::endl;
151 double dphio =
phi - phio;
152 if (dphio < -
M_PI) dphio += 2 *
M_PI;
155 double dphi = phio - phi_sec;
157 if (std::abs(dphi) > 0.3 && s_debug) {
158 std::cout <<
" large dphi detected!!: sector " << sector <<
" of hit " << sectorHit <<
" phi ref sector " << phi_sec <<
" hit "
159 <<
phi <<
" dphi " << dphi << std::endl;
double sectorSize(int sector) const
sector size (exclusive) in radians
Scalar phi() const
phi method
double sectorWidth(int sector) const
sector width (with overlap) in radians
double transformRToSector(double r, double phi, int sector, bool toSector=true) const
expresses a radial position from and to the sector coordinate frame, the phi position should always b...
bool closeToSectorBoundary(double phi) const
checks whether the phi position is close to a sector boundary
void getSectors(double phi, std::vector< int > §ors) const
returns the main sector plus neighboring if the phi position is in an overlap region
double transformPhiToSector(double phi, int sector, bool toSector=true) const
transforms a phi position from and to the sector coordinate system in radians
This class provides conversion from CSC RDO data to CSC Digits.
static constexpr std::array< double, 2 > s_sectorSize
int getSector(double phi) const
returns the sector corresponding to the phi position
ATLAS_CHECK_FILE_THREAD_SAFETY
bool insideSector(int sector, double phi) const
checks whether the phi position is consistent with sector
static constexpr double s_oneEightsOfPi
double sectorPhi(int sector) const
returns the centeral phi position of a sector in radians
static constexpr double s_inverseOneEightsOfPi
double transformRToNeighboringSector(double r, int sectorHit, int sectorTarget) const
transform a radial position from one sector frame into another
static constexpr double s_sectorOverlap
double sectorOverlapPhi(int sector1, int sector2) const
returns the phi position of the overlap between the two sectors (which have to be neighboring) in rad...
Define macros for attributes used to control the static checker.
static bool s_debug ATLAS_THREAD_SAFE