#include <memory>
#include <stdio.h>
#include <math.h>
#include <sstream>
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "DQMServices/Core/interface/DQMStore.h"
#include "DQMServices/Core/interface/MonitorElement.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "PhysicsTools/UtilAlgos/interface/TFileService.h"
Go to the source code of this file.
Classes | |
class | DataCertificationJetMET |
Description: <one line="" class="" summary>="">. More... | |
Defines | |
#define | DEBUG 1 |
#define | NJetAlgo 4 |
#define | NL3Flags 3 |
Functions | |
int | data_certificate (double chi2, double mean, double chi2_tolerance, double mean_tolerance) |
DEFINE_FWK_MODULE (DataCertificationJetMET) | |
void | fitd (TH1F *hist, TF1 *fn, TF1 *f1, TF1 *f2, int verbose) |
void | fitdd (TH1D *hist, TF1 *fn, TF1 *f1, TF1 *f2, int verbose) |
#define DEBUG 1 |
Definition at line 45 of file DataCertificationJetMET.cc.
#define NJetAlgo 4 |
Definition at line 42 of file DataCertificationJetMET.cc.
Referenced by DataCertificationJetMET::beginJob().
#define NL3Flags 3 |
Definition at line 43 of file DataCertificationJetMET.cc.
Referenced by DataCertificationJetMET::beginJob().
int data_certificate | ( | double | chi2, | |
double | mean, | |||
double | chi2_tolerance, | |||
double | mean_tolerance | |||
) |
Definition at line 121 of file DataCertificationJetMET.cc.
References value.
Referenced by DataCertificationJetMET::beginJob().
00121 { 00122 int value=0; 00123 if (chi2<chi2_tolerance && fabs(mean)<mean_tolerance) value=1; 00124 return value; 00125 }
DEFINE_FWK_MODULE | ( | DataCertificationJetMET | ) |
Definition at line 129 of file DataCertificationJetMET.cc.
References i, funct::pow(), and funct::sqrt().
Referenced by DataCertificationJetMET::beginJob().
00129 { 00130 // 00131 Option_t *fit_option; 00132 fit_option = "QR0"; 00133 if (verbose==1) fit_option = "R0"; 00134 else if (verbose==2) fit_option = "VR0"; 00135 // 00136 Double_t par[6]; 00137 Double_t pare[6]; 00138 for (int i=0;i<6;i++){ 00139 par[i] =0.; 00140 pare[i]=1.; 00141 } 00142 // 00143 //hist->GetXaxis()->SetRange(201,300); 00144 // 00145 // 00146 // First, single Gaussian fit 00147 // hist->Fit(f2,"RV") 00148 // f2->GetParameters(&par[3]); 00149 // fn->SetParameters(par); 00150 // fn->FixParameter(0,0.); 00151 // fn->FixParameter(1,0.); 00152 // fn->FixParameter(2,0.); 00153 // fn->SetParLimits(5,0.,1000.); 00154 // fn->SetParName(3,"Constant"); 00155 // fn->SetParName(4,"Mean"); 00156 // fn->SetParName(5,"Sigma"); 00157 // hist->Fit(fn,"RV"); 00158 // 00159 // 00160 // Second, double Gaussian fit 00161 double chi2=4.; 00162 //if (fn->GetNDF()>0.) chi2=fn->GetChisquare()/fn->GetNDF(); 00163 if (chi2>3.){ 00164 hist->Fit(f1,fit_option); 00165 f1->GetParameters(&par[0]); 00166 fn->SetParameters(par); 00167 fn->ReleaseParameter(0); 00168 fn->ReleaseParameter(1); 00169 fn->ReleaseParameter(2); 00170 fn->SetParLimits(2,0.,1000.); 00171 fn->SetParName(0,"Constant"); 00172 fn->SetParName(1,"Mean"); 00173 fn->SetParName(2,"Sigma"); 00174 fn->SetParName(3,"Constant2"); 00175 fn->SetParName(4,"Mean2"); 00176 fn->SetParName(5,"Sigma2"); 00177 fn->SetParameter(5,par[2]*10.); 00178 hist->Fit(fn,fit_option); 00179 fn->GetParameters(&par[0]); 00180 pare[2]=fn->GetParError(2); 00181 pare[5]=fn->GetParError(5); 00182 f1->SetParameter(0,par[0]); 00183 f1->SetParameter(1,par[1]); 00184 f1->SetParameter(2,par[2]); 00185 f2->SetParameter(0,par[3]); 00186 f2->SetParameter(1,par[4]); 00187 f2->SetParameter(2,par[5]); 00188 } 00189 // 00190 // 00191 // Third, if two Gaussians have very similar widths, 00192 // set the initial value for the 2nd one to ~ x10 larger 00193 // if ( fabs(par[2]-par[5])<sqrt(pow(pare[2],2)+pow(pare[5],2)) ){ 00194 // fn->SetParameter(5,par[2]*10.); 00195 // hist->Fit(fn,fit_option); 00196 // fn->GetParameters(&par[0]); 00197 // f1->SetParameter(0,par[0]); 00198 // f1->SetParameter(1,par[1]); 00199 // f1->SetParameter(2,par[2]); 00200 // f2->SetParameter(0,par[3]); 00201 // f2->SetParameter(1,par[4]); 00202 // f2->SetParameter(2,par[5]); 00203 // } 00204 // 00205 // 00206 // Fourth, if two Gaussians still have very similar widths, 00207 // set the initial value for the 2nd one to ~ x100 larger 00208 if ( fabs(par[2]-par[5])<sqrt(pow(pare[2],2)+pow(pare[5],2)) ){ 00209 fn->SetParameter(5,par[2]*100.); 00210 hist->Fit(fn,fit_option); 00211 fn->GetParameters(&par[0]); 00212 f1->SetParameter(0,par[0]); 00213 f1->SetParameter(1,par[1]); 00214 f1->SetParameter(2,par[2]); 00215 f2->SetParameter(0,par[3]); 00216 f2->SetParameter(1,par[4]); 00217 f2->SetParameter(2,par[5]); 00218 } 00219 // 00220 }
Definition at line 224 of file DataCertificationJetMET.cc.
References i, funct::pow(), and funct::sqrt().
Referenced by DataCertificationJetMET::beginJob().
00224 { 00225 // 00226 Option_t *fit_option; 00227 fit_option = "QR0"; 00228 if (verbose==1) fit_option = "R0"; 00229 else if (verbose==2) fit_option = "VR0"; 00230 // 00231 Double_t par[6]; 00232 Double_t pare[6]; 00233 for (int i=0;i<6;i++){ 00234 par[i] =0.; 00235 pare[i]=1.; 00236 } 00237 // 00238 //hist->GetXaxis()->SetRange(201,300); 00239 // 00240 // 00241 // First, single Gaussian fit 00242 // hist->Fit(f2,fit_option) 00243 // f2->GetParameters(&par[3]); 00244 // fn->SetParameters(par); 00245 // fn->FixParameter(0,0.); 00246 // fn->FixParameter(1,0.); 00247 // fn->FixParameter(2,0.); 00248 // fn->SetParLimits(5,0.,1000.); 00249 // fn->SetParName(3,"Constant"); 00250 // fn->SetParName(4,"Mean"); 00251 // fn->SetParName(5,"Sigma"); 00252 // hist->Fit(fn,"RV"); 00253 // 00254 // 00255 // Second, double Gaussian fit 00256 double chi2=4.; 00257 //if (fn->GetNDF()>0.) chi2=fn->GetChisquare()/fn->GetNDF(); 00258 if (chi2>3.){ 00259 hist->Fit(f1,fit_option); 00260 f1->GetParameters(&par[0]); 00261 fn->SetParameters(par); 00262 fn->ReleaseParameter(0); 00263 fn->ReleaseParameter(1); 00264 fn->ReleaseParameter(2); 00265 fn->SetParLimits(2,0.,1000.); 00266 fn->SetParName(0,"Constant"); 00267 fn->SetParName(1,"Mean"); 00268 fn->SetParName(2,"Sigma"); 00269 fn->SetParName(3,"Constant2"); 00270 fn->SetParName(4,"Mean2"); 00271 fn->SetParName(5,"Sigma2"); 00272 fn->SetParameter(5,par[2]*10.); 00273 hist->Fit(fn,fit_option); 00274 fn->GetParameters(&par[0]); 00275 pare[2]=fn->GetParError(2); 00276 pare[5]=fn->GetParError(5); 00277 f1->SetParameter(0,par[0]); 00278 f1->SetParameter(1,par[1]); 00279 f1->SetParameter(2,par[2]); 00280 f2->SetParameter(0,par[3]); 00281 f2->SetParameter(1,par[4]); 00282 f2->SetParameter(2,par[5]); 00283 } 00284 // 00285 // 00286 // Third, if two Gaussians have very similar widths, 00287 // set the initial value for the 2nd one to ~ x10 larger 00288 // if ( fabs(par[2]-par[5])<sqrt(pow(pare[2],2)+pow(pare[5],2)) ){ 00289 // fn->SetParameter(5,par[2]*10.); 00290 // std::cout << "aaa3" << std::endl; 00291 // hist->Fit(fn,fit_option); 00292 // fn->GetParameters(&par[0]); 00293 // f1->SetParameter(0,par[0]); 00294 // f1->SetParameter(1,par[1]); 00295 // f1->SetParameter(2,par[2]); 00296 // f2->SetParameter(0,par[3]); 00297 // f2->SetParameter(1,par[4]); 00298 // f2->SetParameter(2,par[5]); 00299 // } 00300 // 00301 // 00302 // Fourth, if two Gaussians still have very similar widths, 00303 // set the initial value for the 2nd one to ~ x100 larger 00304 if ( fabs(par[2]-par[5])<sqrt(pow(pare[2],2)+pow(pare[5],2)) ){ 00305 fn->SetParameter(5,par[2]*100.); 00306 hist->Fit(fn,fit_option); 00307 fn->GetParameters(&par[0]); 00308 f1->SetParameter(0,par[0]); 00309 f1->SetParameter(1,par[1]); 00310 f1->SetParameter(2,par[2]); 00311 f2->SetParameter(0,par[3]); 00312 f2->SetParameter(1,par[4]); 00313 f2->SetParameter(2,par[5]); 00314 } 00315 // 00316 }