#include <DTTriggerEfficiencyTest.h>
Public Member Functions | |
DTTriggerEfficiencyTest (const edm::ParameterSet &ps) | |
Constructor. | |
virtual | ~DTTriggerEfficiencyTest () |
Destructor. | |
Protected Member Functions | |
void | beginJob () |
BeginJob. | |
void | beginRun (const edm::Run &r, const edm::EventSetup &c) |
BeginRun. | |
void | bookChambHistos (DTChamberId chambId, std::string htype, std::string folder="") |
Book the new MEs (for each chamber) | |
void | makeEfficiencyME2D (TH2F *numerator, TH2F *denominator, MonitorElement *result) |
Compute 2D efficiency plots. | |
void | runClientDiagnostic () |
DQM Client Diagnostic. | |
Private Attributes | |
std::map< uint32_t, std::map < std::string, MonitorElement * > > | chambME |
bool | detailedPlots |
DTTrigGeomUtils * | trigGeomUtils |
* DQM Test Client
Definition at line 20 of file DTTriggerEfficiencyTest.h.
DTTriggerEfficiencyTest::DTTriggerEfficiencyTest | ( | const edm::ParameterSet & | ps | ) |
Constructor.
Definition at line 39 of file DTTriggerEfficiencyTest.cc.
References edm::ParameterSet::getUntrackedParameter().
{ setConfig(ps,"DTTriggerEfficiency"); baseFolderDCC = "DT/03-LocalTrigger-DCC/"; baseFolderDDU = "DT/04-LocalTrigger-DDU/"; detailedPlots = ps.getUntrackedParameter<bool>("detailedAnalysis",true); }
DTTriggerEfficiencyTest::~DTTriggerEfficiencyTest | ( | ) | [virtual] |
void DTTriggerEfficiencyTest::beginJob | ( | void | ) | [protected, virtual] |
BeginJob.
Reimplemented from DTLocalTriggerBaseTest.
Definition at line 54 of file DTTriggerEfficiencyTest.cc.
References bk::beginJob().
void DTTriggerEfficiencyTest::beginRun | ( | const edm::Run & | r, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
BeginRun.
Reimplemented from DTLocalTriggerBaseTest.
Definition at line 61 of file DTTriggerEfficiencyTest.cc.
References DTLocalTriggerBaseTest::beginRun(), and ExpressReco_HICollisions_FallBack::parameters.
{ DTLocalTriggerBaseTest::beginRun(r,c); trigGeomUtils = new DTTrigGeomUtils(muonGeom); vector<string>::const_iterator iTr = trigSources.begin(); vector<string>::const_iterator trEnd = trigSources.end(); vector<string>::const_iterator iHw = hwSources.begin(); vector<string>::const_iterator hwEnd = hwSources.end(); //Booking if(parameters.getUntrackedParameter<bool>("staticBooking", true)){ for (; iTr != trEnd; ++iTr){ trigSource = (*iTr); for (; iHw != hwEnd; ++iHw){ hwSource = (*iHw); // Loop over the TriggerUnits for (int wh=-2; wh<=2; ++wh){ if (detailedPlots) { for (int sect=1; sect<=12; ++sect){ for (int stat=1; stat<=4; ++stat){ DTChamberId chId(wh,stat,sect); bookChambHistos(chId,"TrigEffPosvsAnglePhi","Segment"); bookChambHistos(chId,"TrigEffPosvsAngleCorrPhi","Segment"); } } } bookWheelHistos(wh,"TrigEffPhi"); bookWheelHistos(wh,"TrigEffCorrPhi"); } } } } }
void DTTriggerEfficiencyTest::bookChambHistos | ( | DTChamberId | chambId, |
std::string | htype, | ||
std::string | folder = "" |
||
) | [protected] |
Book the new MEs (for each chamber)
Definition at line 296 of file DTLocalTriggerEfficiencyTest.cc.
References DQMStore::book1D(), DQMStore::book2D(), DTLocalTriggerBaseTest::category(), DTLocalTriggerEfficiencyTest::chambME, DTLocalTriggerBaseTest::dbe, DTLocalTriggerBaseTest::fullName(), DTLocalTriggerBaseTest::hwSource, LogTrace, max(), min, ExpressReco_HICollisions_FallBack::nbins, DTTrigGeomUtils::phiRange(), DetId::rawId(), DTChamberId::sector(), DQMStore::setCurrentFolder(), relativeConstraints::station, DTChamberId::station(), DTLocalTriggerBaseTest::testName, DTTrigGeomUtils::thetaRange(), DTLocalTriggerBaseTest::topFolder(), DTLocalTriggerEfficiencyTest::trigGeomUtils, and DTChamberId::wheel().
{ stringstream wheel; wheel << chambId.wheel(); stringstream station; station << chambId.station(); stringstream sector; sector << chambId.sector(); string fullType = fullName(htype); bool isDCC = hwSource=="DCC" ; string HistoName = fullType + "_W" + wheel.str() + "_Sec" + sector.str() + "_St" + station.str(); dbe->setCurrentFolder(topFolder(isDCC) + "Wheel" + wheel.str() + "/Sector" + sector.str() + "/Station" + station.str() + "/Segment"); LogTrace(category()) << "[" << testName << "Test]: booking " + topFolder(isDCC) + "Wheel" << wheel.str() <<"/Sector" << sector.str() << "/Station" << station.str() << "/Segment/" << HistoName; uint32_t indexChId = chambId.rawId(); if (htype.find("TrigEffAnglePhi") == 0){ chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency vs angle of incidence (Phi)",16,-40.,40.); } else if (htype.find("TrigEffAngleHHHLPhi") == 0){ chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency (HH/HL) vs angle of incidence (Phi)",16,-40.,40.); } else if (htype.find("TrigEffAngleTheta") == 0){ chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency vs angle of incidence (Theta)",16,-40.,40.); } else if (htype.find("TrigEffAngleHTheta") == 0){ chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency (H) vs angle of incidence (Theta)",16,-40.,40.); } else if (htype.find("TrigEffPosPhi") == 0 ){ float min,max; int nbins; trigGeomUtils->phiRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency vs position (Phi)",nbins,min,max); } else if (htype.find("TrigEffPosvsAnglePhi") == 0 ){ float min,max; int nbins; trigGeomUtils->phiRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book2D(HistoName.c_str(),"Trigger efficiency position vs angle (Phi)",16,-40.,40.,nbins,min,max); } else if (htype.find("TrigEffPosvsAngleHHHLPhi") == 0 ){ float min,max; int nbins; trigGeomUtils->phiRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book2D(HistoName.c_str(),"Trigger efficiency (HH/HL) pos vs angle (Phi)",16,-40.,40.,nbins,min,max); } else if (htype.find("TrigEffPosHHHLPhi") == 0 ){ float min,max; int nbins; trigGeomUtils->phiRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency (HH/HL) vs position (Phi)",nbins,min,max); } else if (htype.find("TrigEffPosTheta") == 0){ float min,max; int nbins; trigGeomUtils->thetaRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency vs position (Theta)",nbins,min,max); } else if (htype.find("TrigEffPosHTheta") == 0){ float min,max; int nbins; trigGeomUtils->thetaRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book1D(HistoName.c_str(),"Trigger efficiency (H) vs position (Theta)",nbins,min,max); } else if (htype.find("TrigEffPosvsAngleTheta") == 0 ){ float min,max; int nbins; trigGeomUtils->thetaRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book2D(HistoName.c_str(),"Trigger efficiency pos vs angle (Theta)",16,-40.,40.,nbins,min,max); } else if (htype.find("TrigEffPosvsAngleHTheta") == 0 ){ float min,max; int nbins; trigGeomUtils->thetaRange(chambId,min,max,nbins); chambME[indexChId][fullType] = dbe->book2D(HistoName.c_str(),"Trigger efficiency (H) pos vs angle (Theta)",16,-40.,40.,nbins,min,max); } }
void DTTriggerEfficiencyTest::makeEfficiencyME2D | ( | TH2F * | numerator, |
TH2F * | denominator, | ||
MonitorElement * | result | ||
) | [protected] |
Compute 2D efficiency plots.
Definition at line 158 of file DTTriggerEfficiencyTest.cc.
References error, MonitorElement::getTH2F(), and mathSSE::sqrt().
{ TH2F* efficiency = result->getTH2F(); efficiency->Divide(numerator,denominator,1,1,""); int nbinsx = efficiency->GetNbinsX(); int nbinsy = efficiency->GetNbinsY(); for (int binx=1; binx<=nbinsx; ++binx){ for (int biny=1; biny<=nbinsy; ++biny){ float error = 0; float bineff = efficiency->GetBinContent(binx,biny); if (denominator->GetBinContent(binx,biny)){ error = sqrt(bineff*(1-bineff)/denominator->GetBinContent(binx,biny)); } else { error = 1; efficiency->SetBinContent(binx,biny,0.); } efficiency->SetBinError(binx,biny,error); } } }
void DTTriggerEfficiencyTest::runClientDiagnostic | ( | ) | [protected, virtual] |
DQM Client Diagnostic.
Implements DTLocalTriggerBaseTest.
Definition at line 99 of file DTTriggerEfficiencyTest.cc.
References spr::find(), newFWLiteAna::fullName, and DetId::rawId().
{ // Loop over Trig & Hw sources for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){ trigSource = (*iTr); for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){ hwSource = (*iHw); // Loop over the TriggerUnits for (int wh=-2; wh<=2; ++wh){ TH2F * TrigEffDenum = getHisto<TH2F>(dbe->get(getMEName("TrigEffDenum","",wh))); TH2F * TrigEffNum = getHisto<TH2F>(dbe->get(getMEName("TrigEffNum","",wh))); TH2F * TrigEffCorrNum = getHisto<TH2F>(dbe->get(getMEName("TrigEffCorrNum","",wh))); if (TrigEffDenum && TrigEffNum && TrigEffCorrNum && TrigEffDenum->GetEntries()>1) { if( whME[wh].find(fullName("TrigEffPhi")) == whME[wh].end() ){ bookWheelHistos(wh,"TrigEffPhi"); bookWheelHistos(wh,"TrigEffCorrPhi"); } std::map<std::string,MonitorElement*> *innerME = &(whME[wh]); makeEfficiencyME2D(TrigEffNum,TrigEffDenum,innerME->find(fullName("TrigEffPhi"))->second); makeEfficiencyME2D(TrigEffCorrNum,TrigEffDenum,innerME->find(fullName("TrigEffCorrPhi"))->second); } if (detailedPlots) { for (int stat=1; stat<=4; ++stat){ for (int sect=1; sect<=12; ++sect){ DTChamberId chId(wh,stat,sect); uint32_t indexCh = chId.rawId(); // Perform Efficiency analysis (Phi+Segments 2D) TH2F * TrackPosvsAngle = getHisto<TH2F>(dbe->get(getMEName("TrackPosvsAngle","Segment", chId))); TH2F * TrackPosvsAngleAnyQual = getHisto<TH2F>(dbe->get(getMEName("TrackPosvsAngleAnyQual","Segment", chId))); TH2F * TrackPosvsAngleCorr = getHisto<TH2F>(dbe->get(getMEName("TrackPosvsAngleCorr","Segment", chId))); if (TrackPosvsAngle && TrackPosvsAngleAnyQual && TrackPosvsAngleCorr && TrackPosvsAngle->GetEntries()>1) { if( chambME[indexCh].find(fullName("TrigEffAnglePhi")) == chambME[indexCh].end()){ bookChambHistos(chId,"TrigEffPosvsAnglePhi","Segment"); bookChambHistos(chId,"TrigEffPosvsAngleCorrPhi","Segment"); } std::map<std::string,MonitorElement*> *innerME = &(chambME[indexCh]); makeEfficiencyME2D(TrackPosvsAngleAnyQual,TrackPosvsAngle,innerME->find(fullName("TrigEffPosvsAnglePhi"))->second); makeEfficiencyME2D(TrackPosvsAngleCorr,TrackPosvsAngle,innerME->find(fullName("TrigEffPosvsAngleCorrPhi"))->second); } } } } } } } }
std::map<uint32_t,std::map<std::string,MonitorElement*> > DTTriggerEfficiencyTest::chambME [private] |
Definition at line 51 of file DTTriggerEfficiencyTest.h.
bool DTTriggerEfficiencyTest::detailedPlots [private] |
Definition at line 53 of file DTTriggerEfficiencyTest.h.
Definition at line 52 of file DTTriggerEfficiencyTest.h.