27 {23,44}, {29,47}, {31,48}, {21,43},
28 { 5,35}, {15,40}, { 7,36}, {13,39},
29 { 1,33}, {11,38}, { 3,34}, { 9,37},
30 { 6, 3}, {16, 8}, { 8, 4}, {14, 7},
32 {17,41}, {19,42}, {27,46}, {25,45},
33 {32,16}, {22,11}, {24,12}, {30,15},
34 {12, 6}, { 2, 1}, { 4, 2}, {10, 5},
35 {28,14}, {18, 9}, {20,10}, {26,13},
37 {54,27}, {56,28}, {64,32}, {62,31},
38 {49,57}, {59,62}, {51,58}, {57,61},
39 {53,59}, {63,64}, {55,60}, {61,63},
40 {45,55}, {39,52}, {37,51}, {47,56},
42 {34,17}, {42,21}, {44,22}, {36,18},
43 {50,25}, {60,30}, {58,29}, {52,26},
44 {38,19}, {40,20}, {48,24}, {46,23},
45 {41,53}, {35,50}, {33,49}, {43,54}
49 {31,48}, {29,47}, {23,44}, {21,43},
50 { 5,35}, { 7,36}, {15,40}, {13,39},
51 { 1,33}, { 3,34}, {11,38}, { 9,37},
52 { 6, 3}, { 8, 4}, {16, 8}, {14, 7},
54 {17,41}, {27,46}, {19,42}, {25,45},
55 {24,12}, {22,11}, {32,16}, {30,15},
56 { 4, 2}, { 2, 1}, {12, 6}, {10, 5},
57 {20,10}, {18, 9}, {28,14}, {26,13},
59 {54,27}, {64,32}, {56,28}, {62,31},
60 {49,57}, {51,58}, {59,62}, {57,61},
61 {53,59}, {55,60}, {63,64}, {61,63},
62 {45,55}, {47,56}, {37,51}, {39,52},
64 {34,17}, {42,21}, {36,18}, {44,22},
65 {50,25}, {52,26}, {58,29}, {60,30},
66 {38,19}, {48,24}, {40,20}, {46,23},
67 {41,53}, {43,54}, {33,49}, {35,50}
86 const unsigned long * buffer = (
reinterpret_cast<unsigned long*
>(
const_cast<unsigned char*
> ( fedData.
data())));
87 int fedLenght = fedData.
size();
92 edm::LogError(
"CamacTBDataFormatter") <<
"CamacTBData has size " << fedLenght
93 <<
" Bytes as opposed to expected "
126 a = buffer[wordCounter];wordCounter++;
127 LogDebug(
"CamacTBDataFormatter") <<
"\n\nword:\t" <<
a;
131 LogDebug(
"CamacTBDataFormatter") <<
"format ver:\t" <<
b;
135 LogDebug(
"CamacTBDataFormatter") <<
"major:\t" <<
b;
139 LogDebug(
"CamacTBDataFormatter") <<
"minor:\t" <<
b;
141 a = buffer[wordCounter];wordCounter++;
142 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
143 LogDebug(
"CamacTBDataFormatter") <<
"time stamp secs: "<<
a;
145 a = buffer[wordCounter];wordCounter++;
146 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
147 LogDebug(
"CamacTBDataFormatter") <<
"time stamp musecs: " <<
a;
150 a = buffer[wordCounter];wordCounter++;
151 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
153 LogDebug(
"CamacTBDataFormatter") <<
"LV1A: "<<
b;
156 a = buffer[wordCounter];wordCounter++;
157 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
160 LogDebug(
"CamacTBDataFormatter") <<
"run number: "<<
b;
163 LogDebug(
"CamacTBDataFormatter") <<
"spill number: "<<
b;
166 a = buffer[wordCounter];wordCounter++;
168 LogDebug(
"CamacTBDataFormatter") <<
"event number in spill: "<<
b;
170 a = buffer[wordCounter];wordCounter++;
172 LogDebug(
"CamacTBDataFormatter") <<
"internal event number: "<<
b;
174 a = buffer[wordCounter];wordCounter++;
175 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
178 LogDebug(
"CamacTBDataFormatter") <<
"vme errors: "<<
b;
180 LogDebug(
"CamacTBDataFormatter") <<
"camac errors: "<<
b;
182 a = buffer[wordCounter];wordCounter++;
183 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
185 LogDebug(
"CamacTBDataFormatter") <<
"extended (32 bits) run number: "<<
b;
195 unsigned long bufferHodo[16];
196 bool hodoAreGood =
true;
197 for (
int hodo=0; hodo<16; hodo++)
199 hodoAreGood = hodoAreGood &&
checkStatus(buffer[wordCounter], wordCounter);
201 a = buffer[wordCounter];
202 bufferHodo[hodo] = buffer[wordCounter];
206 LogDebug(
"CamacTBDataFormatter") <<
"hodo: " << hodo <<
"\t: " <<
b;
223 int word= bufferHodo[
j+iplane*
hodoRawLen ] &0xffff;
224 for(
int i=1;
i<0x10000;
i<<=1)
238 hodoRaw.
setPlanes((
unsigned int)nHodoPlanes);
244 hodoRaw.
setPlane((
unsigned int)ipl, theHodoPlane);
249 edm::LogWarning(
"CamacTBDataFormatter") <<
"hodoscope block has hardware problems or is partly unused at LV1: "
250 << lv1 <<
" spill: " << spill
252 <<
". Skipping digi.";
268 bool scalersAreGood =
true;
269 for (
int scaler=0; scaler<72; scaler++)
271 scalersAreGood = scalersAreGood &&
checkStatus(buffer[wordCounter], wordCounter);
273 a = buffer[wordCounter]; wordCounter++;
275 LogDebug(
"CamacTBDataFormatter") <<
"scaler: " << scaler <<
"\t: " <<
b;
278 if ( (scaler%2)==0 )
scalers_.push_back(b);
285 edm::LogWarning(
"CamacTBDataFormatter") <<
"scalers block has hardware problems or is partly unused at LV1: "
286 << lv1 <<
" spill: " << spill
298 LogDebug(
"CamacTBDataFormatter") <<
"\n";
299 bool fingersAreGood =
true;
300 for (
int finger=0; finger<2; finger++)
302 fingersAreGood = fingersAreGood &&
checkStatus(buffer[wordCounter], wordCounter);
304 a = buffer[wordCounter]; wordCounter++;
306 LogDebug(
"CamacTBDataFormatter") <<
"finger: " << finger <<
"\t: " <<
b;
312 edm::LogWarning(
"CamacTBDataFormatter") <<
"fingers block has hardware problems or is partly unused at LV1: "
313 << lv1 <<
" spill: " << spill
324 a = buffer[wordCounter]; wordCounter++;
325 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
327 LogDebug(
"CamacTBDataFormatter") <<
"number of words used in multi stop TDC words: "<<
b;
329 int numberTDCwords =
b;
331 bool multiStopTDCIsGood =
true;
332 for (
int tdc=0; tdc< numberTDCwords ; tdc++)
334 multiStopTDCIsGood = multiStopTDCIsGood &&
checkStatus(buffer[wordCounter], wordCounter);
336 a = buffer[wordCounter]; wordCounter++;
338 LogDebug(
"CamacTBDataFormatter") <<
"tdc: " << tdc <<
"\t: " <<
b;
340 if ( multiStopTDCIsGood ){
344 edm::LogWarning(
"CamacTBDataFormatter") <<
"multi stop TDC block has hardware problems or is partly unused at LV1: "
345 << lv1 <<
" spill: " << spill
350 wordCounter += (16 - numberTDCwords);
358 a = buffer[wordCounter]; wordCounter++;
359 b = (a & 0x00000001);
362 LogDebug(
"CamacTBDataFormatter") <<
" table is in position.";
363 tableIsMoving =
false;
367 LogDebug(
"CamacTBDataFormatter") <<
" table is moving.";
368 tableIsMoving =
true;
382 bool ADCIsGood =
true;
384 ADCIsGood =
checkStatus(buffer[wordCounter], wordCounter);
385 a = buffer[wordCounter]; wordCounter++;
387 LogDebug(
"CamacTBDataFormatter") <<
"ADC word1: " << a <<
"\t ADC2: " << b <<
" word is: " << (wordCounter-1);
390 ADCIsGood =
checkStatus(buffer[wordCounter], wordCounter);
391 a = buffer[wordCounter]; wordCounter++;
393 LogDebug(
"CamacTBDataFormatter") <<
"ADC word2, adc channel 11, ampli S6: " << a <<
"\t ADC2: " <<
b;
394 if (ADCIsGood) tbEventHeader.
setS6ADC ( b ) ;
395 else tbEventHeader.
setS6ADC ( -1 ) ;
403 bool TDCIsGood =
true;
404 TDCIsGood = ADCIsGood &&
checkStatus(buffer[wordCounter], wordCounter);
405 a = buffer[wordCounter]; wordCounter++;
407 LogDebug(
"CamacTBDataFormatter") <<
"TDC word1: " << a <<
"\t TDC2: " <<
b;
408 TDCIsGood = ADCIsGood &&
checkStatus(buffer[wordCounter], wordCounter);
409 a = buffer[wordCounter]; wordCounter++;
411 LogDebug(
"CamacTBDataFormatter") <<
"TDC word2: (ext_val_trig - LHC_clock) "
412 << a <<
"\t (ext_val_trig - LHC_clock): "
421 a = buffer[wordCounter]; wordCounter++;
422 LogDebug(
"CamacTBDataFormatter") <<
"\n\n word:\t" <<
a;
424 LogDebug(
"CamacTBDataFormatter") <<
"last word of event: "<<
b;
443 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"checking word number: "
444 << wordNumber <<
" which is out of allowed range ("
445 << nWordsPerEvent <<
")";
451 if (word & 0x80000000)
453 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"daq item not used at word: "<< wordNumber;
458 if (word & 0x40000000)
460 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"vme error on word: "<< wordNumber;
465 if (word & 0x20000000)
467 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"vme status error at word: "<< wordNumber;
472 if (word & 0x10000000)
474 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"camac error (no X) at word: "<< wordNumber;
479 if (word & 0x08000000)
481 edm::LogWarning(
"CamacTBDataFormatter::checkStatus") <<
"camac error (no Q) at word: "<< wordNumber;
void setHit(unsigned int i, bool status)
void setPlane(unsigned int i, const EcalTBHodoscopePlaneRawHits &planeHit)
size_t size() const
Lenght of the data buffer in bytes.
void setChannels(unsigned int size)
Set methods.
void setSample(unsigned int i, const EcalTBTDCSample &sam)
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
void setSize(unsigned int size)
Set methods.
void setPlanes(unsigned int size)
Set methods.