CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Functions | Variables
MuonResiduals6DOFrphiFitter.cc File Reference
#include "Alignment/MuonAlignmentAlgorithms/interface/MuonResiduals6DOFrphiFitter.h"
#include "DataFormats/MuonDetId/interface/CSCDetId.h"
#include "TH2F.h"
#include "TMath.h"

Go to the source code of this file.

Functions

double MuonResiduals6DOFrphiFitter_effectiveR (double x, double y)
 
void MuonResiduals6DOFrphiFitter_FCN (int &npar, double *gin, double &fval, double *par, int iflag)
 
double MuonResiduals6DOFrphiFitter_residual (double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
 
Double_t MuonResiduals6DOFrphiFitter_residual_trackdxdz_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_residual_trackdydz_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_residual_trackx_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_residual_tracky_TF1 (Double_t *xvec, Double_t *par)
 
double MuonResiduals6DOFrphiFitter_resslope (double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
 
Double_t MuonResiduals6DOFrphiFitter_resslope_trackdxdz_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_resslope_trackdydz_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_resslope_trackx_TF1 (Double_t *xvec, Double_t *par)
 
Double_t MuonResiduals6DOFrphiFitter_resslope_tracky_TF1 (Double_t *xvec, Double_t *par)
 

Variables

static CSCDetId MuonResiduals6DOFrphiFitter_cscDetId
 
const CSCGeometryMuonResiduals6DOFrphiFitter_cscGeometry
 
static double MuonResiduals6DOFrphiFitter_number_of_hits
 
static double MuonResiduals6DOFrphiFitter_R
 
static double MuonResiduals6DOFrphiFitter_sum_of_weights
 
static TMinuit * MuonResiduals6DOFrphiFitter_TMinuit
 
static bool MuonResiduals6DOFrphiFitter_weightAlignment
 

Function Documentation

double MuonResiduals6DOFrphiFitter_effectiveR ( double  x,
double  y 
)

Definition at line 27 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_R.

Referenced by MuonResiduals6DOFrphiFitter_FCN(), MuonResiduals6DOFrphiFitter_residual_trackdxdz_TF1(), MuonResiduals6DOFrphiFitter_residual_trackdydz_TF1(), MuonResiduals6DOFrphiFitter_residual_trackx_TF1(), MuonResiduals6DOFrphiFitter_residual_tracky_TF1(), MuonResiduals6DOFrphiFitter_resslope_trackdxdz_TF1(), MuonResiduals6DOFrphiFitter_resslope_trackdydz_TF1(), MuonResiduals6DOFrphiFitter_resslope_trackx_TF1(), MuonResiduals6DOFrphiFitter_resslope_tracky_TF1(), and MuonResiduals6DOFrphiFitter::plot().

27  {
28 // CSCDetId id = MuonResiduals6DOFrphiFitter_cscDetId;
29 // CSCDetId layerId(id.endcap(), id.station(), id.ring(), id.chamber(), 3);
30 
31 // int strip = MuonResiduals6DOFrphiFitter_cscGeometry->layer(layerId)->geometry()->nearestStrip(LocalPoint(x, y, 0.));
32 // double angle = MuonResiduals6DOFrphiFitter_cscGeometry->layer(layerId)->geometry()->stripAngle(strip) - M_PI/2.;
33 
34 // if (fabs(angle) < 1e-10) return MuonResiduals6DOFrphiFitter_R;
35 // else return x/tan(angle) - y;
36 
38 }
static double MuonResiduals6DOFrphiFitter_R
void MuonResiduals6DOFrphiFitter_FCN ( int &  npar,
double *  gin,
double &  fval,
double *  par,
int  iflag 
)

Definition at line 50 of file MuonResiduals6DOFrphiFitter.cc.

References alpha, MuonResidualsFitterFitInfo::fitter(), MuonResiduals6DOFrphiFitter::kAlignPhiX, MuonResiduals6DOFrphiFitter::kAlignPhiY, MuonResiduals6DOFrphiFitter::kAlignPhiZ, MuonResiduals6DOFrphiFitter::kAlignX, MuonResiduals6DOFrphiFitter::kAlignY, MuonResiduals6DOFrphiFitter::kAlignZ, MuonResiduals6DOFrphiFitter::kAlpha, MuonResiduals6DOFrphiFitter::kAngleX, MuonResiduals6DOFrphiFitter::kAngleY, MuonResidualsFitter::kGaussPowerTails, MuonResiduals6DOFrphiFitter::kPositionX, MuonResiduals6DOFrphiFitter::kPositionY, MuonResidualsFitter::kPowerLawTails, MuonResidualsFitter::kPureGaussian, MuonResiduals6DOFrphiFitter::kRedChi2, MuonResiduals6DOFrphiFitter::kResid, MuonResiduals6DOFrphiFitter::kResidGamma, MuonResiduals6DOFrphiFitter::kResidSigma, MuonResiduals6DOFrphiFitter::kResSlope, MuonResiduals6DOFrphiFitter::kResSlopeGamma, MuonResiduals6DOFrphiFitter::kResSlopeSigma, MuonResidualsFitter::kROOTVoigt, MuonResiduals6DOFrphiFitter_effectiveR(), MuonResiduals6DOFrphiFitter_number_of_hits, MuonResiduals6DOFrphiFitter_residual(), MuonResiduals6DOFrphiFitter_resslope(), MuonResiduals6DOFrphiFitter_sum_of_weights, MuonResiduals6DOFrphiFitter_TMinuit, MuonResiduals6DOFrphiFitter_weightAlignment, MuonResidualsFitter_logGaussPowerTails(), MuonResidualsFitter_logPowerLawTails(), MuonResidualsFitter_logPureGaussian(), MuonResidualsFitter_logROOTVoigt(), MuonResidualsFitter::residuals_begin(), MuonResidualsFitter::residuals_end(), MuonResidualsFitter::residualsModel(), and CommonMethods::weight().

Referenced by MuonResiduals6DOFrphiFitter::fit().

50  {
52  MuonResidualsFitter *fitter = fitinfo->fitter();
53 
54  fval = 0.;
55  for (std::vector<double*>::const_iterator resiter = fitter->residuals_begin(); resiter != fitter->residuals_end(); ++resiter) {
56  const double residual = (*resiter)[MuonResiduals6DOFrphiFitter::kResid];
57  const double resslope = (*resiter)[MuonResiduals6DOFrphiFitter::kResSlope];
58  const double positionX = (*resiter)[MuonResiduals6DOFrphiFitter::kPositionX];
59  const double positionY = (*resiter)[MuonResiduals6DOFrphiFitter::kPositionY];
60  const double angleX = (*resiter)[MuonResiduals6DOFrphiFitter::kAngleX];
61  const double angleY = (*resiter)[MuonResiduals6DOFrphiFitter::kAngleY];
62  const double redchi2 = (*resiter)[MuonResiduals6DOFrphiFitter::kRedChi2];
63 
64  const double alignx = par[MuonResiduals6DOFrphiFitter::kAlignX];
65  const double aligny = par[MuonResiduals6DOFrphiFitter::kAlignY];
66  const double alignz = par[MuonResiduals6DOFrphiFitter::kAlignZ];
67  const double alignphix = par[MuonResiduals6DOFrphiFitter::kAlignPhiX];
68  const double alignphiy = par[MuonResiduals6DOFrphiFitter::kAlignPhiY];
69  const double alignphiz = par[MuonResiduals6DOFrphiFitter::kAlignPhiZ];
70  const double residsigma = par[MuonResiduals6DOFrphiFitter::kResidSigma];
71  const double resslopesigma = par[MuonResiduals6DOFrphiFitter::kResSlopeSigma];
73  const double residgamma = par[MuonResiduals6DOFrphiFitter::kResidGamma];
74  const double resslopegamma = par[MuonResiduals6DOFrphiFitter::kResSlopeGamma];
75 
76  double residpeak = MuonResiduals6DOFrphiFitter_residual(alignx, aligny, alignz, alignphix, alignphiy, alignphiz, positionX, positionY, angleX, angleY, MuonResiduals6DOFrphiFitter_effectiveR(positionX, positionY), alpha, resslope);
77  double resslopepeak = MuonResiduals6DOFrphiFitter_resslope(alignx, aligny, alignz, alignphix, alignphiy, alignphiz, positionX, positionY, angleX, angleY, MuonResiduals6DOFrphiFitter_effectiveR(positionX, positionY));
78 
81 
82  if (!MuonResiduals6DOFrphiFitter_weightAlignment || TMath::Prob(redchi2*6, 6) < 0.99) { // no spikes allowed
83 
85  fval += -weight * MuonResidualsFitter_logPureGaussian(residual, residpeak, residsigma);
86  fval += -weight * MuonResidualsFitter_logPureGaussian(resslope, resslopepeak, resslopesigma);
87  }
89  fval += -weight * MuonResidualsFitter_logPowerLawTails(residual, residpeak, residsigma, residgamma);
90  fval += -weight * MuonResidualsFitter_logPowerLawTails(resslope, resslopepeak, resslopesigma, resslopegamma);
91  }
92  else if (fitter->residualsModel() == MuonResidualsFitter::kROOTVoigt) {
93  fval += -weight * MuonResidualsFitter_logROOTVoigt(residual, residpeak, residsigma, residgamma);
94  fval += -weight * MuonResidualsFitter_logROOTVoigt(resslope, resslopepeak, resslopesigma, resslopegamma);
95  }
97  fval += -weight * MuonResidualsFitter_logGaussPowerTails(residual, residpeak, residsigma);
98  fval += -weight * MuonResidualsFitter_logGaussPowerTails(resslope, resslopepeak, resslopesigma);
99  }
100  else { assert(false); }
101 
102  }
103  }
104 }
double MuonResidualsFitter_logGaussPowerTails(double residual, double center, double sigma)
float alpha
Definition: AMPTWrapper.h:95
MuonResidualsFitter * fitter()
double MuonResidualsFitter_logROOTVoigt(double residual, double center, double sigma, double gamma)
double MuonResiduals6DOFrphiFitter_resslope(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
static double MuonResiduals6DOFrphiFitter_number_of_hits
static bool MuonResiduals6DOFrphiFitter_weightAlignment
double MuonResiduals6DOFrphiFitter_residual(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
double MuonResidualsFitter_logPowerLawTails(double residual, double center, double sigma, double gamma)
static TMinuit * MuonResiduals6DOFrphiFitter_TMinuit
static double MuonResiduals6DOFrphiFitter_sum_of_weights
std::vector< double * >::const_iterator residuals_end() const
std::vector< double * >::const_iterator residuals_begin() const
double MuonResidualsFitter_logPureGaussian(double residual, double center, double sigma)
const double par[8 *NPar][4]
double MuonResiduals6DOFrphiFitter_residual ( double  delta_x,
double  delta_y,
double  delta_z,
double  delta_phix,
double  delta_phiy,
double  delta_phiz,
double  track_x,
double  track_y,
double  track_dxdz,
double  track_dydz,
double  R,
double  alpha,
double  resslope 
)

Definition at line 19 of file MuonResiduals6DOFrphiFitter.cc.

References funct::pow().

Referenced by MuonResiduals6DOFrphiFitter_FCN(), MuonResiduals6DOFrphiFitter_residual_trackdxdz_TF1(), MuonResiduals6DOFrphiFitter_residual_trackdydz_TF1(), MuonResiduals6DOFrphiFitter_residual_trackx_TF1(), MuonResiduals6DOFrphiFitter_residual_tracky_TF1(), and MuonResiduals6DOFrphiFitter::plot().

19  {
20  return delta_x - (track_x/R - 3.*pow(track_x/R, 3)) * delta_y - track_dxdz * delta_z - track_y * track_dxdz * delta_phix + track_x * track_dxdz * delta_phiy - track_y * delta_phiz + resslope * alpha;
21 }
float alpha
Definition: AMPTWrapper.h:95
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
Double_t MuonResiduals6DOFrphiFitter_residual_trackdxdz_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 42 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_residual().

Referenced by MuonResiduals6DOFrphiFitter::plot().

42 { return 10.*MuonResiduals6DOFrphiFitter_residual(par[0], par[1], par[2], par[3], par[4], par[5], par[6], par[7], xvec[0], par[9], MuonResiduals6DOFrphiFitter_effectiveR(par[6], par[7]), par[10], par[11]); }
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
double MuonResiduals6DOFrphiFitter_residual(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_residual_trackdydz_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 43 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_residual().

Referenced by MuonResiduals6DOFrphiFitter::plot().

43 { return 10.*MuonResiduals6DOFrphiFitter_residual(par[0], par[1], par[2], par[3], par[4], par[5], par[6], par[7], par[8], xvec[0], MuonResiduals6DOFrphiFitter_effectiveR(par[6], par[7]), par[10], par[11]); }
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
double MuonResiduals6DOFrphiFitter_residual(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_residual_trackx_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 40 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_residual().

Referenced by MuonResiduals6DOFrphiFitter::plot().

40 { return 10.*MuonResiduals6DOFrphiFitter_residual(par[0], par[1], par[2], par[3], par[4], par[5], xvec[0], par[7], par[8], par[9], MuonResiduals6DOFrphiFitter_effectiveR(xvec[0], par[7]), par[10], par[11]); }
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
double MuonResiduals6DOFrphiFitter_residual(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_residual_tracky_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 41 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_residual().

Referenced by MuonResiduals6DOFrphiFitter::plot().

41 { return 10.*MuonResiduals6DOFrphiFitter_residual(par[0], par[1], par[2], par[3], par[4], par[5], par[6], xvec[0], par[8], par[9], MuonResiduals6DOFrphiFitter_effectiveR(par[6], xvec[0]), par[10], par[11]); }
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
double MuonResiduals6DOFrphiFitter_residual(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R, double alpha, double resslope)
const double par[8 *NPar][4]
double MuonResiduals6DOFrphiFitter_resslope ( double  delta_x,
double  delta_y,
double  delta_z,
double  delta_phix,
double  delta_phiy,
double  delta_phiz,
double  track_x,
double  track_y,
double  track_dxdz,
double  track_dydz,
double  R 
)

Definition at line 23 of file MuonResiduals6DOFrphiFitter.cc.

Referenced by MuonResiduals6DOFrphiFitter_FCN(), MuonResiduals6DOFrphiFitter_resslope_trackdxdz_TF1(), MuonResiduals6DOFrphiFitter_resslope_trackdydz_TF1(), MuonResiduals6DOFrphiFitter_resslope_trackx_TF1(), MuonResiduals6DOFrphiFitter_resslope_tracky_TF1(), and MuonResiduals6DOFrphiFitter::plot().

23  {
24  return -track_dxdz/2./R * delta_y + (track_x/R - track_dxdz * track_dydz) * delta_phix + (1. + track_dxdz * track_dxdz) * delta_phiy - track_dydz * delta_phiz;
25 }
Double_t MuonResiduals6DOFrphiFitter_resslope_trackdxdz_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 47 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_resslope().

Referenced by MuonResiduals6DOFrphiFitter::plot().

47 { return 1000.*MuonResiduals6DOFrphiFitter_resslope(par[0], par[1], par[2], par[3], par[4], par[5], par[6], par[7], xvec[0], par[9], MuonResiduals6DOFrphiFitter_effectiveR(par[6], par[7])); }
double MuonResiduals6DOFrphiFitter_resslope(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_resslope_trackdydz_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 48 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_resslope().

Referenced by MuonResiduals6DOFrphiFitter::plot().

48 { return 1000.*MuonResiduals6DOFrphiFitter_resslope(par[0], par[1], par[2], par[3], par[4], par[5], par[6], par[7], par[8], xvec[0], MuonResiduals6DOFrphiFitter_effectiveR(par[6], par[7])); }
double MuonResiduals6DOFrphiFitter_resslope(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_resslope_trackx_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 45 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_resslope().

Referenced by MuonResiduals6DOFrphiFitter::plot().

45 { return 1000.*MuonResiduals6DOFrphiFitter_resslope(par[0], par[1], par[2], par[3], par[4], par[5], xvec[0], par[7], par[8], par[9], MuonResiduals6DOFrphiFitter_effectiveR(xvec[0], par[7])); }
double MuonResiduals6DOFrphiFitter_resslope(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
const double par[8 *NPar][4]
Double_t MuonResiduals6DOFrphiFitter_resslope_tracky_TF1 ( Double_t *  xvec,
Double_t *  par 
)

Definition at line 46 of file MuonResiduals6DOFrphiFitter.cc.

References MuonResiduals6DOFrphiFitter_effectiveR(), and MuonResiduals6DOFrphiFitter_resslope().

Referenced by MuonResiduals6DOFrphiFitter::plot().

46 { return 1000.*MuonResiduals6DOFrphiFitter_resslope(par[0], par[1], par[2], par[3], par[4], par[5], par[6], xvec[0], par[8], par[9], MuonResiduals6DOFrphiFitter_effectiveR(par[6], xvec[0])); }
double MuonResiduals6DOFrphiFitter_resslope(double delta_x, double delta_y, double delta_z, double delta_phix, double delta_phiy, double delta_phiz, double track_x, double track_y, double track_dxdz, double track_dydz, double R)
double MuonResiduals6DOFrphiFitter_effectiveR(double x, double y)
const double par[8 *NPar][4]

Variable Documentation

CSCDetId MuonResiduals6DOFrphiFitter_cscDetId
static

Definition at line 12 of file MuonResiduals6DOFrphiFitter.cc.

const CSCGeometry* MuonResiduals6DOFrphiFitter_cscGeometry

Definition at line 11 of file MuonResiduals6DOFrphiFitter.cc.

double MuonResiduals6DOFrphiFitter_number_of_hits
static
double MuonResiduals6DOFrphiFitter_R
static
double MuonResiduals6DOFrphiFitter_sum_of_weights
static
TMinuit* MuonResiduals6DOFrphiFitter_TMinuit
static
bool MuonResiduals6DOFrphiFitter_weightAlignment
static