204 std::cout <<
"L1TdeGCT::analyze() start\n" << std::flush;
212 <<
"Cannot find L1DataEmulRecord"
213 <<
" Please verify that comparator was successfully executed."
214 <<
" Emulator DQM for GCT will be skipped!"
220 bool isComp = deRecord->get_isComp(
GCT);
223 std::cout <<
"[L1TdeGCT] Gct information not generated in de-record."
224 <<
" Skiping event!\n" << std::flush;
229 for(
int j=0;
j<2;
j++)
230 DEncand[
j] = deRecord->getNCand(
GCT,
j);
234 <<
" data: " << DEncand[0]
235 <<
" emul: " << DEncand[1]
241 deColl = deRecord->getColl();
250 for(L1DEDigiCollection::const_iterator it=deColl.begin();
251 it!=deColl.end(); it++)
254 gctColl.push_back(*it);
257 std::cout <<
"[L1TdeGCT] record has " << gctColl.size()
258 <<
" gct de digis\n" << std::flush;
259 for(L1DEDigiCollection::const_iterator it=gctColl.begin();
260 it!=gctColl.end(); it++)
269 for(L1DEDigiCollection::const_iterator it=gctColl.begin();
270 it!=gctColl.end(); it++) {
279 std::cout <<
"[L1TdeGCT] processing digi "
287 if(sid!=
GCT || it->empty()) {
288 LogDebug(
"L1TdeGCT") <<
"consistency check failure, non-gct digis!";
292 int type = it->type();
293 double phiv = it->x1();
294 double etav = it->x2();
297 float rnkv = rankarr[0];
301 unsigned int mask = (~0x0);
306 LogDebug(
"L1TdeGCT") <<
"consistency check failure, col type outbounds:"
314 if(it->type()<5&&it->type()!=3)
319 wei=1.;
if(!type) wei=0.;
320 if(etav!=nullVal && phiv!=nullVal)
329 wei=1.;
if(type==4) wei=0.;
338 unsigned int word[2];
340 std::bitset<32> dbits(word[0]);
341 std::bitset<32> ebits(word[1]);
342 unsigned int dexor = ( (word[0]) ^ (word[1]) );
344 std::bitset<32> debits(dexor);
346 std::bitset<32> dembits( ( (dexor) & (mask) ) );
350 <<
" sid:" << sid <<
" cid:" << cid <<
"\n"
351 <<
" data:0x" << std::hex << word[0] <<
std::dec
352 <<
" bitset:" << dbits
354 <<
" emul:0x" << std::hex << word[1] <<
std::dec
355 <<
" bitset:" << ebits
357 <<
" xor:0x" << std::hex << dexor <<
std::dec
358 <<
" bitset:" << debits
359 <<
" bitset:" << ( (dbits) ^ (ebits) )
360 <<
"\n" << std::flush;
363 for(
int ibit=0; ibit<32; ibit++) {
366 if(type==3 || type==4) wei=0.;
367 if(dbits [ibit])
dword[sid]->
Fill(ibit,wei);
368 if(ebits [ibit])
eword[sid]->
Fill(ibit,wei);
379 for(L1DEDigiCollection::const_iterator it=gctColl.begin();
380 it!=gctColl.end(); it++) {
382 ccid = (ccid<0 || ccid >=
nGctColl_) ? 0:ccid;
388 if(!hasCol[
i])
continue;
401 std::cout <<
"[L1TDEMON] analyze rate computation\t\n"
407 <<
"hasCol: " << hasCol[
i]
408 <<
" nagree: " << nagree[
i]
410 <<
"\n" << std::flush;
411 if(rate>1. || rate<0.)
414 <<
"\n" << std::flush;
420 std::cout <<
"L1TdeGCT::analyze() end.\n" << std::flush;
void setBinContent(int binx, double content)
set content of bin (1-D)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * phiData[nGctColl_]
MonitorElement * phi[nGctColl_]
MonitorElement * eta[nGctColl_]
MonitorElement * sysrates
std::vector< L1DataEmulDigi > L1DEDigiCollection
static const int nGctColl_
MonitorElement * etaData[nGctColl_]
MonitorElement * rnk[nGctColl_]
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * errortype[nGctColl_]
MonitorElement * rnkData[nGctColl_]
MonitorElement * sysncand[2]
MonitorElement * dword[nGctColl_]
edm::EDGetTokenT< L1DataEmulRecord > DEsource_
const std::string SystLabel[DEnsys]
double getBinContent(int binx) const
get content of bin (1-D)
MonitorElement * deword[nGctColl_]
MonitorElement * eword[nGctColl_]
MonitorElement * etaphi[nGctColl_]