Project
Loading...
Searching...
No Matches
DetectionElement.cxx
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
15
16namespace o2::mch::dcs
17{
18namespace slat
19{
21{
22 switch (chamber) {
23 case Chamber::Ch06:
24 case Chamber::Ch07:
25 case Chamber::Ch08:
26 case Chamber::Ch09:
27 return 26;
28 default:
29 return 18;
30 }
31}
32
34{
36 auto half = nofDE / 2;
37 auto quarter = nofDE / 4;
38 auto threeQuarter = half + quarter;
39 auto dcsNumber = half - number;
40 int de;
41 if (side == dcs::Side::Left) {
42 de = threeQuarter + 1 - dcsNumber;
43 } else {
44 if (dcsNumber <= quarter) {
45 de = dcsNumber + threeQuarter;
46 } else {
47 de = dcsNumber - quarter - 1;
48 }
49 }
50 return (toInt(chamber) + 1) * 100 + de;
51}
52} // namespace slat
53
54namespace quadrant
55{
56int detElemId(Chamber chamber, int number)
57{
58 int quad = number / 10;
59 return 100 * (toInt(chamber) + 1) + quad;
60}
61} // namespace quadrant
62
63int detElemId(Chamber chamber, Side side, int number)
64{
65 if (isSlat(chamber)) {
66 return slat::detElemId(chamber, side, number);
67 } else {
68 return quadrant::detElemId(chamber, number);
69 }
70}
71
72std::optional<int> aliasToDetElemId(std::string_view dcsAlias)
73{
74 const auto m = aliasToMeasurementType(dcsAlias);
75 if (m == MeasurementType::HV_V ||
76 m == MeasurementType::HV_I) {
77 const auto chamber = aliasToChamber(dcsAlias);
78 int number = aliasToNumber(dcsAlias);
79 if (isSlat(chamber)) {
80 return slat::detElemId(chamber,
81 aliasToSide(dcsAlias),
82 number);
83 } else {
84 return quadrant::detElemId(chamber, number);
85 }
86 }
87 return std::nullopt;
88}
89
90} // namespace o2::mch::dcs
uint32_t side
Definition RawData.h:0
const GLfloat * m
Definition glcorearb.h:4066
int detElemId(Chamber chamber, int number)
int detElemId(Chamber chamber, Side side, int number)
int nofDetectionElementsInChamber(Chamber chamber)
MeasurementType aliasToMeasurementType(std::string_view alias)
int toInt(Chamber chamber)
Definition Chamber.cxx:68
Side aliasToSide(std::string_view alias)
Definition Side.cxx:22
Chamber aliasToChamber(std::string_view alias)
Definition Chamber.cxx:100
std::optional< Chamber > chamber(int chamberId)
Definition Chamber.cxx:17
int aliasToNumber(std::string_view dcsAlias)
Definition Number.cxx:30
bool isSlat(Chamber chamber)
Definition Chamber.cxx:53
std::optional< int > aliasToDetElemId(std::string_view dcsAlias)
int detElemId(Chamber chamber, Side side, int number)
uint16_t de