CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CSCNoiseMatrixConditions.cc
Go to the documentation of this file.
1 #include <fstream>
2 #include <iostream>
3 
5 
7 
8  int old_chamber_id,old_strip,new_chamber_id,new_strip;
9  float old_elm33,old_elm34, old_elm44, old_elm35, old_elm45, old_elm55;
10  float old_elm46, old_elm56, old_elm66, old_elm57, old_elm67, old_elm77;
11  std::vector<int> old_cham_id;
12  std::vector<int> old_strips;
13  std::vector<float> old_elem33;
14  std::vector<float> old_elem34;
15  std::vector<float> old_elem44;
16  std::vector<float> old_elem45;
17  std::vector<float> old_elem35;
18  std::vector<float> old_elem55;
19  std::vector<float> old_elem46;
20  std::vector<float> old_elem56;
21  std::vector<float> old_elem66;
22  std::vector<float> old_elem57;
23  std::vector<float> old_elem67;
24  std::vector<float> old_elem77;
25 
26 
27  float new_elm33,new_elm34, new_elm44, new_elm35, new_elm45, new_elm55;
28  float new_elm46, new_elm56, new_elm66, new_elm57, new_elm67, new_elm77;
29  std::vector<int> new_cham_id;
30  std::vector<int> new_strips;
31  std::vector<float> new_elem33;
32  std::vector<float> new_elem34;
33  std::vector<float> new_elem44;
34  std::vector<float> new_elem45;
35  std::vector<float> new_elem35;
36  std::vector<float> new_elem55;
37  std::vector<float> new_elem46;
38  std::vector<float> new_elem56;
39  std::vector<float> new_elem66;
40  std::vector<float> new_elem57;
41  std::vector<float> new_elem67;
42  std::vector<float> new_elem77;
43 
44  const CSCDetId& detId = CSCDetId();
45  CSCNoiseMatrix * cnmatrix = new CSCNoiseMatrix();
46 
47  int max_istrip,id_layer,max_ring,max_cham;
48  unsigned int old_nrlines=0;
49  unsigned int new_nrlines=0;
50 
51  std::ifstream olddata;
52  olddata.open("old_matrix.dat",std::ios::in);
53  if(!olddata) {
54  std::cerr <<"Error: old_matrix.dat -> no such file!"<< std::endl;
55  exit(1);
56  }
57 
58  while (!olddata.eof() ) {
59  olddata >> old_chamber_id >> old_strip >> old_elm33 >> old_elm34 >> old_elm44 >> old_elm35 >> old_elm45 >> old_elm55 >> old_elm46 >> old_elm56 >> old_elm66 >> old_elm57 >> old_elm67 >> old_elm77;
60  old_cham_id.push_back(old_chamber_id);
61  old_strips.push_back(old_strip);
62  old_elem33.push_back(old_elm33);
63  old_elem34.push_back(old_elm34);
64  old_elem44.push_back(old_elm44);
65  old_elem35.push_back(old_elm35);
66  old_elem45.push_back(old_elm45);
67  old_elem55.push_back(old_elm55);
68  old_elem46.push_back(old_elm46);
69  old_elem56.push_back(old_elm56);
70  old_elem66.push_back(old_elm66);
71  old_elem57.push_back(old_elm57);
72  old_elem67.push_back(old_elm67);
73  old_elem77.push_back(old_elm77);
74 
75  old_nrlines++;
76  }
77  olddata.close();
78 
79  std::ifstream newdata;
80  newdata.open("new_matrix.txt",std::ios::in);
81  if(!newdata) {
82  std::cerr <<"Error: new_matrix.txt -> no such file!"<< std::endl;
83  exit(1);
84  }
85 
86  while (!newdata.eof() ) {
87  newdata >> new_chamber_id >> new_strip >> new_elm33 >> new_elm34 >> new_elm44 >> new_elm35 >> new_elm45 >> new_elm55 >> new_elm46 >> new_elm56 >> new_elm66 >> new_elm57 >> new_elm67 >> new_elm77 ;
88  new_cham_id.push_back(new_chamber_id);
89  new_strips.push_back(new_strip);
90  new_elem33.push_back(new_elm33);
91  new_elem34.push_back(new_elm34);
92  new_elem44.push_back(new_elm44);
93  new_elem35.push_back(new_elm35);
94  new_elem45.push_back(new_elm45);
95  new_elem55.push_back(new_elm55);
96  new_elem46.push_back(new_elm46);
97  new_elem56.push_back(new_elm56);
98  new_elem66.push_back(new_elm66);
99  new_elem57.push_back(new_elm57);
100  new_elem67.push_back(new_elm67);
101  new_elem77.push_back(new_elm77);
102  new_nrlines++;
103  }
104  newdata.close();
105 
106 
107 
108  //endcap=1 to 2,station=1 to 4, ring=1 to 4,chamber=1 to 36,layer=1 to 6
109 
110  for(int iendcap=detId.minEndcapId(); iendcap<=detId.maxEndcapId(); iendcap++){
111  for(int istation=detId.minStationId() ; istation<=detId.maxStationId(); istation++){
112  max_ring=detId.maxRingId();
113  //station 4 ring 4 not there(36 chambers*2 missing)
114  //3 rings max this way of counting (ME1a & b)
115  if(istation==1) max_ring=3;
116  if(istation==2) max_ring=2;
117  if(istation==3) max_ring=2;
118  if(istation==4) max_ring=1;
119 
120  for(int iring=detId.minRingId(); iring<=max_ring; iring++){
121  max_istrip=80;
122  max_cham=detId.maxChamberId();
123  if(istation==1 && iring==1) max_cham=36;
124  if(istation==1 && iring==2) max_cham=36;
125  if(istation==1 && iring==3) max_cham=36;
126  if(istation==2 && iring==1) max_cham=18;
127  if(istation==2 && iring==2) max_cham=36;
128  if(istation==3 && iring==1) max_cham=18;
129  if(istation==3 && iring==2) max_cham=36;
130  if(istation==4 && iring==1) max_cham=18;
131 
132  for(int ichamber=detId.minChamberId(); ichamber<=max_cham; ichamber++){
133  for(int ilayer=detId.minLayerId(); ilayer<=detId.maxLayerId(); ilayer++){
134  //station 1 ring 3 has 64 strips per layer instead of 80
135  if(istation==1 && iring==3) max_istrip=64;
136 
137  std::vector<CSCNoiseMatrix::Item> itemvector;
138  itemvector.resize(max_istrip);
139  id_layer = 100000*iendcap + 10000*istation + 1000*iring + 10*ichamber + ilayer;
140 
141  for(int istrip=0;istrip<max_istrip;istrip++){
142 
143  if(istation==1 && iring==1){
144  itemvector[istrip].elem33 = 7.86675;
145  itemvector[istrip].elem34 = 2.07075;
146  itemvector[istrip].elem44 = 6.93875;
147  itemvector[istrip].elem35 = 1.42525;
148  itemvector[istrip].elem45 = 2.51025;
149  itemvector[istrip].elem55 = 7.93975;
150  itemvector[istrip].elem46 = 0.94725;
151  itemvector[istrip].elem56 = 2.39275;
152  itemvector[istrip].elem66 = 6.46475;
153  itemvector[istrip].elem57 = 1.86325;
154  itemvector[istrip].elem67 = 2.08025;
155  itemvector[istrip].elem77 = 6.67975;
156  cnmatrix->matrix[id_layer]=itemvector;
157  }
158 
159  if(istation==1 && iring==2){
160  itemvector[istrip].elem33 = 9.118;
161  itemvector[istrip].elem34 = 3.884;
162  itemvector[istrip].elem44 = 7.771;
163  itemvector[istrip].elem35 = 1.8225;
164  itemvector[istrip].elem45 = 3.7505;
165  itemvector[istrip].elem55 = 8.597;
166  itemvector[istrip].elem46 = 1.651;
167  itemvector[istrip].elem56 = 2.5225;
168  itemvector[istrip].elem66 = 6.583;
169  itemvector[istrip].elem57 = 1.5055;
170  itemvector[istrip].elem67 = 2.733;
171  itemvector[istrip].elem77 = 6.988;
172  cnmatrix->matrix[id_layer]=itemvector;
173  }
174 
175  if(istation==1 && iring==3){
176  itemvector[istrip].elem33 = 9.5245;
177  itemvector[istrip].elem34 = 3.2415;
178  itemvector[istrip].elem44 = 7.6265;
179  itemvector[istrip].elem35 = 1.7225;
180  itemvector[istrip].elem45 = 3.6075;
181  itemvector[istrip].elem55 = 8.7275;
182  itemvector[istrip].elem46 = 1.663;
183  itemvector[istrip].elem56 = 2.592;
184  itemvector[istrip].elem66 = 7.5685;
185  itemvector[istrip].elem57 = 1.7905;
186  itemvector[istrip].elem67 = 2.409;
187  itemvector[istrip].elem77 = 7.1495;
188  cnmatrix->matrix[id_layer]=itemvector;
189  }
190 
191  if(istation==2 && iring==1){
192  itemvector[istrip].elem33 = 9.06825;
193  itemvector[istrip].elem34 = 3.32025;
194  itemvector[istrip].elem44 = 7.52925;
195  itemvector[istrip].elem35 = 3.66125;
196  itemvector[istrip].elem45 = 3.39125;
197  itemvector[istrip].elem55 = 9.97625;
198  itemvector[istrip].elem46 = 1.32725;
199  itemvector[istrip].elem56 = 3.99025;
200  itemvector[istrip].elem66 = 8.10125;
201  itemvector[istrip].elem57 = 2.56456;
202  itemvector[istrip].elem67 = 2.96625;
203  itemvector[istrip].elem77 = 7.30925;
204  cnmatrix->matrix[id_layer]=itemvector;
205  }
206 
207  if(istation==2 &&iring==2){
208  itemvector[istrip].elem33 = 16.7442;
209  itemvector[istrip].elem34 = 7.96925;
210  itemvector[istrip].elem44 = 14.1643;
211  itemvector[istrip].elem35 = 4.67975;
212  itemvector[istrip].elem45 = 8.44075;
213  itemvector[istrip].elem55 = 17.2243;
214  itemvector[istrip].elem46 = 3.68575;
215  itemvector[istrip].elem56 = 7.48825;
216  itemvector[istrip].elem66 = 14.4902;
217  itemvector[istrip].elem57 = 4.4482;
218  itemvector[istrip].elem67 = 6.47875;
219  itemvector[istrip].elem77 = 14.6733;
220  cnmatrix->matrix[id_layer]=itemvector;
221  }
222 
223  if(istation==3 && iring==1){
224  itemvector[istrip].elem33 = 9.3495;
225  itemvector[istrip].elem34 = 3.529;
226  itemvector[istrip].elem44 = 7.8715;
227  itemvector[istrip].elem35 = 3.8155;
228  itemvector[istrip].elem45 = 3.858;
229  itemvector[istrip].elem55 = 10.8205;
230  itemvector[istrip].elem46 = 1.8585;
231  itemvector[istrip].elem56 = 4.445;
232  itemvector[istrip].elem66 = 8.0175;
233  itemvector[istrip].elem57 = 3.29479;
234  itemvector[istrip].elem67 = 3.625;
235  itemvector[istrip].elem77 = 8.3895;
236  cnmatrix->matrix[id_layer]=itemvector;
237  }
238 
239  if(istation==3 && iring==2){
240  itemvector[istrip].elem33 = 13.6193;
241  itemvector[istrip].elem34 = 5.91025;
242  itemvector[istrip].elem44 = 11.3842;
243  itemvector[istrip].elem35 = 3.31775;
244  itemvector[istrip].elem45 = 5.69775;
245  itemvector[istrip].elem55 = 11.6652;
246  itemvector[istrip].elem46 = 2.46175;
247  itemvector[istrip].elem56 = 4.48325;
248  itemvector[istrip].elem66 = 9.95725;
249  itemvector[istrip].elem57 = 2.10561;
250  itemvector[istrip].elem67 = 4.04625;
251  itemvector[istrip].elem77 = 9.51625;
252  cnmatrix->matrix[id_layer]=itemvector;
253  }
254 
255  if(istation==4 && iring==1){
256  itemvector[istrip].elem33 = 10.0;
257  itemvector[istrip].elem34 = 4.0;
258  itemvector[istrip].elem44 = 10.0;
259  itemvector[istrip].elem35 = 3.0;
260  itemvector[istrip].elem45 = 8.0;
261  itemvector[istrip].elem55 = 10.0;
262  itemvector[istrip].elem46 = 2.0;
263  itemvector[istrip].elem56 = 5.0;
264  itemvector[istrip].elem66 = 10.0;
265  itemvector[istrip].elem57 = 3.0;
266  itemvector[istrip].elem67 = 4.0;
267  itemvector[istrip].elem77 = 10.0;
268  cnmatrix->matrix[id_layer]=itemvector;
269  }
270  }
271  }
272  }
273  }
274  }
275  }
276 
277  //overwrite fakes with old values from DB
278  int istrip = 0;
279  std::vector<CSCNoiseMatrix::Item> itemvector;
280  itemvector.resize(80);
281 
282  for(unsigned int mystrip=0; mystrip<old_nrlines-1; mystrip++){
283  if(old_strips[mystrip]==0) istrip = 0;
284  itemvector[istrip].elem33 = old_elem33[mystrip];
285  itemvector[istrip].elem34 = old_elem34[mystrip];
286  itemvector[istrip].elem44 = old_elem44[mystrip];
287  itemvector[istrip].elem35 = old_elem35[mystrip];
288  itemvector[istrip].elem45 = old_elem45[mystrip];
289  itemvector[istrip].elem55 = old_elem55[mystrip];
290  itemvector[istrip].elem46 = old_elem46[mystrip];
291  itemvector[istrip].elem56 = old_elem56[mystrip];
292  itemvector[istrip].elem66 = old_elem66[mystrip];
293  itemvector[istrip].elem57 = old_elem57[mystrip];
294  itemvector[istrip].elem67 = old_elem67[mystrip];
295  itemvector[istrip].elem77 = old_elem77[mystrip];
296  cnmatrix->matrix[old_cham_id[mystrip]]=itemvector;
297  istrip++;
298  }
299 
300 
301  itemvector.resize(64);
302  for(unsigned int mystrip=0; mystrip<old_nrlines-1; mystrip++){
303  if(old_strips[mystrip]==0) istrip = 0;
304  if(old_cham_id[mystrip] >= 113000 && old_cham_id[mystrip] <= 113999){
305  itemvector[istrip].elem33 = old_elem33[mystrip];
306  itemvector[istrip].elem34 = old_elem34[mystrip];
307  itemvector[istrip].elem44 = old_elem44[mystrip];
308  itemvector[istrip].elem35 = old_elem35[mystrip];
309  itemvector[istrip].elem45 = old_elem45[mystrip];
310  itemvector[istrip].elem55 = old_elem55[mystrip];
311  itemvector[istrip].elem46 = old_elem46[mystrip];
312  itemvector[istrip].elem56 = old_elem56[mystrip];
313  itemvector[istrip].elem66 = old_elem66[mystrip];
314  itemvector[istrip].elem57 = old_elem57[mystrip];
315  itemvector[istrip].elem67 = old_elem67[mystrip];
316  itemvector[istrip].elem77 = old_elem77[mystrip];
317  cnmatrix->matrix[old_cham_id[mystrip]]=itemvector;
318  istrip++;
319  }
320  }
321 
322  itemvector.resize(64);
323  for(unsigned int mystrip=0; mystrip<old_nrlines-1; mystrip++){
324  if(old_strips[mystrip]==0) istrip = 0;
325  if(old_cham_id[mystrip] >= 213000 && old_cham_id[mystrip] <= 213999){
326  itemvector[istrip].elem33 = old_elem33[mystrip];
327  itemvector[istrip].elem34 = old_elem34[mystrip];
328  itemvector[istrip].elem44 = old_elem44[mystrip];
329  itemvector[istrip].elem35 = old_elem35[mystrip];
330  itemvector[istrip].elem45 = old_elem45[mystrip];
331  itemvector[istrip].elem55 = old_elem55[mystrip];
332  itemvector[istrip].elem46 = old_elem46[mystrip];
333  itemvector[istrip].elem56 = old_elem56[mystrip];
334  itemvector[istrip].elem66 = old_elem66[mystrip];
335  itemvector[istrip].elem57 = old_elem57[mystrip];
336  itemvector[istrip].elem67 = old_elem67[mystrip];
337  itemvector[istrip].elem77 = old_elem77[mystrip];
338  cnmatrix->matrix[old_cham_id[mystrip]]=itemvector;
339  istrip++;
340  }
341  }
342 
343  //overwrite old values with ones from new runs
344  itemvector.resize(80);
345  for(unsigned int mystrip=0; mystrip<new_nrlines-1; mystrip++){
346  if(new_strips[mystrip]==0) istrip = 0;
347  itemvector[istrip].elem33 = new_elem33[mystrip];
348  itemvector[istrip].elem34 = new_elem34[mystrip];
349  itemvector[istrip].elem44 = new_elem44[mystrip];
350  itemvector[istrip].elem35 = new_elem35[mystrip];
351  itemvector[istrip].elem45 = new_elem45[mystrip];
352  itemvector[istrip].elem55 = new_elem55[mystrip];
353  itemvector[istrip].elem46 = new_elem46[mystrip];
354  itemvector[istrip].elem56 = new_elem56[mystrip];
355  itemvector[istrip].elem66 = new_elem66[mystrip];
356  itemvector[istrip].elem57 = new_elem57[mystrip];
357  itemvector[istrip].elem67 = new_elem67[mystrip];
358  itemvector[istrip].elem77 = new_elem77[mystrip];
359  cnmatrix->matrix[new_cham_id[mystrip]]=itemvector;
360  istrip++;
361  }
362 
363  itemvector.resize(64);
364  for(unsigned int mystrip=0; mystrip<new_nrlines-1; mystrip++){
365  if(new_strips[mystrip]==0) istrip = 0;
366  if(new_cham_id[mystrip] >= 113000 && new_cham_id[mystrip] <= 113999){
367  itemvector[istrip].elem33 = new_elem33[mystrip];
368  itemvector[istrip].elem34 = new_elem34[mystrip];
369  itemvector[istrip].elem44 = new_elem44[mystrip];
370  itemvector[istrip].elem35 = new_elem35[mystrip];
371  itemvector[istrip].elem45 = new_elem45[mystrip];
372  itemvector[istrip].elem55 = new_elem55[mystrip];
373  itemvector[istrip].elem46 = new_elem46[mystrip];
374  itemvector[istrip].elem56 = new_elem56[mystrip];
375  itemvector[istrip].elem66 = new_elem66[mystrip];
376  itemvector[istrip].elem57 = new_elem57[mystrip];
377  itemvector[istrip].elem67 = new_elem67[mystrip];
378  itemvector[istrip].elem77 = new_elem77[mystrip];
379  cnmatrix->matrix[new_cham_id[mystrip]]=itemvector;
380  istrip++;
381  }
382  }
383 
384  itemvector.resize(64);
385  for(unsigned int mystrip=0; mystrip<new_nrlines-1; mystrip++){
386  if(new_strips[mystrip]==0) istrip = 0;
387  if(new_cham_id[mystrip] >= 213000 && new_cham_id[mystrip] <= 213999){
388  itemvector[istrip].elem33 = new_elem33[mystrip];
389  itemvector[istrip].elem34 = new_elem34[mystrip];
390  itemvector[istrip].elem44 = new_elem44[mystrip];
391  itemvector[istrip].elem35 = new_elem35[mystrip];
392  itemvector[istrip].elem45 = new_elem45[mystrip];
393  itemvector[istrip].elem55 = new_elem55[mystrip];
394  itemvector[istrip].elem46 = new_elem46[mystrip];
395  itemvector[istrip].elem56 = new_elem56[mystrip];
396  itemvector[istrip].elem66 = new_elem66[mystrip];
397  itemvector[istrip].elem57 = new_elem57[mystrip];
398  itemvector[istrip].elem67 = new_elem67[mystrip];
399  itemvector[istrip].elem77 = new_elem77[mystrip];
400  cnmatrix->matrix[new_cham_id[mystrip]]=itemvector;
401  istrip++;
402  }
403  }
404  return cnmatrix;
405 
406 }
407 
409 {
410  //the following line is needed to tell the framework what
411  // data is being produced
413  // added by Zhen (changed since 1_2_0)
415  findingRecord<CSCNoiseMatrixRcd>();
416  //now do what ever other initialization is needed
417 }
418 
419 
421 {
422 
423  // do anything here that needs to be done at desctruction time
424  // (e.g. close files, deallocate resources etc.)
425  delete cnMatrix;
426 }
427 
428 
429 //
430 // member functions
431 //
432 
433 // ------------ method called to produce the data ------------
436 {
437  // Added by Zhen, need a new object so to not be deleted at exit
438  CSCNoiseMatrix* mydata=new CSCNoiseMatrix( *cnMatrix );
439 
440  return mydata;
441 
442 }
443 
445  edm::ValidityInterval & oValidity)
446  {
448 
449  }
static int minRingId()
Definition: CSCDetId.h:242
static CSCNoiseMatrix * prefillNoiseMatrix()
static int minEndcapId()
Definition: CSCDetId.h:238
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:97
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:19
static int maxStationId()
Definition: CSCDetId.h:241
static int maxRingId()
Definition: CSCDetId.h:243
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
static int minChamberId()
Definition: CSCDetId.h:244
static const IOVSyncValue & beginOfTime()
static int minStationId()
Definition: CSCDetId.h:240
static int maxEndcapId()
Definition: CSCDetId.h:239
NoiseMatrixMap matrix
static int minLayerId()
Definition: CSCDetId.h:246
static int maxChamberId()
Definition: CSCDetId.h:245
void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &)
ReturnType produceNoiseMatrix(const CSCNoiseMatrixRcd &)
CSCNoiseMatrixConditions(const edm::ParameterSet &)
static int maxLayerId()
Definition: CSCDetId.h:247