CMS 3D CMS Logo

ScCALORawToDigi.cc
Go to the documentation of this file.
2 
4  using namespace edm;
5  using namespace l1ScoutingRun3;
6  srcInputTag_ = iConfig.getParameter<InputTag>("srcInputTag");
7  enableAllSums_ = iConfig.getParameter<bool>("enableAllSums");
8  debug_ = iConfig.getUntrackedParameter<bool>("debug", false);
9  dataSourceConfig_ = iConfig.getParameter<edm::ParameterSet>("dataSource");
10  rawToken_ = consumes<SDSRawDataCollection>(srcInputTag_);
11 
12  orbitBufferJets_ = std::vector<std::vector<Jet>>(3565);
13  orbitBufferEGammas_ = std::vector<std::vector<EGamma>>(3565);
14  orbitBufferTaus_ = std::vector<std::vector<Tau>>(3565);
15  orbitBufferEtSums_ = std::vector<std::vector<BxSums>>(3565);
16 
17  nJetsOrbit_ = 0;
18  nEGammasOrbit_ = 0;
19  nTausOrbit_ = 0;
20  nEtSumsOrbit_ = 0;
21 
22  produces<JetOrbitCollection>("Jet").setBranchAlias("JetOrbitCollection");
23  produces<TauOrbitCollection>("Tau").setBranchAlias("TauOrbitCollection");
24  produces<EGammaOrbitCollection>("EGamma").setBranchAlias("EGammaOrbitCollection");
25  produces<BxSumsOrbitCollection>("EtSum").setBranchAlias("BxSumsOrbitCollection");
26 }
27 
29 
31  using namespace edm;
32  using namespace l1ScoutingRun3;
33 
34  Handle<SDSRawDataCollection> ScoutingRawDataCollection;
35  iEvent.getByToken(rawToken_, ScoutingRawDataCollection);
36 
37  std::unique_ptr<JetOrbitCollection> unpackedJets(new JetOrbitCollection);
38  std::unique_ptr<TauOrbitCollection> unpackedTaus(new TauOrbitCollection);
39  std::unique_ptr<EGammaOrbitCollection> unpackedEGammas(new EGammaOrbitCollection);
40  std::unique_ptr<BxSumsOrbitCollection> unpackedEtSums(new BxSumsOrbitCollection);
41 
42  // reset counters
43  nJetsOrbit_ = 0;
44  nEGammasOrbit_ = 0;
45  nTausOrbit_ = 0;
46  nEtSumsOrbit_ = 0;
47 
49  if (dataSourceMode == "DMA") {
50  // Packet from DMA contains all the objects
51  int sourceId = dataSourceConfig_.getParameter<int>("dmaSourceId");
53  edm::LogWarning("ScCaloRawToDIgi::produce") << "Provided an unexpected source ID: " << sourceId << "/"
54  << SDSNumbering::CaloSDSID << " [provided/expected]";
55  unpackOrbitFromDMA(ScoutingRawDataCollection, sourceId);
56  } else if (dataSourceMode == "TCP") {
57  // unpack jets
58  jetSourceIdList_ = dataSourceConfig_.getParameter<std::vector<int>>("jetSourceIdList");
59  unpackTcpData(ScoutingRawDataCollection, jetSourceIdList_, CaloObjectType::Jet);
60 
61  // unpack e/gamma
62  eGammaSourceIdList_ = dataSourceConfig_.getParameter<std::vector<int>>("eGammaSourceIdList");
63  unpackTcpData(ScoutingRawDataCollection, eGammaSourceIdList_, CaloObjectType::EGamma);
64 
65  // unpack taus
66  tauSourceIdList_ = dataSourceConfig_.getParameter<std::vector<int>>("tauSourceIdList");
67  unpackTcpData(ScoutingRawDataCollection, tauSourceIdList_, CaloObjectType::Tau);
68 
69  // unpack et sums
70  etSumSourceIdList_ = dataSourceConfig_.getParameter<std::vector<int>>("etSumSourceIdList");
71  unpackTcpData(ScoutingRawDataCollection, etSumSourceIdList_, CaloObjectType::EtSum);
72  } else {
73  throw cms::Exception("ScCaloRawToDIgi::produce") << "Unknown data source mode. Use DMA or TCP(default).";
74  }
75 
76  // fill orbit collection and clear the Bx buffer vector
77  unpackedJets->fillAndClear(orbitBufferJets_, nJetsOrbit_);
78  unpackedEGammas->fillAndClear(orbitBufferEGammas_, nEGammasOrbit_);
79  unpackedTaus->fillAndClear(orbitBufferTaus_, nTausOrbit_);
80  unpackedEtSums->fillAndClear(orbitBufferEtSums_, nEtSumsOrbit_);
81 
82  // store collections in the event
83  iEvent.put(std::move(unpackedJets), "Jet");
84  iEvent.put(std::move(unpackedTaus), "Tau");
85  iEvent.put(std::move(unpackedEGammas), "EGamma");
86  iEvent.put(std::move(unpackedEtSums), "EtSum");
87 }
88 
90  using namespace l1ScoutingRun3;
91 
92  const FEDRawData& sourceRawData = ScoutingRawDataCollection->FEDData(sourceId);
93  if ((sourceRawData.size() == 0) && debug_) {
94  std::cout << "No raw data for CALO DMA source ID=" << sourceId << std::endl;
95  }
96 
97  // get orbit size and raw data
98  size_t len = sourceRawData.size();
99  const unsigned char* buf = sourceRawData.data();
100 
101  size_t pos = 0;
102 
103  while (pos < len) {
104  assert(pos + sizeof(demux::dmaBlock) <= len);
105 
107  pos += sizeof(demux::dmaBlock);
108 
109  assert(pos <= len);
110  uint32_t orbit = bl->orbit & 0x7FFFFFFF;
111  uint32_t bx = bl->bx;
112 
113  if (debug_) {
114  std::cout << "CALO Orbit " << orbit << ", BX -> " << bx << std::endl;
115  }
116 
117  // unpack jets from first link
118  if (debug_)
119  std::cout << "--- Jets link 1 ---\n";
120  unpackJets(bl->jet1, bx, 6);
121 
122  // unpack jets from second link
123  if (debug_)
124  std::cout << "--- Jets link 2 ---\n";
125  unpackJets(bl->jet2, bx, 6);
126 
127  // unpack eg from first link
128  if (debug_)
129  std::cout << "--- E/g link 1 ---\n";
130  unpackEGammas(bl->egamma1, bx, 6);
131 
132  // unpack eg from second link link
133  if (debug_)
134  std::cout << "--- E/g link 2 ---\n";
135  unpackEGammas(bl->egamma2, bx, 6);
136 
137  // unpack taus from first link
138  if (debug_)
139  std::cout << "--- Taus link 1 ---\n";
140  unpackTaus(bl->tau1, bx, 6);
141 
142  // unpack taus from second link
143  if (debug_)
144  std::cout << "--- Taus link 2 ---\n";
145  unpackTaus(bl->tau2, bx, 6);
146 
147  // unpack et sums
148  if (debug_)
149  std::cout << "--- Sums ---\n";
150  unpackEtSums(bl->sum, bx);
151 
152  } // end of bx objects
153 }
154 
156  std::vector<int> sourceList,
158  using namespace l1ScoutingRun3;
159  for (const int& sourceId : sourceList) {
161  edm::LogWarning("ScCaloRawToDIgi::unpackTCPData")
162  << "Source ID outside the expected range " << sourceId << "/[" << SDSNumbering::CaloTCPMinSDSID << "-"
164  << " [provided/expected range]";
165  }
166  const FEDRawData& sourceRawData = ScoutingRawDataCollection->FEDData(sourceId);
167  size_t orbitSize = sourceRawData.size();
168 
169  if ((sourceRawData.size() == 0) && debug_) {
170  //std::cout << "No raw data for calo " << CaloObjTypeTxt[dataType] << ", TCP source ID=" << sourceId << std::endl;
171  std::cout << "No raw data for calo TCP source ID=" << sourceId << std::endl;
172  }
173 
174  unpackOrbitFromTCP(sourceRawData.data(), orbitSize, dataType);
175  }
176 }
177 
178 void ScCaloRawToDigi::unpackOrbitFromTCP(const unsigned char* buf, size_t len, CaloObjectType dataType) {
179  using namespace l1ScoutingRun3;
180  size_t pos = 0;
181 
182  while (pos < len) {
183  // frame header is present
184  assert(pos + 4 <= len);
185 
186  // unpack calo sums block
189  pos += sizeof(demux::caloSumTcpBlock);
190  assert(pos <= len);
191  if (debug_)
192  std::cout << "Sums BX -> " << bl->bx << std::endl;
193  unpackEtSums(bl->sum, bl->bx);
194  } else {
195  // unpack jet/eg/tau
197  int nObj = (bl->header) & 0xff;
198  pos += 12 + nObj * 4;
199 
200  switch (dataType) {
201  case CaloObjectType::Jet:
202  if (debug_)
203  std::cout << "Jets BX -> " << bl->bx << std::endl;
204  unpackJets(bl->obj, bl->bx, nObj);
205  break;
206 
208  if (debug_)
209  std::cout << "E/Gammas BX -> " << bl->bx << std::endl;
210  unpackEGammas(bl->obj, bl->bx, nObj);
211  break;
212 
213  case CaloObjectType::Tau:
214  if (debug_)
215  std::cout << "Taus BX -> " << bl->bx << std::endl;
216  unpackTaus(bl->obj, bl->bx, nObj);
217  break;
218 
219  default:
220  throw cms::Exception("ScCaloRawToDigi::unpackOrbitFromTCP") << "Unknown data type.";
221  break;
222  }
223 
224  } // unpack sums and calo objects
225 
226  } // end of bx objects
227 }
228 
229 void ScCaloRawToDigi::unpackJets(uint32_t* dataBlock, int bx, int nObjets) {
230  using namespace l1ScoutingRun3;
231 
232  int32_t ET(0), Eta(0), Phi(0), Qual(0);
233  for (int i = 0; i < nObjets; i++) {
234  ET = ((dataBlock[i] >> demux::shiftsJet::ET) & demux::masksJet::ET);
235 
236  if (ET != 0) {
237  Eta = ((dataBlock[i] >> demux::shiftsJet::eta) & demux::masksJet::eta);
238  Phi = ((dataBlock[i] >> demux::shiftsJet::phi) & demux::masksJet::phi);
239  Qual = ((dataBlock[i] >> demux::shiftsJet::qual) & demux::masksJet::qual);
240 
241  if (Eta > 127)
242  Eta = Eta - 256;
243 
244  Jet jet(ET, Eta, Phi, Qual);
245  orbitBufferJets_[bx].push_back(jet);
246  nJetsOrbit_++;
247 
248  if (debug_) {
249  std::cout << "Jet " << i << std::endl;
250  std::cout << " Raw: 0x" << std::hex << dataBlock[i] << std::dec << std::endl;
251  printJet(jet);
252  }
253  }
254  } // end link jets unpacking loop
255 }
256 
257 void ScCaloRawToDigi::unpackEGammas(uint32_t* dataBlock, int bx, int nObjets) {
258  using namespace l1ScoutingRun3;
259 
260  int32_t ET(0), Eta(0), Phi(0), Iso(0);
261  for (int i = 0; i < nObjets; i++) {
262  ET = ((dataBlock[i] >> demux::shiftsEGamma::ET) & demux::masksEGamma::ET);
263  if (ET != 0) {
264  Eta = ((dataBlock[i] >> demux::shiftsEGamma::eta) & demux::masksEGamma::eta);
266  Iso = ((dataBlock[i] >> demux::shiftsEGamma::iso) & demux::masksEGamma::iso);
267 
268  if (Eta > 127)
269  Eta = Eta - 256;
270 
271  EGamma eGamma(ET, Eta, Phi, Iso);
272  orbitBufferEGammas_[bx].push_back(eGamma);
273  nEGammasOrbit_++;
274 
275  if (debug_) {
276  std::cout << "E/g " << i << std::endl;
277  std::cout << " Raw: 0x" << std::hex << dataBlock[i] << std::dec << std::endl;
278  printEGamma(eGamma);
279  }
280  }
281  } // end link e/gammas unpacking loop
282 }
283 
284 void ScCaloRawToDigi::unpackTaus(uint32_t* dataBlock, int bx, int nObjets) {
285  using namespace l1ScoutingRun3;
286 
287  int32_t ET(0), Eta(0), Phi(0), Iso(0);
288  for (int i = 0; i < nObjets; i++) {
289  ET = ((dataBlock[i] >> demux::shiftsTau::ET) & demux::masksTau::ET);
290  if (ET != 0) {
291  Eta = ((dataBlock[i] >> demux::shiftsTau::eta) & demux::masksTau::eta);
292  Phi = ((dataBlock[i] >> demux::shiftsTau::phi) & demux::masksTau::phi);
293  Iso = ((dataBlock[i] >> demux::shiftsTau::iso) & demux::masksTau::iso);
294 
295  if (Eta > 127)
296  Eta = Eta - 256;
297 
298  Tau tau(ET, Eta, Phi, Iso);
299  orbitBufferTaus_[bx].push_back(tau);
300  nTausOrbit_++;
301 
302  if (debug_) {
303  std::cout << "Tau " << i << std::endl;
304  std::cout << " Raw: 0x" << std::hex << dataBlock[i] << std::dec << std::endl;
305  printTau(tau);
306  }
307  }
308  } // end link taus unpacking loop
309 }
310 
311 void ScCaloRawToDigi::unpackEtSums(uint32_t* dataBlock, int bx) {
312  using namespace l1ScoutingRun3;
313 
314  BxSums bxSums;
315 
316  int32_t ETEt(0), ETEttem(0), ETMinBiasHFP0(0); // ET block
317  int32_t HTEt(0), HTtowerCount(0), HTMinBiasHFM0(0); // HT block
318  int32_t ETmissEt(0), ETmissPhi(0), ETmissASYMET(0), ETmissMinBiasHFP1(0); // ETMiss block
319  int32_t HTmissEt(0), HTmissPhi(0), HTmissASYMHT(0), HTmissMinBiasHFM1(0); // HTMiss block
320  int32_t ETHFmissEt(0), ETHFmissPhi(0), ETHFmissASYMETHF(0), ETHFmissCENT(0); // ETHFMiss block
321  int32_t HTHFmissEt(0), HTHFmissPhi(0), HTHFmissASYMHTHF(0), HTHFmissCENT(0); // HTHFMiss block
322 
323  // ET block
324  ETEt = ((dataBlock[0] >> demux::shiftsESums::ETEt) & demux::masksESums::ETEt);
325  ETEttem = ((dataBlock[0] >> demux::shiftsESums::ETEttem) & demux::masksESums::ETEttem);
326 
327  bxSums.setHwTotalEt(ETEt);
328  bxSums.setHwTotalEtEm(ETEttem);
329 
330  // HT block
331  HTEt = ((dataBlock[1] >> demux::shiftsESums::HTEt) & demux::masksESums::HTEt);
332 
333  bxSums.setHwTotalHt(HTEt);
334 
335  // ETMiss block
336  ETmissEt = ((dataBlock[2] >> demux::shiftsESums::ETmissEt) & demux::masksESums::ETmissEt);
337  ETmissPhi = ((dataBlock[2] >> demux::shiftsESums::ETmissPhi) & demux::masksESums::ETmissPhi);
338 
339  if (ETmissEt > 0) {
340  bxSums.setHwMissEt(ETmissEt);
341  bxSums.setHwMissEtPhi(ETmissPhi);
342  }
343 
344  // HTMiss block
345  HTmissEt = ((dataBlock[3] >> demux::shiftsESums::HTmissEt) & demux::masksESums::HTmissEt);
346  HTmissPhi = ((dataBlock[3] >> demux::shiftsESums::HTmissPhi) & demux::masksESums::HTmissPhi);
347 
348  if (HTmissEt > 0) {
349  bxSums.setHwMissHt(HTmissEt);
350  bxSums.setHwMissHtPhi(HTmissPhi);
351  }
352 
353  // ETHFMiss block
354  ETHFmissEt = ((dataBlock[4] >> demux::shiftsESums::ETHFmissEt) & demux::masksESums::ETHFmissEt);
355  ETHFmissPhi = ((dataBlock[4] >> demux::shiftsESums::ETHFmissPhi) & demux::masksESums::ETHFmissPhi);
356 
357  if (ETHFmissEt > 0) {
358  bxSums.setHwMissEtHF(ETHFmissEt);
359  bxSums.setHwMissEtHFPhi(ETHFmissPhi);
360  }
361 
362  // HTHFMiss block
363  HTHFmissEt = ((dataBlock[5] >> demux::shiftsESums::ETHFmissEt) & demux::masksESums::ETHFmissEt);
364  HTHFmissPhi = ((dataBlock[5] >> demux::shiftsESums::ETHFmissPhi) & demux::masksESums::ETHFmissPhi);
365 
366  if (HTHFmissEt > 0) {
367  bxSums.setHwMissHtHF(HTHFmissEt);
368  bxSums.setHwMissHtHFPhi(HTHFmissPhi);
369  }
370 
371  // Insert additional sums
372  if (enableAllSums_) {
373  // ET block
374  ETMinBiasHFP0 = ((dataBlock[0] >> demux::shiftsESums::ETMinBiasHF) & demux::masksESums::ETMinBiasHF);
375  bxSums.setMinBiasHFP0(ETMinBiasHFP0);
376 
377  // HT block
378  HTtowerCount = ((dataBlock[1] >> demux::shiftsESums::HTtowerCount) & demux::masksESums::HTtowerCount);
379  HTMinBiasHFM0 = ((dataBlock[1] >> demux::shiftsESums::HTMinBiasHF) & demux::masksESums::HTMinBiasHF);
380 
381  bxSums.setTowerCount(HTtowerCount);
382  bxSums.setMinBiasHFM0(HTMinBiasHFM0);
383 
384  // ET Miss block
385  ETmissASYMET = ((dataBlock[2] >> demux::shiftsESums::ETmissASYMET) & demux::masksESums::ETmissASYMET);
386  ETmissMinBiasHFP1 = ((dataBlock[2] >> demux::shiftsESums::ETmissMinBiasHF) & demux::masksESums::ETmissMinBiasHF);
387  bxSums.setHwAsymEt(ETmissASYMET);
388  bxSums.setMinBiasHFP1(ETmissMinBiasHFP1);
389 
390  // HT Miss block
391  HTmissASYMHT = ((dataBlock[3] >> demux::shiftsESums::HTmissASYMHT) & demux::masksESums::HTmissASYMHT);
392  HTmissMinBiasHFM1 = ((dataBlock[3] >> demux::shiftsESums::HTmissMinBiasHF) & demux::masksESums::HTmissMinBiasHF);
393 
394  bxSums.setHwAsymHt(HTmissASYMHT);
395  bxSums.setMinBiasHFM1(HTmissMinBiasHFM1);
396 
397  // ETHFMiss
398  ETHFmissASYMETHF = ((dataBlock[4] >> demux::shiftsESums::ETHFmissASYMETHF) & demux::masksESums::ETHFmissASYMETHF);
399  ETHFmissCENT = ((dataBlock[4] >> demux::shiftsESums::ETHFmissCENT) & demux::masksESums::ETHFmissCENT);
400 
401  bxSums.setHwAsymEtHF(ETHFmissASYMETHF);
402 
403  // HTHFMiss
404  HTHFmissASYMHTHF = ((dataBlock[5] >> demux::shiftsESums::ETHFmissASYMETHF) & demux::masksESums::ETHFmissASYMETHF);
405  HTHFmissCENT = ((dataBlock[5] >> demux::shiftsESums::ETHFmissCENT) & demux::masksESums::ETHFmissCENT);
406 
407  bxSums.setHwAsymHtHF(HTHFmissASYMHTHF);
408  bxSums.setCentrality((HTHFmissCENT << 4) + ETHFmissCENT);
409  }
410 
411  orbitBufferEtSums_[bx].push_back(bxSums);
412  nEtSumsOrbit_ += 1;
413 
414  if (debug_) {
415  std::cout << "Raw frames:\n";
416  for (int frame = 0; frame < 6; frame++) {
417  std::cout << " frame " << frame << ": 0x" << std::hex << dataBlock[frame] << std::dec << std::endl;
418  }
419  printBxSums(bxSums);
420  }
421 }
422 
425  desc.add<edm::InputTag>("srcInputTag", edm::InputTag("rawDataCollector"));
426  {
428  dataSource.add<std::string>("dataSourceMode", std::string("TCP"));
429  dataSource.add<std::vector<int>>("jetSourceIdList", std::vector<int>({22}));
430  dataSource.add<std::vector<int>>("eGammaSourceIdList", std::vector<int>({23}));
431  dataSource.add<std::vector<int>>("tauSourceIdList", std::vector<int>({25}));
432  dataSource.add<std::vector<int>>("etSumSourceIdList", std::vector<int>({24}));
433  dataSource.add<int>("dmaSourceId", 2);
434  desc.add("dataSource", dataSource);
435  }
436  desc.add<bool>("enableAllSums", true);
437  desc.addUntracked<bool>("debug", false);
438  descriptions.add("ScCaloRawToDigi", desc);
439 }
440 
void setHwTotalEtEm(int hwTotalEtEm)
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
void setHwMissEtHFPhi(int hwMissEtHFPhi)
void produce(edm::Event &, const edm::EventSetup &) override
void setMinBiasHFM0(int minBiasHFM0)
void unpackOrbitFromTCP(const unsigned char *buf, size_t len, CaloObjectType dataType)
void setMinBiasHFP0(int minBiasHFP0)
static constexpr int CaloTCPMinSDSID
Definition: SDSNumbering.h:22
edm::InputTag srcInputTag_
void unpackTcpData(edm::Handle< SDSRawDataCollection > &ScoutingRawDataCollection, std::vector< int > sourceList, CaloObjectType dataType)
void setHwAsymHtHF(int hwAsymHtHF)
~ScCaloRawToDigi() override
void unpackJets(uint32_t *dataBlock, int bx, int nObjets)
const FEDRawData & FEDData(int sourceId) const
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:48
void printJet(const Jet &jet, std::ostream &outs=std::cout)
void printEGamma(const EGamma &eGamma, std::ostream &outs=std::cout)
assert(be >=bs)
void printBxSums(const BxSums &sums, std::ostream &outs=std::cout)
std::vector< int > etSumSourceIdList_
std::vector< std::vector< l1ScoutingRun3::Tau > > orbitBufferTaus_
T getUntrackedParameter(std::string const &, T const &) const
void unpackTaus(uint32_t *dataBlock, int bx, int nObjets)
ScCaloRawToDigi(const edm::ParameterSet &)
std::vector< int > eGammaSourceIdList_
void setHwMissEtHF(int hwMissEtHF)
int iEvent
Definition: GenABIO.cc:224
void setHwAsymHt(int hwAsymHt)
Definition: Jet.py:1
void setHwMissHtHF(int hwMissHtHF)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void unpackEtSums(uint32_t *dataBlock, int bx)
void setHwTotalHt(int hwTotalHt)
std::vector< std::vector< l1ScoutingRun3::BxSums > > orbitBufferEtSums_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
static constexpr int CaloSDSID
Definition: SDSNumbering.h:18
void setHwAsymEtHF(int hwAsymEtHF)
void setCentrality(int centrality)
std::vector< std::vector< l1ScoutingRun3::EGamma > > orbitBufferEGammas_
edm::ParameterSet dataSourceConfig_
void setTowerCount(int towerCount)
void setHwMissHt(int hwMissHt)
std::vector< int > tauSourceIdList_
Definition: Tau.py:1
void setHwAsymEt(int hwAsymEt)
void setMinBiasHFM1(int minBiasHFM1)
void setMinBiasHFP1(int minBiasHFP1)
void printTau(const Tau &tau, std::ostream &outs=std::cout)
static constexpr int CaloTCPMaxSDSID
Definition: SDSNumbering.h:23
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< int > jetSourceIdList_
std::vector< std::vector< l1ScoutingRun3::Jet > > orbitBufferJets_
void setHwMissEtPhi(int hwMissEtPhi)
void unpackEGammas(uint32_t *dataBlock, int bx, int nObjets)
HLT enums.
void setHwTotalEt(int hwTotalEt)
void setHwMissHtPhi(int hwMissHtPhi)
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:24
edm::EDGetToken rawToken_
#define ET
void unpackOrbitFromDMA(edm::Handle< SDSRawDataCollection > &ScoutingRawDataCollection, int sourceId)
Log< level::Warning, false > LogWarning
void setHwMissEt(int hwMissEt)
void setHwMissHtHFPhi(int hwMissHtHFPhi)
def move(src, dest)
Definition: eostools.py:511