Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

move L1TFED to DQMEDAnalyzer interface #4240

Merged
merged 1 commit into from Jun 25, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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);
}
}

}

}
}
}