CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TowerBlockFormatter.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <list>
3 
4 // #include "DataFormats/Common/interface/Handle.h"
5 
7 
11 
12 using namespace std;
13 
14 
16 
17 }
18 
20 
21 }
22 
23 
24 
25 void TowerBlockFormatter::DigiToRaw(const EBDataFrame& dataframe, FEDRawData& rawdata,
26  const EcalElectronicsMapping* TheMapping)
27 
28 {
29 
30  int bx = *pbx_;
31  int lv1 = *plv1_ - 1;
32 
33 
34  int rdsize = rawdata.size() / 8; // size in Word64
35 
36  bool newFE = false;
37 
38  const EBDetId& ebdetid = dataframe.id();
39 
40  int DCCid = TheMapping -> DCCid(ebdetid);
41  int FEDid = FEDNumbering::MINECALFEDID + DCCid ;
42 
43 
44  int nsamples = dataframe.size();
45  // -- FE number
46  const EcalElectronicsId& elid = TheMapping -> getElectronicsId(ebdetid);
47  int iFE = elid.towerId();
48  if (iFE <= 0 || iFE > 68) throw cms::Exception("InvalidFEid") <<
49  "TowerBlockFormatter::DigiToRaw : Invalid iFE " << iFE << endl;
50 
51 
52  map<int, map<int,int> >::iterator fen = FEDorder -> find(FEDid);
53  map<int, map<int,int> >::iterator fed = FEDmap -> find(FEDid);
54 
55  if (fen == FEDorder -> end()) {
56  if (debug_) cout << "New FED in TowerBlockFormatter " << dec << FEDid << " 0x" << hex << FEDid << endl;
57  map<int,int> FEorder;
58  pair<map<int, map<int,int> >::iterator, bool> t1 = FEDorder -> insert(map<int, map<int,int> >::value_type(FEDid,FEorder));
59  map<int,int> FEmap;
60  pair<map<int, map<int,int> >::iterator, bool> t2 = FEDmap -> insert(map<int, map<int,int> >::value_type(FEDid,FEmap));
61  fen = t1.first;
62  fed = t2.first;
63  }
64 
65  map<int, int>& FEorder = (*fen).second;
66  map<int, int>& FEmap = (*fed).second;
67 
68  map<int,int>::iterator fe = FEorder.find(iFE);
69  int FE_order;
70  int FE_index;
71  if (fe != FEorder.end()) {
72  FE_order = (*fe).second;
73  map<int,int>::iterator ff = FEmap.find(FE_order);
74  if (ff == FEmap.end()) cout << "Error with maps... " << endl;
75  FE_index = (*ff).second;
76  if (debug_) cout << "FE already there, FE_index = " << dec << FE_index << " FEorder " << FE_order << endl;
77  }
78  else {
79  if (debug_) cout << "New FE in TowerBlockFormatter FE " << dec << iFE << " 0x" << hex << iFE << " in FED id " << dec << FEDid << endl;
80  newFE = true;
81  int inser = rdsize;
82  int number_FEs = FEorder.size() -1;
83  FE_order = number_FEs+1;
84  pair<map<int,int>::iterator, bool> t2 = FEorder.insert(map<int,int>::value_type(iFE,FE_order));
85  if (! t2.second) cout << " FE insertion failed...";
86  pair<map<int,int>::iterator, bool> tt = FEmap.insert(map<int,int>::value_type(FE_order,inser));
87  fe = tt.first;
88  FE_index = (*fe).second;
89  if (debug_) cout << "Build the Tower Block header for FE id " << iFE << " start at line " << rdsize << endl;
90  if (debug_) cout << "This is the Fe number (order) " << number_FEs+1 << endl;
91  rawdata.resize( 8*rdsize + 8);
92  unsigned char* pData = rawdata.data();
93  pData[8*FE_index] = iFE & 0xFF;
94  pData[8*FE_index+1] = (nsamples & 0x7F);
95  pData[8*FE_index+2] = bx & 0xFF;
96  pData[8*FE_index+3] = (bx >>8) & 0x0F;
97  pData[8*FE_index+3] |= 0xa0;
98  pData[8*FE_index+4] = lv1 & 0xFF;
99  pData[8*FE_index+5] = (lv1 >>8) & 0x0F;
100  pData[8*FE_index+6] = 1;
101  pData[8*FE_index+7] = 0xc0;
102  if (debug_) print(rawdata);
103 
104  }
105 
106 
107  // -- Crystal number inside the SM :
108 
109  int istrip = elid.stripId();
110  int ichannel = elid.xtalId();
111 
112  if (debug_) cout << "Now add crystal : strip channel " << dec << istrip << " " << ichannel << endl;
113 
114 
115  unsigned char* pData = rawdata.data();
116 
117  vector<unsigned char> vv(&pData[0],&pData[rawdata.size()]);
118 
119 
120  int n_add = 2 + 2*nsamples; // 2 bytes per sample, plus 2 bytes before sample 0
121  if (n_add % 8 != 0) n_add = n_add/8 +1;
122  else
123  n_add = n_add/8;
124  if (debug_) cout << "will add " << n_add << " lines of 64 bits at line " << (FE_index+1) << endl;
125  rawdata.resize( rawdata.size() + 8*n_add );
126  unsigned char* ppData = rawdata.data();
127 
128  vector<unsigned char>::iterator iter = vv.begin() + 8*(FE_index+1);
129 
130  vector<unsigned char> toadd(n_add*8);
131 
132 
133  int tzs=0;
134  toadd[0] = (istrip & 0x7) + ((ichannel & 0x7)<<4);
135  toadd[1] = (tzs & 0x1) <<12;
136 
137  for (int isample=0; isample < (n_add*8-2)/2; isample++) {
138  if (isample < nsamples) {
139  uint16_t word = (dataframe.sample(isample)).raw(); // 16 bits word corresponding to this sample
140  toadd[2 + isample*2] = word & 0x00FF;
141  toadd[2 + isample*2 +1] = (word & 0xFF00)>>8;
142  }
143  else {
144  toadd[2 + isample*2] = 0;
145  toadd[2 + isample*2 +1] = 0;
146  }
147  if (isample % 2 == 0) toadd[2 + isample*2 +1] |= 0xc0; // need to add the B11 header...
148  }
149 
150  vv.insert(iter,toadd.begin(),toadd.end());
151 
152 
153  // update the pData for this FED :
154  for (int i=0; i < (int)vv.size(); i++) {
155  ppData[i] = vv[i];
156  }
157 
158  if (debug_) {
159  cout << "pData for this FED is now " << endl;
160  print(rawdata);
161  }
162 
163  // and update the FEmap for this FED :
164  for (int i=FE_order+1; i < (int)FEorder.size(); i++) {
165  FEmap[i] += n_add;
166  if (debug_) cout << "FEmap updated for fe number " << dec << i << endl;
167  if (debug_) cout << " FEmap[" << i << "] = " << FEmap[i] << endl;
168  }
169 
170  // update the block length
171  int blocklength = ppData[8*FE_index+6]
172  + ((ppData[8*FE_index+7] & 0x1)<<8);
173  blocklength += n_add;
174  ppData[8*FE_index+6] = blocklength & 0xFF;
175  ppData[8*FE_index+7] |= (blocklength & 0x100)>>8;
176 
177 
178 
179 }
180 
181 
182 
184 
185 // -- Need to reorder the FE's in teh TowerBlock. They come in the right
186 // order when reading the unsuppressed digis, but ganz durcheinander
187 // when reading the SelectiveReadout_Suppressed digis.
188 
189  if (debug_) cout << "enter in TowerBlockFormatter::EndEvent. First reorder the FE's. " << endl;
190 
191  for (int idcc=1; idcc <= 54; idcc++) {
192 
193  // debug_ = (idcc == 34);
194 
195  //if (idcc != 34) continue;
196 
197  int FEDid = FEDNumbering::MINECALFEDID + idcc;
198  // cout << "Process FED " << FEDid << endl;
199  FEDRawData& fedData = productRawData -> FEDData(FEDid);
200  if (fedData.size() <= 16) continue;
201 
202  if (debug_) cout << "This is FEDid = " << FEDid << endl;
203 
204  unsigned char * pData = fedData.data();
205  // Word64* words = reinterpret_cast<Word64*>(const_cast<unsigned char*>(pData));
206  Word64* words = reinterpret_cast<Word64*>(pData);
207 
208  int length = fedData.size() / 8;
209  int iDAQ_header(-1), iDCC_header(-1), iTCCBlock_header(-1),
210  iSRBlock_header(-1), iTowerBlock_header(-1), iDAQ_trailer(-1);
211 
212  for (int i=length-1; i > -1; i--) {
213  if ( ( (words[i] >> 60) & 0xF) == 0x5 ) iDAQ_header=i;
214  if ( ( (words[i] >> 62) & 0x3) == 0x0 ) iDCC_header=i;
215  if ( ( (words[i] >> 61) & 0x7) == 0x3 ) iTCCBlock_header=i;
216  if ( ( (words[i] >> 61) & 0x7) == 0x4 ) iSRBlock_header=i;
217  if ( ( (words[i] >> 62) & 0x3) == 0x3 ) iTowerBlock_header=i;
218  if ( ( (words[i] >> 60) & 0xF) == 0xA ) iDAQ_trailer=i;
219  }
220 
221  if (iTowerBlock_header < 0) iTowerBlock_header = iDAQ_trailer;
222  if (iSRBlock_header < 0) iSRBlock_header = iTowerBlock_header;
223  if (iTCCBlock_header < 0) iTCCBlock_header = iSRBlock_header;
224 
225  if (debug_) {
226  cout << "iDAQ_header = " << iDAQ_header << endl;
227  cout << " iDCC_header = " << iDCC_header << endl;
228  cout << " iTCCBlock_header = " << iTCCBlock_header << endl;
229  cout << " iSRBlock_header = " << iSRBlock_header << endl;
230  cout << " iTowerBlock_header = " << iTowerBlock_header << endl;
231  cout << " iDAQ_trailer = " << iDAQ_trailer << endl;
232  }
233 
234  std::map<int, int> FrontEnd;
235  std::map<int, std::vector<Word64> > Map_xtal_data;
236 
237  int iTowerBlock_header_keep = iTowerBlock_header;
238 
239  while (iTowerBlock_header < iDAQ_trailer) {
240  int fe = words[iTowerBlock_header] & 0xFF;
241  int nlines = (words[iTowerBlock_header] >> 48) & 0x1FF;
242  if (debug_) cout << "This is FE number " << fe << "needs nlines = " << nlines << endl;
243  FrontEnd[fe] = nlines;
244  std::vector<Word64> xtal_data;
245  for (int j=0; j < nlines; j++) {
246  Word64 ww = words[iTowerBlock_header+j];
247  xtal_data.push_back(ww);
248  }
249  Map_xtal_data[fe] = xtal_data;
250  iTowerBlock_header += nlines;
251  }
252 
253  if (debug_) {
254  cout << "vector of FrontEnd : " << FrontEnd.size() << endl;
255  for (std::map<int, int>::const_iterator it=FrontEnd.begin();
256  it != FrontEnd.end(); it++) {
257  int fe = it -> first;
258  int l = it -> second;
259  cout << "FE line " << fe << " " << l << endl;
260  }
261  }
262 
263  iTowerBlock_header = iTowerBlock_header_keep;
264  for (std::map<int, int>::const_iterator it=FrontEnd.begin();
265  it != FrontEnd.end(); it++) {
266  int fe = it -> first;
267  int nlines = it -> second;
268  if (debug_) cout << "iTowerBlock_header = " << iTowerBlock_header << endl;
269  vector<Word64> xtal_data = Map_xtal_data[fe];
270  for (int j=0; j < nlines; j++) {
271  words[iTowerBlock_header+j] = xtal_data[j];
272  if (debug_) cout << "update line " << iTowerBlock_header+j << endl;
273  }
274  if (debug_) {
275  int jFE = pData[8*(iTowerBlock_header)];
276  cout << "Front End on RD : " << jFE << endl;
277  }
278  iTowerBlock_header += nlines;
279  }
280 
281  // -- now the FEs are ordered. STill need to order the xtals within FEs;
282  // need : xtal 1,2,3,4, 5 in strip 1, xtal 1,2,3,4,5 in strip 2 etc..
283  // with possibly missing ones.
284 
285  if (debug_) cout << "now reorder the xtals within the FEs" << endl;
286 
287  iTowerBlock_header = iTowerBlock_header_keep;
288 
289  for (std::map<int, int>::const_iterator it=FrontEnd.begin();
290  it != FrontEnd.end(); it++) {
291 
292  int fe = it -> first;
293  if (fe > 68) cout << "Problem... fe = " << fe << " in FEDid = " << FEDid << endl;
294  if (debug_) cout << " This is for FE = " << fe << endl;
295  int nlines = it -> second;
296  int timesamples = pData[8*iTowerBlock_header+1] & 0x7F;
297  int n4=timesamples-3;
298  int n_lines4 = n4/4;
299  if ( n4 % 4 != 0) n_lines4 ++;
300  if (n_lines4<0) n_lines4=0;
301  int Nxtal_max = (nlines-1)/(1+n_lines4);
302  int Nxtal = 0;
303 
304  map< int, map<int, vector<Word64> > > Strip_Map;
305 
306  while (Nxtal < Nxtal_max) {
307 
308  int i_xtal = iTowerBlock_header+1 + Nxtal*(1+n_lines4);
309  int strip = words[i_xtal] & 0x7;
310  int xtal = ( words[i_xtal] >>4) & 0x7;
311 
312  map< int, map<int, vector<Word64> > >::iterator iit = Strip_Map.find(strip);
313 
314  map<int, vector<Word64> > NewMap;
315  map<int, vector<Word64> > Xtal_Map;
316 
317  if (iit == Strip_Map.end()) { // new strip
318  Xtal_Map = NewMap;
319  }
320  else {
321  Xtal_Map = iit -> second;
322  }
323 
324  std::vector<Word64> xtal_data;
325  for (int j=0; j < n_lines4 +1; j++) {
326  Word64 ww = words[i_xtal +j];
327  xtal_data.push_back(ww);
328  }
329  Xtal_Map[xtal] = xtal_data;
330  Strip_Map[strip] = Xtal_Map;
331 
332  Nxtal ++;
333  }
334 
335  // now, update the xtals for this FE :
336 
337  int idx = 0;
338  for (map< int, map<int, vector<Word64> > >::const_iterator jt = Strip_Map.begin();
339  jt != Strip_Map.end(); jt++) {
340 
341  int strip = jt -> first;
342  if (debug_) cout << " this is strip number " << strip << endl;
343  map<int, vector<Word64> > Xtal_Map = jt -> second;
344 
345  for (map<int, vector<Word64> >::const_iterator kt = Xtal_Map.begin();
346  kt != Xtal_Map.end(); kt++) {
347  int xtal = kt -> first;
348  if (debug_) cout << " this is xtal number " << xtal << endl;
349  vector<Word64> xtal_data = kt -> second;
350 
351  int mlines = (int)xtal_data.size();
352  if (debug_) cout << " mlines = " << mlines << endl;
353  for (int j=0; j < mlines; j++) {
354  int line = iTowerBlock_header+1+idx+j;
355  if (line >= iDAQ_trailer) cout << "smth wrong... line " << line << " trailer " << iDAQ_trailer << endl;
356  words[line] = xtal_data[j] ;
357  if (debug_) cout << " updated line " << iTowerBlock_header+idx+j << endl;
358  }
359  idx += mlines;
360 
361  } // end loop on xtals
362  Xtal_Map.clear();
363 
364  } // end loop on strips
365 
366  Strip_Map.clear();
367 
368  iTowerBlock_header += nlines;
369  } // end loop on FEs
370 
371 
372  if (debug_) cout << " DONE FOR FED " << FEDid << endl;
373  FrontEnd.clear();
374  Map_xtal_data.clear();
375 
376  } // end loop on DCC
377 
378  // cout << " finished reorder, now clean up " << endl;
379 
380 // -- clean up
381 
382  // FEDmap -> empty();
383  // FEDorder -> empty();
384  FEDmap -> clear();
385  FEDorder -> clear();
386  delete FEDmap;
387  delete FEDorder;
388  FEDmap = 0;
389  FEDorder = 0;
390 
391  debug_ = false;
392 
393  // cout << "end of EndEvent " << endl;
394 }
395 
397 
398  FEDmap = new map<int, map<int,int> >;
399  FEDorder = new map<int, map<int,int> >;
400 
401 }
402 
403 
404 
405 
406 void TowerBlockFormatter::DigiToRaw(const EEDataFrame& dataframe, FEDRawData& rawdata, const EcalElectronicsMapping* TheMapping)
407 
408  // -- now that we have the EcalElectronicsMapping, this method could probably be
409  // merged with DigiToRaw(EBdataframe).
410  // Keep as it is for the while...
411 {
412 
413  // debug_ = false;
414 
415  int bx = *pbx_;
416  int lv1 = *plv1_;
417 
418 
419  int rdsize = rawdata.size() / 8; // size in Word64
420 
421  bool newFE = false;
422 
423 
424  const EEDetId& eedetid = dataframe.id();
425  EcalElectronicsId elid = TheMapping -> getElectronicsId(eedetid);
426  int DCCid = elid.dccId();
427  int FEDid = FEDNumbering::MINECALFEDID + DCCid ;
428  int iFE = elid.towerId();
429 
430  if (debug_) cout << "enter in TowerBlockFormatter::DigiToRaw DCCid FEDid iFE " <<
431  dec << DCCid << " " << FEDid << " " << iFE << endl;
432 
433  int nsamples = dataframe.size();
434 
435  if (iFE <= 0 || iFE > 68) {
436  cout << "invalid iFE for EndCap DCCid iFE " << DCCid << " " << iFE << endl;
437  return;
438  }
439 
440 
441  map<int, map<int,int> >::iterator fen = FEDorder -> find(FEDid);
442  map<int, map<int,int> >::iterator fed = FEDmap -> find(FEDid);
443 
444  if (fen == FEDorder -> end()) {
445  if (debug_) cout << "New FED in TowerBlockFormatter " << dec << FEDid << " 0x" << hex << FEDid << endl;
446  map<int,int> FEorder;
447  pair<map<int, map<int,int> >::iterator, bool> t1 = FEDorder -> insert(map<int, map<int,int> >::value_type(FEDid,FEorder));
448  map<int,int> FEmap;
449  pair<map<int, map<int,int> >::iterator, bool> t2 = FEDmap -> insert(map<int, map<int,int> >::value_type(FEDid,FEmap));
450  fen = t1.first;
451  fed = t2.first;
452  }
453 
454  map<int, int>& FEorder = (*fen).second;
455  map<int, int>& FEmap = (*fed).second;
456 
457  map<int,int>::iterator fe = FEorder.find(iFE);
458  int FE_order;
459  int FE_index;
460  if (fe != FEorder.end()) {
461  FE_order = (*fe).second;
462  map<int,int>::iterator ff = FEmap.find(FE_order);
463  if (ff == FEmap.end()) cout << "Error with maps... " << endl;
464  FE_index = (*ff).second;
465  if (debug_) cout << "FE already there, FE_index = " << dec << FE_index << " FEorder " << FE_order << endl;
466  }
467  else {
468  if (debug_) cout << "New FE in TowerBlockFormatter FE " << dec << iFE << " 0x" << hex << iFE << " in FED id " << dec << FEDid << endl;
469  newFE = true;
470  int inser = rdsize;
471  int number_FEs = FEorder.size() -1;
472  FE_order = number_FEs+1;
473  pair<map<int,int>::iterator, bool> t2 = FEorder.insert(map<int,int>::value_type(iFE,FE_order));
474  if (! t2.second) cout << " FE insertion failed...";
475  pair<map<int,int>::iterator, bool> tt = FEmap.insert(map<int,int>::value_type(FE_order,inser));
476  fe = tt.first;
477  FE_index = (*fe).second;
478  if (debug_) cout << "Build the Tower Block header for FE id " << iFE << " start at line " << rdsize << endl;
479  if (debug_) cout << "This is the Fe number (order) " << number_FEs+1 << endl;
480  rawdata.resize( 8*rdsize + 8);
481  unsigned char* pData = rawdata.data();
482 
483  pData[8*FE_index] = iFE & 0xFF;
484  pData[8*FE_index+1] = (nsamples & 0x7F);
485  pData[8*FE_index+2] = bx & 0xFF;
486  pData[8*FE_index+3] = (bx >>8) & 0x0F;
487  pData[8*FE_index+3] |= 0xa0;
488  pData[8*FE_index+4] = lv1 & 0xFF;
489  pData[8*FE_index+5] = (lv1 >>8) & 0x0F;
490  pData[8*FE_index+6] = 1;
491  pData[8*FE_index+7] = 0xc0;
492  if (debug_) print(rawdata);
493 
494  }
495 
496 
497 
498  // -- Crystal number inside the SM :
499  int istrip = elid.stripId();
500  int ichannel = elid.xtalId();
501 
502  if (debug_) cout << "Now add crystal strip channel " << dec << istrip << " " << ichannel << endl;
503 
504  unsigned char* pData = rawdata.data();
505 
506  vector<unsigned char> vv(&pData[0],&pData[rawdata.size()]);
507 
508 
509  int n_add = 2 + 2*nsamples; // 2 bytes per sample, plus 2 bytes before sample 0
510  if (n_add % 8 != 0) n_add = n_add/8 +1;
511  else
512  n_add = n_add/8;
513  if (debug_) cout << "nsamples = " << dec << nsamples << endl;
514  if (debug_) cout << "will add " << n_add << " lines of 64 bits at line " << (FE_index+1) << endl;
515  rawdata.resize( rawdata.size() + 8*n_add );
516  unsigned char* ppData = rawdata.data();
517 
518  vector<unsigned char>::iterator iter = vv.begin() + 8*(FE_index+1);
519 
520  vector<unsigned char> toadd(n_add*8);
521 
522 
523  int tzs=0;
524  toadd[0] = (istrip & 0x7) + ((ichannel & 0x7)<<4);
525  toadd[1] = (tzs & 0x1) <<12;
526 
527  for (int isample=0; isample < (n_add*8-2)/2; isample++) {
528  if (isample < nsamples) {
529  uint16_t word = (dataframe.sample(isample)).raw(); // 16 bits word corresponding to this sample
530  toadd[2 + isample*2] = word & 0x00FF;
531  toadd[2 + isample*2 +1] = (word & 0xFF00)>>8;
532  }
533  else {
534  toadd[2 + isample*2] = 0;
535  toadd[2 + isample*2 +1] = 0;
536  }
537  if (isample % 2 == 0) toadd[2 + isample*2 +1] |= 0xc0; // need to add the B11 header...
538  }
539 
540  vv.insert(iter,toadd.begin(),toadd.end());
541 
542 
543  // update the pData for this FED :
544  for (int i=0; i < (int)vv.size(); i++) {
545  ppData[i] = vv[i];
546  }
547 
548  if (debug_) {
549  cout << "pData for this FED is now " << endl;
550  print(rawdata);
551  }
552 
553  // and update the FEmap for this FED :
554  for (int i=FE_order+1; i < (int)FEorder.size(); i++) {
555  FEmap[i] += n_add;
556  if (debug_) cout << "FEmap updated for fe number " << dec << i << endl;
557  if (debug_) cout << " FEmap[" << i << "] = " << FEmap[i] << endl;
558  }
559 
560  // update the block length
561  int blocklength = ppData[8*FE_index+6]
562  + ((ppData[8*FE_index+7] & 0x1)<<8);
563  blocklength += n_add;
564  ppData[8*FE_index+6] = blocklength & 0xFF;
565  ppData[8*FE_index+7] |= (blocklength & 0x100)>>8;
566 
567 
568 }
569 
570 
571 
572 
573 
574 
575 
576 
577 
578 
int i
Definition: DBlmapReader.cc:9
key_type id() const
Definition: EBDataFrame.h:32
int xtalId() const
get the channel id
void strip(std::string &input, const std::string &blanks=" \n\t")
Definition: stringTools.cc:16
int stripId() const
get the tower id
Ecal readout channel identification [32:20] Unused (so far) [19:13] DCC id [12:6] tower [5:3] strip [...
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
Definition: print.cc:8
EcalMGPASample sample(int i) const
Definition: EcalDataFrame.h:28
int towerId() const
get the tower id
Container::value_type value_type
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
int size() const
Definition: EcalDataFrame.h:25
dictionary map
Definition: Association.py:160
U second(std::pair< T, U > const &p)
void resize(size_t newsize)
Definition: FEDRawData.cc:33
int j
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:38
bool first
Definition: L1TdeRCT.cc:79
int dccId() const
get the DCC (Ecal Local DCC value not global one) id
int nlines
Definition: dbtoconf.py:90
key_type id() const
Definition: EEDataFrame.h:29
tuple ff
Definition: createTree.py:204
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
void EndEvent(FEDRawDataCollection *productRawData)
tuple cout
Definition: gather_cfg.py:41
void DigiToRaw(const EBDataFrame &dataframe, FEDRawData &rawdata, const EcalElectronicsMapping *TheMapping)
bool insert(Storage &, ItemType *, const IdTag &)