Public Member Functions | |
virtual void | analyze (const edm::Event &event, const edm::EventSetup &eventSetup) |
void | calculateEfficiency (const ParameterSet &pset) |
DQMGenericTnPClient (const edm::ParameterSet &pset) | |
virtual void | endRun (const edm::Run &run, const edm::EventSetup &setup) |
virtual | ~DQMGenericTnPClient () |
Private Attributes | |
DQMStore * | dqmStore |
const VParameterSet | efficiencies |
GaussianPlusLinearFitter * | GPLfitter |
string | myDQMrootFolder |
TFile * | plots |
bool | verbose |
VoigtianPlusExponentialFitter * | VPEfitter |
Definition at line 17 of file DQMGenericTnPClient.cc.
DQMGenericTnPClient::DQMGenericTnPClient | ( | const edm::ParameterSet & | pset | ) |
Definition at line 34 of file DQMGenericTnPClient.cc.
References edm::ParameterSet::getUntrackedParameter(), GPLfitter, plots, and VPEfitter.
: myDQMrootFolder( pset.getUntrackedParameter<string>("MyDQMrootFolder") ), verbose( pset.getUntrackedParameter<bool>("Verbose",false) ), efficiencies( pset.getUntrackedParameter<VParameterSet>("Efficiencies") ) { TString savePlotsInRootFileName = pset.getUntrackedParameter<string>("SavePlotsInRootFileName",""); plots = savePlotsInRootFileName!="" ? new TFile(savePlotsInRootFileName,"recreate") : 0; GPLfitter = new GaussianPlusLinearFitter(verbose); VPEfitter = new VoigtianPlusExponentialFitter(verbose); }
DQMGenericTnPClient::~DQMGenericTnPClient | ( | ) | [virtual] |
virtual void DQMGenericTnPClient::analyze | ( | const edm::Event & | event, |
const edm::EventSetup & | eventSetup | ||
) | [inline, virtual] |
void DQMGenericTnPClient::calculateEfficiency | ( | const ParameterSet & | pset | ) |
Definition at line 58 of file DQMGenericTnPClient.cc.
References cond::ecalcond::all, DQMStore::bookProfile(), DQMStore::bookProfile2D(), dqmStore, error, DQMStore::get(), MonitorElement::getTH1(), edm::ParameterSet::getUntrackedParameter(), GPLfitter, LogDebug, myDQMrootFolder, plots, prof2calltree::prefix, DQMStore::setCurrentFolder(), dqmTnP::VoigtianPlusExponentialFitter::setup(), dqmTnP::AbstractFitter::setup(), and VPEfitter.
Referenced by endRun().
{ //get hold of numerator and denominator histograms string allMEname = myDQMrootFolder+"/"+pset.getUntrackedParameter<string>("DenominatorMEname"); string passMEname = myDQMrootFolder+"/"+pset.getUntrackedParameter<string>("NumeratorMEname"); MonitorElement *allME = dqmStore->get(allMEname); MonitorElement *passME = dqmStore->get(passMEname); if(allME==0 || passME==0){ LogDebug("DQMGenericTnPClient")<<"Could not find MEs: "<<allMEname<<" or "<<passMEname<<endl; return; } TH1 *all = allME->getTH1(); TH1 *pass = passME->getTH1(); //setup the fitter string fitFunction = pset.getUntrackedParameter<string>("FitFunction"); AbstractFitter *fitter = 0; if(fitFunction=="GaussianPlusLinear"){ GPLfitter->setup( pset.getUntrackedParameter<double>("ExpectedMean"), pset.getUntrackedParameter<double>("FitRangeLow"), pset.getUntrackedParameter<double>("FitRangeHigh"), pset.getUntrackedParameter<double>("ExpectedSigma") ); fitter = GPLfitter; }else if(fitFunction=="VoigtianPlusExponential"){ VPEfitter->setup( pset.getUntrackedParameter<double>("ExpectedMean"), pset.getUntrackedParameter<double>("FitRangeLow"), pset.getUntrackedParameter<double>("FitRangeHigh"), pset.getUntrackedParameter<double>("ExpectedSigma"), pset.getUntrackedParameter<double>("FixedWidth") ); fitter = VPEfitter; }else{ LogError("DQMGenericTnPClient")<<"Fit function: "<<fitFunction<<" does not exist"<<endl; return; } //check dimensions int dimensions = all->GetDimension(); int massDimension = pset.getUntrackedParameter<int>("MassDimension"); if(massDimension>dimensions){ LogError("DQMGenericTnPClient")<<"Monitoring Element "<<allMEname<<" has smaller dimension than "<<massDimension<<endl; return; } //figure out directory and efficiency names string effName = pset.getUntrackedParameter<string>("EfficiencyMEname"); string effDir = myDQMrootFolder; string::size_type slashPos = effName.rfind('/'); if ( string::npos != slashPos ) { effDir += "/"+effName.substr(0, slashPos); effName.erase(0, slashPos+1); } dqmStore->setCurrentFolder(effDir); TString prefix(effDir.c_str()); prefix.ReplaceAll('/','_'); //calculate and book efficiency if(dimensions==2){ TProfile* eff = 0; TProfile* effChi2 = 0; TString error = fitter->calculateEfficiency((TH2*)pass, (TH2*)all, massDimension, eff, effChi2, plots?prefix+effName.c_str():""); if(error!=""){ LogError("DQMGenericTnPClient")<<error<<endl; return; } dqmStore->bookProfile(effName,eff); dqmStore->bookProfile(effName+"Chi2",effChi2); delete eff; delete effChi2; }else if(dimensions==3){ TProfile2D* eff = 0; TProfile2D* effChi2 = 0; TString error = fitter->calculateEfficiency((TH3*)pass, (TH3*)all, massDimension, eff, effChi2, plots?prefix+effName.c_str():""); if(error!=""){ LogError("DQMGenericTnPClient")<<error<<endl; return; } dqmStore->bookProfile2D(effName,eff); dqmStore->bookProfile2D(effName+"Chi2",effChi2); delete eff; delete effChi2; } }
void DQMGenericTnPClient::endRun | ( | const edm::Run & | run, |
const edm::EventSetup & | setup | ||
) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 45 of file DQMGenericTnPClient.cc.
References calculateEfficiency(), dqmStore, efficiencies, myDQMrootFolder, cmsCodeRules::cppFunctionSkipper::operator, CrabTask::pset, and DQMStore::setCurrentFolder().
{ dqmStore = Service<DQMStore>().operator->(); if( !dqmStore ){ LogError("DQMGenericTnPClient")<<"Could not find DQMStore service\n"; return; } dqmStore->setCurrentFolder(myDQMrootFolder); //loop over all efficiency tasks for(VParameterSet::const_iterator pset = efficiencies.begin(); pset!=efficiencies.end(); pset++){ calculateEfficiency(*pset); } }
DQMStore* DQMGenericTnPClient::dqmStore [private] |
Definition at line 25 of file DQMGenericTnPClient.cc.
Referenced by calculateEfficiency(), and endRun().
const VParameterSet DQMGenericTnPClient::efficiencies [private] |
Definition at line 29 of file DQMGenericTnPClient.cc.
Referenced by endRun().
Definition at line 30 of file DQMGenericTnPClient.cc.
Referenced by calculateEfficiency(), DQMGenericTnPClient(), and ~DQMGenericTnPClient().
string DQMGenericTnPClient::myDQMrootFolder [private] |
Definition at line 27 of file DQMGenericTnPClient.cc.
Referenced by calculateEfficiency(), and endRun().
TFile* DQMGenericTnPClient::plots [private] |
Definition at line 26 of file DQMGenericTnPClient.cc.
Referenced by calculateEfficiency(), DQMGenericTnPClient(), and ~DQMGenericTnPClient().
bool DQMGenericTnPClient::verbose [private] |
Definition at line 28 of file DQMGenericTnPClient.cc.
Definition at line 31 of file DQMGenericTnPClient.cc.
Referenced by calculateEfficiency(), and DQMGenericTnPClient().