CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Functions | Variables
HOCalibAnalyzer.cc File Reference
#include <memory>
#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 "DataFormats/HcalCalibObjects/interface/HOCalibVariables.h"
#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "CommonTools/UtilAlgos/interface/TFileService.h"
#include "TMath.h"
#include "TFile.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TTree.h"
#include "TProfile.h"
#include "TPostScript.h"
#include "TCanvas.h"
#include "TF1.h"
#include "TStyle.h"
#include "TMinuit.h"
#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>

Go to the source code of this file.

Classes

class  HOCalibAnalyzer
 

Functions

void fcnbg (Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t flag)
 
void fcnsg (Int_t &npar, Double_t *gin, Double_t &f, Double_t *par, Int_t flag)
 
Double_t gausX (Double_t *x, Double_t *par)
 
Double_t langaufun (Double_t *x, Double_t *par)
 
static const
edm::ParameterSetDescriptionFillerPluginFactory::PMaker
< edm::ParameterSetDescriptionFiller
< HOCalibAnalyzer > > 
s_filler__LINE__ ("HOCalibAnalyzer")
 
static const
edm::MakerPluginFactory::PMaker
< edm::WorkerMaker
< HOCalibAnalyzer > > 
s_maker__LINE__ ("HOCalibAnalyzer")
 
void set_mean (double &x, bool mdigi)
 
void set_sigma (double &x, bool mdigi)
 
Double_t totalfunc (Double_t *x, Double_t *par)
 

Variables

vector< float > cro_ssg [netamx][nphimx+1]
 
static const int etamap [4][21]
 
int ietafit
 
int iphifit
 
static const int mapx0m [9][2] ={{17,19}, {14,15}, {13,16}, {9,11}, {0,0}, {8,12}, {5,6}, {4,7}, {1,3}}
 
static const int mapx0p [9][2] ={{3,1}, {7,4}, {6,5}, {12,8}, {0,0}, {11,9}, {16,13}, {15,14}, {19,17}}
 
static const int mapx1 [6][3] ={{1,4,8}, {12,7,3}, {5,9,13}, {11,6,2}, {16,15,14}, {19,18,17}}
 
static const int mapx2 [6][3] ={{1,4,8}, {12,7,3}, {5,9,13}, {11,6,2}, {16,15,14}, {-1,-1,-1}}
 
const int nbgpr = 3
 
static const int netamx =30
 
static const int nphimx =72
 
static const int npixlebt [21] ={0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 0, 6, 7, 8, 9, 0,11,13,14,15,0}
 
static const int npixleft [21] ={0, 0, 1, 2, 0, 4, 5, 6, 0, 8, 0, 0,11, 0,13,14,15, 0,17,18,0}
 
static const int npixleup [21] ={0, 4, 5, 6, 8, 9, 0,11, 0,13, 0,15,16, 0,17,18,19, 0, 0, 0,0}
 
static const int npixribt [21] ={0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 0, 7, 0, 9, 0,11,12,14,15,16,0}
 
static const int npixrigh [21] ={0, 2, 3, 0, 5, 6, 7, 0, 9, 0, 0,12, 0,14,15,16, 0,18,19, 0,0}
 
static const int npixriup [21] ={0, 5, 6, 7, 9, 0,11,12,13,14, 0,16, 0,17,18,19, 0, 0, 0, 0,0}
 
const int nsgpr = 7
 
static const int phimap [4][21]
 
vector< float > sig_reg [netamx][nphimx+1]
 

Function Documentation

void fcnbg ( Int_t &  npar,
Double_t *  gin,
Double_t &  f,
Double_t *  par,
Int_t  flag 
)

Definition at line 173 of file HOCalibAnalyzer.cc.

References cro_ssg, alignCSCRings::e, i, ietafit, iphifit, fff_deleter::log, and bookConverter::max.

Referenced by HOCalibAnalyzer::endJob().

173  {
174 
175  double fval = -par[0];
176  for (unsigned i=0; i<cro_ssg[ietafit][iphifit].size(); i++) {
177  double xval = (double)cro_ssg[ietafit][iphifit][i];
178  fval +=log(max(1.e-30,par[0]*TMath::Gaus(xval, par[1], par[2], 1)));
179  // fval +=log(par[0]*TMath::Gaus(xval, par[1], par[2], 1));
180  }
181  f = -fval;
182 }
int i
Definition: DBlmapReader.cc:9
int iphifit
double f[11][100]
vector< float > cro_ssg[netamx][nphimx+1]
int ietafit
void fcnsg ( Int_t &  npar,
Double_t *  gin,
Double_t &  f,
Double_t *  par,
Int_t  flag 
)

Definition at line 184 of file HOCalibAnalyzer.cc.

