CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PixelModuleName.cc
Go to the documentation of this file.
1 //
2 // This class stores the name and related
3 // hardware mapings for a module
4 //
5 
6 
8 #include <string>
9 #include <iostream>
10 #include <sstream>
11 #include <fstream>
12 #include <cctype>
13 #include <cstdlib>
14 
15 using namespace std;
16 using namespace pos;
17 
18 
20  id_(0)
21 {}
22 
23 
25 {
26 
27  unsigned int id=roc.id();
28  unsigned int idtmp=(id&0x1FFFFFFF)>>4;
29  if ((id&0x80000000)==0) idtmp=(idtmp&0xFFFFFFFC);
30 
31  id_=idtmp|(id&0xE0000000);
32 
33 }
34 
35 
36 PixelModuleName::PixelModuleName(string modulename)
37 {
38 
39  parsename(modulename);
40 
41 }
42 
43 void PixelModuleName::setIdFPix(char np, char LR,int disk,
44  int blade, int panel){
45 
46  std::string mthn = "[PixelModuleName::setIdFPix()]\t\t\t " ;
47  id_=0;
48 
49  //cout<< __LINE__ << "]\t" << mthn << "subdet: " << subdet <<endl;
50  //cout<< __LINE__ << "]\t" << mthn << "np : " << np <<endl;
51  //cout<< __LINE__ << "]\t" << mthn << "LR : " << LR <<endl;
52  //cout<< __LINE__ << "]\t" << mthn << "disk : " << disk <<endl;
53 
54 
55  if (np=='p') id_=(id_|0x40000000);
56  //cout<< __LINE__ << "]\t" << mthn <<"2 id_=" << hex << id_ << dec << endl;
57  if (LR=='I') id_=(id_|0x20000000);
58  //cout<< __LINE__ << "]\t" << mthn <<"3 id_=" << hex << id_ << dec << endl;
59  id_=(id_|(disk<<8));
60  //cout<< __LINE__ << "]\t" << mthn <<"4 id_=" << hex << id_ << dec << endl;
61  id_=(id_|(blade<<3));
62  //cout<< __LINE__ << "]\t" << mthn <<"5 id_=" << hex << id_ << dec << endl;
63  id_=(id_|((panel-1)<<2));
64  //cout<< __LINE__ << "]\t" << mthn <<"6 id_=" << hex << id_ << dec << endl;
65 
66 }
67 
68 
69 void PixelModuleName::setIdBPix(char np, char LR,int sec,
70  int layer, int ladder, char HF,
71  int module){
72 
73  std::string mthn = "[PixelModuleName::setIdBPix()]\t\t\t " ;
74  id_=0;
75 
76  //cout<< __LINE__ << "]\t" << mthn << "BPix ladder: " << ladder << endl;
77  //cout<< __LINE__ << "]\t" << mthn << "np : " << np << endl;
78  //cout<< __LINE__ << "]\t" << mthn << "LR : " << LR << endl;
79  //cout<< __LINE__ << "]\t" << mthn << "disk : " << disk << endl;
80 
81 
82  id_=0x80000000;
83 
84  if (np=='p') id_=(id_|0x40000000);
85  //cout<< __LINE__ << "]\t" << mthn <<"2 id_=" << hex << id_ << dec << endl;
86  if (LR=='I') id_=(id_|0x20000000);
87  //cout<< __LINE__ << "]\t" << mthn <<"3 id_=" << hex << id_ << dec << endl;
88  id_=(id_|((sec-1)<<10));
89  //cout<< __LINE__ << "]\t" << mthn <<"4 id_=" << hex << id_ << dec << endl;
90  if (HF=='F') id_=(id_|0x00000080);
91 
92  id_=(id_|(layer<<8));
93  //cout<< __LINE__ << "]\t" << mthn <<"5 id_=" << hex << id_ << dec << endl;
94  id_=(id_|(ladder<<2));
95  //cout<< __LINE__ << "]\t" << mthn <<"6 id_=" << hex << id_ << dec << endl;
96  id_=(id_|((module-1)));
97  //cout<< __LINE__ << "]\t" << mthn <<"7 id_=" << hex << id_ << dec << endl;
98 
99 }
100 
101 void PixelModuleName::check(bool check, const string& name){
102 
103  std::string mthn = "[PixelModuleName::check()]\t\t\t " ;
104  if (check) return;
105 
106  cout << __LINE__ << "]\t" << mthn << "ERROR tried to parse string: '" << name ;
107  cout << "' as a module name. Will terminate." << endl;
108 
109  ::abort();
110 
111 }
112 
114 
115  //
116  // The name should be on the format
117  //
118  // FPix_BpR_D1_BLD1_PNL1
119  //
120 
121  //cout << "ROC name:"<<name<<endl;
122 
123  check(name[0]=='F'||name[0]=='B',name);
124 
125  if (name[0]=='F'){
126  check(name[0]=='F',name);
127  check(name[1]=='P',name);
128  check(name[2]=='i',name);
129  check(name[3]=='x',name);
130  check(name[4]=='_',name);
131  check(name[5]=='B',name);
132  check((name[6]=='m')||(name[6]=='p'),name);
133  char np=name[6];
134  check((name[7]=='I')||(name[7]=='O'),name);
135  char LR=name[7];
136  check(name[8]=='_',name);
137  check(name[9]=='D',name);
138  char digit[2]={0,0};
139  digit[0]=name[10];
140  int disk=atoi(digit);
141  check(name[11]=='_',name);
142  check(name[12]=='B',name);
143  check(name[13]=='L',name);
144  check(name[14]=='D',name);
145  check(isdigit(name[15]),name);
146  digit[0]=name[15];
147  int bld=atoi(digit);
148  unsigned int offset=0;
149  if (isdigit(name[16])){
150  digit[0]=name[16];
151  bld=10*bld+atoi(digit);
152  offset++;
153  }
154 
155  check(name[16+offset]=='_',name);
156  check(name[17+offset]=='P',name);
157  check(name[18+offset]=='N',name);
158  check(name[19+offset]=='L',name);
159  check(isdigit(name[20+offset]),name);
160  digit[0]=name[20+offset];
161  int pnl=atoi(digit);
162 
163  setIdFPix(np,LR,disk,bld,pnl);
164  }
165  else{
166  check(name[0]=='B',name);
167  check(name[1]=='P',name);
168  check(name[2]=='i',name);
169  check(name[3]=='x',name);
170  check(name[4]=='_',name);
171  check(name[5]=='B',name);
172  check((name[6]=='m')||(name[6]=='p'),name);
173  char np=name[6];
174  check((name[7]=='I')||(name[7]=='O'),name);
175  char LR=name[7];
176  check(name[8]=='_',name);
177  check(name[9]=='S',name);
178  check(name[10]=='E',name);
179  check(name[11]=='C',name);
180  char digit[2]={0,0};
181  digit[0]=name[12];
182  int sec=atoi(digit);
183  check(name[13]=='_',name);
184  check(name[14]=='L',name);
185  check(name[15]=='Y',name);
186  check(name[16]=='R',name);
187  check(isdigit(name[17]),name);
188  digit[0]=name[17];
189  int layer=atoi(digit);
190  check(name[18]=='_',name);
191  check(name[19]=='L',name);
192  check(name[20]=='D',name);
193  check(name[21]=='R',name);
194  check(isdigit(name[22]),name);
195  digit[0]=name[22];
196  int ladder=atoi(digit);
197  unsigned int offset=0;
198  if (isdigit(name[23])){
199  offset++;
200  digit[0]=name[22+offset];
201  ladder=10*ladder+atoi(digit);
202  }
203  check(name[23+offset]=='H'||name[23+offset]=='F',name);
204  char HF=name[23+offset];
205  check(name[24+offset]=='_',name);
206  check(name[25+offset]=='M',name);
207  check(name[26+offset]=='O',name);
208  check(name[27+offset]=='D',name);
209  check(isdigit(name[28+offset]),name);
210  digit[0]=name[28+offset];
211  int module=atoi(digit);
212  setIdBPix(np,LR,sec,layer,ladder,HF,module);
213  }
214 
215 }
216 
218 
219  string tmp;
220 
221  s >> tmp;
222 
223  parsename(tmp);
224 
225 }
226 
227 
229 
230  string s;
231 
232  std::ostringstream s1;
233 
234  if (detsub()=='F') {
235  s1<<"FPix";
236  s1<<"_B";
237  s1<<mp();
238  s1<<IO();
239  s1<<"_D";
240  s1<<disk();
241  s1<<"_BLD";
242  s1<<blade();
243  s1<<"_PNL";
244  s1<<panel();
245 
246  }
247  else{
248  s1<<"BPix";
249  s1<<"_B";
250  s1<<mp();
251  s1<<IO();
252  s1<<"_SEC";
253  s1<<sec();
254  s1<<"_LYR";
255  s1<<layer();
256  s1<<"_LDR";
257  s1<<ladder();
258  s1<<HF();
259  s1<<"_MOD";
260  s1<<module();
261 
262  }
263 
264  s=s1.str();
265 
266  return s;
267 
268 }
269 
270 
271 
272 ostream& pos::operator<<(ostream& s, const PixelModuleName& pixelroc){
273 
274 
275  // FPix_BpR_D1_BLD1_PNL1_PLQ1_ROC1
276 
277  s<<pixelroc.modulename();
278 
279  return s;
280 }
281 
282 
284 
285  id_=aROC.id_;
286 
287  return *this;
288 
289 }
unsigned int id() const
Definition: PixelROCName.h:68
char detsub() const
void parsename(std::string name)
PixelModuleName(bool isBarrel)
std::ostream & operator<<(std::ostream &s, const PixelCalibConfiguration &calib)
This class implements..
void check(bool check, const std::string &name)
int np
Definition: AMPTWrapper.h:33
bool check(const DataFrame &df, bool capcheck, bool dvercheck)
unsigned int offset(bool)
const PixelModuleName & operator=(const PixelModuleName &aROC)
std::string modulename() const
void setIdBPix(char np, char LR, int sec, int layer, int ladder, char HF, int module)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
This class implements..
This class implements..
Definition: PixelROCName.h:23
tuple cout
Definition: gather_cfg.py:121
Definition: vlib.h:209
void setIdFPix(char np, char LR, int disk, int blade, int panel)