CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonTrackResidualsTest.cc
Go to the documentation of this file.
1 
2 /*
3  * See header file for a description of this class.
4  *
5  * $Date: 2009/12/22 17:43:23 $
6  * $Revision: 1.14 $
7  * \author G. Mila - INFN Torino
8  */
9 
10 
12 
13 // Framework
20 
21 
26 
27 #include <iostream>
28 #include <stdio.h>
29 #include <string>
30 #include <math.h>
31 #include "TF1.h"
32 
33 using namespace edm;
34 using namespace std;
35 
36 
38  parameters = ps;
39 
40  theDbe = edm::Service<DQMStore>().operator->();
41 
42  prescaleFactor = parameters.getUntrackedParameter<int>("diagnosticPrescale", 1);
43 
44 }
45 
46 
48 
49  LogTrace(metname) << "DTResolutionTest: analyzed " << nevents << " events";
50 
51 }
52 
53 
55 
56  metname = "trackResidualsTest";
57  theDbe->setCurrentFolder("Muons/Tests/trackResidualsTest");
58 
59  LogTrace(metname) << "[MuonTrackResidualsTest] beginJob: Parameters initialization"<<endl;
60 
61 
62  string histName, MeanHistoName, SigmaHistoName, MeanHistoTitle, SigmaHistoTitle;
63  vector<string> type;
64  type.push_back("eta");
65  type.push_back("theta");
66  type.push_back("phi");
67 
68 
69  for(unsigned int c=0; c<type.size(); c++){
70 
71  MeanHistoName = "MeanTest_" + type[c];
72  SigmaHistoName = "SigmaTest_" + type[c];
73 
74  MeanHistoTitle = "Mean of the #" + type[c] + " residuals distribution";
75  SigmaHistoTitle = "Sigma of the #" + type[c] + " residuals distribution";
76 
77  histName = "Res_GlbSta_"+type[c];
78  histoNames[type[c]].push_back(histName);
79  histName = "Res_TkGlb_"+type[c];
80  histoNames[type[c]].push_back(histName);
81  histName = "Res_TkSta_"+type[c];
82  histoNames[type[c]].push_back(histName);
83 
84 
85  MeanHistos[type[c]] = theDbe->book1D(MeanHistoName.c_str(),MeanHistoTitle.c_str(),3,0.5,3.5);
86  (MeanHistos[type[c]])->setBinLabel(1,"Res_StaGlb",1);
87  (MeanHistos[type[c]])->setBinLabel(2,"Res_TkGlb",1);
88  (MeanHistos[type[c]])->setBinLabel(3,"Res_TkSta",1);
89 
90 
91  SigmaHistos[type[c]] = theDbe->book1D(SigmaHistoName.c_str(),SigmaHistoTitle.c_str(),3,0.5,3.5);
92  (SigmaHistos[type[c]])->setBinLabel(1,"Res_StaGlb",1);
93  (SigmaHistos[type[c]])->setBinLabel(2,"Res_TkGlb",1);
94  (SigmaHistos[type[c]])->setBinLabel(3,"Res_TkSta",1);
95 
96  }
97 
98  nevents = 0;
99 
100 }
101 
102 
103 void MuonTrackResidualsTest::beginRun(Run const& run, EventSetup const& eSetup) {
104 
105  LogTrace(metname)<<"[MuonTrackResidualsTest]: beginRun";
106 
107 }
108 
110 
111  // LogTrace(metname)<<"[MuonTrackResidualsTest]: beginLuminosityBlock";
112 
113  // Get the run number
114  // run = lumiSeg.run();
115 
116 }
117 
118 
120 
121  nevents++;
122  LogTrace(metname)<< "[MuonTrackResidualsTest]: "<<nevents<<" events";
123 
124 }
125 
126 
127 
129 
130  // LogTrace(metname)<<"[MuonTrackResidualsTest]: endLuminosityBlock, performing the DQM LS client operation"<<endl;
131 
132  // counts number of lumiSegs
133  nLumiSegs = lumiSeg.id().luminosityBlock();
134 
135  // prescale factor
136  if ( nLumiSegs%prescaleFactor != 0 ) return;
137 
138 
139 }
140 
141 
142 void MuonTrackResidualsTest::endRun(Run const& run, EventSetup const& eSetup) {
143 
144  LogTrace(metname)<<"[MuonTrackResidualsTest]: endRun, performing the DQM end of run client operation";
145 
146  for(map<string, vector<string> > ::const_iterator histo = histoNames.begin();
147  histo != histoNames.end();
148  histo++) {
149 
150  for (unsigned int type=0; type< (*histo).second.size(); type++){
151 
152  string path = "Muons/MuonRecoAnalyzer/" + (*histo).second[type];
153  MonitorElement * res_histo = theDbe->get(path);
154  if (res_histo) {
155 
156  // gaussian test
157  string GaussianCriterionName =
158  parameters.getUntrackedParameter<string>("resDistributionTestName",
159  "ResidualsDistributionGaussianTest");
160  const QReport * GaussianReport = res_histo->getQReport(GaussianCriterionName);
161  if(GaussianReport){
162  LogTrace(metname) << "-------- histo : "<<(*histo).second[type]<<" "<<GaussianReport->getMessage()<<" ------- "<<GaussianReport->getStatus();
163  }
164  int BinNumber = type+1;
165  float mean = (*res_histo).getMean(1);
166  float sigma = (*res_histo).getRMS(1);
167  MeanHistos.find((*histo).first)->second->setBinContent(BinNumber, mean);
168  SigmaHistos.find((*histo).first)->second->setBinContent(BinNumber, sigma);
169  }
170  }
171  }
172 
173 
174  // Mean test
175  string MeanCriterionName = parameters.getUntrackedParameter<string>("meanTestName","ResidualsMeanInRange");
176  for(map<string, MonitorElement*>::const_iterator hMean = MeanHistos.begin();
177  hMean != MeanHistos.end();
178  hMean++) {
179  const QReport * theMeanQReport = (*hMean).second->getQReport(MeanCriterionName);
180  if(theMeanQReport) {
181  vector<dqm::me_util::Channel> badChannels = theMeanQReport->getBadChannels();
182  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
183  channel != badChannels.end(); channel++) {
184  LogTrace(metname)<< "type:"<<(*hMean).first<<" Bad mean channels: "<<(*channel).getBin()<<" Contents : "<<(*channel).getContents()<<endl;
185  }
186  LogTrace(metname)<< "-------- type: "<<(*hMean).first<<" "<<theMeanQReport->getMessage()<<" ------- "<<theMeanQReport->getStatus()<<endl;
187  }
188  }
189 
190  // Sigma test
191  string SigmaCriterionName = parameters.getUntrackedParameter<string>("sigmaTestName","ResidualsSigmaInRange");
192  for(map<string, MonitorElement*>::const_iterator hSigma = SigmaHistos.begin();
193  hSigma != SigmaHistos.end();
194  hSigma++) {
195  const QReport * theSigmaQReport = (*hSigma).second->getQReport(SigmaCriterionName);
196  if(theSigmaQReport) {
197  vector<dqm::me_util::Channel> badChannels = theSigmaQReport->getBadChannels();
198  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
199  channel != badChannels.end(); channel++) {
200  LogTrace(metname)<< "type:"<<(*hSigma).first<<" Bad sigma channels: "<<(*channel).getBin()<<" Contents : "<<(*channel).getContents()<<endl;
201  }
202  LogTrace(metname) << "-------- type: "<<(*hSigma).first<<" "<<theSigmaQReport->getMessage()<<" ------- "<<theSigmaQReport->getStatus()<<endl;
203  }
204  }
205 }
206 
208 
209  LogTrace(metname)<< "[MuonTrackResidualsTest] endJob called!";
210  theDbe->rmdir("Muons/Tests/trackResidualsTest");
211 
212 }
213 
214 
215 
LuminosityBlockID id() const
type
Definition: HCALResponse.h:21
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
DQM Client Diagnostic.
dictionary parameters
Definition: Parameters.py:2
const QReport * getQReport(const std::string &qtname) const
get QReport corresponding to &lt;qtname&gt; (null pointer if QReport does not exist)
void beginJob(void)
BeginJob.
const std::string metname
void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
const std::string & getMessage(void) const
get message attached to test
Definition: QReport.h:24
dictionary map
Definition: Association.py:205
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
MuonTrackResidualsTest(const edm::ParameterSet &ps)
Constructor.
int getStatus(void) const
get test status (see Core/interface/QTestStatus.h)
Definition: QReport.h:16
virtual ~MuonTrackResidualsTest()
Destructor.
int nevents
const std::vector< DQMChannel > & getBadChannels(void) const
Definition: QReport.h:33
#define LogTrace(id)
LuminosityBlockNumber_t luminosityBlock() const
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
void beginRun(edm::Run const &run, edm::EventSetup const &eSetup)
Definition: Run.h:36