CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ESDataFormatterV1_1.cc
Go to the documentation of this file.
1 
7 
9 
10 const int ESDataFormatterV1_1::bDHEAD = 2;
11 const int ESDataFormatterV1_1::bDH = 6;
12 const int ESDataFormatterV1_1::bDEL = 24;
13 const int ESDataFormatterV1_1::bDERR = 8;
14 const int ESDataFormatterV1_1::bDRUN = 24;
15 const int ESDataFormatterV1_1::bDRUNTYPE = 32;
16 const int ESDataFormatterV1_1::bDTRGTYPE = 16;
17 const int ESDataFormatterV1_1::bDCOMFLAG = 8;
18 const int ESDataFormatterV1_1::bDORBIT = 32;
19 const int ESDataFormatterV1_1::bDVMAJOR = 8;
20 const int ESDataFormatterV1_1::bDVMINOR = 8;
21 const int ESDataFormatterV1_1::bDCH = 4;
22 const int ESDataFormatterV1_1::bDOPTO = 8;
23 
24 const int ESDataFormatterV1_1::sDHEAD = 26;
25 const int ESDataFormatterV1_1::sDH = 24;
26 const int ESDataFormatterV1_1::sDEL = 0;
27 const int ESDataFormatterV1_1::sDERR = bDEL + sDEL;
28 const int ESDataFormatterV1_1::sDRUN = 0;
29 const int ESDataFormatterV1_1::sDRUNTYPE = 0;
30 const int ESDataFormatterV1_1::sDTRGTYPE = 0;
31 const int ESDataFormatterV1_1::sDCOMFLAG = bDTRGTYPE + sDTRGTYPE;
32 const int ESDataFormatterV1_1::sDORBIT = 0;
33 const int ESDataFormatterV1_1::sDVMINOR = 8;
34 const int ESDataFormatterV1_1::sDVMAJOR = bDVMINOR + sDVMINOR;
35 const int ESDataFormatterV1_1::sDCH = 0;
36 const int ESDataFormatterV1_1::sDOPTO = 16;
37 
38 const int ESDataFormatterV1_1::bKEC = 8; // KCHIP packet event counter
39 const int ESDataFormatterV1_1::bKFLAG2 = 8;
40 const int ESDataFormatterV1_1::bKBC = 12; // KCHIP packet bunch counter
41 const int ESDataFormatterV1_1::bKFLAG1 = 4;
42 const int ESDataFormatterV1_1::bKET = 1;
43 const int ESDataFormatterV1_1::bKCRC = 1;
44 const int ESDataFormatterV1_1::bKCE = 1;
45 const int ESDataFormatterV1_1::bKID = 11;
46 const int ESDataFormatterV1_1::bFIBER = 6; // Fiber number
47 const int ESDataFormatterV1_1::bKHEAD1 = 2;
48 const int ESDataFormatterV1_1::bKHEAD2 = 2;
49 
50 const int ESDataFormatterV1_1::sKEC = 0;
51 const int ESDataFormatterV1_1::sKFLAG2 = bKEC + sKEC;
52 const int ESDataFormatterV1_1::sKBC = bKFLAG2 + sKFLAG2;
53 const int ESDataFormatterV1_1::sKFLAG1 = bKBC + sKBC;
54 const int ESDataFormatterV1_1::sKET = 0;
55 const int ESDataFormatterV1_1::sKCRC = bKET + sKET;
56 const int ESDataFormatterV1_1::sKCE = bKCRC + sKCRC;
57 const int ESDataFormatterV1_1::sKID = bKCE + sKCE + 5;
58 const int ESDataFormatterV1_1::sFIBER = bKID + sKID + 1;
59 const int ESDataFormatterV1_1::sKHEAD1 = bFIBER + sFIBER + 2;
60 const int ESDataFormatterV1_1::sKHEAD2 = bKHEAD1 + sKHEAD1;
61 
62 const int ESDataFormatterV1_1::bADC0 = 16;
63 const int ESDataFormatterV1_1::bADC1 = 16;
64 const int ESDataFormatterV1_1::bADC2 = 16;
65 const int ESDataFormatterV1_1::bPACE = 2;
66 const int ESDataFormatterV1_1::bSTRIP = 5;
67 const int ESDataFormatterV1_1::bE0 = 1;
68 const int ESDataFormatterV1_1::bE1 = 1;
69 const int ESDataFormatterV1_1::bHEAD = 2;
70 
71 const int ESDataFormatterV1_1::sADC0 = 0;
72 const int ESDataFormatterV1_1::sADC1 = bADC0 + sADC0;
73 const int ESDataFormatterV1_1::sADC2 = 0;
74 const int ESDataFormatterV1_1::sPACE = bADC2 + sADC2;
75 const int ESDataFormatterV1_1::sSTRIP = bPACE + sPACE;
76 const int ESDataFormatterV1_1::sE0 = bSTRIP + sSTRIP + 1;
77 const int ESDataFormatterV1_1::sE1 = bE0 + sE0;
78 const int ESDataFormatterV1_1::sHEAD = bE1 + sE1 + 4;
79 
80 using namespace std;
81 using namespace edm;
82 
84 
86 
87 // FEDRawData * ESDataFormatterV1_1::DigiToRawDCC(int fedId, const Digis & digis) {
88 
89 // int ts[3] = {0, 0, 0};
90 // Word32 word1, word2;
91 // Word64 word;
92 
93 // for (Digis::const_iterator itr = digis.begin(); itr != digis.end(); ++itr) {
94 
95 // if (itr->first != fedId) continue;
96 // const DetDigis & detDigis = itr->second;
97 
98 // for (DetDigis::const_iterator it = detDigis.begin(); it != detDigis.end(); ++it) {
99 
100 // const ESDataFrame& dataframe = (*it);
101 // // const ESDetId& detId = dataframe.id();
102 
103 // for (int is=0; is<dataframe.size(); ++is) ts[is] = dataframe.sample(is).adc();
104 // }
105 // }
106 
107 // // DCC words
108 // vector<Word64> DCCwords;
109 // word2 = (run_number_ << 0) ;
110 // word1 = 0;
111 // word = (Word64(word2) << 32 ) | Word64(word1);
112 
113 // DCCwords.push_back(word);
114 // for (int i=0; i<5; ++i) {
115 // word = 0;
116 // DCCwords.push_back(word);
117 // }
118 
119 // FEDRawData * rawData = new FEDRawData(0);
120 
121 // return rawData;
122 // }
123 
124 void ESDataFormatterV1_1::DigiToRaw(int fedId, Digis& digis, FEDRawData& fedRawData, const Meta_Data& meta_data) const {
125  map<int, vector<Word64> > map_data;
126  map_data.clear();
127 
128  int ts[3] = {0, 0, 0};
129  Word32 word1, word2;
130  Word64 word;
131  vector<Word64> words;
132 
133  const DetDigis& detDigis = digis[fedId];
134 
135  // if (detDigis==digis.end()) {
136  // cout << "ESDataFormatterV1_1::DigiToRaw : could not find digi vector in digis map for fedID: "
137  // << fedId << endl ;
138  // return 0;
139  // }
140 
141  for (DetDigis::const_iterator it = detDigis.begin(); it != detDigis.end(); ++it) {
142  const ESDataFrame& dataframe = (*it);
143  const ESDetId& detId = dataframe.id();
144 
145  for (int is = 0; is < dataframe.size(); ++is)
146  ts[is] = dataframe.sample(is).adc();
147 
148  // calculate fake kchip and pace id
149  int kchip = -1;
150  int pace = -1;
151  int ix = -1;
152  int iy = -1;
153 
154  ix = detId.six() % 2;
155  iy = detId.siy() % 2;
156  if (ix == 1 && iy == 1)
157  pace = 0;
158  else if (ix == 0 && iy == 1)
159  pace = 1;
160  else if (ix == 1 && iy == 0)
161  pace = 2;
162  else if (ix == 0 && iy == 0)
163  pace = 3;
164 
165  ix = (1 + detId.six()) / 2;
166  iy = (1 + detId.siy()) / 2;
167  if (detId.zside() == 1 && detId.plane() == 1)
168  kchip = ix + (iy - 1) * 20 - 1;
169  else if (detId.zside() == 1 && detId.plane() == 2)
170  kchip = ix + (iy - 1) * 20 + 399;
171  else if (detId.zside() == -1 && detId.plane() == 1)
172  kchip = ix + (iy - 1) * 20 + 799;
173  else if (detId.zside() == -1 && detId.plane() == 2)
174  kchip = ix + (iy - 1) * 20 + 1199;
175 
176  if (debug_)
177  cout << "Si : " << detId.zside() << " " << detId.plane() << " " << detId.six() << " " << detId.siy() << " "
178  << detId.strip() << " (" << kchip << "," << pace << ") " << ts[2] << " " << ts[1] << " " << ts[0] << endl;
179 
180  word1 = (ts[1] << sADC1) | (ts[0] << sADC0);
181  word2 =
182  (2 << sHEAD) | (0 << sE1) | (0 << sE0) | ((detId.strip() - 1) << sSTRIP) | (pace << sPACE) | (ts[2] << sADC2);
183  word = (Word64(word2) << 32) | Word64(word1);
184 
185  map_data[kchip].push_back(word);
186  }
187 
188  map<int, vector<Word64> >::const_iterator kit;
189  for (kit = map_data.begin(); kit != map_data.end(); ++kit) {
190  if (debug_)
191  cout << "KCHIP : " << kit->first << endl;
192 
193  word1 = (0 << sKFLAG1) | (0 << sKBC) | (0 << sKFLAG2) | (0 << sKEC);
194  word2 = (1 << sKHEAD2) | (0 << sKHEAD1) | (0 << sFIBER) | (kit->first << sKID) | (0 << sKCE) | (0 << sKCRC) |
195  (0 << sKET);
196  word = (Word64(word2) << 32) | Word64(word1);
197 
198  if (debug_)
199  cout << "KCHIP : " << print(word) << endl;
200  words.push_back(word);
201 
202  const vector<Word64>& data = kit->second;
203  for (unsigned int id = 0; id < data.size(); ++id) {
204  if (debug_)
205  cout << "Data : " << print(data[id]) << endl;
206  words.push_back(data[id]);
207  }
208  }
209 
210  int dataSize = (words.size() + 8) * sizeof(Word64);
211 
212  // DCC words
213  vector<Word64> DCCwords;
214  word2 = (0 << sDHEAD) | (1 << sDH) | (meta_data.run_number << sDRUN);
215  word1 = (dataSize << sDEL);
216  word = (Word64(word2) << 32) | Word64(word1);
217  DCCwords.push_back(word);
218  word2 = (0 << sDHEAD) | (2 << sDH);
219  word1 = 0;
220  word = (Word64(word2) << 32) | Word64(word1);
221  DCCwords.push_back(word);
222  word2 = (0 << sDHEAD) | (3 << sDH) | (1 << sDVMAJOR) | (1 << sDVMINOR);
223  word1 = (meta_data.orbit_number << sDORBIT);
224  word = (Word64(word2) << 32) | Word64(word1);
225  DCCwords.push_back(word);
226  word2 = (0 << sDHEAD) | (4 << sDH);
227  word1 = 0;
228  word = (Word64(word2) << 32) | Word64(word1);
229  DCCwords.push_back(word);
230  word2 = (0 << sDHEAD) | (5 << sDH);
231  word1 = 0;
232  word = (Word64(word2) << 32) | Word64(word1);
233  DCCwords.push_back(word);
234  word2 = (0 << sDHEAD) | (6 << sDH);
235  word1 = 0;
236  word = (Word64(word2) << 32) | Word64(word1);
237  DCCwords.push_back(word);
238 
239  // Output (data size in Bytes)
240  fedRawData.resize(dataSize);
241 
242  Word64* w = reinterpret_cast<Word64*>(fedRawData.data());
243 
244  // header
245  FEDHeader::set(reinterpret_cast<unsigned char*>(w), trgtype_, meta_data.lv1, meta_data.bx, fedId);
246  w++;
247 
248  // ES-DCC
249  for (unsigned int i = 0; i < DCCwords.size(); ++i) {
250  if (debug_)
251  cout << "DCC : " << print(DCCwords[i]) << endl;
252  *w = DCCwords[i];
253  w++;
254  }
255 
256  // event data
257  for (unsigned int i = 0; i < words.size(); ++i) {
258  *w = words[i];
259  w++;
260  }
261 
262  // trailer
263  FEDTrailer::set(reinterpret_cast<unsigned char*>(w),
264  dataSize / sizeof(Word64),
265  evf::compute_crc(fedRawData.data(), dataSize),
266  0,
267  0);
268  w++;
269 }
ESDataFormatterV1_1::sE1
static const int sE1
Definition: ESDataFormatterV1_1.h:44
FEDNumbering.h
ESDataFormatterV1_1::sDERR
static const int sDERR
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::bKCE
static const int bKCE
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::bSTRIP
static const int bSTRIP
Definition: ESDataFormatterV1_1.h:43
ESDataFormatter::Meta_Data
Definition: ESDataFormatter.h:18
ESDataFormatterV1_1::sKCE
static const int sKCE
Definition: ESDataFormatterV1_1.h:42
mps_fire.i
i
Definition: mps_fire.py:428
ESDataFormatterV1_1::bDH
static const int bDH
Definition: ESDataFormatterV1_1.h:37
ESDataFormatterV1_1::sKHEAD2
static const int sKHEAD2
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::bE0
static const int bE0
Definition: ESDataFormatterV1_1.h:43
ESDataFormatterV1_1::sKID
static const int sKID
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::bDRUN
static const int bDRUN
Definition: ESDataFormatterV1_1.h:37
ESSample::adc
int adc() const
get the ADC sample (singed 16 bits)
Definition: ESSample.h:16
ESDataFormatterV1_1::~ESDataFormatterV1_1
~ESDataFormatterV1_1() override
Definition: ESDataFormatterV1_1.cc:85
ESDataFormatterV1_1::bKID
static const int bKID
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::bE1
static const int bE1
Definition: ESDataFormatterV1_1.h:43
edm
HLT enums.
Definition: AlignableModifier.h:19
ESDataFormatterV1_1::bDERR
static const int bDERR
Definition: ESDataFormatterV1_1.h:37
ESDetId::strip
int strip() const
Definition: ESDetId.h:47
gather_cfg.cout
cout
Definition: gather_cfg.py:144
ESDataFormatterV1_1::bDEL
static const int bDEL
Definition: ESDataFormatterV1_1.h:37
EcalDetIdCollections.h
ESDataFrame::size
int size() const
Definition: ESDataFrame.h:21
ESDataFormatterV1_1::sDCH
static const int sDCH
Definition: ESDataFormatterV1_1.h:40
ESDataFormatterV1_1::sADC2
static const int sADC2
Definition: ESDataFormatterV1_1.h:44
ESDataFormatterV1_1::sDEL
static const int sDEL
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::sDH
static const int sDH
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::bDRUNTYPE
static const int bDRUNTYPE
Definition: ESDataFormatterV1_1.h:37
ESDataFormatterV1_1::sDOPTO
static const int sDOPTO
Definition: ESDataFormatterV1_1.h:40
ESDetId
Definition: ESDetId.h:15
ESDataFormatterV1_1::sDRUN
static const int sDRUN
Definition: ESDataFormatterV1_1.h:39
ESDataFormatter::debug_
const bool debug_
Definition: ESDataFormatter.h:50
ESDataFormatterV1_1::bADC1
static const int bADC1
Definition: ESDataFormatterV1_1.h:43
ESDataFormatterV1_1::bDORBIT
static const int bDORBIT
Definition: ESDataFormatterV1_1.h:37
ESDataFormatterV1_1::bDCOMFLAG
static const int bDCOMFLAG
Definition: ESDataFormatterV1_1.h:37
ESDataFormatter::Digis
std::map< int, DetDigis > Digis
Definition: ESDataFormatter.h:31
ESDataFrame
Definition: ESDataFrame.h:10
FEDRawData
Definition: FEDRawData.h:19
ESDataFormatter::Word64
uint64_t Word64
Definition: ESDataFormatter.h:36
ESDataFormatterV1_1::ESDataFormatterV1_1
ESDataFormatterV1_1(const edm::ParameterSet &ps)
Definition: ESDataFormatterV1_1.cc:83
word
uint64_t word
Definition: CTPPSTotemDataFormatter.cc:29
ESDataFrame::sample
const ESSample & sample(int i) const
Definition: ESDataFrame.h:24
ESDataFormatterV1_1::sDVMAJOR
static const int sDVMAJOR
Definition: ESDataFormatterV1_1.h:40
ESDataFormatterV1_1.h
l1t_dqm_sourceclient-live_cfg.fedRawData
fedRawData
Definition: l1t_dqm_sourceclient-live_cfg.py:188
ESDataFormatterV1_1::bKET
static const int bKET
Definition: ESDataFormatterV1_1.h:41
w
const double w
Definition: UKUtility.cc:23
ESDataFormatterV1_1::sDORBIT
static const int sDORBIT
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::sKFLAG2
static const int sKFLAG2
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::sHEAD
static const int sHEAD
Definition: ESDataFormatterV1_1.h:44
ESDataFormatterV1_1::sPACE
static const int sPACE
Definition: ESDataFormatterV1_1.h:44
evf::compute_crc
unsigned short compute_crc(unsigned char *buffer, unsigned int bufSize)
Definition: CRC16.h:46
ESDataFormatterV1_1::bKBC
static const int bKBC
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::sKEC
static const int sKEC
Definition: ESDataFormatterV1_1.h:42
ESDataFormatter::Meta_Data::run_number
int run_number
Definition: ESDataFormatter.h:19
ESDataFormatterV1_1::bKFLAG2
static const int bKFLAG2
Definition: ESDataFormatterV1_1.h:41
ESDataFormatter::Meta_Data::orbit_number
int orbit_number
Definition: ESDataFormatter.h:20
edm::ParameterSet
Definition: ParameterSet.h:47
ESDataFormatterV1_1::bFIBER
static const int bFIBER
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::Word64
ESDataFormatter::Word64 Word64
Definition: ESDataFormatterV1_1.h:28
ESDataFormatterV1_1::bDOPTO
static const int bDOPTO
Definition: ESDataFormatterV1_1.h:38
ESDataFormatterV1_1::sADC1
static const int sADC1
Definition: ESDataFormatterV1_1.h:44
ESDataFormatter
Definition: ESDataFormatter.h:16
l1tstage2_dqm_sourceclient-live_cfg.fedId
fedId
Definition: l1tstage2_dqm_sourceclient-live_cfg.py:88
FEDTrailer::set
static void set(unsigned char *trailer, uint32_t lenght, uint16_t crc, uint8_t evt_stat, uint8_t tts, bool moreTrailers=false)
Set all fields in the trailer.
Definition: FEDTrailer.cc:31
ESDataFormatterV1_1::sE0
static const int sE0
Definition: ESDataFormatterV1_1.h:44
ESDataFormatterV1_1::bKFLAG1
static const int bKFLAG1
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::sKCRC
static const int sKCRC
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::bPACE
static const int bPACE
Definition: ESDataFormatterV1_1.h:43
ESDataFormatterV1_1::sKET
static const int sKET
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::bDCH
static const int bDCH
Definition: ESDataFormatterV1_1.h:38
ESDataFormatterV1_1::sKHEAD1
static const int sKHEAD1
Definition: ESDataFormatterV1_1.h:42
ESDetId::plane
int plane() const
Definition: ESDetId.h:41
ESDataFormatter::DetDigis
std::vector< ESDataFrame > DetDigis
Definition: ESDataFormatter.h:30
ESDataFormatter::print
std::string print(const Word64 &word) const
Definition: ESDataFormatter.cc:11
ESDetId::six
int six() const
Definition: ESDetId.h:43
std
Definition: JetResolutionObject.h:76
ESDataFormatterV1_1::sFIBER
static const int sFIBER
Definition: ESDataFormatterV1_1.h:42
ESDataFormatterV1_1::bHEAD
static const int bHEAD
Definition: ESDataFormatterV1_1.h:43
ESDataFormatterV1_1::DigiToRaw
void DigiToRaw(int fedId, Digis &digis, FEDRawData &fedRawData, const Meta_Data &meta_data) const override
Definition: ESDataFormatterV1_1.cc:124
ESDataFormatter::Meta_Data::bx
int bx
Definition: ESDataFormatter.h:21
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:29
ESDataFormatterV1_1::bKHEAD1
static const int bKHEAD1
Definition: ESDataFormatterV1_1.h:41
ESDataFormatter::Word32
uint32_t Word32
Definition: ESDataFormatter.h:35
ESDataFormatterV1_1::sADC0
static const int sADC0
Definition: ESDataFormatterV1_1.h:44
ESDataFormatterV1_1::sKBC
static const int sKBC
Definition: ESDataFormatterV1_1.h:42
FEDHeader::set
static void set(unsigned char *header, uint8_t triggerType, uint32_t lvl1ID, uint16_t bxID, uint16_t sourceID, uint8_t version=0, bool moreHeaders=false)
Set all fields in the header.
Definition: FEDHeader.cc:25
ESDetId::siy
int siy() const
Definition: ESDetId.h:45
ESDataFormatterV1_1::bKEC
static const int bKEC
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::bDVMAJOR
static const int bDVMAJOR
Definition: ESDataFormatterV1_1.h:38
data
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:79
ESDataFormatterV1_1::sDCOMFLAG
static const int sDCOMFLAG
Definition: ESDataFormatterV1_1.h:39
ESDataFormatter::Meta_Data::lv1
int lv1
Definition: ESDataFormatter.h:22
ESDataFormatterV1_1::bDVMINOR
static const int bDVMINOR
Definition: ESDataFormatterV1_1.h:38
ESDataFormatterV1_1::bADC2
static const int bADC2
Definition: ESDataFormatterV1_1.h:43
ESDataFormatterV1_1::sKFLAG1
static const int sKFLAG1
Definition: ESDataFormatterV1_1.h:42
ESDataFormatter::trgtype_
const int trgtype_
Definition: ESDataFormatter.h:49
ESDataFormatterV1_1::bADC0
static const int bADC0
Definition: ESDataFormatterV1_1.h:43
FEDHeader.h
ESDataFormatterV1_1::sSTRIP
static const int sSTRIP
Definition: ESDataFormatterV1_1.h:44
ESDataFormatterV1_1::sDVMINOR
static const int sDVMINOR
Definition: ESDataFormatterV1_1.h:40
ESDataFormatterV1_1::bKCRC
static const int bKCRC
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::bDHEAD
static const int bDHEAD
Definition: ESDataFormatterV1_1.h:37
ESDataFormatterV1_1::bDTRGTYPE
static const int bDTRGTYPE
Definition: ESDataFormatterV1_1.h:37
ESDetId::zside
int zside() const
Definition: ESDetId.h:39
ESDataFrame::id
const ESDetId & id() const
Definition: ESDataFrame.h:19
ESDataFormatterV1_1::sDRUNTYPE
static const int sDRUNTYPE
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::sDHEAD
static const int sDHEAD
Definition: ESDataFormatterV1_1.h:39
ESDataFormatterV1_1::bKHEAD2
static const int bKHEAD2
Definition: ESDataFormatterV1_1.h:41
ESDataFormatterV1_1::sDTRGTYPE
static const int sDTRGTYPE
Definition: ESDataFormatterV1_1.h:39
CRC16.h
FEDTrailer.h