CMS 3D CMS Logo

DataCertificationJetMET.cc File Reference

#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 Documentation

#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().


Function Documentation

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   ) 

void fitd ( TH1F *  hist,
TF1 *  fn,
TF1 *  f1,
TF1 *  f2,
int  verbose 
)

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 }

void fitdd ( TH1D *  hist,
TF1 *  fn,
TF1 *  f1,
TF1 *  f2,
int  verbose 
)

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 }


Generated on Tue Jun 9 17:52:46 2009 for CMSSW by  doxygen 1.5.4