Skip to content

Commit

Permalink
move L1TFED to DQMEDAnalyzer interface
Browse files Browse the repository at this point in the history
  • Loading branch information
deguio committed Jun 13, 2014
1 parent ebc64aa commit 7765ba9
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 124 deletions.
18 changes: 3 additions & 15 deletions DQM/L1TMonitor/interface/L1TFED.h
Expand Up @@ -14,14 +14,13 @@

// user include files
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/EDAnalyzer.h"

#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/DQMEDAnalyzer.h"
#include "DQMServices/Core/interface/MonitorElement.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
Expand All @@ -39,7 +38,7 @@
// class decleration
//

class L1TFED : public edm::EDAnalyzer {
class L1TFED : public DQMEDAnalyzer {

public:

Expand All @@ -53,30 +52,19 @@ virtual ~L1TFED();
// Analyze
void analyze(const edm::Event& e, const edm::EventSetup& c);

// BeginJob
void beginJob(void);

// BeginRun
void beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup);

// EndJob
void endJob(void);
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;

private:
// ----------member data ---------------------------
DQMStore * dbe;

// MonitorElement* fedtest;
MonitorElement * hfedsize;
MonitorElement * hfedprof;
// MonitorElement ** hindfed;

MonitorElement* fedentries;
MonitorElement* fedfatal;
MonitorElement* fednonfatal;

int nev_; // Number of events processed
std::string outputFile_; //file name for ROOT ouput
bool verbose_;
bool monitorDaemon_;
std::vector<int> l1feds_;
Expand Down
2 changes: 0 additions & 2 deletions DQM/L1TMonitor/python/L1TFED_cfi.py
@@ -1,9 +1,7 @@
import FWCore.ParameterSet.Config as cms

l1tfed = cms.EDAnalyzer("L1TFED",
disableROOToutput = cms.untracked.bool(True),
verbose = cms.untracked.bool(False),
DQMStore = cms.untracked.bool(True),
L1FEDS = cms.vint32(745,760,780,812,813),
rawTag = cms.InputTag( "source" ),
FEDDirName = cms.untracked.string("L1T/FEDIntegrity"),
Expand Down
144 changes: 37 additions & 107 deletions DQM/L1TMonitor/src/L1TFED.cc
Expand Up @@ -12,94 +12,41 @@ using namespace edm;

L1TFED::L1TFED(const ParameterSet& ps)
{

// verbosity switch
verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
rawl_ = consumes<FEDRawDataCollection>(ps.getParameter< InputTag >("rawTag"));
if(verbose_) cout << "L1TFED: constructor...." << endl;


dbe = NULL;
if ( ps.getUntrackedParameter<bool>("DQMStore", false) )
{
dbe = Service<DQMStore>().operator->();
dbe->setVerbose(0);
}

outputFile_ = ps.getUntrackedParameter<string>("outputFile", "");
if ( outputFile_.size() != 0 ) {
cout << "L1T Monitoring histograms will be saved to " << outputFile_.c_str() << endl;
}

bool disable = ps.getUntrackedParameter<bool>("disableROOToutput", false);
if(disable){
outputFile_="";
}

l1feds_ = ps.getParameter<std::vector<int> >("L1FEDS");

directory_ = ps.getUntrackedParameter<std::string>("FEDDirName","L1T/FEDIntegrity");


if ( dbe !=NULL ) {
dbe->setCurrentFolder(directory_);
}

verbose_ = ps.getUntrackedParameter<bool>("verbose", false);
l1feds_ = ps.getParameter<std::vector<int> >("L1FEDS");
directory_ = ps.getUntrackedParameter<std::string>("FEDDirName","L1T/FEDIntegrity");
stableROConfig_ = ps.getUntrackedParameter<bool>("stableROConfig", true);
}
rawl_ = consumes<FEDRawDataCollection>(ps.getParameter< InputTag >("rawTag"));

L1TFED::~L1TFED()
{
if(verbose_) cout << "L1TFED: constructor...." << endl;
nev_ = 0;
}

void L1TFED::beginJob(void)
L1TFED::~L1TFED()
{
nev_ = 0;
}

void L1TFED::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup)
void L1TFED::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const & iRun, edm::EventSetup const & iSetup)
{
if ( dbe ) {
dbe->setCurrentFolder(directory_);
dbe->rmdir(directory_);
ibooker.setCurrentFolder(directory_);

fedentries = ibooker.book1D("FEDEntries", "Fed ID occupancy", l1feds_.size(), 0.,l1feds_.size() );
fedfatal = ibooker.book1D("FEDFatal", "Fed ID non present ", l1feds_.size(), 0., l1feds_.size());
fednonfatal = ibooker.book1D("FEDNonFatal", "Fed corrupted data ", l1feds_.size(), 0.,l1feds_.size() );
hfedprof = ibooker.bookProfile("fedprofile","FED Size by ID", l1feds_.size(), 0., l1feds_.size(),0,0.,5000.);
for(unsigned int i=0;i<l1feds_.size();i++){
ostringstream sfed;
sfed << l1feds_[i];
fedentries->setBinLabel(i+1,"FED "+ sfed.str());
fedfatal->setBinLabel(i+1,"FED "+ sfed.str());
fednonfatal->setBinLabel(i+1,"FED "+ sfed.str());
}


if ( dbe )
{
dbe->setCurrentFolder(directory_);

fedentries = dbe->book1D("FEDEntries", "Fed ID occupancy", l1feds_.size(), 0.,l1feds_.size() );
fedfatal = dbe->book1D("FEDFatal", "Fed ID non present ", l1feds_.size(), 0., l1feds_.size());
fednonfatal = dbe->book1D("FEDNonFatal", "Fed corrupted data ", l1feds_.size(), 0.,l1feds_.size() );
hfedprof = dbe->bookProfile("fedprofile","FED Size by ID", l1feds_.size(), 0., l1feds_.size(),0,0.,5000.);
for(unsigned int i=0;i<l1feds_.size();i++){
ostringstream sfed;
sfed << l1feds_[i];
fedentries->setBinLabel(i+1,"FED "+ sfed.str());
fedfatal->setBinLabel(i+1,"FED "+ sfed.str());
fednonfatal->setBinLabel(i+1,"FED "+ sfed.str());
// hfedprof->getTProfile()->GetXaxis()->SetBinLabel(i+1,"FED "+ sfed.str());

}

hfedsize = dbe->book1D("fedsize","FED Size Distribution",100,0.,10000.);

}

hfedsize = ibooker.book1D("fedsize","FED Size Distribution",100,0.,10000.);
}


void L1TFED::endJob(void)
{

if(verbose_) std::cout << "L1T FED Integrity: end job...." << std::endl;
LogInfo("EndJob") << "analyzed " << nev_ << " events";

if ( outputFile_.size() != 0 && dbe ) dbe->save(outputFile_);

return;
}

void L1TFED::analyze(const Event& e, const EventSetup& c)
{
nev_++;
Expand All @@ -123,40 +70,23 @@ void L1TFED::analyze(const Event& e, const EventSetup& c)
const FEDRawData & data = rawdata->FEDData(fedId);

if(size_t size=data.size()){

fedentries->Fill(i);
hfedsize->Fill(float(size));
hfedprof->Fill(float(i),float(size));
if(verbose_) cout << "header check = " << FEDHeader(data.data()).check() << endl;
if(verbose_) cout << "trailer check = " << FEDTrailer(data.data()).check() << endl;

if(!FEDHeader(data.data()).check()) fedfatal->Fill(i);

// if(!FEDHeader(data.data()).check() || !FEDTrailer(data.data()).check()) fedfatal->Fill(i);
// fedtrailer check seems to be always 0.

// for fedId dedicated integrity checks.
/* switch(fedId){
case 813:
std::cout << "do something for GT 813 data corruption..." << std::endl; continue;
fednonfatal->Fill(fedId);
case 814:
std::cout << "do something for GT 814 data corruption..." << std::endl; continue;
fednonfatal->Fill(fedId);
}
*/

fedentries->Fill(i);
hfedsize->Fill(float(size));
hfedprof->Fill(float(i),float(size));
if(verbose_) cout << "header check = " << FEDHeader(data.data()).check() << endl;
if(verbose_) cout << "trailer check = " << FEDTrailer(data.data()).check() << endl;

if(!FEDHeader(data.data()).check()) fedfatal->Fill(i);

} else {
if(verbose_) cout << "empty fed " << i << endl;
if(stableROConfig_) fedfatal->Fill(i);
if(verbose_) cout << "empty fed " << i << endl;
if(stableROConfig_) fedfatal->Fill(i);
}
}

}

}
}
}


0 comments on commit 7765ba9

Please sign in to comment.