42 etaBin =
parameters.getParameter<
int>(
"etaBin");
46 phiBin =
parameters.getParameter<
int>(
"phiBin");
47 phiMin =
parameters.getParameter<
double>(
"phiMin");
48 phiMax =
parameters.getParameter<
double>(
"phiMax");
50 EfficiencyCriterionName =
parameters.getUntrackedParameter<
string>(
"efficiencyTestName",
"EfficiencyInRange");
57 etaEfficiency = ibooker.
book1D(
"etaEfficiency_staMuon",
"#eta_{STA} efficiency", etaBin,
etaMin,
etaMax);
58 phiEfficiency = ibooker.
book1D(
"phiEfficiency_staMuon",
"#phi_{STA} efficiency", phiBin, phiMin, phiMax);
61 globalRotation.push_back(ibooker.
book1D(
"muVStkSytemRotation_posMu_profile",
"pT_{TK} / pT_{GLB} vs pT_{GLB} profile for #mu^{+}",50,0,200));
62 globalRotation.push_back(ibooker.
book1D(
"muVStkSytemRotation_negMu_profile",
"pT_{TK} / pT_{GLB} vs pT_{GLB} profile for #mu^{-}",50,0,200));
63 globalRotation.push_back(ibooker.
book1D(
"muVStkSytemRotation_profile",
"pT_{TK} / pT_{GLB} vs pT_{GLB} profile for #mu^{+}-#mu^{-}",50,0,200));
67 string path =
"Muons/MuonRecoAnalyzer/StaEta_ifCombinedAlso";
69 path =
"Muons/MuonRecoAnalyzer/StaEta";
72 if(staEtaIfComb_histo && staEta_histo){
73 TH1F * staEtaIfComb_root = staEtaIfComb_histo->
getTH1F();
74 TH1F * staEta_root = staEta_histo->
getTH1F();
76 if(staEtaIfComb_root->GetXaxis()->GetNbins()!=etaBin
77 || staEtaIfComb_root->GetXaxis()->GetXmax()!=
etaMax
78 || staEtaIfComb_root->GetXaxis()->GetXmin()!=
etaMin){
79 LogTrace(
metname)<<
"[MuonRecoTest] wrong histo binning on eta histograms";
83 for(
int i=1;
i<=etaBin;
i++){
84 if(staEta_root->GetBinContent(
i)!=0){
85 double efficiency = double(staEtaIfComb_root->GetBinContent(
i))/
double(staEta_root->GetBinContent(
i));
86 etaEfficiency->setBinContent(
i,efficiency);
91 path =
"Muons/MuonRecoAnalyzer/StaPhi_ifCombinedAlso";
93 path =
"Muons/MuonRecoAnalyzer/StaPhi";
96 if(staPhiIfComb_histo && staPhi_histo){
98 TH1F * staPhiIfComb_root = staPhiIfComb_histo->
getTH1F();
99 TH1F * staPhi_root = staPhi_histo->
getTH1F();
101 if(staPhiIfComb_root->GetXaxis()->GetNbins()!=phiBin
102 || staPhiIfComb_root->GetXaxis()->GetXmax()!=phiMax
103 || staPhiIfComb_root->GetXaxis()->GetXmin()!=phiMin){
104 LogTrace(
metname)<<
"[MuonRecoTest] wrong histo binning on phi histograms";
108 for(
int i=1;
i<=etaBin;
i++){
109 if(staPhi_root->GetBinContent(
i)!=0){
110 double efficiency = double(staPhiIfComb_root->GetBinContent(
i))/
double(staPhi_root->GetBinContent(
i));
111 phiEfficiency->setBinContent(
i,efficiency);
121 const QReport * theEtaQReport = etaEfficiency->getQReport(EfficiencyCriterionName);
123 vector<dqm::me_util::Channel> badChannels = theEtaQReport->
getBadChannels();
124 for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
125 channel != badChannels.end(); channel++) {
126 LogTrace(
metname)<<
"[etaEfficiency test] bad ranges: "<<(*channel).getBin()<<
" Contents : "<<(*channel).getContents()<<endl;
131 const QReport * thePhiQReport = phiEfficiency->getQReport(EfficiencyCriterionName);
133 vector<dqm::me_util::Channel> badChannels = thePhiQReport->
getBadChannels();
134 for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
135 channel != badChannels.end(); channel++) {
136 LogTrace(
metname)<<
"[phiEfficiency test] bad ranges: "<<(*channel).getBin()<<
" Contents : "<<(*channel).getContents()<<endl;
142 string pathPos =
"Muons/MuonRecoAnalyzer/muVStkSytemRotation_posMu";
144 string pathNeg =
"Muons/MuonRecoAnalyzer/muVStkSytemRotation_negMu";
146 if(muVStkSytemRotation_posMu_histo && muVStkSytemRotation_negMu_histo){
148 TH2F * muVStkSytemRotation_posMu_root = muVStkSytemRotation_posMu_histo->
getTH2F();
149 TProfile * muVStkSytemRotation_posMu_profile = muVStkSytemRotation_posMu_root->ProfileX(
"",1,100);
150 TH2F * muVStkSytemRotation_negMu_root = muVStkSytemRotation_negMu_histo->
getTH2F();
151 TProfile * muVStkSytemRotation_negMu_profile = muVStkSytemRotation_negMu_root->ProfileX(
"",1,100);
153 for(
int x=1;
x<50;
x++){
154 globalRotation[0]->Fill((
x*4)-1,muVStkSytemRotation_posMu_profile->GetBinContent(
x));
155 globalRotation[0]->setBinError(
x,muVStkSytemRotation_posMu_profile->GetBinError(
x));
156 globalRotation[1]->Fill((
x*4)-1,muVStkSytemRotation_negMu_profile->GetBinContent(
x));
157 globalRotation[1]->setBinError(
x,muVStkSytemRotation_negMu_profile->GetBinError(
x));
158 globalRotation[2]->Fill((
x*4)-1,muVStkSytemRotation_posMu_profile->GetBinContent(
x)-muVStkSytemRotation_negMu_profile->GetBinContent(
x));
159 globalRotation[2]->setBinError(
x,
sqrt((muVStkSytemRotation_posMu_profile->GetBinError(
x)*muVStkSytemRotation_posMu_profile->GetBinError(
x))
160 + (muVStkSytemRotation_negMu_profile->GetBinError(
x)*muVStkSytemRotation_negMu_profile->GetBinError(
x))));
const std::string metname
MonitorElement * get(const std::string &path)
const std::string & getMessage(void) const
get message attached to test
tuple path
else: Piece not in the list, fine.
MonitorElement * book1D(Args &&...args)
int getStatus(void) const
get test status (see Core/interface/QTestStatus.h)
const std::vector< DQMChannel > & getBadChannels(void) const
void setCurrentFolder(const std::string &fullpath)
TH1F * getTH1F(void) const
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
Endjob.
MuonRecoTest(const edm::ParameterSet &ps)
Constructor.
TH2F * getTH2F(void) const