ATLAS Offline Software
Loading...
Searching...
No Matches
MuonChamberNameConverter.h File Reference
#include <string>
Include dependency graph for MuonChamberNameConverter.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

std::string convertChamberName (int, int, int, const std::string &)

Function Documentation

◆ convertChamberName()

std::string convertChamberName ( int ChamberName,
int ChamberEta,
int ChamberPhi,
const std::string & ChamberType )

Definition at line 13 of file MuonChamberNameConverter.cxx.

13 {
14
15 //Input values
16 int Name_int = ChamberName;
17 int Eta_int = ChamberEta;
18 int Phi_int = ChamberPhi;
19 //add type
20 //"MDT","CSC","TGC" go in the same loop while
21 //"RPC" go to a different loop due to the same
22 //naming with "MDT"
23 const std::string& Type=ChamberType;
24
25
26 //Set string variables
27 std::string Name_string;
28 std::string Eta_string;
29 std::string Phi_string;
30
31 //Vector setting the chamber eta, phi range
32 //Elements:
33 // limit eta , forbiden eta , min phi , max phi , allowed phi1 , allowed phi2
34 std::vector<int> limits;
35
36
37 if (Type=="MDT" || Type=="CSC" || Type=="TGC"){
38 //Switch from ATHENA int name to Hardware string name
39 switch (Name_int)
40 {
41 // identifier : harware name : limit eta : forbiden eta : min phi : max phi : allowed phi1 : allowed phi2 : long/short
42 case 0 : Name_string = "BIL"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(5); limits.push_back(7); limits.push_back(-100); limits.push_back(1); break;
43 case 1 : Name_string = "BIS"; limits.push_back(8); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
44 case 2 : Name_string = "BML"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
45 case 3 : Name_string = "BMS"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(5); limits.push_back(8); limits.push_back(-100); limits.push_back(-1); break;
46 case 4 : Name_string = "BOL"; limits.push_back(7); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
47 case 5 : Name_string = "BOS"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(5); limits.push_back(8); limits.push_back(-100); limits.push_back(-1); break;
48 case 6 : Name_string = "BEE"; limits.push_back(2); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
49 case 7 : Name_string = "BIR"; limits.push_back(6); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(8); limits.push_back(1); break;
50 case 8 : Name_string = "BMF"; limits.push_back(3); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
51 case 9 : Name_string = "BOF"; limits.push_back(4); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
52 case 10 : Name_string = "BOG"; limits.push_back(4); limits.push_back(-100); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
53 case 11 : Name_string = "BOH_DOES_NOT_EXIST!"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
54 case 12 : Name_string = "EIC_DOES_NOT_EXIST!"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
55 case 13 : Name_string = "EIL"; limits.push_back(5); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
56 case 14 : Name_string = "EEL"; limits.push_back(2); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
57 case 15 : Name_string = "EES"; limits.push_back(2); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
58 case 16 : Name_string = "EMC_DOES_NOT_EXIST!"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
59 case 17 : Name_string = "EML"; limits.push_back(5); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
60 case 18 : Name_string = "EMS"; limits.push_back(5); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
61 case 19 : Name_string = "EOC_DOES_NOT_EXIST!"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
62 case 20 : Name_string = "EOL"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
63 case 21 : Name_string = "EOS"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
64
65 // TGC part implemented by Masaya Ishino (Masaya.Ishino@cern.ch)
66 // TGC start ; harware name ; limit eta ; forbiden eta ; min phi ; max phi ; allowed phi1 ; allowed phi2 ; long/short
67 case 41 : Name_string = "T1F"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(24); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
68 case 42 : Name_string = "T1E"; limits.push_back(4); limits.push_back(0); limits.push_back(1); limits.push_back(48); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
69 case 43 : Name_string = "T2F"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(24); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
70 case 44 : Name_string = "T2E"; limits.push_back(5); limits.push_back(0); limits.push_back(1); limits.push_back(48); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
71 case 45 : Name_string = "T3F"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(24); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
72 case 46 : Name_string = "T3E"; limits.push_back(5); limits.push_back(0); limits.push_back(1); limits.push_back(48); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
73 case 47 : Name_string = "T4F"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(24); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
74 case 48 : Name_string = "T4E"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(21); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
75 // TGC end
76
77 case 49 : Name_string = "EIS"; limits.push_back(2); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
78 case 50 : Name_string = "CSS"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(-1); break;
79 case 51 : Name_string = "CSL"; limits.push_back(1); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
80 case 52 : Name_string = "BIM"; limits.push_back(5); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(8); limits.push_back(1); break;
81 case 53 : Name_string = "BME"; limits.push_back(1); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(7); limits.push_back(7); limits.push_back(-1); break;
82 case 54 : Name_string = "BMG"; limits.push_back(3); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
83 default : Name_string = "WrongName"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100);
84 }
85 } else if (Type=="RPC") {
86 switch (Name_int)
87 {
88 case 2 : Name_string = "BML"; limits.push_back(7); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
89 case 3 : Name_string = "BMS"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(5); limits.push_back(8); limits.push_back(-100); limits.push_back(-1); break;
90 case 4 : Name_string = "BOL"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(8); limits.push_back(-100); limits.push_back(-100); limits.push_back(1); break;
91 case 5 : Name_string = "BOS"; limits.push_back(6); limits.push_back(0); limits.push_back(1); limits.push_back(5); limits.push_back(8); limits.push_back(-100); limits.push_back(-1); break;
92 case 8 : Name_string = "BMF"; limits.push_back(3); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
93 case 9 : Name_string = "BOF"; limits.push_back(4); limits.push_back(0); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
94 case 10 : Name_string = "BOG"; limits.push_back(4); limits.push_back(-100); limits.push_back(100); limits.push_back(-100); limits.push_back(6); limits.push_back(7); limits.push_back(-1); break;
95 default : Name_string = "WrongName"; limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100); limits.push_back(-100);
96 }
97 } else {Name_string = "WrongName";}
98
99 //Convert ATHENA int eta to correct side and eta Hardware index
100 if (Eta_int>=-limits[0] && Eta_int<=limits[0] && Eta_int!=limits[1]){
101 if(Eta_int>0){
102 if (Name_int==9){//exception of the BOG,BOF alternating eta
103 Eta_int=(2*Eta_int)-1;
104 }
105 if (Name_int==10){//exception of the BOG,BOF alternating eta
106 Eta_int=2*Eta_int;
107 }
108 if (Name_int==54){//exception of the BMG
109 Eta_int=2*Eta_int;
110 }
111 std::stringstream eta_inttostring;
112 std::string eta_str;
113 eta_inttostring << Eta_int;
114 eta_inttostring >> eta_str;
115 Eta_string += eta_str;
116 Eta_string += "A";
117 }
118
119 if (Eta_int<0){
120 if (Name_int==9){//exception of the BOG,BOF alternating eta
121 Eta_int=(2*Eta_int)+1;
122 }
123 if (Name_int==10){//exception of the BOG,BOF alternating eta
124 Eta_int=2*Eta_int;
125 }
126 if (Name_int==54){//exception of the BMG alternating eta
127 Eta_int=2*Eta_int;
128 }
129 std::stringstream eta_inttostring;
130 std::string eta_str;
131 eta_inttostring << std::abs(Eta_int);
132 eta_inttostring >> eta_str;
133 Eta_string += eta_str;
134 Eta_string += "C";
135
136 }
137
138 if (Eta_int==0) {
139 std::stringstream eta_inttostring;
140 std::string eta_str;
141 eta_inttostring << Eta_int;
142 eta_inttostring >> eta_str;
143 Eta_string += eta_str;
144 Eta_string += "B";
145 }
146 } else {Eta_string="WrongEta";}
147
148 //Convert ATHENA int phi to correct phi Hardware index (taking into account Long/Short case)
149 // check correct phi_index
150 if ((Phi_int>=limits[2] && Phi_int<=limits[3]) || Phi_int==limits[4] || Phi_int==limits[5]) {
151 if (Type=="TGC") {
152 std::stringstream phi_inttostring;
153 std::string phi_str;
154 phi_inttostring << Phi_int;
155 phi_inttostring >> phi_str;
156 Phi_string = std::move(phi_str) ;
157 } else { // for Type ==TGC
158 if (limits[6]==1) {//Long chamber
159 Phi_int = (2*Phi_int)-1;
160 std::stringstream phi_inttostring;
161 std::string phi_str;
162 phi_inttostring << Phi_int;
163 phi_inttostring >> phi_str;
164 if (Phi_int<10) {
165 Phi_string = "0"+phi_str;
166 } else {
167 Phi_string = std::move(phi_str);
168 }
169 }
170 if (limits[6]==-1) {//Short chamber
171 Phi_int = 2*Phi_int;
172 std::stringstream phi_inttostring;
173 std::string phi_str;
174 phi_inttostring << Phi_int;
175 phi_inttostring >> phi_str;
176 if (Phi_int<10){
177 Phi_string = "0"+phi_str;
178 } else {Phi_string = std::move(phi_str);}
179 }
180 } // end of else ; MDT / RPC
181 } else {
182 Phi_string="WrongPhi";
183 }
184
185 //Return full Hardware name
186 Name_string += Eta_string;
187 Name_string += Phi_string;
188 limits.clear();
189 return Name_string;
190}