References i, ietafit, iphifit, fff_deleter::log, sig_reg, and totalfunc().

Referenced by HOCalibAnalyzer::endJob().

184  {
185 
186  double xval[2];
187  double fval = -(par[0]+par[5]);
188  for (unsigned i=0; i<sig_reg[ietafit][iphifit].size(); i++) {
189  xval[0] = (double)sig_reg[ietafit][iphifit][i];
190  fval +=log(totalfunc(xval, par));
191  }
192  f = -fval;
193 }
int i
Definition: DBlmapReader.cc:9
Double_t totalfunc(Double_t *x, Double_t *par)
vector< float > sig_reg[netamx][nphimx+1]
int iphifit
double f[11][100]
int ietafit
Double_t gausX ( Double_t *  x,
Double_t *  par 
)

Definition at line 112 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::endJob(), and totalfunc().

112  {
113  return par[0]*(TMath::Gaus(x[0], par[1], par[2], kTRUE));
114 }
Definition: DDAxes.h:10
Double_t langaufun ( Double_t *  x,
Double_t *  par 
)

Definition at line 116 of file HOCalibAnalyzer.cc.

References i, np, and relval_parameters_module::step.

Referenced by fitUtilities::doLanGaussFit(), HOCalibAnalyzer::endJob(), langaupro(), and totalfunc().

116  {
117 
118  //Fit parameters:
119  //par[0]*par[1]=Width (scale) parameter of Landau density
120  //par[1]=Most Probable (MP, location) parameter of Landau density
121  //par[2]=Total area (integral -inf to inf, normalization constant)
122  //par[3]=Width (sigma) of convoluted Gaussian function
123  //
124  //In the Landau distribution (represented by the CERNLIB approximation),
125  //the maximum is located at x=-0.22278298 with the location parameter=0.
126  //This shift is corrected within this function, so that the actual
127  //maximum is identical to the MP parameter.
128  // /*
129  // Numeric constants
130  Double_t invsq2pi = 0.3989422804014; // (2 pi)^(-1/2)
131  Double_t mpshift = -0.22278298; // Landau maximum location
132 
133  // Control constants
134  Double_t np = 100.0; // number of convolution steps
135  Double_t sc = 5.0; // convolution extends to +-sc Gaussian sigmas
136 
137  // Variables
138  Double_t xx;
139  Double_t mpc;
140  Double_t fland;
141  Double_t sum = 0.0;
142  Double_t xlow,xupp;
143  Double_t step;
144  Double_t i;
145 
146 
147  // MP shift correction
148  mpc = par[1] - mpshift * par[0]*par[1];
149 
150  // Range of convolution integral
151  xlow = x[0] - sc * par[3];
152  xupp = x[0] + sc * par[3];
153 
154  step = (xupp-xlow) / np;
155 
156  // Convolution integral of Landau and Gaussian by sum
157  for(i=1.0; i<=np/2; i++) {
158  xx = xlow + (i-.5) * step;
159  fland = TMath::Landau(xx,mpc,par[0]*par[1], kTRUE); // / par[0];
160  sum += fland * TMath::Gaus(x[0],xx,par[3]);
161  xx = xupp - (i-.5) * step;
162  fland = TMath::Landau(xx,mpc,par[0]*par[1], kTRUE); // / par[0];
163  sum += fland * TMath::Gaus(x[0],xx,par[3]);
164  }
165 
166  return (par[2] * step * sum * invsq2pi / par[3]);
167 }
int i
Definition: DBlmapReader.cc:9
int np
Definition: AMPTWrapper.h:33
Definition: DDAxes.h:10
static const edm::ParameterSetDescriptionFillerPluginFactory::PMaker<edm::ParameterSetDescriptionFiller< HOCalibAnalyzer > > s_filler__LINE__ ( "HOCalibAnalyzer"  )
static
static const edm::MakerPluginFactory ::PMaker< edm::WorkerMaker< HOCalibAnalyzer > > s_maker__LINE__ ( "HOCalibAnalyzer"  )
static
void set_mean ( double &  x,
bool  mdigi 
)

Definition at line 195 of file HOCalibAnalyzer.cc.

References bookConverter::max, and min().

Referenced by HOCalibAnalyzer::endJob().

195  {
196  if(mdigi) {
197  x = min(x, 0.5);
198  x = max(x, -0.5);
199  } else {
200  x = min(x, 0.1);
201  x = max(x, -0.1);
202  }
203 }
T min(T a, T b)
Definition: MathUtil.h:58
Definition: DDAxes.h:10
void set_sigma ( double &  x,
bool  mdigi 
)

Definition at line 205 of file HOCalibAnalyzer.cc.

References bookConverter::max, and min().

Referenced by HOCalibAnalyzer::endJob().

