CMS 3D CMS Logo

Public Member Functions | Private Attributes

evf::EvFRecordUnpacker Class Reference

#include <EvFRecordUnpacker.h>

Inheritance diagram for evf::EvFRecordUnpacker:
edm::EDAnalyzer

List of all members.

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 EvFRecordUnpacker (const edm::ParameterSet &)
 ~EvFRecordUnpacker ()

Private Attributes

TH2F * corre_
TFile * f_
TH1F * l1_rb_delay_
edm::InputTag label_
TH1F * node_usage_

Detailed Description

Definition at line 15 of file EvFRecordUnpacker.h.


Constructor & Destructor Documentation

data doxygen doxygen gen CMSSW_4_2_8 src EventFilter Utilities plugins EvFRecordUnpacker cc evf::EvFRecordUnpacker::EvFRecordUnpacker ( const edm::ParameterSet pset)

Definition at line 13 of file EvFRecordUnpacker.cc.

References newFWLiteAna::bin.

    : label_(pset.getParameter<edm::InputTag>("inputTag"))
    , node_usage_(0)
    , l1_rb_delay_(0)
  {
    node_usage_ = new TH1F("nodes","node usage",1600,0.,1600.);
    l1_rb_delay_ = new TH1F("l1-rb","l1-rb delay in ms",1000,0.,10000.);
    corre_ = new TH2F("corre","Correlation",1600,0.,1600.,1000,0.,10000.); 
    for(unsigned int row = 0xa; row <=0xf; row++)
      for(unsigned int rack = 11; rack <= 18; rack++)
        for(unsigned int position_in_rack = 1; position_in_rack<=30;
            position_in_rack++)
          {
            unsigned int bin = (row-0xa)*9*30+(rack-11)*30+position_in_rack+1;
            std::ostringstream ost;
            ost << std::hex << row << "-" << std::dec << rack << "-" 
                << std::setfill('0') <<  std::setw(2) << position_in_rack;
            node_usage_->GetXaxis()->SetBinLabel(bin,ost.str().c_str());
            corre_->GetXaxis()->SetBinLabel(bin,ost.str().c_str());
          }
 
    f_ = new TFile("histos.root","RECREATE");
  }
  EvFRecordUnpacker::~EvFRecordUnpacker()
evf::EvFRecordUnpacker::~EvFRecordUnpacker ( )

Definition at line 36 of file EvFRecordUnpacker.cc.

References corre_, f_, l1_rb_delay_, and node_usage_.

  {
    f_->cd();
    node_usage_->Write();
    l1_rb_delay_->Write();
    corre_->Write();
    f_->Write();
    f_->Close();
    delete f_;
    delete corre_;
    if(node_usage_ !=0) delete node_usage_;
    if(l1_rb_delay_!=0) delete l1_rb_delay_;
  }


Member Function Documentation

void evf::EvFRecordUnpacker::analyze ( const edm::Event e,
const edm::EventSetup c 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 50 of file EvFRecordUnpacker.cc.

References corre_, runTheMatrix::data, edm::Event::eventAuxiliary(), evf::fedinterface::EVFFED_ID, evf::fedinterface::EVFFED_RBIDENT_OFFSET, evf::fedinterface::EVFFED_RBPCIDE_MASK, evf::fedinterface::EVFFED_RBPCIDE_SHIFT, evf::fedinterface::EVFFED_RBWCTIM_OFFSET, edm::Event::getByLabel(), l1_rb_delay_, label_, node_usage_, asciidump::s, edm::Timestamp::value(), and x.

  {
    edm::Timestamp ts = e.eventAuxiliary().time();

    using namespace fedinterface;
    edm::Handle<FEDRawDataCollection> rawdata;
    e.getByLabel(label_,rawdata);
    unsigned int id = fedinterface::EVFFED_ID;
    const FEDRawData& data = rawdata->FEDData(id);
    //    size_t size=data.size();
    unsigned int rbident = *((unsigned int*)(data.data()+EVFFED_RBIDENT_OFFSET));
    uint64_t rbtime = *((uint64_t*)(data.data()+EVFFED_RBWCTIM_OFFSET));
    unsigned int s = (unsigned int)((rbtime >> 32)-(ts.value() >> 32));
    unsigned int us = (unsigned int)((rbtime & 0xffffffff) - (ts.value() & 0xffffffff));
    float deltams= s*1000.+((float)us)/1000.;

    unsigned int nodeid = (rbident >> EVFFED_RBPCIDE_SHIFT) & EVFFED_RBPCIDE_MASK;
    unsigned int rackid = (nodeid&0xfff00)>>8;
    unsigned int position_in_rack = nodeid&0x000ff;
    //    std::cout << std::hex << rbident << " node id " << nodeid << " rack " << rackid << " position " << position_in_rack << std::dec << std::endl;
    unsigned int row = ((rackid & 0xf00) >> 8)-10;
    unsigned int rackno = (rackid & 0x0ff)-0x11;
    //    std::cout << "row " << row << " rackno " << rackno << std::endl;
    //    std::cout << "BIN " <<  row*9*30+rackno*30+position_in_rack << std::endl;
    position_in_rack = position_in_rack%16 + position_in_rack/16*10;

    float x = (row*9*30+rackno*30+position_in_rack)-0.00001;
    //    std::cout << " X " << x << std::endl;
    node_usage_->Fill(x,1.);
    l1_rb_delay_->Fill(deltams,1.);
    corre_->Fill(x,deltams,1.);
  }
}

Member Data Documentation

Definition at line 26 of file EvFRecordUnpacker.h.

Referenced by analyze(), and ~EvFRecordUnpacker().

TFile* evf::EvFRecordUnpacker::f_ [private]

Definition at line 27 of file EvFRecordUnpacker.h.

Referenced by ~EvFRecordUnpacker().

Definition at line 25 of file EvFRecordUnpacker.h.

Referenced by analyze(), and ~EvFRecordUnpacker().

Definition at line 23 of file EvFRecordUnpacker.h.

Referenced by analyze().

Definition at line 24 of file EvFRecordUnpacker.h.

Referenced by analyze(), and ~EvFRecordUnpacker().