CMS 3D CMS Logo

ConversionPostprocessing.cc
Go to the documentation of this file.
1 #include <iostream>
2 //
3 
5 
6 //
7 
20 using namespace std;
21 
22 
24 {
25 
26  dbe_ = nullptr;
28  dbe_->setVerbose(0);
29  parameters_ = pset;
30 
31 
32  standAlone_ = pset.getParameter<bool>("standAlone");
33  batch_ = pset.getParameter<bool>("batch");
34  outputFileName_ = pset.getParameter<string>("OutputFileName");
35  inputFileName_ = pset.getParameter<std::string>("InputFileName");
36 
37 
38  etMin = parameters_.getParameter<double>("etMin");
39  etMax = parameters_.getParameter<double>("etMax");
40  etBin = parameters_.getParameter<int>("etBin");
41 
42  etaMin = parameters_.getParameter<double>("etaMin");
43  etaMax = parameters_.getParameter<double>("etaMax");
44  etaBin = parameters_.getParameter<int>("etaBin");
45  etaBin2 = parameters_.getParameter<int>("etaBin2");
46 
47  phiMin = parameters_.getParameter<double>("phiMin");
48  phiMax = parameters_.getParameter<double>("phiMax");
49  phiBin = parameters_.getParameter<int>("phiBin");
50 
51  rMin = parameters_.getParameter<double>("rMin");
52  rMax = parameters_.getParameter<double>("rMax");
53  rBin = parameters_.getParameter<int>("rBin");
54 
55  zMin = parameters_.getParameter<double>("zMin");
56  zMax = parameters_.getParameter<double>("zMax");
57  zBin = parameters_.getParameter<int>("zBin");
58 
59 
60 
61 }
62 
63 
64 
66 {}
67 
69 {
70 
71 }
72 
74 {}
75 
76 
78 
79 if(standAlone_) runPostprocessing();
80 
81 }
82 
84 
85  if(!standAlone_) runPostprocessing();
86 
87 }
88 
89 
90 
92 {
93 
94 
95 
96  std::string simInfoPathName = "EgammaV/ConversionValidator/SimulationInfo/";
97  std::string convPathName = "EgammaV/ConversionValidator/ConversionInfo/";
98  std::string effPathName = "EgammaV/ConversionValidator/EfficienciesAndFakeRate/";
99 
100 
101  if(batch_) dbe_->open(inputFileName_);
102 
103  dbe_->setCurrentFolder(effPathName);
104  // Conversion reconstruction efficiency
105  std::string histname = "convEffVsEtaTwoTracks";
106  convEffEtaTwoTracks_ = dbe_->book1D(histname,histname,etaBin2,etaMin, etaMax);
107 
108  histname = "convEffVsPhiTwoTracks";
109  convEffPhiTwoTracks_ = dbe_->book1D(histname,histname,phiBin,phiMin,phiMax);
110 
111  histname = "convEffVsRTwoTracks";
112  convEffRTwoTracks_ = dbe_->book1D(histname,histname,rBin,rMin, rMax);
113 
114  histname = "convEffVsZTwoTracks";
115  convEffZTwoTracks_ = dbe_->book1D(histname,histname,zBin,zMin,zMax);
116 
117  histname = "convEffVsEtTwoTracks";
118  convEffEtTwoTracks_ = dbe_->book1D(histname,histname,etBin,etMin, etMax);
119  //
120  histname = "convEffVsEtaTwoTracksAndVtxProbGT0";
121  convEffEtaTwoTracksAndVtxProbGT0_ = dbe_->book1D(histname,histname,etaBin2,etaMin, etaMax);
122  histname = "convEffVsEtaTwoTracksAndVtxProbGT0005";
123  convEffEtaTwoTracksAndVtxProbGT0005_ = dbe_->book1D(histname,histname,etaBin2,etaMin, etaMax);
124  histname = "convEffVsRTwoTracksAndVtxProbGT0";
125  convEffRTwoTracksAndVtxProbGT0_ = dbe_->book1D(histname,histname,rBin,rMin,rMax);
126  histname = "convEffVsRTwoTracksAndVtxProbGT0005";
127  convEffRTwoTracksAndVtxProbGT0005_ = dbe_->book1D(histname,histname,rBin,rMin,rMax);
128  //
129  // Fake rate
130  histname = "convFakeRateVsEtaTwoTracks";
131  convFakeRateEtaTwoTracks_ = dbe_->book1D(histname,histname,etaBin2,etaMin, etaMax);
132  histname = "convFakeRateVsPhiTwoTracks";
133  convFakeRatePhiTwoTracks_ = dbe_->book1D(histname,histname,phiBin,phiMin,phiMax);
134  histname = "convFakeRateVsRTwoTracks";
135  convFakeRateRTwoTracks_ = dbe_->book1D(histname,histname,rBin,rMin, rMax);
136  histname = "convFakeRateVsZTwoTracks";
137  convFakeRateZTwoTracks_ = dbe_->book1D(histname,histname,zBin,zMin,zMax);
138  histname = "convFakeRateVsEtTwoTracks";
139  convFakeRateEtTwoTracks_ = dbe_->book1D(histname,histname,etBin,etMin, etMax);
140 
141  // efficiencies
142  dividePlots(dbe_->get(effPathName+"convEffVsEtaTwoTracks"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEta"),dbe_->get(simInfoPathName+"h_VisSimConvEta"),"effic");
143  dividePlots(dbe_->get(effPathName+"convEffVsPhiTwoTracks"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksPhi"),dbe_->get(simInfoPathName+"h_VisSimConvPhi"),"effic");
144  dividePlots(dbe_->get(effPathName+"convEffVsRTwoTracks"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksR"),dbe_->get(simInfoPathName+"h_VisSimConvR"),"effic");
145  dividePlots(dbe_->get(effPathName+"convEffVsZTwoTracks"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksZ"),dbe_->get(simInfoPathName+"h_VisSimConvZ"),"effic");
146  dividePlots(dbe_->get(effPathName+"convEffVsEtTwoTracks"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEt"),dbe_->get(simInfoPathName+"h_VisSimConvEt"),"effic");
147  dividePlots(dbe_->get(effPathName+"convEffVsEtaTwoTracksAndVtxProbGT0"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEtaAndVtxPGT0"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEta"),"effic");
148  dividePlots(dbe_->get(effPathName+"convEffVsEtaTwoTracksAndVtxProbGT0005"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEtaAndVtxPGT0005"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksEta"),"effic");
149  dividePlots(dbe_->get(effPathName+"convEffVsRTwoTracksAndVtxProbGT0"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksRAndVtxPGT0"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksR"),"effic");
150  dividePlots(dbe_->get(effPathName+"convEffVsRTwoTracksAndVtxProbGT0005"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksRAndVtxPGT0005"),dbe_->get(simInfoPathName+"h_SimConvTwoMTracksR"),"effic");
151 
152 
153  // fake rate
154  dividePlots(dbe_->get(effPathName+"convFakeRateVsEtaTwoTracks"),dbe_->get(convPathName+"convEtaAss2"),dbe_->get(convPathName+"convEta2"),"fakerate");
155  dividePlots(dbe_->get(effPathName+"convFakeRateVsPhiTwoTracks"),dbe_->get(convPathName+"convPhiAss"),dbe_->get(convPathName+"convPhi"),"fakerate");
156  dividePlots(dbe_->get(effPathName+"convFakeRateVsRTwoTracks"),dbe_->get(convPathName+"convRAss"),dbe_->get(convPathName+"convR"),"fakerate");
157  dividePlots(dbe_->get(effPathName+"convFakeRateVsZTwoTracks"),dbe_->get(convPathName+"convZAss"),dbe_->get(convPathName+"convZ"),"fakerate");
158  dividePlots(dbe_->get(effPathName+"convFakeRateVsEtTwoTracks"),dbe_->get(convPathName+"convPtAss"),dbe_->get(convPathName+"convPt"),"fakerate");
159 
160 
161 
162  if(standAlone_) dbe_->save(outputFileName_);
163  else if(batch_) dbe_->save(inputFileName_);
164 }
165 
166 
168 {
169 
170 
171 }
172 
173 
174 
176  double value,err;
177 
178  //quick fix to avoid seg. faults due to null pointers.
179  if (dividend==nullptr || numerator==nullptr || denominator==nullptr)return;
180 
181  for (int j=1; j<=numerator->getNbinsX(); j++){
182 
183  if (denominator->getBinContent(j)!=0){
184  if (type=="effic")
185  value = ((double) numerator->getBinContent(j))/((double) denominator->getBinContent(j));
186  else if (type=="fakerate")
187  value = 1-((double) numerator->getBinContent(j))/((double) denominator->getBinContent(j));
188  else return;
189  err = sqrt( value*(1-value) / ((double) denominator->getBinContent(j)) );
190  dividend->setBinContent(j, value);
191  if ( err !=0 ) dividend->setBinError(j,err);
192  }
193  else {
194  dividend->setBinContent(j, 0);
195  dividend->setBinError(j,0);
196  }
197 
198  }
199 
200 
201 }
202 
203 
205  double value,err;
206 
207  //quick fix to avoid seg. faults due to null pointers.
208  if (dividend==nullptr || numerator==nullptr )return;
209 
210  for (int j=1; j<=numerator->getNbinsX(); j++){
211  if (denominator!=0){
212  value = ((double) numerator->getBinContent(j))/denominator;
213  err = sqrt( value*(1-value) / denominator);
214  dividend->setBinContent(j, value);
215  dividend->setBinError(j,err);
216  }
217  else {
218  dividend->setBinContent(j, 0);
219  }
220  }
221 
222 }
223 
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
void setBinContent(int binx, double content)
set content of bin (1-D)
void analyze(const edm::Event &, const edm::EventSetup &) override
void dividePlots(MonitorElement *dividend, MonitorElement *numerator, MonitorElement *denominator, std::string type)
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:1
void endRun(const edm::Run &, const edm::EventSetup &) override
void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
T sqrt(T t)
Definition: SSEVec.h:18
void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
DQMStore * dbe_
ConversionPostprocessing(const edm::ParameterSet &pset)
double getBinContent(int binx) const
get content of bin (1-D)
int getNbinsX() const
get # of bins in X-axis
Definition: Run.h:43