205  {
206  if(mdigi) {
207  x = min(x, 1.2);
208  x = max(x, -1.2);
209  } else {
210  x = min(x, 0.24);
211  x = max(x, -0.24);
212  }
213 }
T min(T a, T b)
Definition: MathUtil.h:58
Definition: DDAxes.h:10
Double_t totalfunc ( Double_t *  x,
Double_t *  par 
)

Definition at line 169 of file HOCalibAnalyzer.cc.

References gausX(), and langaufun().

Referenced by HOCalibAnalyzer::endJob(), and fcnsg().

169  {
170  return gausX(x, par) + langaufun(x, &par[3]);
171 }
Double_t gausX(Double_t *x, Double_t *par)
Definition: DDAxes.h:10
Double_t langaufun(Double_t *x, Double_t *par)

Variable Documentation

vector<float> cro_ssg[netamx][nphimx+1]

Definition at line 104 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze(), and fcnbg().

const int etamap[4][21]
static
Initial value:
={{-1, 0,3,1, 0,2,3, 1,0,2, -1, 3,1,2, 4,4,4, -1,-1,-1, -1},
{-1, 0,3,1, 0,2,3, 1,0,2, -1, 3,1,2, 4,4,4, 5,5,5, -1},
{-1, 0,-1,0, 1,2,2, 1,3,5, -1, 5,3,6, 7,7,6, 8,-1,8, -1},
{-1, 8,-1,8, 7,6,6, 7,5,3, -1, 3,5,2, 1,1,2, 0,-1,0, -1}}

Definition at line 78 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

int ietafit

Definition at line 101 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::endJob(), fcnbg(), and fcnsg().

int iphifit

Definition at line 102 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::endJob(), fcnbg(), and fcnsg().

const int mapx0m[9][2] ={{17,19}, {14,15}, {13,16}, {9,11}, {0,0}, {8,12}, {5,6}, {4,7}, {1,3}}
static

Definition at line 76 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int mapx0p[9][2] ={{3,1}, {7,4}, {6,5}, {12,8}, {0,0}, {11,9}, {16,13}, {15,14}, {19,17}}
static

Definition at line 75 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int mapx1[6][3] ={{1,4,8}, {12,7,3}, {5,9,13}, {11,6,2}, {16,15,14}, {19,18,17}}
static

Definition at line 71 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int mapx2[6][3] ={{1,4,8}, {12,7,3}, {5,9,13}, {11,6,2}, {16,15,14}, {-1,-1,-1}}
static

Definition at line 73 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int nbgpr = 3

Definition at line 98 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::endJob().

const int netamx =30
static

Definition at line 96 of file HOCalibAnalyzer.cc.

const int nphimx =72
static

Definition at line 97 of file HOCalibAnalyzer.cc.

const int npixlebt[21] ={0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 0, 6, 7, 8, 9, 0,11,13,14,15,0}
static

Definition at line 91 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int npixleft[21] ={0, 0, 1, 2, 0, 4, 5, 6, 0, 8, 0, 0,11, 0,13,14,15, 0,17,18,0}
static

Definition at line 89 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int npixleup[21] ={0, 4, 5, 6, 8, 9, 0,11, 0,13, 0,15,16, 0,17,18,19, 0, 0, 0,0}
static

Definition at line 93 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int npixribt[21] ={0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 0, 7, 0, 9, 0,11,12,14,15,16,0}
static

Definition at line 92 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int npixrigh[21] ={0, 2, 3, 0, 5, 6, 7, 0, 9, 0, 0,12, 0,14,15,16, 0,18,19, 0,0}
static

Definition at line 90 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int npixriup[21] ={0, 5, 6, 7, 9, 0,11,12,13,14, 0,16, 0,17,18,19, 0, 0, 0, 0,0}
static

Definition at line 94 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

const int nsgpr = 7

Definition at line 99 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::endJob().

const int phimap[4][21]
static
Initial value:
={{-1, 0,2,2, 1,0,1, 1,2,1, -1, 0,0,2, 2,1,0, 2,1,0, -1},
{-1, 0,2,2, 1,0,1, 1,2,1, -1, 0,0,2, 2,1,0, 2,1,0, -1},
{-1, 1,-1,0, 1,1,0, 0,1,1, -1, 0,0,1, 1,0,0, 1,-1,0, -1},
{-1, 0,-1,1, 0,0,1, 1,0,0, -1, 1,1,0, 0,1,1, 0,-1,1, -1}}

Definition at line 83 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze().

vector<float> sig_reg[netamx][nphimx+1]

Definition at line 103 of file HOCalibAnalyzer.cc.

Referenced by HOCalibAnalyzer::analyze(), HOCalibAnalyzer::endJob(), and fcnsg().