ATLAS Offline Software
Functions
MuonSimValUtils/src/MuonChamberNameConverter.cxx File Reference
#include "MuonSimValUtils/MuonChamberNameConverter.h"
#include <cstdlib>
Include dependency graph for MuonSimValUtils/src/MuonChamberNameConverter.cxx:

Go to the source code of this file.

Functions

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

Function Documentation

◆ convertChamberName()

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

Definition at line 9 of file MuonSimValUtils/src/MuonChamberNameConverter.cxx.

9  {
10 
11  //Input values
12  int Name_int = ChamberName;
13  int Eta_int = ChamberEta;
14  int Phi_int = ChamberPhi;
15  //add type
16  //"MDT","CSC","TGC" go in the same loop while
17  //"RPC" go to a different loop due to the same
18  //naming with "MDT"
19  const std::string& Type=ChamberType;
20 
21 
22  //Set string variables
23  std::string Name_string;
24  std::string Eta_string;
25  std::string Phi_string;
26 
27  //Vector setting the chamber eta, phi range
28  //Elements:
29  // limit eta , forbiden eta , min phi , max phi , allowed phi1 , allowed phi2
30  std::vector<int> limits;
31 
32 
33  if (Type=="MDT" || Type=="CSC" || Type=="TGC"){
34  //Switch from ATHENA int name to Hardware string name
35  switch (Name_int)
36  {
37  // identifier : harware name : limit eta : forbiden eta : min phi : max phi : allowed phi1 : allowed phi2 : long/short
38  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;
39  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;
40  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;
41  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;
42  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;
43  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;
44  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;
45  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;
46  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;
47  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;
48  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;
49  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;
50  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;
51  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;
52  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;
53  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;
54  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;
55  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;
56  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;
57  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;
58  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;
59  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;
60  case 22 : Name_string = "T1C"; break;
61  case 23 : Name_string = "T1L"; break;
62  case 24 : Name_string = "T1S"; break;
63  case 25 : Name_string = "T2C"; break;
64  case 26 : Name_string = "T2L"; break;
65  case 27 : Name_string = "T2S"; break;
66  case 28 : Name_string = "T3C"; break;
67  case 29 : Name_string = "T3L"; break;
68  case 30 : Name_string = "T3S"; break;
69  case 31 : Name_string = "CI1"; break;
70  case 32 : Name_string = "CI2"; break;
71  case 33 : Name_string = "CI3"; break;
72  case 34 : Name_string = "CI4"; break;
73  case 35 : Name_string = "FIL"; break;
74  case 36 : Name_string = "FIS"; break;
75  case 37 : Name_string = "FML"; break;
76  case 38 : Name_string = "FMS"; break;
77  case 39 : Name_string = "FOL"; break;
78  case 40 : Name_string = "FOS"; break;
79  // TGC part implemented by Masaya Ishino (Masaya.Ishino@cern.ch)
80  // TGC start ; harware name : limit eta : forbiden eta : min phi : max phi : allowed phi1 : allowed phi2 : long/short
81  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;
82  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;
83  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;
84  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;
85  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;
86  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;
87  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;
88  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;
89  // TGC end ; harware name : limit eta : forbiden eta : min phi : max phi : allowed phi1 : allowed phi2 : long/short
90 
91  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;
92  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;
93  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;
94  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;
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 if (Type=="RPC") {
98  switch (Name_int)
99  {
100  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;
101  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;
102  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;
103  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;
104  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;
105  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;
106  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;
107  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);
108  }
109  } else {Name_string = "WrongName";}
110 
111  // cout << "limits[0] limits[1] limits[2] limits[3] limits[4] limits[5] " << limits.at(0) << " " << limits.at(1) << " " <<
112  // limits.at(2) << " " << limits.at(3) << " " << limits.at(4) << " " << limits.at(5) << endl;
113 
114  //Convert ATHENA int eta to correct side and eta Hardware index
115  if (Eta_int>=-limits[0] && Eta_int<=limits[0] && Eta_int!=limits[1]){
116  if(Eta_int>0){
117  if (Name_int==9){//exception of the BOG,BOF alternating eta
118  Eta_int=(2*Eta_int)-1;
119  }
120  if (Name_int==10){//exception of the BOG,BOF alternating eta
121  Eta_int=2*Eta_int;
122  }
123  std::stringstream eta_inttostring;
124  std::string eta_str;
125  eta_inttostring << Eta_int;
126  eta_inttostring >> eta_str;
127  Eta_string += eta_str;
128  Eta_string += "A";
129  }
130 
131  if (Eta_int<0){
132  if (Name_int==9){//exception of the BOG,BOF alternating eta
133  Eta_int=(2*Eta_int)+1;
134  }
135  if (Name_int==10){//exception of the BOG,BOF alternating eta
136  Eta_int=2*Eta_int;
137  }
138  std::stringstream eta_inttostring;
139  std::string eta_str;
140  eta_inttostring << abs(Eta_int);
141  eta_inttostring >> eta_str;
142  Eta_string += eta_str;
143  Eta_string += "C";
144 
145  }
146 
147  if (Eta_int==0) {
148  std::stringstream eta_inttostring;
149  std::string eta_str;
150  eta_inttostring << Eta_int;
151  eta_inttostring >> eta_str;
152  Eta_string += eta_str;
153  Eta_string += "B";
154  }
155  } else {Eta_string="WrongEta";}
156 
157  //Convert ATHENA int phi to correct phi Hardware index (taking into account Long/Short case)
158  if ((Phi_int>=limits[2] && Phi_int<=limits[3]) || Phi_int==limits[4] || Phi_int==limits[5]) // correct phi_index
159  {
160  if (Type=="TGC")
161  {
162  std::stringstream phi_inttostring;
163  std::string phi_str;
164  phi_inttostring << Phi_int;
165  phi_inttostring >> phi_str;
166  Phi_string = phi_str ;
167  } // for Type ==TGC
168  else
169  {
170  if (limits[6]==1){//Long chamber
171  Phi_int = (2*Phi_int)-1;
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 = phi_str;}
179  }
180 
181  if (limits[6]==-1){//Short chamber
182  Phi_int = 2*Phi_int;
183  std::stringstream phi_inttostring;
184  std::string phi_str;
185  phi_inttostring << Phi_int;
186  phi_inttostring >> phi_str;
187  if (Phi_int<10){
188  Phi_string = "0"+phi_str;
189  } else {Phi_string = phi_str;}
190  }
191  } // end of else ; MDT / RPC
192 
193  } else {Phi_string="WrongPhi";}
194 
195  //Return full Hardware name
196  Name_string += Eta_string;
197  Name_string += Phi_string;
198  limits.clear();
199  return Name_string;
200 
201 }
xAODType
Definition: ObjectType.h:13
python.CaloScaleNoiseConfig.default
default
Definition: CaloScaleNoiseConfig.py:79