CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions | Static Public Attributes | Private Attributes
CSCTFPtMethods Class Reference

#include <CSCTFPtMethods.h>

Public Types

enum  { kMaxParameters = 4 }
 
enum  {
  kME1andME2 = 1, kME1andME3, kME2andME3, kME2andME4,
  kME3andME4, kME1andME2ovr, kME2andMB1, kME2andMB2
}
 

Public Member Functions

bool chargeValid (unsigned Pt, unsigned Quality, unsigned Eta, unsigned method) const
 
 CSCTFPtMethods (const L1MuTriggerPtScale *ptScale=nullptr)
 
double Likelihood (double *phi12, double *phi23, double *par_m12, double *par_m23, double *par_sig12, double *par_sig23, double *par_rho, double *v) const
 
double Likelihood2 (double *phi12, double *par_m12, double *par_sig12, double *v) const
 
double Likelihood2011 (double *phi12, double *phi23, double *par_m12, double *par_m23, double *par_sig12, double *par_sig23, double *par_rho, double *v) const
 
double Likelihood2_2011 (double *phi12, double *par_m12, double *par_sig12, double *v) const
 
float Pt2Stn (int type, float eta, float dphi, int fr=-1) const
 
float Pt2Stn2010 (int type, float eta, float dphi, int fr=-1, int method=11) const
 
float Pt2Stn2011 (int type, float eta, float dphi, int fr=-1, int method=11, int phiSign=2) const
 
float Pt2Stn2012 (int type, float eta, float dphi, int PtbyMLH, float &theLH, int fr=-1, int method=11) const
 
float Pt2Stn2012_DT (int type, float eta, float dphi, int PtbyMLH, float &theLH, int fr=-1, int method=11, int phiSign=2) const
 
float Pt2StnChiSq (int type, float eta, int dphi, int fr) const
 
float Pt2StnHybrid (int type, float eta, int dphi, int fr) const
 
float Pt3Stn (int type, float eta, float dphi1, float dphi2, int fr=-1) const
 
float Pt3Stn2010 (int type, float eta, float dphi1, float dphi2, int fr=-1, int method=11) const
 
float Pt3Stn2011 (int type, float eta, float dphi1, float dphi2, int fr=-1, int method=11) const
 
float Pt3Stn2012 (int type, float eta, float dphi1, float dphi2, int PtbyMLH, float &theLH, int fr=-1, int method=11) const
 
float Pt3Stn2012_DT (int type, float eta, float dphi1, float dphi2, int PtbyMLH, float &theLH, int fr=-1, int method=11) const
 
float Pt3StnChiSq (int type, float eta, int dphi1, int dphi2, int fr) const
 
float Pt3StnHybrid (int type, float eta, int dphi1, int dphi2, int fr) const
 
float PtEff90 (float pt, float eta, int mode) const
 

Static Public Attributes

static const double A_mu12Front [4][15]
 
static const double A_mu12Rare [4][15]
 
static const double A_mu13Front [4][15]
 
static const double A_mu13Rare [4][15]
 
static const double A_mu14Front [4][15]
 
static const double A_mu14Rare [4][15]
 
static const double A_mu23 [4][15]
 
static const double A_mu24 [4][15]
 
static const double A_mu34 [4][15]
 
static const double A_mu51 [4][15]
 
static const double A_mu52 [4][15]
 
static const double A_mu53 [4][15]
 
static const double A_rho123FrontCSCTF [5][15]
 
static const double A_rho123RareCSCTF [5][15]
 
static const double A_rho124FrontCSCTF [5][15]
 
static const double A_rho124RareCSCTF [5][15]
 
static const double A_rho134FrontCSCTF [5][15]
 
static const double A_rho134RareCSCTF [5][15]
 
static const double A_rho234CSCTF [5][15]
 
static const double A_rho512 [5][15]
 DT correlation. More...
 
static const double A_rho513 [5][15]
 
static const double A_rho523 [5][15]
 
static const double A_sig12Front [3][15]
 
static const double A_sig12Rare [3][15]
 
static const double A_sig13Front [3][15]
 
static const double A_sig13Rare [3][15]
 
static const double A_sig14Front [3][15]
 
static const double A_sig14Rare [3][15]
 
static const double A_sig23 [3][15]
 
static const double A_sig24 [3][15]
 
static const double A_sig34 [3][15]
 
static const double A_sig51 [3][15]
 
static const double A_sig52 [3][15]
 
static const double A_sig53 [3][15]
 
static const double AB_mu12F [4][15]
 
static const double AB_mu12FME11 [4][15]
 
static const double AB_mu12FnoME11 [4][15]
 
static const double AB_mu12R [4][15]
 
static const double AB_mu12RME11 [4][15]
 
static const double AB_mu12RnoME11 [4][15]
 
static const double AB_mu13F [4][15]
 
static const double AB_mu13FME11 [4][15]
 
static const double AB_mu13FnoME11 [4][15]
 
static const double AB_mu13R [4][15]
 
static const double AB_mu13RME11 [4][15]
 
static const double AB_mu13RnoME11 [4][15]
 
static const double AB_mu14F [4][15]
 
static const double AB_mu14FME11 [4][15]
 
static const double AB_mu14FnoME11 [4][15]
 
static const double AB_mu14R [4][15]
 
static const double AB_mu14RME11 [4][15]
 
static const double AB_mu14RnoME11 [4][15]
 
static const double AB_mu23 [4][15]
 
static const double AB_mu24 [4][15]
 
static const double AB_mu34 [4][15]
 
static const double AB_mu5 [4][15]
 
static const double AB_mu51 [4][15]
 
static const double AB_mu52 [4][15]
 
static const double AB_mu53 [4][15]
 
static const double AB_rho123F [5][15]
 
static const double AB_rho123R [5][15]
 
static const double AB_rho124F [5][15]
 
static const double AB_rho124R [5][15]
 
static const double AB_rho134F [5][15]
 
static const double AB_rho134R [5][15]
 
static const double AB_rho234 [5][15]
 
static const double AB_rho512 [5][15]
 
static const double AB_rho513 [5][15]
 
static const double AB_rho51B [5][15]
 
static const double AB_rho523 [5][15]
 
static const double AB_rho52B [5][15]
 
static const double AB_rho53B [5][15]
 
static const double AB_sig12F [4][15]
 
static const double AB_sig12FME11 [4][15]
 
static const double AB_sig12FnoME11 [4][15]
 
static const double AB_sig12R [4][15]
 
static const double AB_sig12RME11 [4][15]
 
static const double AB_sig12RnoME11 [4][15]
 
static const double AB_sig13F [4][15]
 
static const double AB_sig13FME11 [4][15]
 
static const double AB_sig13FnoME11 [4][15]
 
static const double AB_sig13R [4][15]
 
static const double AB_sig13RME11 [4][15]
 
static const double AB_sig13RnoME11 [4][15]
 
static const double AB_sig14F [4][15]
 
static const double AB_sig14FME11 [4][15]
 
static const double AB_sig14FnoME11 [4][15]
 
static const double AB_sig14R [4][15]
 
static const double AB_sig14RME11 [4][15]
 
static const double AB_sig14RnoME11 [4][15]
 
static const double AB_sig23 [4][15]
 
static const double AB_sig24 [4][15]
 
static const double AB_sig34 [4][15]
 
static const double AB_sig5 [4][15]
 
static const double AB_sig51 [4][15]
 
static const double AB_sig52 [4][15]
 
static const double AB_sig53 [4][15]
 
static const float AkHighEta_Fit1 [kME2andMB2][kMaxParameters]
 
static const float AkHighEta_Fit2 [kME2andMB2][kMaxParameters]
 
static const float AkLowEta_Fit1 [kME2andMB2][kMaxParameters]
 
static const float AkLowEta_Fit2 [kME2andMB2][kMaxParameters]
 
static const float BkHighEta_Fit2 [kME2andMB2][kMaxParameters]
 
static const float BkLowEta_Fit2 [kME2andMB2][kMaxParameters]
 
static const float dphifr0 [4][15][28]
 
static const float dphifr1 [4][15][28]
 
static const float etabins [16]
 
static const float FRCorrHighEta [kME2andMB2][2]
 
static const float FRCorrLowEta [kME2andMB2][2]
 
static const float kGlobalScaleFactor = 1.36
 
static const float ptbins [29]
 
static const float sigmafr0 [4][15][28]
 
static const float sigmafr1 [4][15][28]
 

Private Attributes

const L1MuTriggerPtScaletrigger_scale
 

Detailed Description

Definition at line 8 of file CSCTFPtMethods.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
kMaxParameters 

Definition at line 10 of file CSCTFPtMethods.h.

10 { kMaxParameters = 4 };

◆ anonymous enum

anonymous enum

Allowed station combinations for extrapolation units

Enumerator
kME1andME2 
kME1andME3 
kME2andME3 
kME2andME4 
kME3andME4 
kME1andME2ovr 
kME2andMB1 
kME2andMB2 

Definition at line 12 of file CSCTFPtMethods.h.

Constructor & Destructor Documentation

◆ CSCTFPtMethods()

CSCTFPtMethods::CSCTFPtMethods ( const L1MuTriggerPtScale ptScale = nullptr)

Definition at line 5162 of file CSCTFPtMethods.cc.

5162 : trigger_scale(ptScale) {}

Member Function Documentation

◆ chargeValid()

bool CSCTFPtMethods::chargeValid ( unsigned  Pt,
unsigned  Quality,
unsigned  Eta,
unsigned  method 
) const

The hybrid method may be changing soon to: 1st Calculate PT with Darin's method 2nd if BELOW a certain cut call Cathy's method 3rd if Cathy's < Darin's use Cathy's otherwise return Darin's A study needs to be performed to determine any gains from this procedure. A method to calculate the charge valid bit Regions where this bit is were determined via simulation

Definition at line 10209 of file CSCTFPtMethods.cc.

10209  {
10210  bool result = false;
10211 
10212  switch (method) {
10213  case 1:
10214  break;
10215  case 2:
10216  break;
10217  case 3:
10218  if (quality != 1) {
10219  if (pT <= 19) {
10220  if (eta >= 4 && eta <= 9)
10221  result = true;
10222  }
10223  if (pT <= 18 && pT >= 10) {
10224  if (eta > 0 && eta < 4)
10225  result = true;
10226  }
10227  }
10228  };
10229 
10230  return result;
10231 }

References PVValHelper::eta, AlcaSiPixelAliHarvester0T_cff::method, PVValHelper::pT, qcdUeDQM_cfi::quality, and mps_fire::result.

◆ Likelihood()

double CSCTFPtMethods::Likelihood ( double *  phi12,
double *  phi23,
double *  par_m12,
double *  par_m23,
double *  par_sig12,
double *  par_sig23,
double *  par_rho,
double *  v 
) const

Definition at line 5382 of file CSCTFPtMethods.cc.

5389  {
5390  double fitval = 0.;
5391  //double Pi = acos(-1.);
5392  double m12 = 0.;
5393  if (v[0] > par_m12[3])
5394  m12 =
5395  par_m12[0] / (v[0] - par_m12[3]) + par_m12[1] / (v[0] - par_m12[3]) / (v[0] - par_m12[3]) + par_m12[2]; //mu12
5396  double m23 = 0.;
5397  if (v[0] > par_m23[3])
5398  m23 =
5399  par_m23[0] / (v[0] - par_m23[3]) + par_m23[1] / (v[0] - par_m23[3]) / (v[0] - par_m23[3]) + par_m23[2]; //mu23
5400  double sig12 = 0.1;
5401  if (v[0] > 0.)
5402  sig12 = par_sig12[0] / v[0] + par_sig12[1] / v[0] / v[0] + par_sig12[2]; //sig12
5403  double sig23 = 0.1;
5404  if (v[0] > 0.)
5405  sig23 = par_sig23[0] / v[0] + par_sig23[1] / v[0] / v[0] + par_sig23[2]; //sig23
5406 
5407  double rho = (par_rho[0] + par_rho[1] * log(v[0]) + par_rho[2] * log(v[0]) * log(v[0]) +
5408  par_rho[3] * log(v[0]) * log(v[0]) * log(v[0])) *
5409  exp(-par_rho[4] * log(v[0])); //rho
5410  if (rho > 0.95)
5411  rho = 0.95;
5412  if (rho < -0.95)
5413  rho = -0.95;
5414  //
5415  fitval = (phi12[0] - m12) * (phi12[0] - m12) / sig12 / sig12 + (phi23[0] - m23) * (phi23[0] - m23) / sig23 / sig23;
5416  fitval = fitval - 2. * rho * (phi12[0] - m12) * (phi23[0] - m23) / sig12 / sig23;
5417  fitval = fitval * (-1. / (2. * (1 - rho * rho)));
5418  fitval = fitval - log(sig12) - log(sig23) - 0.5 * log(1 - rho * rho);
5419 
5420  return fitval;
5421 }

References JetChargeProducer_cfi::exp, dqm-mbProfile::log, rho, and findQualityFiles::v.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ Likelihood2()

double CSCTFPtMethods::Likelihood2 ( double *  phi12,
double *  par_m12,
double *  par_sig12,
double *  v 
) const

Definition at line 5347 of file CSCTFPtMethods.cc.

5347  {
5348  double fitval = 0.;
5349  double Pi = acos(-1.);
5350  double m12 = 0;
5351  if (v[0] > par_m12[3])
5352  m12 =
5353  par_m12[0] / (v[0] - par_m12[3]) + par_m12[1] / (v[0] - par_m12[3]) / (v[0] - par_m12[3]) + par_m12[2]; //mu12
5354  double sig12 = 0.1;
5355  if (v[0] > 0.)
5356  sig12 = par_sig12[0] / v[0] + par_sig12[1] / v[0] / v[0] + par_sig12[2]; //sig12
5357  //
5358  fitval = -(phi12[0] - m12) * (phi12[0] - m12) / 2. / sig12 / sig12;
5359  fitval = fitval - log(sig12) - 0.5 * log(2 * Pi);
5360 
5361  return fitval;
5362 }

References dqm-mbProfile::log, Pi, and findQualityFiles::v.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ Likelihood2011()

double CSCTFPtMethods::Likelihood2011 ( double *  phi12,
double *  phi23,
double *  par_m12,
double *  par_m23,
double *  par_sig12,
double *  par_sig23,
double *  par_rho,
double *  v 
) const

Definition at line 5422 of file CSCTFPtMethods.cc.

5429  {
5430  double fitval = 0.;
5431  //double Pi = acos(-1.);
5432  double m12 = 0.;
5433  if (v[0] > par_m12[3])
5434  m12 =
5435  par_m12[0] / (v[0] - par_m12[3]) + par_m12[1] / (v[0] - par_m12[3]) / (v[0] - par_m12[3]) + par_m12[2]; //mu12
5436  double m23 = 0.;
5437  if (v[0] > par_m23[3])
5438  m23 =
5439  par_m23[0] / (v[0] - par_m23[3]) + par_m23[1] / (v[0] - par_m23[3]) / (v[0] - par_m23[3]) + par_m23[2]; //mu23
5440  double sig12 = 0.1;
5441  if (v[0] > par_sig12[3])
5442  sig12 = par_sig12[0] / (v[0] - par_sig12[3]) + par_sig12[1] / (v[0] - par_sig12[3]) / (v[0] - par_sig12[3]) +
5443  par_sig12[2]; //sig12
5444  double sig23 = 0.1;
5445  if (v[0] > par_sig23[3])
5446  sig23 = par_sig23[0] / (v[0] - par_sig23[3]) + par_sig23[1] / (v[0] - par_sig23[3]) / (v[0] - par_sig23[3]) +
5447  par_sig23[2]; //sig12
5448  if (sig12 < 0.0015)
5449  sig12 = 0.0015;
5450  if (sig23 < 0.0015)
5451  sig23 = 0.0015;
5452 
5453  double rho = (par_rho[0] + par_rho[1] * log(v[0]) + par_rho[2] * log(v[0]) * log(v[0]) +
5454  par_rho[3] * log(v[0]) * log(v[0]) * log(v[0])) *
5455  exp(-par_rho[4] * log(v[0])); //rho
5456  //if(rho > 0.95) rho = 0.95;
5457  //if(rho < -0.95) rho = -0.95;
5458  if (rho > 0.7)
5459  rho = 0.7;
5460  if (rho < -0.7)
5461  rho = -0.7;
5462  //rho = 0.4;
5463  //
5464  fitval = (phi12[0] - m12) * (phi12[0] - m12) / sig12 / sig12 + (phi23[0] - m23) * (phi23[0] - m23) / sig23 / sig23;
5465  fitval = fitval - 2. * rho * (phi12[0] - m12) * (phi23[0] - m23) / sig12 / sig23;
5466  fitval = fitval * (-1. / (2. * (1 - rho * rho)));
5467  fitval = fitval - log(sig12) - log(sig23) - 0.5 * log(1 - rho * rho);
5468 
5469  return fitval;
5470 }

References JetChargeProducer_cfi::exp, dqm-mbProfile::log, rho, and findQualityFiles::v.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ Likelihood2_2011()

double CSCTFPtMethods::Likelihood2_2011 ( double *  phi12,
double *  par_m12,
double *  par_sig12,
double *  v 
) const

Definition at line 5363 of file CSCTFPtMethods.cc.

5363  {
5364  double fitval = 0.;
5365  double Pi = acos(-1.);
5366  double m12 = 0;
5367  if (v[0] > par_m12[3])
5368  m12 =
5369  par_m12[0] / (v[0] - par_m12[3]) + par_m12[1] / (v[0] - par_m12[3]) / (v[0] - par_m12[3]) + par_m12[2]; //mu12
5370  double sig12 = 0.1;
5371  if (v[0] > par_sig12[3])
5372  sig12 = par_sig12[0] / (v[0] - par_sig12[3]) + par_sig12[1] / (v[0] - par_sig12[3]) / (v[0] - par_sig12[3]) +
5373  par_sig12[2]; //sig12
5374  if (sig12 < 0.0015)
5375  sig12 = 0.0015;
5376  //
5377  fitval = -(phi12[0] - m12) * (phi12[0] - m12) / 2. / sig12 / sig12;
5378  fitval = fitval - log(sig12) - 0.5 * log(2 * Pi);
5379 
5380  return fitval;
5381 }

References dqm-mbProfile::log, Pi, and findQualityFiles::v.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ Pt2Stn()

float CSCTFPtMethods::Pt2Stn ( int  type,
float  eta,
float  dphi,
int  fr = -1 
) const

2-station Pt measurement for types (see SP class for 2-stn types)

DEA: kluge to get verilog and original model to agree

Definition at line 5168 of file CSCTFPtMethods.cc.

5168  {
5169  float A = 0;
5170  float B = 0;
5171  if (dphi == 0.0)
5172  dphi = 1.e-6;
5173  if (eta < 0.0)
5174  eta = static_cast<float>(fabs(static_cast<double>(eta)));
5175  if (dphi < 0.0)
5176  dphi = static_cast<float>(fabs(static_cast<double>(dphi)));
5178 #ifdef L1CSC_STANDALONE
5179  if (type == kME1andME2 && eta <= 1.25)
5180  fr = 1;
5181 #else
5182  if (type == kME1andME2 && eta < 1.2)
5183  fr = 1;
5184 #endif
5185  if (type >= kME1andME2 && type <= kME2andMB2 && eta < 2.5) {
5186  if (eta >= 0.0 && eta < 1.6) {
5187  A = AkLowEta_Fit2[type - 1][0] + AkLowEta_Fit2[type - 1][1] * eta + AkLowEta_Fit2[type - 1][2] * eta * eta +
5188  AkLowEta_Fit2[type - 1][3] * eta * eta * eta;
5189  B = BkLowEta_Fit2[type - 1][0] + BkLowEta_Fit2[type - 1][1] * eta + BkLowEta_Fit2[type - 1][2] * eta * eta +
5190  BkLowEta_Fit2[type - 1][3] * eta * eta * eta;
5191  if (fr >= 0 && fr <= 1) {
5192  A *= FRCorrLowEta[type - 1][fr];
5193  B *= FRCorrLowEta[type - 1][fr];
5194  }
5195  }
5196 
5197  if (eta >= 1.6 && eta < 2.5) {
5198  A = AkHighEta_Fit2[type - 1][0] + AkHighEta_Fit2[type - 1][1] * eta + AkHighEta_Fit2[type - 1][2] * eta * eta +
5199  AkHighEta_Fit2[type - 1][3] * eta * eta * eta;
5200  B = BkHighEta_Fit2[type - 1][0] + BkHighEta_Fit2[type - 1][1] * eta + BkHighEta_Fit2[type - 1][2] * eta * eta +
5201  BkHighEta_Fit2[type - 1][3] * eta * eta * eta;
5202  if (fr >= 0 && fr <= 1) {
5203  A *= FRCorrHighEta[type - 1][fr];
5204  B *= FRCorrHighEta[type - 1][fr];
5205  }
5206  }
5207 
5208  A *= kGlobalScaleFactor;
5209  B *= kGlobalScaleFactor;
5210  float Pt = (A + sqrt(A * A + 4. * dphi * B)) / (2. * dphi);
5211 
5212  // return (Pt>0.0) ? Pt : 0.0;
5213  return (Pt > trigger_scale->getPtScale()->getLowEdge(1)) ? Pt : trigger_scale->getPtScale()->getLowEdge(1);
5214  }
5215  return 0.0;
5216 }

References AkHighEta_Fit2, AkLowEta_Fit2, TtFullHadDaughter::B, BkHighEta_Fit2, BkLowEta_Fit2, PVValHelper::eta, FRCorrHighEta, FRCorrLowEta, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), kGlobalScaleFactor, kME1andME2, kME2andMB2, mathSSE::sqrt(), and trigger_scale.

Referenced by CSCTFPtLUT::calcPt(), Pt2StnChiSq(), Pt2StnHybrid(), and Pt3Stn().

◆ Pt2Stn2010()

float CSCTFPtMethods::Pt2Stn2010 ( int  type,
float  eta,
float  dphi,
int  fr = -1,
int  method = 11 
) const

Definition at line 5472 of file CSCTFPtMethods.cc.

5472  {
5473  if (fabs(eta) >= 2.4)
5474  eta = 2.35;
5475  double PTsolv = 1.; // for muon plus hypothesis
5476  double PTsolvMinus = 1.; //for muon minus hypothesis
5477  for (int iETA = 0; iETA < 15; iETA++) {
5478  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
5479  // calculate curvers of mean and sigma
5480  // calculate phi12 mean
5481  double par1[4] = {0., 0., 0., 0.};
5482  //double phi12mean = fitf5(v, par1); //mu12
5483  double par_sig1[3] = {0., 0., 0.};
5484  int iETA1 = iETA;
5485  switch (type) // type = mode here
5486  {
5487  case 6: //1-2
5488  if (fr == 1) {
5489  if (iETA1 < 3)
5490  iETA1 = 3;
5491  //if(iETA1 > 11)iETA1 = 11;
5492  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
5493  par1[0] = A_mu12Front[0][iETA1];
5494  par1[1] = A_mu12Front[1][iETA1];
5495  par1[2] = A_mu12Front[2][iETA1];
5496  par1[3] = A_mu12Front[3][iETA1];
5497  par_sig1[0] = A_sig12Front[0][iETA1];
5498  par_sig1[1] = A_sig12Front[1][iETA1];
5499  par_sig1[2] = A_sig12Front[2][iETA1];
5500  }
5501  if (fr == 0) {
5502  if (iETA1 < 1)
5503  iETA1 = 1;
5504  //if(iETA1 > 11)iETA1 = 11;
5505  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
5506  par1[0] = A_mu12Rare[0][iETA1];
5507  par1[1] = A_mu12Rare[1][iETA1];
5508  par1[2] = A_mu12Rare[2][iETA1];
5509  par1[3] = A_mu12Rare[3][iETA1];
5510  par_sig1[0] = A_sig12Rare[0][iETA1];
5511  par_sig1[1] = A_sig12Rare[1][iETA1];
5512  par_sig1[2] = A_sig12Rare[2][iETA1];
5513  }
5514  break;
5515  case 7: //1-3
5516  if (fr == 1) {
5517  if (iETA1 < 3)
5518  iETA1 = 3;
5519  //if(iETA1 > 11)iETA1 = 11;
5520  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
5521  par1[0] = A_mu13Front[0][iETA1];
5522  par1[1] = A_mu13Front[1][iETA1];
5523  par1[2] = A_mu13Front[2][iETA1];
5524  par1[3] = A_mu13Front[3][iETA1];
5525  par_sig1[0] = A_sig13Front[0][iETA1];
5526  par_sig1[1] = A_sig13Front[1][iETA1];
5527  par_sig1[2] = A_sig13Front[2][iETA1];
5528  }
5529  if (fr == 0) {
5530  if (iETA1 < 2)
5531  iETA1 = 2;
5532  //if(iETA1 > 11)iETA1 = 11;
5533  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
5534  par1[0] = A_mu13Rare[0][iETA1];
5535  par1[1] = A_mu13Rare[1][iETA1];
5536  par1[2] = A_mu13Rare[2][iETA1];
5537  par1[3] = A_mu13Rare[3][iETA1];
5538  par_sig1[0] = A_sig13Rare[0][iETA1];
5539  par_sig1[1] = A_sig13Rare[1][iETA1];
5540  par_sig1[2] = A_sig13Rare[2][iETA1];
5541  }
5542  break;
5543  case 8: //2-3
5544  if (iETA1 < 2)
5545  iETA1 = 2;
5546  par1[0] = A_mu23[0][iETA1];
5547  par1[1] = A_mu23[1][iETA1];
5548  par1[2] = A_mu23[2][iETA1];
5549  par1[3] = A_mu23[3][iETA1];
5550  par_sig1[0] = A_sig23[0][iETA1];
5551  par_sig1[1] = A_sig23[1][iETA1];
5552  par_sig1[2] = A_sig23[2][iETA1];
5553  break;
5554  case 9: //2-4
5555  if (iETA1 < 9)
5556  iETA1 = 9;
5557  par1[0] = A_mu24[0][iETA1];
5558  par1[1] = A_mu24[1][iETA1];
5559  par1[2] = A_mu24[2][iETA1];
5560  par1[3] = A_mu24[3][iETA1];
5561  par_sig1[0] = A_sig24[0][iETA1];
5562  par_sig1[1] = A_sig24[1][iETA1];
5563  par_sig1[2] = A_sig24[2][iETA1];
5564  break;
5565  case 10: //3-4
5566  if (iETA1 < 9)
5567  iETA1 = 9;
5568  par1[0] = A_mu34[0][iETA1];
5569  par1[1] = A_mu34[1][iETA1];
5570  par1[2] = A_mu34[2][iETA1];
5571  par1[3] = A_mu34[3][iETA1];
5572  par_sig1[0] = A_sig34[0][iETA1];
5573  par_sig1[1] = A_sig34[1][iETA1];
5574  par_sig1[2] = A_sig34[2][iETA1];
5575  break;
5576  case 13: //1-4
5577  if (iETA1 < 9)
5578  iETA1 = 9;
5579  if (iETA1 > 12)
5580  iETA1 = 12;
5581  if (fr == 1) {
5582  par1[0] = A_mu14Front[0][iETA1];
5583  par1[1] = A_mu14Front[1][iETA1];
5584  par1[2] = A_mu14Front[2][iETA1];
5585  par1[3] = A_mu14Front[3][iETA1];
5586  par_sig1[0] = A_sig14Front[0][iETA1];
5587  par_sig1[1] = A_sig14Front[1][iETA1];
5588  par_sig1[2] = A_sig14Front[2][iETA1];
5589  }
5590  if (fr == 0) {
5591  par1[0] = A_mu14Rare[0][iETA1];
5592  par1[1] = A_mu14Rare[1][iETA1];
5593  par1[2] = A_mu14Rare[2][iETA1];
5594  par1[3] = A_mu14Rare[3][iETA1];
5595  par_sig1[0] = A_sig14Rare[0][iETA1];
5596  par_sig1[1] = A_sig14Rare[1][iETA1];
5597  par_sig1[2] = A_sig14Rare[2][iETA1];
5598  }
5599  break;
5600  case 11: // b1-3
5601  if (iETA1 != 2)
5602  iETA1 = 2;
5603  par1[0] = A_mu53[0][iETA1];
5604  par1[1] = A_mu53[1][iETA1];
5605  par1[2] = A_mu53[2][iETA1];
5606  par1[3] = A_mu53[3][iETA1];
5607  par_sig1[0] = A_sig53[0][iETA1];
5608  par_sig1[1] = A_sig53[1][iETA1];
5609  par_sig1[2] = A_sig53[2][iETA1];
5610 
5611  break;
5612  case 12: //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10: b1-2
5613  if (iETA1 < 1)
5614  iETA1 = 1;
5615  if (iETA1 > 2)
5616  iETA1 = 2;
5617  par1[0] = A_mu52[0][iETA1];
5618  par1[1] = A_mu52[1][iETA1];
5619  par1[2] = A_mu52[2][iETA1];
5620  par1[3] = A_mu52[3][iETA1];
5621  par_sig1[0] = A_sig52[0][iETA1];
5622  par_sig1[1] = A_sig52[1][iETA1];
5623  par_sig1[2] = A_sig52[2][iETA1];
5624  break;
5625  case 14: //2-b1 for pt_method < 10 and b1-1 for pt_method > 10
5626  if (method < 10) {
5627  if (iETA1 < 1)
5628  iETA1 = 1;
5629  if (iETA1 > 2)
5630  iETA1 = 2;
5631  }
5632  par1[0] = A_mu52[0][iETA1];
5633  par1[1] = A_mu52[1][iETA1];
5634  par1[2] = A_mu52[2][iETA1];
5635  par1[3] = A_mu52[3][iETA1];
5636  par_sig1[0] = A_sig52[0][iETA1];
5637  par_sig1[1] = A_sig52[1][iETA1];
5638  par_sig1[2] = A_sig52[2][iETA1];
5639  if (method > 10) {
5640  if (iETA1 > 2)
5641  iETA1 = 2;
5642  par1[0] = A_mu51[0][iETA1];
5643  par1[1] = A_mu51[1][iETA1];
5644  par1[2] = A_mu51[2][iETA1];
5645  par1[3] = A_mu51[3][iETA1];
5646  par_sig1[0] = A_sig51[0][iETA1];
5647  par_sig1[1] = A_sig51[1][iETA1];
5648  par_sig1[2] = A_sig51[2][iETA1];
5649  }
5650  break;
5651  //default:
5652  //return 0.0;
5653  }
5654 
5655  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
5656  //if(fabs(dphi) >= 0.002)
5657  //if(fabs(dphi) >= 0.00)
5658  //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
5659  //{
5660  double pt = 140;
5661  double dpt = 0.1;
5662  double step = 5.;
5663  while (pt > 2.) {
5664  double par_phi12[1] = {dphi};
5665  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
5666  v[0] = 0;
5667  lpt1_1 = 1.;
5668  lpt1_2 = 2.;
5669  lpt2_1 = 1.;
5670  lpt2_2 = 2.;
5671  v[0] = pt;
5672  lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5673  v[0] = pt + dpt;
5674  lpt1_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5675  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
5676  v[0] = pt - step;
5677  lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5678  v[0] = pt - step + dpt;
5679  lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5680  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
5681  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
5682  v[0] = pt - 0.5 * step;
5683  double fx = Likelihood2(par_phi12, par1, par_sig1, v);
5684  v[0] = pt - 0.5 * step + dpt;
5685  double fxh = Likelihood2(par_phi12, par1, par_sig1, v);
5686  v[0] = pt - 0.5 * step + 2 * dpt;
5687  double fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
5688 
5689  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
5690  //if(lpt1*lpt2 <= 0 && lpt2nd < 0) std::cout << "lpt2nd < 0 dphi12 = " << dphi <<" PT = " << pt<< " eta =" << fabs(eta) << std::endl;
5691  //lpt2nd = 1.; // don't care about 2nd derivative
5692  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
5693  PTsolv = pt - 0.5 * step;
5694  break;
5695  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
5696  /*
5697  if(pt == 140.){
5698  v[0] = 200;
5699  lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5700  v[0] = 200. + 5.;
5701  lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5702  lpt2 = (lpt2_2-lpt2_1)/5.;
5703 
5704  v[0] = 170.;
5705  fx = Likelihood2(par_phi12, par1, par_sig1, v);
5706  v[0] = 170.+5.;
5707  fxh = Likelihood2(par_phi12, par1, par_sig1, v);
5708  v[0] = 170.+2*5.;
5709  fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
5710  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
5711  }
5712  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1 ){PTsolv = 137.5; break;}
5713 */
5714  if (pt > 25) {
5715  dpt = 0.1;
5716  step = 5.;
5717  }
5718  if (pt <= 25) {
5719  dpt = 0.01;
5720  step = 0.5;
5721  }
5722  pt = pt - step;
5723  } // end while
5724  //*********** end solve equation for muon plus
5725  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
5726  // for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
5727  dphi = -dphi;
5728  pt = 140;
5729  dpt = 0.1;
5730  step = 5.;
5731  while (pt > 2.) {
5732  double par_phi12[1] = {dphi};
5733  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
5734  v[0] = 0;
5735  lpt1_1 = 1.;
5736  lpt1_2 = 2.;
5737  lpt2_1 = 1.;
5738  lpt2_2 = 2.;
5739  v[0] = pt;
5740  lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5741  v[0] = pt + dpt;
5742  lpt1_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5743  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
5744  v[0] = pt - step;
5745  lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5746  v[0] = pt - step + dpt;
5747  lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5748  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
5749  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
5750  v[0] = pt - 0.5 * step;
5751  double fx = Likelihood2(par_phi12, par1, par_sig1, v);
5752  v[0] = pt - 0.5 * step + dpt;
5753  double fxh = Likelihood2(par_phi12, par1, par_sig1, v);
5754  v[0] = pt - 0.5 * step + 2 * dpt;
5755  double fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
5756 
5757  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
5758 
5759  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
5760  PTsolvMinus = pt - 0.5 * step;
5761  break;
5762  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
5763  /*
5764  if(pt == 140.){
5765  v[0] = 200;
5766  lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
5767  v[0] = 200. + 5.;
5768  lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
5769 
5770  lpt2 = (lpt2_2-lpt2_1)/5.;
5771 
5772  v[0] = 170.;
5773  fx = Likelihood2(par_phi12, par1, par_sig1, v);
5774  v[0] = 170.+5.;
5775  fxh = Likelihood2(par_phi12, par1, par_sig1, v);
5776  v[0] = 170.+2*5.;
5777  fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
5778  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
5779  }
5780  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1){PTsolvMinus = 137.5; break;}
5781 */
5782  if (pt > 25) {
5783  dpt = 0.1;
5784  step = 5.;
5785  }
5786  if (pt <= 25) {
5787  dpt = 0.01;
5788  step = 0.5;
5789  }
5790  pt = pt - step;
5791  } // end while
5792  // }// if(fabs(dphi) >= 0.002)
5793  // else
5794  // {PTsolv = 137.5;}
5795 
5796  //*********** end solve equation for muon minus
5797  PTsolv = (PTsolv > PTsolvMinus) ? PTsolv
5798  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
5799  PTsolv = PTsolv * 1.2;
5800  if (PTsolv > 137.5)
5801  PTsolv = 137.5;
5802  if (fabs(dphi) <= 0.002 && PTsolv < 120.)
5803  PTsolv = 140.;
5804  if (fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)
5805  PTsolv = 140.;
5806  dphi = -dphi; //return to correct sing dphi
5807 
5808  } //if(fabs(eta_TracMy)
5809  } //end "for by iETA"
5810 
5811  float Pt = PTsolv;
5812  if (Pt > 10 && fabs(dphi) >= 0.1)
5813  std::cout << "iF = 0 for dphi = " << dphi << " and Pt = " << Pt << std::endl;
5814 
5815  //if(Pt > 100 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi > 0.015 )std::cout << "dphi = " << dphi << " eta = " << eta << std::endl;
5816  //if(Pt < 10 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi < 0.01)std::cout << "dphi = " << dphi << " eta = " << eta << std::endl;
5817  // return (Pt>0.0) ? Pt : 0.0;
5818 
5819  float Pt_min = trigger_scale->getPtScale()->getLowEdge(1); // 0 GeV
5820  if (method > 10)
5821  Pt_min = trigger_scale->getPtScale()->getLowEdge(3); // 2 GeV
5822 
5823  return (Pt > Pt_min) ? Pt : Pt_min;
5824 }

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu14Front, A_mu14Rare, A_mu23, A_mu24, A_mu34, A_mu51, A_mu52, A_mu53, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig14Front, A_sig14Rare, A_sig23, A_sig24, A_sig34, A_sig51, A_sig52, A_sig53, gather_cfg::cout, PVValHelper::eta, etabins, multPhiCorr_741_25nsDY_cfi::fx, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood2(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, DiDispStaMuonMonitor_cfi::pt, HLT_2018_cff::Pt_min, trigger_scale, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt(), and Pt3Stn2010().

◆ Pt2Stn2011()

float CSCTFPtMethods::Pt2Stn2011 ( int  type,
float  eta,
float  dphi,
int  fr = -1,
int  method = 11,
int  phiSign = 2 
) const

Definition at line 5825 of file CSCTFPtMethods.cc.

5825  {
5826  //if(fabs(eta) >= 2.4) eta = 2.35;
5827  if (fabs(eta) >= 2.2)
5828  eta = 2.15;
5829  double PTsolv = 1.; // for muon plus hypothesis
5830  double PTsolvMinus = 1.; //for muon minus hypothesis
5831  for (int iETA = 0; iETA < 15; iETA++) {
5832  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
5833  // calculate curvers of mean and sigma
5834  // calculate phi12 mean
5835  double par1[4] = {0., 0., 0., 0.};
5836  //double phi12mean = fitf5(v, par1); //mu12
5837  double par_sig1[4] = {0., 0., 0., 0};
5838  int iETA1 = iETA;
5839  int iETA2 = iETA;
5840 
5841  const double(*Amean12FnoME11)[15] = AB_mu12FnoME11;
5842  const double(*Asig12FnoME11)[15] = AB_sig12FnoME11;
5843  const double(*Amean12RnoME11)[15] = AB_mu12RnoME11;
5844  const double(*Asig12RnoME11)[15] = AB_sig12RnoME11;
5845 
5846  const double(*Amean13FnoME11)[15] = AB_mu13FnoME11;
5847  const double(*Asig13FnoME11)[15] = AB_sig13FnoME11;
5848  const double(*Amean13RnoME11)[15] = AB_mu13RnoME11;
5849  const double(*Asig13RnoME11)[15] = AB_sig13RnoME11;
5850 
5851  const double(*Amean14FnoME11)[15] = AB_mu14FnoME11;
5852  const double(*Asig14FnoME11)[15] = AB_sig14FnoME11;
5853  const double(*Amean14RnoME11)[15] = AB_mu14RnoME11;
5854  const double(*Asig14RnoME11)[15] = AB_sig14RnoME11;
5855  //
5856  const double(*Amean12FME11)[15] = AB_mu12FME11;
5857  const double(*Asig12FME11)[15] = AB_sig12FME11;
5858  const double(*Amean12RME11)[15] = AB_mu12RME11;
5859  const double(*Asig12RME11)[15] = AB_sig12RME11;
5860 
5861  const double(*Amean13FME11)[15] = AB_mu13FME11;
5862  const double(*Asig13FME11)[15] = AB_sig13FME11;
5863  const double(*Amean13RME11)[15] = AB_mu13RME11;
5864  const double(*Asig13RME11)[15] = AB_sig13RME11;
5865 
5866  const double(*Amean14FME11)[15] = AB_mu14FME11;
5867  const double(*Asig14FME11)[15] = AB_sig14FME11;
5868  const double(*Amean14RME11)[15] = AB_mu14RME11;
5869  const double(*Asig14RME11)[15] = AB_sig14RME11;
5870  //
5871  const double(*Amean12F)[15] = AB_mu12F;
5872  const double(*Asig12F)[15] = AB_sig12F;
5873  const double(*Amean12R)[15] = AB_mu12R;
5874  const double(*Asig12R)[15] = AB_sig12R;
5875 
5876  const double(*Amean13F)[15] = AB_mu13F;
5877  const double(*Asig13F)[15] = AB_sig13F;
5878  const double(*Amean13R)[15] = AB_mu13R;
5879  const double(*Asig13R)[15] = AB_sig13R;
5880 
5881  const double(*Amean14F)[15] = AB_mu14F;
5882  const double(*Asig14F)[15] = AB_sig14F;
5883  const double(*Amean14R)[15] = AB_mu14R;
5884  const double(*Asig14R)[15] = AB_sig14R;
5885 
5886  const double(*Amean23)[15] = AB_mu23;
5887  const double(*Asig23)[15] = AB_sig23;
5888  const double(*Amean24)[15] = AB_mu24;
5889  const double(*Asig24)[15] = AB_sig24;
5890  const double(*Amean34)[15] = AB_mu34;
5891  const double(*Asig34)[15] = AB_sig34;
5892 
5893  const double(*Amean51)[15] = AB_mu51;
5894  const double(*Asig51)[15] = AB_sig51;
5895  const double(*Amean52)[15] = AB_mu52;
5896  const double(*Asig52)[15] = AB_sig52;
5897  const double(*Amean53)[15] = AB_mu53;
5898  const double(*Asig53)[15] = AB_sig53;
5899 
5900  switch (type) // type = mode here
5901  {
5902  case 6: //1-2
5903  if (fr == 1) {
5904  if (iETA1 < 3)
5905  iETA1 = 3;
5906  //if(iETA1 > 11)iETA1 = 11;
5907  par1[0] = (*(Amean12F + 0))[iETA1];
5908  par1[1] = (*(Amean12F + 1))[iETA1];
5909  par1[2] = (*(Amean12F + 2))[iETA1];
5910  par1[3] = (*(Amean12F + 3))[iETA1];
5911  par_sig1[0] = (*(Asig12F + 0))[iETA1];
5912  par_sig1[1] = (*(Asig12F + 1))[iETA1];
5913  par_sig1[2] = (*(Asig12F + 2))[iETA1];
5914  par_sig1[3] = (*(Asig12F + 3))[iETA1];
5915  }
5916  if (fr == 0) {
5917  if (iETA1 < 1)
5918  iETA1 = 1;
5919  //if(iETA1 > 11)iETA1 = 11;
5920  par1[0] = (*(Amean12R + 0))[iETA1];
5921  par1[1] = (*(Amean12R + 1))[iETA1];
5922  par1[2] = (*(Amean12R + 2))[iETA1];
5923  par1[3] = (*(Amean12R + 3))[iETA1];
5924  par_sig1[0] = (*(Asig12R + 0))[iETA1];
5925  par_sig1[1] = (*(Asig12R + 1))[iETA1];
5926  par_sig1[2] = (*(Asig12R + 2))[iETA1];
5927  par_sig1[3] = (*(Asig12R + 3))[iETA1];
5928  }
5929  if (phiSign == 0) { // track belong to ME11 station
5930  if (fr == 1) {
5931  if (iETA2 < 7)
5932  iETA2 = 7;
5933  par1[0] = (*(Amean12FME11 + 0))[iETA2];
5934  par1[1] = (*(Amean12FME11 + 1))[iETA2];
5935  par1[2] = (*(Amean12FME11 + 2))[iETA2];
5936  par1[3] = (*(Amean12FME11 + 3))[iETA2];
5937  par_sig1[0] = (*(Asig12FME11 + 0))[iETA2];
5938  par_sig1[1] = (*(Asig12FME11 + 1))[iETA2];
5939  par_sig1[2] = (*(Asig12FME11 + 2))[iETA2];
5940  par_sig1[3] = (*(Asig12FME11 + 3))[iETA2];
5941  }
5942  if (fr == 0) {
5943  if (iETA2 < 7)
5944  iETA2 = 7;
5945  par1[0] = (*(Amean12RME11 + 0))[iETA2];
5946  par1[1] = (*(Amean12RME11 + 1))[iETA2];
5947  par1[2] = (*(Amean12RME11 + 2))[iETA2];
5948  par1[3] = (*(Amean12RME11 + 3))[iETA2];
5949  par_sig1[0] = (*(Asig12RME11 + 0))[iETA2];
5950  par_sig1[1] = (*(Asig12RME11 + 1))[iETA2];
5951  par_sig1[2] = (*(Asig12RME11 + 2))[iETA2];
5952  par_sig1[3] = (*(Asig12RME11 + 3))[iETA2];
5953  }
5954  }
5955  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
5956  if (fr == 1) {
5957  if (iETA2 < 3)
5958  iETA2 = 3;
5959  if (iETA2 > 7)
5960  iETA2 = 7;
5961  par1[0] = (*(Amean12FnoME11 + 0))[iETA2];
5962  par1[1] = (*(Amean12FnoME11 + 1))[iETA2];
5963  par1[2] = (*(Amean12FnoME11 + 2))[iETA2];
5964  par1[3] = (*(Amean12FnoME11 + 3))[iETA2];
5965  par_sig1[0] = (*(Asig12FnoME11 + 0))[iETA2];
5966  par_sig1[1] = (*(Asig12FnoME11 + 1))[iETA2];
5967  par_sig1[2] = (*(Asig12FnoME11 + 2))[iETA2];
5968  par_sig1[3] = (*(Asig12FnoME11 + 3))[iETA2];
5969  }
5970  if (fr == 0) {
5971  if (iETA2 < 1)
5972  iETA2 = 1;
5973  if (iETA2 > 6)
5974  iETA2 = 6; // rare ME1/2 only till 1.6
5975  par1[0] = (*(Amean12RnoME11 + 0))[iETA2];
5976  par1[1] = (*(Amean12RnoME11 + 1))[iETA2];
5977  par1[2] = (*(Amean12RnoME11 + 2))[iETA2];
5978  par1[3] = (*(Amean12RnoME11 + 3))[iETA2];
5979  par_sig1[0] = (*(Asig12RnoME11 + 0))[iETA2];
5980  par_sig1[1] = (*(Asig12RnoME11 + 1))[iETA2];
5981  par_sig1[2] = (*(Asig12RnoME11 + 2))[iETA2];
5982  par_sig1[3] = (*(Asig12RnoME11 + 3))[iETA2];
5983  }
5984  }
5985 
5986  break;
5987  case 7: //1-3
5988  if (fr == 1) {
5989  if (iETA1 < 3)
5990  iETA1 = 3;
5991  //if(iETA1 > 11)iETA1 = 11;
5992  par1[0] = (*(Amean13F + 0))[iETA1];
5993  par1[1] = (*(Amean13F + 1))[iETA1];
5994  par1[2] = (*(Amean13F + 2))[iETA1];
5995  par1[3] = (*(Amean13F + 3))[iETA1];
5996  par_sig1[0] = (*(Asig13F + 0))[iETA1];
5997  par_sig1[1] = (*(Asig13F + 1))[iETA1];
5998  par_sig1[2] = (*(Asig13F + 2))[iETA1];
5999  par_sig1[3] = (*(Asig13F + 3))[iETA1];
6000  }
6001  if (fr == 0) {
6002  if (iETA1 < 3)
6003  iETA1 = 3;
6004  //if(iETA1 > 11)iETA1 = 11;
6005  par1[0] = (*(Amean13R + 0))[iETA1];
6006  par1[1] = (*(Amean13R + 1))[iETA1];
6007  par1[2] = (*(Amean13R + 2))[iETA1];
6008  par1[3] = (*(Amean13R + 3))[iETA1];
6009  par_sig1[0] = (*(Asig13R + 0))[iETA1];
6010  par_sig1[1] = (*(Asig13R + 1))[iETA1];
6011  par_sig1[2] = (*(Asig13R + 2))[iETA1];
6012  par_sig1[3] = (*(Asig13R + 3))[iETA1];
6013  }
6014  if (phiSign == 0) { // track belong to ME11 station
6015  if (fr == 1) {
6016  if (iETA2 < 7)
6017  iETA2 = 7;
6018  par1[0] = (*(Amean13FME11 + 0))[iETA2];
6019  par1[1] = (*(Amean13FME11 + 1))[iETA2];
6020  par1[2] = (*(Amean13FME11 + 2))[iETA2];
6021  par1[3] = (*(Amean13FME11 + 3))[iETA2];
6022  par_sig1[0] = (*(Asig13FME11 + 0))[iETA2];
6023  par_sig1[1] = (*(Asig13FME11 + 1))[iETA2];
6024  par_sig1[2] = (*(Asig13FME11 + 2))[iETA2];
6025  par_sig1[3] = (*(Asig13FME11 + 3))[iETA2];
6026  }
6027  if (fr == 0) {
6028  if (iETA2 < 7)
6029  iETA2 = 7;
6030  par1[0] = (*(Amean13RME11 + 0))[iETA2];
6031  par1[1] = (*(Amean13RME11 + 1))[iETA2];
6032  par1[2] = (*(Amean13RME11 + 2))[iETA2];
6033  par1[3] = (*(Amean13RME11 + 3))[iETA2];
6034  par_sig1[0] = (*(Asig13RME11 + 0))[iETA2];
6035  par_sig1[1] = (*(Asig13RME11 + 1))[iETA2];
6036  par_sig1[2] = (*(Asig13RME11 + 2))[iETA2];
6037  par_sig1[3] = (*(Asig13RME11 + 3))[iETA2];
6038  }
6039  }
6040  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
6041  if (fr == 1) {
6042  if (iETA2 < 3)
6043  iETA2 = 3;
6044  if (iETA2 > 7)
6045  iETA2 = 7;
6046  par1[0] = (*(Amean13FnoME11 + 0))[iETA2];
6047  par1[1] = (*(Amean13FnoME11 + 1))[iETA2];
6048  par1[2] = (*(Amean13FnoME11 + 2))[iETA2];
6049  par1[3] = (*(Amean13FnoME11 + 3))[iETA2];
6050  par_sig1[0] = (*(Asig13FnoME11 + 0))[iETA2];
6051  par_sig1[1] = (*(Asig13FnoME11 + 1))[iETA2];
6052  par_sig1[2] = (*(Asig13FnoME11 + 2))[iETA2];
6053  par_sig1[3] = (*(Asig13FnoME11 + 3))[iETA2];
6054  }
6055  if (fr == 0) {
6056  if (iETA2 < 3)
6057  iETA2 = 3;
6058  if (iETA2 > 6)
6059  iETA2 = 6; // rare ME1/2 only till 1.6
6060  par1[0] = (*(Amean13RnoME11 + 0))[iETA2];
6061  par1[1] = (*(Amean13RnoME11 + 1))[iETA2];
6062  par1[2] = (*(Amean13RnoME11 + 2))[iETA2];
6063  par1[3] = (*(Amean13RnoME11 + 3))[iETA2];
6064  par_sig1[0] = (*(Asig13RnoME11 + 0))[iETA2];
6065  par_sig1[1] = (*(Asig13RnoME11 + 1))[iETA2];
6066  par_sig1[2] = (*(Asig13RnoME11 + 2))[iETA2];
6067  par_sig1[3] = (*(Asig13RnoME11 + 3))[iETA2];
6068  }
6069  }
6070  break;
6071  case 8: //2-3
6072  if (iETA1 < 2)
6073  iETA1 = 2;
6074  par1[0] = (*(Amean23 + 0))[iETA1];
6075  par1[1] = (*(Amean23 + 1))[iETA1];
6076  par1[2] = (*(Amean23 + 2))[iETA1];
6077  par1[3] = (*(Amean23 + 3))[iETA1];
6078  par_sig1[0] = (*(Asig23 + 0))[iETA1];
6079  par_sig1[1] = (*(Asig23 + 1))[iETA1];
6080  par_sig1[2] = (*(Asig23 + 2))[iETA1];
6081  par_sig1[3] = (*(Asig23 + 3))[iETA1];
6082 
6083  break;
6084  case 9: //2-4
6085  if (iETA1 < 3)
6086  iETA1 = 3;
6087  par1[0] = (*(Amean24 + 0))[iETA1];
6088  par1[1] = (*(Amean24 + 1))[iETA1];
6089  par1[2] = (*(Amean24 + 2))[iETA1];
6090  par1[3] = (*(Amean24 + 3))[iETA1];
6091  par_sig1[0] = (*(Asig24 + 0))[iETA1];
6092  par_sig1[1] = (*(Asig24 + 1))[iETA1];
6093  par_sig1[2] = (*(Asig24 + 2))[iETA1];
6094  par_sig1[3] = (*(Asig24 + 3))[iETA1];
6095  break;
6096  case 10: //3-4
6097  if (iETA1 < 3)
6098  iETA1 = 3;
6099  par1[0] = (*(Amean34 + 0))[iETA1];
6100  par1[1] = (*(Amean34 + 1))[iETA1];
6101  par1[2] = (*(Amean34 + 2))[iETA1];
6102  par1[3] = (*(Amean34 + 3))[iETA1];
6103  par_sig1[0] = (*(Asig34 + 0))[iETA1];
6104  par_sig1[1] = (*(Asig34 + 1))[iETA1];
6105  par_sig1[2] = (*(Asig34 + 2))[iETA1];
6106  par_sig1[3] = (*(Asig34 + 3))[iETA1];
6107  break;
6108  case 13: //1-4
6109  if (fr == 1) {
6110  if (iETA1 < 3)
6111  iETA1 = 3;
6112  //if(iETA1 > 11)iETA1 = 11;
6113  par1[0] = (*(Amean14F + 0))[iETA1];
6114  par1[1] = (*(Amean14F + 1))[iETA1];
6115  par1[2] = (*(Amean14F + 2))[iETA1];
6116  par1[3] = (*(Amean14F + 3))[iETA1];
6117  par_sig1[0] = (*(Asig14F + 0))[iETA1];
6118  par_sig1[1] = (*(Asig14F + 1))[iETA1];
6119  par_sig1[2] = (*(Asig14F + 2))[iETA1];
6120  par_sig1[3] = (*(Asig14F + 3))[iETA1];
6121  }
6122  if (fr == 0) {
6123  if (iETA1 < 2)
6124  iETA1 = 2;
6125  //if(iETA1 > 11)iETA1 = 11;
6126  par1[0] = (*(Amean14R + 0))[iETA1];
6127  par1[1] = (*(Amean14R + 1))[iETA1];
6128  par1[2] = (*(Amean14R + 2))[iETA1];
6129  par1[3] = (*(Amean14R + 3))[iETA1];
6130  par_sig1[0] = (*(Asig14R + 0))[iETA1];
6131  par_sig1[1] = (*(Asig14R + 1))[iETA1];
6132  par_sig1[2] = (*(Asig14R + 2))[iETA1];
6133  par_sig1[3] = (*(Asig14R + 3))[iETA1];
6134  }
6135  if (phiSign == 0) { // track belong to ME11 station
6136  if (fr == 1) {
6137  if (iETA2 < 9)
6138  iETA2 = 9;
6139  par1[0] = (*(Amean14FME11 + 0))[iETA2];
6140  par1[1] = (*(Amean14FME11 + 1))[iETA2];
6141  par1[2] = (*(Amean14FME11 + 2))[iETA2];
6142  par1[3] = (*(Amean14FME11 + 3))[iETA2];
6143  par_sig1[0] = (*(Asig14FME11 + 0))[iETA2];
6144  par_sig1[1] = (*(Asig14FME11 + 1))[iETA2];
6145  par_sig1[2] = (*(Asig14FME11 + 2))[iETA2];
6146  par_sig1[3] = (*(Asig14FME11 + 3))[iETA2];
6147  }
6148  if (fr == 0) {
6149  if (iETA2 < 9)
6150  iETA2 = 9;
6151  par1[0] = (*(Amean14RME11 + 0))[iETA2];
6152  par1[1] = (*(Amean14RME11 + 1))[iETA2];
6153  par1[2] = (*(Amean14RME11 + 2))[iETA2];
6154  par1[3] = (*(Amean14RME11 + 3))[iETA2];
6155  par_sig1[0] = (*(Asig14RME11 + 0))[iETA2];
6156  par_sig1[1] = (*(Asig14RME11 + 1))[iETA2];
6157  par_sig1[2] = (*(Asig14RME11 + 2))[iETA2];
6158  par_sig1[3] = (*(Asig14RME11 + 3))[iETA2];
6159  }
6160  }
6161  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
6162  if (fr == 1) {
6163  if (iETA2 < 4)
6164  iETA2 = 4;
6165  if (iETA2 > 7)
6166  iETA2 = 7;
6167  par1[0] = (*(Amean14FnoME11 + 0))[iETA2];
6168  par1[1] = (*(Amean14FnoME11 + 1))[iETA2];
6169  par1[2] = (*(Amean14FnoME11 + 2))[iETA2];
6170  par1[3] = (*(Amean14FnoME11 + 3))[iETA2];
6171  par_sig1[0] = (*(Asig14FnoME11 + 0))[iETA2];
6172  par_sig1[1] = (*(Asig14FnoME11 + 1))[iETA2];
6173  par_sig1[2] = (*(Asig14FnoME11 + 2))[iETA2];
6174  par_sig1[3] = (*(Asig14FnoME11 + 3))[iETA2];
6175  }
6176  if (fr == 0) {
6177  if (iETA2 < 4)
6178  iETA2 = 4;
6179  if (iETA2 > 6)
6180  iETA2 = 6; // rare ME1/2 only till 1.6
6181  par1[0] = (*(Amean14RnoME11 + 0))[iETA2];
6182  par1[1] = (*(Amean14RnoME11 + 1))[iETA2];
6183  par1[2] = (*(Amean14RnoME11 + 2))[iETA2];
6184  par1[3] = (*(Amean14RnoME11 + 3))[iETA2];
6185  par_sig1[0] = (*(Asig14RnoME11 + 0))[iETA2];
6186  par_sig1[1] = (*(Asig14RnoME11 + 1))[iETA2];
6187  par_sig1[2] = (*(Asig14RnoME11 + 2))[iETA2];
6188  par_sig1[3] = (*(Asig14RnoME11 + 3))[iETA2];
6189  }
6190  }
6191 
6192  break;
6193  case 11: // b1-3 for pt_method > 10 & fr = 0, singles for pt_method < 10
6194  if (iETA1 != 2)
6195  iETA1 = 2;
6196  par1[0] = (*(Amean53 + 0))[iETA1];
6197  par1[1] = (*(Amean53 + 1))[iETA1];
6198  par1[2] = (*(Amean53 + 2))[iETA1];
6199  par1[3] = (*(Amean53 + 3))[iETA1];
6200  par_sig1[0] = (*(Asig53 + 0))[iETA1];
6201  par_sig1[1] = (*(Asig53 + 1))[iETA1];
6202  par_sig1[2] = (*(Asig53 + 2))[iETA1];
6203  par_sig1[3] = (*(Asig53 + 3))[iETA1];
6204  break;
6205 
6206  case 12: //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10 & fr = 0: b1-2
6207  if (iETA1 < 1)
6208  iETA1 = 1;
6209  if (iETA1 > 2)
6210  iETA1 = 2;
6211 
6212  par1[0] = (*(Amean52 + 0))[iETA1];
6213  par1[1] = (*(Amean52 + 1))[iETA1];
6214  par1[2] = (*(Amean52 + 2))[iETA1];
6215  par1[3] = (*(Amean52 + 3))[iETA1];
6216  par_sig1[0] = (*(Asig52 + 0))[iETA1];
6217  par_sig1[1] = (*(Asig52 + 1))[iETA1];
6218  par_sig1[2] = (*(Asig52 + 2))[iETA1];
6219  par_sig1[3] = (*(Asig52 + 3))[iETA1];
6220 
6221  break;
6222  case 14: //2-b1 for pt_method < 10 and b1-1 for pt_method > 10 & fr = 0
6223  if (method < 10) {
6224  if (iETA1 < 1)
6225  iETA1 = 1;
6226  if (iETA1 > 2)
6227  iETA1 = 2;
6228  }
6229  par1[0] = (*(Amean52 + 0))[iETA1];
6230  par1[1] = (*(Amean52 + 1))[iETA1];
6231  par1[2] = (*(Amean52 + 2))[iETA1];
6232  par1[3] = (*(Amean52 + 3))[iETA1];
6233  par_sig1[0] = (*(Asig52 + 0))[iETA1];
6234  par_sig1[1] = (*(Asig52 + 1))[iETA1];
6235  par_sig1[2] = (*(Asig52 + 2))[iETA1];
6236  par_sig1[3] = (*(Asig52 + 3))[iETA1];
6237 
6238  if (method > 10) {
6239  if (iETA1 > 2)
6240  iETA1 = 2;
6241  par1[0] = (*(Amean51 + 0))[iETA1];
6242  par1[1] = (*(Amean51 + 1))[iETA1];
6243  par1[2] = (*(Amean51 + 2))[iETA1];
6244  par1[3] = (*(Amean51 + 3))[iETA1];
6245  par_sig1[0] = (*(Asig51 + 0))[iETA1];
6246  par_sig1[1] = (*(Asig51 + 1))[iETA1];
6247  par_sig1[2] = (*(Asig51 + 2))[iETA1];
6248  par_sig1[3] = (*(Asig51 + 3))[iETA1];
6249  }
6250  break;
6251  //default:
6252  //return 0.0;
6253  }
6254 
6255  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
6256  //if(fabs(dphi) >= 0.002)
6257  //if(fabs(dphi) >= 0.00)
6258  //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
6259  //{
6260  double pt = 140;
6261  double dpt = 0.1;
6262  double step = 5.;
6263  while (pt > 2.) {
6264  double par_phi12[1] = {dphi};
6265  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
6266  v[0] = 0;
6267  lpt1_1 = 1.;
6268  lpt1_2 = 2.;
6269  lpt2_1 = 1.;
6270  lpt2_2 = 2.;
6271  v[0] = pt;
6272  lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6273  v[0] = pt + dpt;
6274  lpt1_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6275  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
6276  v[0] = pt - step;
6277  lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6278  v[0] = pt - step + dpt;
6279  lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6280  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
6281  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
6282  v[0] = pt - 0.5 * step;
6283  double fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6284  v[0] = pt - 0.5 * step + dpt;
6285  double fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6286  v[0] = pt - 0.5 * step + 2 * dpt;
6287  double fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6288 
6289  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
6290  //if(lpt1*lpt2 <= 0 && lpt2nd < 0) std::cout << "lpt2nd < 0 dphi12 = " << dphi <<" PT = " << pt<< " eta =" << fabs(eta) << std::endl;
6291  //lpt2nd = 1.; // don't care about 2nd derivative
6292  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
6293  PTsolv = pt - 0.5 * step;
6294  break;
6295  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
6296  /*
6297  if(pt == 140.){
6298  v[0] = 200;
6299  lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6300  v[0] = 200. + 5.;
6301  lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6302  lpt2 = (lpt2_2-lpt2_1)/5.;
6303 
6304  v[0] = 170.;
6305  fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6306  v[0] = 170.+5.;
6307  fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6308  v[0] = 170.+2*5.;
6309  fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6310  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
6311  }
6312  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1 ){PTsolv = 137.5; break;}
6313 */
6314  if (pt > 25) {
6315  dpt = 0.1;
6316  step = 5.;
6317  }
6318  if (pt <= 25) {
6319  dpt = 0.01;
6320  step = 0.5;
6321  }
6322  pt = pt - step;
6323  } // end while
6324  //*********** end solve equation for muon plus
6325  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
6326  // for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
6327  dphi = -dphi;
6328  pt = 140;
6329  dpt = 0.1;
6330  step = 5.;
6331  while (pt > 2.) {
6332  double par_phi12[1] = {dphi};
6333  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
6334  v[0] = 0;
6335  lpt1_1 = 1.;
6336  lpt1_2 = 2.;
6337  lpt2_1 = 1.;
6338  lpt2_2 = 2.;
6339  v[0] = pt;
6340  lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6341  v[0] = pt + dpt;
6342  lpt1_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6343  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
6344  v[0] = pt - step;
6345  lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6346  v[0] = pt - step + dpt;
6347  lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6348  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
6349  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
6350  v[0] = pt - 0.5 * step;
6351  double fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6352  v[0] = pt - 0.5 * step + dpt;
6353  double fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6354  v[0] = pt - 0.5 * step + 2 * dpt;
6355  double fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6356 
6357  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
6358 
6359  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
6360  PTsolvMinus = pt - 0.5 * step;
6361  break;
6362  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
6363  /*
6364  if(pt == 140.){
6365  v[0] = 200;
6366  lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6367  v[0] = 200. + 5.;
6368  lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6369 
6370  lpt2 = (lpt2_2-lpt2_1)/5.;
6371 
6372  v[0] = 170.;
6373  fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6374  v[0] = 170.+5.;
6375  fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6376  v[0] = 170.+2*5.;
6377  fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
6378  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
6379  }
6380  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1){PTsolvMinus = 137.5; break;}
6381 */
6382  if (pt > 25) {
6383  dpt = 0.1;
6384  step = 5.;
6385  }
6386  if (pt <= 25) {
6387  dpt = 0.01;
6388  step = 0.5;
6389  }
6390  pt = pt - step;
6391  } // end while
6392  // }// if(fabs(dphi) >= 0.002)
6393  // else
6394  // {PTsolv = 137.5;}
6395 
6396  //*********** end solve equation for muon minus
6397  PTsolv = (PTsolv > PTsolvMinus) ? PTsolv
6398  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
6399  PTsolv = PTsolv * 1.2;
6400  if (PTsolv > 137.5)
6401  PTsolv = 137.5;
6402  if (fabs(dphi) <= 0.002 && PTsolv < 120.)
6403  PTsolv = 140.;
6404  //if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;
6405  dphi = -dphi; //return to correct sing dphi
6406 
6407  } //if(fabs(eta_TracMy)
6408  } //end "for by iETA"
6409 
6410  float Pt = PTsolv;
6411 
6412  //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
6413  //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV
6414  float Pt_min = 2; // 0 GeV
6415 
6416  return (Pt > Pt_min) ? Pt : Pt_min;
6417 }

References AB_mu12F, AB_mu12FME11, AB_mu12FnoME11, AB_mu12R, AB_mu12RME11, AB_mu12RnoME11, AB_mu13F, AB_mu13FME11, AB_mu13FnoME11, AB_mu13R, AB_mu13RME11, AB_mu13RnoME11, AB_mu14F, AB_mu14FME11, AB_mu14FnoME11, AB_mu14R, AB_mu14RME11, AB_mu14RnoME11, AB_mu23, AB_mu24, AB_mu34, AB_mu51, AB_mu52, AB_mu53, AB_sig12F, AB_sig12FME11, AB_sig12FnoME11, AB_sig12R, AB_sig12RME11, AB_sig12RnoME11, AB_sig13F, AB_sig13FME11, AB_sig13FnoME11, AB_sig13R, AB_sig13RME11, AB_sig13RnoME11, AB_sig14F, AB_sig14FME11, AB_sig14FnoME11, AB_sig14R, AB_sig14RME11, AB_sig14RnoME11, AB_sig23, AB_sig24, AB_sig34, AB_sig51, AB_sig52, AB_sig53, PVValHelper::eta, etabins, multPhiCorr_741_25nsDY_cfi::fx, Likelihood2_2011(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, DiDispStaMuonMonitor_cfi::pt, HLT_2018_cff::Pt_min, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt(), and Pt3Stn2011().

◆ Pt2Stn2012()

float CSCTFPtMethods::Pt2Stn2012 ( int  type,
float  eta,
float  dphi,
int  PtbyMLH,
float &  theLH,
int  fr = -1,
int  method = 11 
) const

Definition at line 7410 of file CSCTFPtMethods.cc.

7410  {
7411  int useBestMLH = PtbyMLH;
7412  int useBOXcut = false;
7413  int useDTBOXcut = true;
7414  if (type == 5)
7415  useBOXcut = true; // useBOXcut for mode 5 which come from 3 station
7416  if (type == 5)
7417  type = 8; // 2-3-4 -> 2-3//
7418 
7419  if (fabs(eta) >= 2.4)
7420  eta = 2.35;
7421  double PTsolv = 1.; // for muon plus hypothesis
7422  double PTsolvMinus = 1.; //for muon minus hypothesis
7423  for (int iETA = 0; iETA < 15; iETA++) {
7424  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
7425  // calculate curvers of mean and sigma
7426  // calculate phi12 mean
7427  double par1[4] = {0., 0., 0., 0.};
7428  //double phi12mean = fitf5(v, par1); //mu12
7429  double par_sig1[3] = {0., 0., 0.};
7430  int iETA1 = iETA;
7431  switch (type) // type = mode here
7432  {
7433  case 6: //1-2
7434  if (fr == 1) {
7435  if (iETA1 < 3)
7436  iETA1 = 3;
7437  //if(iETA1 > 11)iETA1 = 11;
7438  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7439  par1[0] = A_mu12Front[0][iETA1];
7440  par1[1] = A_mu12Front[1][iETA1];
7441  par1[2] = A_mu12Front[2][iETA1];
7442  par1[3] = A_mu12Front[3][iETA1];
7443  par_sig1[0] = A_sig12Front[0][iETA1];
7444  par_sig1[1] = A_sig12Front[1][iETA1];
7445  par_sig1[2] = A_sig12Front[2][iETA1];
7446  }
7447  if (fr == 0) {
7448  if (iETA1 < 1)
7449  iETA1 = 1;
7450  //if(iETA1 > 11)iETA1 = 11;
7451  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7452  par1[0] = A_mu12Rare[0][iETA1];
7453  par1[1] = A_mu12Rare[1][iETA1];
7454  par1[2] = A_mu12Rare[2][iETA1];
7455  par1[3] = A_mu12Rare[3][iETA1];
7456  par_sig1[0] = A_sig12Rare[0][iETA1];
7457  par_sig1[1] = A_sig12Rare[1][iETA1];
7458  par_sig1[2] = A_sig12Rare[2][iETA1];
7459  }
7460  break;
7461  case 7: //1-3
7462  if (fr == 1) {
7463  if (iETA1 < 3)
7464  iETA1 = 3;
7465  //if(iETA1 > 11)iETA1 = 11;
7466  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7467  par1[0] = A_mu13Front[0][iETA1];
7468  par1[1] = A_mu13Front[1][iETA1];
7469  par1[2] = A_mu13Front[2][iETA1];
7470  par1[3] = A_mu13Front[3][iETA1];
7471  par_sig1[0] = A_sig13Front[0][iETA1];
7472  par_sig1[1] = A_sig13Front[1][iETA1];
7473  par_sig1[2] = A_sig13Front[2][iETA1];
7474  }
7475  if (fr == 0) {
7476  if (iETA1 < 2)
7477  iETA1 = 2;
7478  //if(iETA1 > 11)iETA1 = 11;
7479  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7480  par1[0] = A_mu13Rare[0][iETA1];
7481  par1[1] = A_mu13Rare[1][iETA1];
7482  par1[2] = A_mu13Rare[2][iETA1];
7483  par1[3] = A_mu13Rare[3][iETA1];
7484  par_sig1[0] = A_sig13Rare[0][iETA1];
7485  par_sig1[1] = A_sig13Rare[1][iETA1];
7486  par_sig1[2] = A_sig13Rare[2][iETA1];
7487  }
7488  break;
7489  case 8: //2-3
7490  if (iETA1 < 2)
7491  iETA1 = 2;
7492  par1[0] = A_mu23[0][iETA1];
7493  par1[1] = A_mu23[1][iETA1];
7494  par1[2] = A_mu23[2][iETA1];
7495  par1[3] = A_mu23[3][iETA1];
7496  par_sig1[0] = A_sig23[0][iETA1];
7497  par_sig1[1] = A_sig23[1][iETA1];
7498  par_sig1[2] = A_sig23[2][iETA1];
7499  break;
7500  case 9: //2-4
7501  if (iETA1 < 9)
7502  iETA1 = 9;
7503  par1[0] = A_mu24[0][iETA1];
7504  par1[1] = A_mu24[1][iETA1];
7505  par1[2] = A_mu24[2][iETA1];
7506  par1[3] = A_mu24[3][iETA1];
7507  par_sig1[0] = A_sig24[0][iETA1];
7508  par_sig1[1] = A_sig24[1][iETA1];
7509  par_sig1[2] = A_sig24[2][iETA1];
7510  break;
7511  case 10: //3-4
7512  if (iETA1 < 9)
7513  iETA1 = 9;
7514  par1[0] = A_mu34[0][iETA1];
7515  par1[1] = A_mu34[1][iETA1];
7516  par1[2] = A_mu34[2][iETA1];
7517  par1[3] = A_mu34[3][iETA1];
7518  par_sig1[0] = A_sig34[0][iETA1];
7519  par_sig1[1] = A_sig34[1][iETA1];
7520  par_sig1[2] = A_sig34[2][iETA1];
7521  break;
7522  case 13: //1-4
7523  if (iETA1 < 9)
7524  iETA1 = 9;
7525  //if(iETA1 > 11)iETA1 = 11;
7526  //if(iETA1 > 12)iETA1 = 12;
7527  if (fr == 1) {
7528  par1[0] = A_mu14Front[0][iETA1];
7529  par1[1] = A_mu14Front[1][iETA1];
7530  par1[2] = A_mu14Front[2][iETA1];
7531  par1[3] = A_mu14Front[3][iETA1];
7532  par_sig1[0] = A_sig14Front[0][iETA1];
7533  par_sig1[1] = A_sig14Front[1][iETA1];
7534  par_sig1[2] = A_sig14Front[2][iETA1];
7535  }
7536  if (fr == 0) {
7537  par1[0] = A_mu14Rare[0][iETA1];
7538  par1[1] = A_mu14Rare[1][iETA1];
7539  par1[2] = A_mu14Rare[2][iETA1];
7540  par1[3] = A_mu14Rare[3][iETA1];
7541  par_sig1[0] = A_sig14Rare[0][iETA1];
7542  par_sig1[1] = A_sig14Rare[1][iETA1];
7543  par_sig1[2] = A_sig14Rare[2][iETA1];
7544  }
7545  break;
7546  case 11: // b1-3
7547  if (iETA1 != 2)
7548  iETA1 = 2;
7549  par1[0] = A_mu53[0][iETA1];
7550  par1[1] = A_mu53[1][iETA1];
7551  par1[2] = A_mu53[2][iETA1];
7552  par1[3] = A_mu53[3][iETA1];
7553  par_sig1[0] = A_sig53[0][iETA1];
7554  par_sig1[1] = A_sig53[1][iETA1];
7555  par_sig1[2] = A_sig53[2][iETA1];
7556 
7557  break;
7558  case 12: //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10: b1-2
7559  if (iETA1 < 1)
7560  iETA1 = 1;
7561  if (iETA1 > 2)
7562  iETA1 = 2;
7563  par1[0] = A_mu52[0][iETA1];
7564  par1[1] = A_mu52[1][iETA1];
7565  par1[2] = A_mu52[2][iETA1];
7566  par1[3] = A_mu52[3][iETA1];
7567  par_sig1[0] = A_sig52[0][iETA1];
7568  par_sig1[1] = A_sig52[1][iETA1];
7569  par_sig1[2] = A_sig52[2][iETA1];
7570  break;
7571  case 14: //2-b1 for pt_method < 10 and b1-1 for pt_method > 10
7572  if (method < 10) {
7573  if (iETA1 < 1)
7574  iETA1 = 1;
7575  if (iETA1 > 2)
7576  iETA1 = 2;
7577  }
7578  par1[0] = A_mu52[0][iETA1];
7579  par1[1] = A_mu52[1][iETA1];
7580  par1[2] = A_mu52[2][iETA1];
7581  par1[3] = A_mu52[3][iETA1];
7582  par_sig1[0] = A_sig52[0][iETA1];
7583  par_sig1[1] = A_sig52[1][iETA1];
7584  par_sig1[2] = A_sig52[2][iETA1];
7585  if (method > 10) {
7586  if (iETA1 > 2)
7587  iETA1 = 2;
7588  par1[0] = A_mu51[0][iETA1];
7589  par1[1] = A_mu51[1][iETA1];
7590  par1[2] = A_mu51[2][iETA1];
7591  par1[3] = A_mu51[3][iETA1];
7592  par_sig1[0] = A_sig51[0][iETA1];
7593  par_sig1[1] = A_sig51[1][iETA1];
7594  par_sig1[2] = A_sig51[2][iETA1];
7595  }
7596  break;
7597  //default:
7598  //return 0.0;
7599  }
7600 
7601  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
7602  //if(fabs(dphi) >= 0.002)
7603  //if(fabs(dphi) >= 0.00)
7604  //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
7605  //{
7606  double muPlusMaxLH = -1e9;
7607  double pt = 140;
7608  double step = 5.;
7609  double maxLH = -1e9;
7610 
7611  while (pt > 2.) {
7612  double par_phi12[1] = {dphi};
7613  double v[1], lpt1_1;
7614  v[0] = 0;
7615  lpt1_1 = 1.;
7616  v[0] = pt;
7617  lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
7618 
7619  if (lpt1_1 > maxLH) {
7620  maxLH = lpt1_1;
7621  PTsolv = pt;
7622  }
7623 
7624  if (pt <= 100) {
7625  step = 10.0 / 4.0;
7626  }
7627  if (pt <= 50) {
7628  step = 5.0 / 4.0;
7629  }
7630  if (pt <= 20) {
7631  step = 2.0 / 4.0;
7632  }
7633  if (pt <= 10) {
7634  step = 1.0 / 4.0;
7635  }
7636  if (pt <= 5) {
7637  step = 0.5 / 4.0;
7638  }
7639 
7640  pt = pt - step;
7641  } // end while
7642  muPlusMaxLH = maxLH;
7643 
7644  //*********** end solve equation for muon plus
7645  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
7646  // for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
7647  double muMinusMaxLH = -1e9;
7648  dphi = -dphi;
7649  pt = 140;
7650  step = 5.;
7651  maxLH = -1e9;
7652  while (pt > 2.) {
7653  double par_phi12[1] = {dphi};
7654  double v[1], lpt1_1;
7655  v[0] = 0;
7656  lpt1_1 = 1.;
7657  v[0] = pt;
7658  lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
7659 
7660  if (lpt1_1 > maxLH) {
7661  maxLH = lpt1_1;
7662  PTsolvMinus = pt;
7663  }
7664 
7665  if (pt <= 100) {
7666  step = 10.0 / 4.0;
7667  }
7668  if (pt <= 50) {
7669  step = 5.0 / 4.0;
7670  }
7671  if (pt <= 20) {
7672  step = 2.0 / 4.0;
7673  }
7674  if (pt <= 10) {
7675  step = 1.0 / 4.0;
7676  }
7677  if (pt <= 5) {
7678  step = 0.5 / 4.0;
7679  }
7680 
7681  pt = pt - step;
7682  } // end while
7683  muMinusMaxLH = maxLH;
7684 
7685  // }// if(fabs(dphi) >= 0.002)
7686  // else
7687  // {PTsolv = 137.5;}
7688 
7689  //*********** end solve equation for muon minus
7690  if (useBestMLH)
7691  PTsolv = (muPlusMaxLH > muMinusMaxLH)
7692  ? PTsolv
7693  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
7694  else
7695  PTsolv = (PTsolv > PTsolvMinus)
7696  ? PTsolv
7697  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
7698 
7699  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
7700 
7701  PTsolv = PTsolv * 1.2;
7702  if (PTsolv > 137.5)
7703  PTsolv = 137.5;
7704 
7705  if (useBOXcut)
7706  if (fabs(dphi) <= 0.002 && PTsolv < 120.)
7707  PTsolv = 140.;
7708  if (useDTBOXcut)
7709  if (fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)
7710  PTsolv = 140.;
7711 
7712  dphi = -dphi; //return to correct sing dphi
7713 
7714  } //if(fabs(eta_TracMy)
7715  } //end "for by iETA"
7716 
7717  float Pt = PTsolv;
7718  if (Pt > 10 && fabs(dphi) >= 0.1)
7719  std::cout << "iF = 0 for dphi = " << dphi << " and Pt = " << Pt << std::endl;
7720 
7721  //if(Pt > 100 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi > 0.015 )std::cout << "dphi = " << dphi << " eta = " << eta << std::endl;
7722  //if(Pt < 10 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi < 0.01)std::cout << "dphi = " << dphi << " eta = " << eta << std::endl;
7723  // return (Pt>0.0) ? Pt : 0.0;
7724 
7725  float Pt_min = trigger_scale->getPtScale()->getLowEdge(1); // 0 GeV
7726  if (method > 10)
7727  Pt_min = trigger_scale->getPtScale()->getLowEdge(3); // 2 GeV
7728 
7729  return (Pt > Pt_min) ? Pt : Pt_min;
7730 }

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu14Front, A_mu14Rare, A_mu23, A_mu24, A_mu34, A_mu51, A_mu52, A_mu53, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig14Front, A_sig14Rare, A_sig23, A_sig24, A_sig34, A_sig51, A_sig52, A_sig53, gather_cfg::cout, PVValHelper::eta, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood2(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, DiDispStaMuonMonitor_cfi::pt, HLT_2018_cff::Pt_min, trigger_scale, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt(), and Pt3Stn2012().

◆ Pt2Stn2012_DT()

float CSCTFPtMethods::Pt2Stn2012_DT ( int  type,
float  eta,
float  dphi,
int  PtbyMLH,
float &  theLH,
int  fr = -1,
int  method = 11,
int  phiSign = 2 
) const

Definition at line 8701 of file CSCTFPtMethods.cc.

8702  {
8703  int useBestMLH = PtbyMLH;
8704  int useBOXcut = true;
8705 
8706  //if(fabs(eta) >= 2.4) eta = 2.35;
8707  if (fabs(eta) >= 2.2)
8708  eta = 2.15;
8709  double PTsolv = 1.; // for muon plus hypothesis
8710  double PTsolvMinus = 1.; //for muon minus hypothesis
8711  for (int iETA = 0; iETA < 15; iETA++) {
8712  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
8713  // calculate curvers of mean and sigma
8714  // calculate phi12 mean
8715  double par1[4] = {0., 0., 0., 0.};
8716  //double phi12mean = fitf5(v, par1); //mu12
8717  double par_sig1[4] = {0., 0., 0., 0};
8718  int iETA1 = iETA;
8719  int iETA2 = iETA;
8720 
8721  const double(*Amean12FnoME11)[15] = AB_mu12FnoME11;
8722  const double(*Asig12FnoME11)[15] = AB_sig12FnoME11;
8723  const double(*Amean12RnoME11)[15] = AB_mu12RnoME11;
8724  const double(*Asig12RnoME11)[15] = AB_sig12RnoME11;
8725 
8726  const double(*Amean13FnoME11)[15] = AB_mu13FnoME11;
8727  const double(*Asig13FnoME11)[15] = AB_sig13FnoME11;
8728  const double(*Amean13RnoME11)[15] = AB_mu13RnoME11;
8729  const double(*Asig13RnoME11)[15] = AB_sig13RnoME11;
8730 
8731  const double(*Amean14FnoME11)[15] = AB_mu14FnoME11;
8732  const double(*Asig14FnoME11)[15] = AB_sig14FnoME11;
8733  const double(*Amean14RnoME11)[15] = AB_mu14RnoME11;
8734  const double(*Asig14RnoME11)[15] = AB_sig14RnoME11;
8735  //
8736  const double(*Amean12FME11)[15] = AB_mu12FME11;
8737  const double(*Asig12FME11)[15] = AB_sig12FME11;
8738  const double(*Amean12RME11)[15] = AB_mu12RME11;
8739  const double(*Asig12RME11)[15] = AB_sig12RME11;
8740 
8741  const double(*Amean13FME11)[15] = AB_mu13FME11;
8742  const double(*Asig13FME11)[15] = AB_sig13FME11;
8743  const double(*Amean13RME11)[15] = AB_mu13RME11;
8744  const double(*Asig13RME11)[15] = AB_sig13RME11;
8745 
8746  const double(*Amean14FME11)[15] = AB_mu14FME11;
8747  const double(*Asig14FME11)[15] = AB_sig14FME11;
8748  const double(*Amean14RME11)[15] = AB_mu14RME11;
8749  const double(*Asig14RME11)[15] = AB_sig14RME11;
8750  //
8751  const double(*Amean12F)[15] = AB_mu12F;
8752  const double(*Asig12F)[15] = AB_sig12F;
8753  const double(*Amean12R)[15] = AB_mu12R;
8754  const double(*Asig12R)[15] = AB_sig12R;
8755 
8756  const double(*Amean13F)[15] = AB_mu13F;
8757  const double(*Asig13F)[15] = AB_sig13F;
8758  const double(*Amean13R)[15] = AB_mu13R;
8759  const double(*Asig13R)[15] = AB_sig13R;
8760 
8761  const double(*Amean14F)[15] = AB_mu14F;
8762  const double(*Asig14F)[15] = AB_sig14F;
8763  const double(*Amean14R)[15] = AB_mu14R;
8764  const double(*Asig14R)[15] = AB_sig14R;
8765 
8766  const double(*Amean23)[15] = AB_mu23;
8767  const double(*Asig23)[15] = AB_sig23;
8768  const double(*Amean24)[15] = AB_mu24;
8769  const double(*Asig24)[15] = AB_sig24;
8770  const double(*Amean34)[15] = AB_mu34;
8771  const double(*Asig34)[15] = AB_sig34;
8772 
8773  const double(*Amean51)[15] = AB_mu51;
8774  const double(*Asig51)[15] = AB_sig51;
8775  const double(*Amean52)[15] = AB_mu52;
8776  const double(*Asig52)[15] = AB_sig52;
8777  const double(*Amean53)[15] = AB_mu53;
8778  const double(*Asig53)[15] = AB_sig53;
8779 
8780  switch (type) // type = mode here
8781  {
8782  case 6: //1-2
8783  if (fr == 1) {
8784  if (iETA1 < 3)
8785  iETA1 = 3;
8786  //if(iETA1 > 11)iETA1 = 11;
8787  par1[0] = (*(Amean12F + 0))[iETA1];
8788  par1[1] = (*(Amean12F + 1))[iETA1];
8789  par1[2] = (*(Amean12F + 2))[iETA1];
8790  par1[3] = (*(Amean12F + 3))[iETA1];
8791  par_sig1[0] = (*(Asig12F + 0))[iETA1];
8792  par_sig1[1] = (*(Asig12F + 1))[iETA1];
8793  par_sig1[2] = (*(Asig12F + 2))[iETA1];
8794  par_sig1[3] = (*(Asig12F + 3))[iETA1];
8795  }
8796  if (fr == 0) {
8797  if (iETA1 < 1)
8798  iETA1 = 1;
8799  //if(iETA1 > 11)iETA1 = 11;
8800  par1[0] = (*(Amean12R + 0))[iETA1];
8801  par1[1] = (*(Amean12R + 1))[iETA1];
8802  par1[2] = (*(Amean12R + 2))[iETA1];
8803  par1[3] = (*(Amean12R + 3))[iETA1];
8804  par_sig1[0] = (*(Asig12R + 0))[iETA1];
8805  par_sig1[1] = (*(Asig12R + 1))[iETA1];
8806  par_sig1[2] = (*(Asig12R + 2))[iETA1];
8807  par_sig1[3] = (*(Asig12R + 3))[iETA1];
8808  }
8809  if (phiSign == 0) { // track belong to ME11 station
8810  if (fr == 1) {
8811  if (iETA2 < 7)
8812  iETA2 = 7;
8813  par1[0] = (*(Amean12FME11 + 0))[iETA2];
8814  par1[1] = (*(Amean12FME11 + 1))[iETA2];
8815  par1[2] = (*(Amean12FME11 + 2))[iETA2];
8816  par1[3] = (*(Amean12FME11 + 3))[iETA2];
8817  par_sig1[0] = (*(Asig12FME11 + 0))[iETA2];
8818  par_sig1[1] = (*(Asig12FME11 + 1))[iETA2];
8819  par_sig1[2] = (*(Asig12FME11 + 2))[iETA2];
8820  par_sig1[3] = (*(Asig12FME11 + 3))[iETA2];
8821  }
8822  if (fr == 0) {
8823  if (iETA2 < 7)
8824  iETA2 = 7;
8825  par1[0] = (*(Amean12RME11 + 0))[iETA2];
8826  par1[1] = (*(Amean12RME11 + 1))[iETA2];
8827  par1[2] = (*(Amean12RME11 + 2))[iETA2];
8828  par1[3] = (*(Amean12RME11 + 3))[iETA2];
8829  par_sig1[0] = (*(Asig12RME11 + 0))[iETA2];
8830  par_sig1[1] = (*(Asig12RME11 + 1))[iETA2];
8831  par_sig1[2] = (*(Asig12RME11 + 2))[iETA2];
8832  par_sig1[3] = (*(Asig12RME11 + 3))[iETA2];
8833  }
8834  }
8835  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
8836  if (fr == 1) {
8837  if (iETA2 < 3)
8838  iETA2 = 3;
8839  if (iETA2 > 7)
8840  iETA2 = 7;
8841  par1[0] = (*(Amean12FnoME11 + 0))[iETA2];
8842  par1[1] = (*(Amean12FnoME11 + 1))[iETA2];
8843  par1[2] = (*(Amean12FnoME11 + 2))[iETA2];
8844  par1[3] = (*(Amean12FnoME11 + 3))[iETA2];
8845  par_sig1[0] = (*(Asig12FnoME11 + 0))[iETA2];
8846  par_sig1[1] = (*(Asig12FnoME11 + 1))[iETA2];
8847  par_sig1[2] = (*(Asig12FnoME11 + 2))[iETA2];
8848  par_sig1[3] = (*(Asig12FnoME11 + 3))[iETA2];
8849  }
8850  if (fr == 0) {
8851  if (iETA2 < 1)
8852  iETA2 = 1;
8853  if (iETA2 > 6)
8854  iETA2 = 6; // rare ME1/2 only till 1.6
8855  par1[0] = (*(Amean12RnoME11 + 0))[iETA2];
8856  par1[1] = (*(Amean12RnoME11 + 1))[iETA2];
8857  par1[2] = (*(Amean12RnoME11 + 2))[iETA2];
8858  par1[3] = (*(Amean12RnoME11 + 3))[iETA2];
8859  par_sig1[0] = (*(Asig12RnoME11 + 0))[iETA2];
8860  par_sig1[1] = (*(Asig12RnoME11 + 1))[iETA2];
8861  par_sig1[2] = (*(Asig12RnoME11 + 2))[iETA2];
8862  par_sig1[3] = (*(Asig12RnoME11 + 3))[iETA2];
8863  }
8864  }
8865 
8866  break;
8867  case 7: //1-3
8868  if (fr == 1) {
8869  if (iETA1 < 3)
8870  iETA1 = 3;
8871  //if(iETA1 > 11)iETA1 = 11;
8872  par1[0] = (*(Amean13F + 0))[iETA1];
8873  par1[1] = (*(Amean13F + 1))[iETA1];
8874  par1[2] = (*(Amean13F + 2))[iETA1];
8875  par1[3] = (*(Amean13F + 3))[iETA1];
8876  par_sig1[0] = (*(Asig13F + 0))[iETA1];
8877  par_sig1[1] = (*(Asig13F + 1))[iETA1];
8878  par_sig1[2] = (*(Asig13F + 2))[iETA1];
8879  par_sig1[3] = (*(Asig13F + 3))[iETA1];
8880  }
8881  if (fr == 0) {
8882  if (iETA1 < 3)
8883  iETA1 = 3;
8884  //if(iETA1 > 11)iETA1 = 11;
8885  par1[0] = (*(Amean13R + 0))[iETA1];
8886  par1[1] = (*(Amean13R + 1))[iETA1];
8887  par1[2] = (*(Amean13R + 2))[iETA1];
8888  par1[3] = (*(Amean13R + 3))[iETA1];
8889  par_sig1[0] = (*(Asig13R + 0))[iETA1];
8890  par_sig1[1] = (*(Asig13R + 1))[iETA1];
8891  par_sig1[2] = (*(Asig13R + 2))[iETA1];
8892  par_sig1[3] = (*(Asig13R + 3))[iETA1];
8893  }
8894  if (phiSign == 0) { // track belong to ME11 station
8895  if (fr == 1) {
8896  if (iETA2 < 7)
8897  iETA2 = 7;
8898  par1[0] = (*(Amean13FME11 + 0))[iETA2];
8899  par1[1] = (*(Amean13FME11 + 1))[iETA2];
8900  par1[2] = (*(Amean13FME11 + 2))[iETA2];
8901  par1[3] = (*(Amean13FME11 + 3))[iETA2];
8902  par_sig1[0] = (*(Asig13FME11 + 0))[iETA2];
8903  par_sig1[1] = (*(Asig13FME11 + 1))[iETA2];
8904  par_sig1[2] = (*(Asig13FME11 + 2))[iETA2];
8905  par_sig1[3] = (*(Asig13FME11 + 3))[iETA2];
8906  }
8907  if (fr == 0) {
8908  if (iETA2 < 7)
8909  iETA2 = 7;
8910  par1[0] = (*(Amean13RME11 + 0))[iETA2];
8911  par1[1] = (*(Amean13RME11 + 1))[iETA2];
8912  par1[2] = (*(Amean13RME11 + 2))[iETA2];
8913  par1[3] = (*(Amean13RME11 + 3))[iETA2];
8914  par_sig1[0] = (*(Asig13RME11 + 0))[iETA2];
8915  par_sig1[1] = (*(Asig13RME11 + 1))[iETA2];
8916  par_sig1[2] = (*(Asig13RME11 + 2))[iETA2];
8917  par_sig1[3] = (*(Asig13RME11 + 3))[iETA2];
8918  }
8919  }
8920  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
8921  if (fr == 1) {
8922  if (iETA2 < 3)
8923  iETA2 = 3;
8924  if (iETA2 > 7)
8925  iETA2 = 7;
8926  par1[0] = (*(Amean13FnoME11 + 0))[iETA2];
8927  par1[1] = (*(Amean13FnoME11 + 1))[iETA2];
8928  par1[2] = (*(Amean13FnoME11 + 2))[iETA2];
8929  par1[3] = (*(Amean13FnoME11 + 3))[iETA2];
8930  par_sig1[0] = (*(Asig13FnoME11 + 0))[iETA2];
8931  par_sig1[1] = (*(Asig13FnoME11 + 1))[iETA2];
8932  par_sig1[2] = (*(Asig13FnoME11 + 2))[iETA2];
8933  par_sig1[3] = (*(Asig13FnoME11 + 3))[iETA2];
8934  }
8935  if (fr == 0) {
8936  if (iETA2 < 3)
8937  iETA2 = 3;
8938  if (iETA2 > 6)
8939  iETA2 = 6; // rare ME1/2 only till 1.6
8940  par1[0] = (*(Amean13RnoME11 + 0))[iETA2];
8941  par1[1] = (*(Amean13RnoME11 + 1))[iETA2];
8942  par1[2] = (*(Amean13RnoME11 + 2))[iETA2];
8943  par1[3] = (*(Amean13RnoME11 + 3))[iETA2];
8944  par_sig1[0] = (*(Asig13RnoME11 + 0))[iETA2];
8945  par_sig1[1] = (*(Asig13RnoME11 + 1))[iETA2];
8946  par_sig1[2] = (*(Asig13RnoME11 + 2))[iETA2];
8947  par_sig1[3] = (*(Asig13RnoME11 + 3))[iETA2];
8948  }
8949  }
8950  break;
8951  case 8: //2-3
8952  if (iETA1 < 2)
8953  iETA1 = 2;
8954  par1[0] = (*(Amean23 + 0))[iETA1];
8955  par1[1] = (*(Amean23 + 1))[iETA1];
8956  par1[2] = (*(Amean23 + 2))[iETA1];
8957  par1[3] = (*(Amean23 + 3))[iETA1];
8958  par_sig1[0] = (*(Asig23 + 0))[iETA1];
8959  par_sig1[1] = (*(Asig23 + 1))[iETA1];
8960  par_sig1[2] = (*(Asig23 + 2))[iETA1];
8961  par_sig1[3] = (*(Asig23 + 3))[iETA1];
8962 
8963  break;
8964  case 9: //2-4
8965  if (iETA1 < 3)
8966  iETA1 = 3;
8967  par1[0] = (*(Amean24 + 0))[iETA1];
8968  par1[1] = (*(Amean24 + 1))[iETA1];
8969  par1[2] = (*(Amean24 + 2))[iETA1];
8970  par1[3] = (*(Amean24 + 3))[iETA1];
8971  par_sig1[0] = (*(Asig24 + 0))[iETA1];
8972  par_sig1[1] = (*(Asig24 + 1))[iETA1];
8973  par_sig1[2] = (*(Asig24 + 2))[iETA1];
8974  par_sig1[3] = (*(Asig24 + 3))[iETA1];
8975  break;
8976  case 10: //3-4
8977  if (iETA1 < 3)
8978  iETA1 = 3;
8979  par1[0] = (*(Amean34 + 0))[iETA1];
8980  par1[1] = (*(Amean34 + 1))[iETA1];
8981  par1[2] = (*(Amean34 + 2))[iETA1];
8982  par1[3] = (*(Amean34 + 3))[iETA1];
8983  par_sig1[0] = (*(Asig34 + 0))[iETA1];
8984  par_sig1[1] = (*(Asig34 + 1))[iETA1];
8985  par_sig1[2] = (*(Asig34 + 2))[iETA1];
8986  par_sig1[3] = (*(Asig34 + 3))[iETA1];
8987  break;
8988  case 13: //1-4
8989  if (fr == 1) {
8990  if (iETA1 < 3)
8991  iETA1 = 3;
8992  //if(iETA1 > 11)iETA1 = 11;
8993  par1[0] = (*(Amean14F + 0))[iETA1];
8994  par1[1] = (*(Amean14F + 1))[iETA1];
8995  par1[2] = (*(Amean14F + 2))[iETA1];
8996  par1[3] = (*(Amean14F + 3))[iETA1];
8997  par_sig1[0] = (*(Asig14F + 0))[iETA1];
8998  par_sig1[1] = (*(Asig14F + 1))[iETA1];
8999  par_sig1[2] = (*(Asig14F + 2))[iETA1];
9000  par_sig1[3] = (*(Asig14F + 3))[iETA1];
9001  }
9002  if (fr == 0) {
9003  if (iETA1 < 2)
9004  iETA1 = 2;
9005  //if(iETA1 > 11)iETA1 = 11;
9006  par1[0] = (*(Amean14R + 0))[iETA1];
9007  par1[1] = (*(Amean14R + 1))[iETA1];
9008  par1[2] = (*(Amean14R + 2))[iETA1];
9009  par1[3] = (*(Amean14R + 3))[iETA1];
9010  par_sig1[0] = (*(Asig14R + 0))[iETA1];
9011  par_sig1[1] = (*(Asig14R + 1))[iETA1];
9012  par_sig1[2] = (*(Asig14R + 2))[iETA1];
9013  par_sig1[3] = (*(Asig14R + 3))[iETA1];
9014  }
9015  if (phiSign == 0) { // track belong to ME11 station
9016  if (fr == 1) {
9017  if (iETA2 < 9)
9018  iETA2 = 9;
9019  par1[0] = (*(Amean14FME11 + 0))[iETA2];
9020  par1[1] = (*(Amean14FME11 + 1))[iETA2];
9021  par1[2] = (*(Amean14FME11 + 2))[iETA2];
9022  par1[3] = (*(Amean14FME11 + 3))[iETA2];
9023  par_sig1[0] = (*(Asig14FME11 + 0))[iETA2];
9024  par_sig1[1] = (*(Asig14FME11 + 1))[iETA2];
9025  par_sig1[2] = (*(Asig14FME11 + 2))[iETA2];
9026  par_sig1[3] = (*(Asig14FME11 + 3))[iETA2];
9027  }
9028  if (fr == 0) {
9029  if (iETA2 < 9)
9030  iETA2 = 9;
9031  par1[0] = (*(Amean14RME11 + 0))[iETA2];
9032  par1[1] = (*(Amean14RME11 + 1))[iETA2];
9033  par1[2] = (*(Amean14RME11 + 2))[iETA2];
9034  par1[3] = (*(Amean14RME11 + 3))[iETA2];
9035  par_sig1[0] = (*(Asig14RME11 + 0))[iETA2];
9036  par_sig1[1] = (*(Asig14RME11 + 1))[iETA2];
9037  par_sig1[2] = (*(Asig14RME11 + 2))[iETA2];
9038  par_sig1[3] = (*(Asig14RME11 + 3))[iETA2];
9039  }
9040  }
9041  if (phiSign == 1) { // track belong to ME1/2 or ME1/3 station
9042  if (fr == 1) {
9043  if (iETA2 < 4)
9044  iETA2 = 4;
9045  if (iETA2 > 7)
9046  iETA2 = 7;
9047  par1[0] = (*(Amean14FnoME11 + 0))[iETA2];
9048  par1[1] = (*(Amean14FnoME11 + 1))[iETA2];
9049  par1[2] = (*(Amean14FnoME11 + 2))[iETA2];
9050  par1[3] = (*(Amean14FnoME11 + 3))[iETA2];
9051  par_sig1[0] = (*(Asig14FnoME11 + 0))[iETA2];
9052  par_sig1[1] = (*(Asig14FnoME11 + 1))[iETA2];
9053  par_sig1[2] = (*(Asig14FnoME11 + 2))[iETA2];
9054  par_sig1[3] = (*(Asig14FnoME11 + 3))[iETA2];
9055  }
9056  if (fr == 0) {
9057  if (iETA2 < 4)
9058  iETA2 = 4;
9059  if (iETA2 > 6)
9060  iETA2 = 6; // rare ME1/2 only till 1.6
9061  par1[0] = (*(Amean14RnoME11 + 0))[iETA2];
9062  par1[1] = (*(Amean14RnoME11 + 1))[iETA2];
9063  par1[2] = (*(Amean14RnoME11 + 2))[iETA2];
9064  par1[3] = (*(Amean14RnoME11 + 3))[iETA2];
9065  par_sig1[0] = (*(Asig14RnoME11 + 0))[iETA2];
9066  par_sig1[1] = (*(Asig14RnoME11 + 1))[iETA2];
9067  par_sig1[2] = (*(Asig14RnoME11 + 2))[iETA2];
9068  par_sig1[3] = (*(Asig14RnoME11 + 3))[iETA2];
9069  }
9070  }
9071 
9072  break;
9073  case 11: // b1-3 for pt_method > 10 & fr = 0, singles for pt_method < 10
9074  if (iETA1 != 2)
9075  iETA1 = 2;
9076  par1[0] = (*(Amean53 + 0))[iETA1];
9077  par1[1] = (*(Amean53 + 1))[iETA1];
9078  par1[2] = (*(Amean53 + 2))[iETA1];
9079  par1[3] = (*(Amean53 + 3))[iETA1];
9080  par_sig1[0] = (*(Asig53 + 0))[iETA1];
9081  par_sig1[1] = (*(Asig53 + 1))[iETA1];
9082  par_sig1[2] = (*(Asig53 + 2))[iETA1];
9083  par_sig1[3] = (*(Asig53 + 3))[iETA1];
9084  break;
9085 
9086  case 12: //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10 & fr = 0: b1-2
9087  if (iETA1 < 1)
9088  iETA1 = 1;
9089  if (iETA1 > 2)
9090  iETA1 = 2;
9091 
9092  par1[0] = (*(Amean52 + 0))[iETA1];
9093  par1[1] = (*(Amean52 + 1))[iETA1];
9094  par1[2] = (*(Amean52 + 2))[iETA1];
9095  par1[3] = (*(Amean52 + 3))[iETA1];
9096  par_sig1[0] = (*(Asig52 + 0))[iETA1];
9097  par_sig1[1] = (*(Asig52 + 1))[iETA1];
9098  par_sig1[2] = (*(Asig52 + 2))[iETA1];
9099  par_sig1[3] = (*(Asig52 + 3))[iETA1];
9100 
9101  break;
9102  case 14: //2-b1 for pt_method < 10 and b1-1 for pt_method > 10 & fr = 0
9103  if (method < 10) {
9104  if (iETA1 < 1)
9105  iETA1 = 1;
9106  if (iETA1 > 2)
9107  iETA1 = 2;
9108  }
9109  par1[0] = (*(Amean52 + 0))[iETA1];
9110  par1[1] = (*(Amean52 + 1))[iETA1];
9111  par1[2] = (*(Amean52 + 2))[iETA1];
9112  par1[3] = (*(Amean52 + 3))[iETA1];
9113  par_sig1[0] = (*(Asig52 + 0))[iETA1];
9114  par_sig1[1] = (*(Asig52 + 1))[iETA1];
9115  par_sig1[2] = (*(Asig52 + 2))[iETA1];
9116  par_sig1[3] = (*(Asig52 + 3))[iETA1];
9117 
9118  if (method > 10) {
9119  if (iETA1 > 2)
9120  iETA1 = 2;
9121  par1[0] = (*(Amean51 + 0))[iETA1];
9122  par1[1] = (*(Amean51 + 1))[iETA1];
9123  par1[2] = (*(Amean51 + 2))[iETA1];
9124  par1[3] = (*(Amean51 + 3))[iETA1];
9125  par_sig1[0] = (*(Asig51 + 0))[iETA1];
9126  par_sig1[1] = (*(Asig51 + 1))[iETA1];
9127  par_sig1[2] = (*(Asig51 + 2))[iETA1];
9128  par_sig1[3] = (*(Asig51 + 3))[iETA1];
9129  }
9130  break;
9131  //default:
9132  //return 0.0;
9133  }
9134 
9135  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
9136  //if(fabs(dphi) >= 0.002)
9137  //if(fabs(dphi) >= 0.00)
9138  //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
9139  //{
9140  double muPlusMaxLH = -1e9;
9141  double pt = 140;
9142  double step = 5.;
9143  double maxLH = -1e9;
9144  while (pt > 2.) {
9145  double par_phi12[1] = {dphi};
9146  double v[1], lpt1_1;
9147  v[0] = 0;
9148  lpt1_1 = 1.;
9149  v[0] = pt;
9150  lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
9151 
9152  if (lpt1_1 > maxLH) {
9153  maxLH = lpt1_1;
9154  PTsolv = pt;
9155  }
9156 
9157  if (pt <= 100) {
9158  step = 10.0 / 4.0;
9159  }
9160  if (pt <= 50) {
9161  step = 5.0 / 4.0;
9162  }
9163  if (pt <= 20) {
9164  step = 2.0 / 4.0;
9165  }
9166  if (pt <= 10) {
9167  step = 1.0 / 4.0;
9168  }
9169  if (pt <= 5) {
9170  step = 0.5 / 4.0;
9171  }
9172 
9173  pt = pt - step;
9174  } // end while
9175  muPlusMaxLH = maxLH;
9176 
9177  //*********** end solve equation for muon plus
9178  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
9179  // for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
9180  double muMinusMaxLH = -1e9;
9181  dphi = -dphi;
9182  pt = 140;
9183  step = 5.;
9184  maxLH = -1e9;
9185  while (pt > 2.) {
9186  double par_phi12[1] = {dphi};
9187  double v[1], lpt1_1;
9188  v[0] = 0;
9189  lpt1_1 = 1.;
9190  v[0] = pt;
9191  lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
9192 
9193  if (lpt1_1 > maxLH) {
9194  maxLH = lpt1_1;
9195  PTsolvMinus = pt;
9196  }
9197 
9198  if (pt <= 100) {
9199  step = 10.0 / 4.0;
9200  }
9201  if (pt <= 50) {
9202  step = 5.0 / 4.0;
9203  }
9204  if (pt <= 20) {
9205  step = 2.0 / 4.0;
9206  }
9207  if (pt <= 10) {
9208  step = 1.0 / 4.0;
9209  }
9210  if (pt <= 5) {
9211  step = 0.5 / 4.0;
9212  }
9213 
9214  pt = pt - step;
9215  } // end while
9216  muMinusMaxLH = maxLH;
9217 
9218  // }// if(fabs(dphi) >= 0.002)
9219  // else
9220  // {PTsolv = 137.5;}
9221 
9222  //*********** end solve equation for muon minus
9223  if (useBestMLH)
9224  PTsolv = (muPlusMaxLH > muMinusMaxLH)
9225  ? PTsolv
9226  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
9227  else
9228  PTsolv = (PTsolv > PTsolvMinus)
9229  ? PTsolv
9230  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
9231 
9232  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
9233 
9234  PTsolv = PTsolv * 1.2;
9235  if (PTsolv > 137.5)
9236  PTsolv = 137.5;
9237 
9238  if (useBOXcut)
9239  if (fabs(dphi) <= 0.002 && PTsolv < 120.)
9240  PTsolv = 140.;
9241  //if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;
9242  dphi = -dphi; //return to correct sing dphi
9243 
9244  } //if(fabs(eta_TracMy)
9245  } //end "for by iETA"
9246 
9247  float Pt = PTsolv;
9248 
9249  //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
9250  //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV
9251  float Pt_min = 2; // 0 GeV
9252 
9253  return (Pt > Pt_min) ? Pt : Pt_min;
9254 }

References AB_mu12F, AB_mu12FME11, AB_mu12FnoME11, AB_mu12R, AB_mu12RME11, AB_mu12RnoME11, AB_mu13F, AB_mu13FME11, AB_mu13FnoME11, AB_mu13R, AB_mu13RME11, AB_mu13RnoME11, AB_mu14F, AB_mu14FME11, AB_mu14FnoME11, AB_mu14R, AB_mu14RME11, AB_mu14RnoME11, AB_mu23, AB_mu24, AB_mu34, AB_mu51, AB_mu52, AB_mu53, AB_sig12F, AB_sig12FME11, AB_sig12FnoME11, AB_sig12R, AB_sig12RME11, AB_sig12RnoME11, AB_sig13F, AB_sig13FME11, AB_sig13FnoME11, AB_sig13R, AB_sig13RME11, AB_sig13RnoME11, AB_sig14F, AB_sig14FME11, AB_sig14FnoME11, AB_sig14R, AB_sig14RME11, AB_sig14RnoME11, AB_sig23, AB_sig24, AB_sig34, AB_sig51, AB_sig52, AB_sig53, PVValHelper::eta, etabins, Likelihood2_2011(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, DiDispStaMuonMonitor_cfi::pt, HLT_2018_cff::Pt_min, and findQualityFiles::v.

Referenced by Pt3Stn2012_DT().

◆ Pt2StnChiSq()

float CSCTFPtMethods::Pt2StnChiSq ( int  type,
float  eta,
int  dphi,
int  fr 
) const

Definition at line 9825 of file CSCTFPtMethods.cc.

9825  {
9826  float diff, min, ptmin, ptmax;
9827  float mypt = 0.0;
9828 
9829  int dphicopy = dphi;
9830 
9831  if (type < 0 || type > 3) {
9832  // std::cout << "CSCTFPtMethods: illegal track type for Chi-square method" << std::endl;
9833  edm::LogError("CSCTFPtMethods::Pt2StnChiSq()") << "Illegal track type for Chi-square method";
9834  return 0.;
9835  }
9836 
9837  // flip sign
9838  //dphi = -dphi;
9839 
9840  // force positive
9841  eta = fabs(eta);
9842 
9843  //determine which eta bin muon falls into
9844  int i = 0;
9845  for (i = 0; i < 15; i++) {
9846  if (eta >= etabins[i] && eta < etabins[i + 1])
9847  break;
9848  }
9849  if (i == 15) {
9850  // std::cout<<" CSCTFPtMethods: muon not within any eta range"<< std::endl;
9851  edm::LogWarning("CSCTFPtMethods::Pt2StnChiSq()") << "Muon not within any eta range";
9852  if (eta < etabins[0]) {
9853  eta = etabins[0];
9854  i = 0;
9855  } else if (eta >= etabins[15]) {
9856  eta = etabins[15];
9857  i = 15;
9858  } else
9859  exit(0);
9860  }
9861 
9862  bool bCallOldMethod = false;
9863 
9864  if (fr == 0) {
9865  //advance past bins in array w/ default values
9866  //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
9867  int j = 0; //start from 1st column, j=0
9868  while (dphifr0[type][i][j] == -1 && sigmafr0[type][i][j] == 1 && j != 28)
9869  j++;
9870  if (j == 28) {
9871  // std::cout <<" CSCTFPtMethods: every entry in row is default"<< std::endl;
9872  edm::LogInfo("CSCTFPtMethods::Pt2StnChiSq()") << "Every entry in row is default";
9873  // exit(0); //normal termination
9874  bCallOldMethod = true;
9875  }
9876 
9877  if (!bCallOldMethod) {
9878  //set min, ptmin, ptmax to first bin
9879  //in row that is not default
9880  min = fabs(dphi - dphifr0[type][i][j]) / sigmafr0[type][i][j];
9881  ptmin = ptbins[j];
9882  ptmax = ptbins[j + 1];
9883 
9884  //loop through all pt bins. assign pt of bin w/ least diff
9885  //do not include default bins in calculation
9886  for (int k = j; k < 28; k++) {
9887  if (dphifr0[type][i][k] != -1 || sigmafr0[type][i][k] != 1) {
9888  diff = fabs(dphi - dphifr0[type][i][k]) / sigmafr0[type][i][k];
9889  if (diff < min) {
9890  min = diff;
9891  ptmin = ptbins[k];
9892  ptmax = ptbins[k + 1];
9893  }
9894  }
9895  }
9896  mypt = (ptmin + ptmax) / 2;
9897  }
9898  }
9899 
9900  if (fr == 1) {
9901  //advance past bins in array w/ default values
9902  //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
9903  int j = 0; //start from 1st column, j=0
9904 
9905  while (dphifr1[type][i][j] == -1 && sigmafr1[type][i][j] == 1 && j != 28)
9906  j++;
9907 
9908  if (j == 28) {
9909  // std::cout <<" CSCTFPtMethods: every entry in row is default"<< std::endl;
9910  edm::LogInfo("CSCTFPtMethods::Pt2StnChiSq()") << "Every entry in row is default";
9911  // exit(0); //normal termination
9912  bCallOldMethod = true;
9913  }
9914 
9915  if (!bCallOldMethod) {
9916  //set min, ptmin, ptmax to first bin
9917  //in row that is not default
9918  min = fabs(dphi - dphifr1[type][i][j]) / sigmafr1[type][i][j];
9919  ptmin = ptbins[j];
9920  ptmax = ptbins[j + 1];
9921 
9922  //loop through all pt bins. assign pt of bin w/ least diff
9923  //do not include default bins in calculation
9924  for (int k = j; k < 28; k++) {
9925  if (dphifr1[type][i][k] != -1 || sigmafr1[type][i][k] != 1) {
9926  diff = fabs(dphi - dphifr1[type][i][k]) / sigmafr1[type][i][k];
9927  if (diff < min) {
9928  min = diff;
9929  ptmin = ptbins[k];
9930  ptmax = ptbins[k + 1];
9931  }
9932  }
9933  }
9934  mypt = (ptmin + ptmax) / 2;
9935  }
9936  }
9937 
9938  // hybrid approach:
9939  if (bCallOldMethod) {
9940  float dphiR = static_cast<float>(dphicopy) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
9941  // must change type definition, just add one
9942  mypt = Pt2Stn(type + 1, eta, dphiR, fr);
9943  }
9944 
9945  return mypt;
9946 }

References change_name::diff, dphifr0, dphifr1, PVValHelper::eta, etabins, beamvalidation::exit(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, min(), Pt2Stn(), ptbins, muonTiming_cfi::ptmax, ptmin, CSCTFConstants::SECTOR_RAD, sigmafr0, and sigmafr1.

Referenced by CSCTFPtLUT::calcPt(), and Pt2StnHybrid().

◆ Pt2StnHybrid()

float CSCTFPtMethods::Pt2StnHybrid ( int  type,
float  eta,
int  dphi,
int  fr 
) const

Third is the hybrid method

Definition at line 10183 of file CSCTFPtMethods.cc.

10183  {
10184  float mypt = 0.0;
10185 
10186  mypt = Pt2StnChiSq(type, eta, dphi, fr);
10187  if (mypt >= 8.0) {
10188  float dphiR = static_cast<float>(dphi) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
10189  mypt = Pt2Stn(type + 1, eta, dphiR, fr);
10190  }
10191 
10192  return mypt;
10193 }

References PVValHelper::eta, Pt2Stn(), Pt2StnChiSq(), and CSCTFConstants::SECTOR_RAD.

Referenced by CSCTFPtLUT::calcPt().

◆ Pt3Stn()

float CSCTFPtMethods::Pt3Stn ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  fr = -1 
) const

3-station Pt measurement for types (see SP class for 3-stn types)

Definition at line 5218 of file CSCTFPtMethods.cc.

5218  {
5219  int ty1 = 0, ty2 = 0;
5220 
5221  switch (type) {
5222  case 1:
5223  ty1 = kME1andME2 - 1; // subtype sets the right position for array A
5224  ty2 = kME2andME3 - 1;
5225  break;
5226  case 2:
5227  ty1 = kME1andME2 - 1;
5228  ty2 = kME2andME4 - 1;
5229  break;
5230  case 3:
5231  ty1 = kME1andME3 - 1;
5232  ty2 = kME3andME4 - 1;
5233  break;
5234  case 4:
5235  ty1 = kME2andME3 - 1;
5236  ty2 = kME3andME4 - 1;
5237  break;
5238  default:
5239  return 0.0;
5240  }
5241 
5242  // Switch to 2-Station measurement if dphi is too small
5243  // box cut around Pt of 10 GeV
5244  float Pt;
5245  // if ( (fabs(static_cast<double>(dphi2))<0.004) &&
5246  // (fabs(static_cast<double>(dphi1))<0.030)) {
5247  if (fabs(static_cast<double>(dphi2)) < 0.004) {
5248  Pt = Pt2Stn((ty1 + 1), eta, dphi1, fr);
5249  } else {
5250  float c1 = (-.2999 * (eta * eta * eta) + 2.030 * (eta * eta) - 4.235 * eta + 3.024) + 0.02;
5251  float c2 = (-2.484 * (eta * eta * eta) + 14.43 * (eta * eta) - 27.66 * eta + 18.47) * .72;
5252  float r = 0.6; //correlation
5253  float A1 = 0;
5254  float A2 = 0;
5255 
5256  if (dphi1 == 0.0)
5257  dphi1 = 1.e-6;
5258  if (dphi2 == 0.0)
5259  dphi2 = 1.e-6;
5260  if (eta < 0.0)
5261  eta = static_cast<float>(fabs(static_cast<double>(eta)));
5262  if (eta >= 0.0 && eta < 1.6) {
5263  A1 = AkLowEta_Fit1[ty1][0] + AkLowEta_Fit1[ty1][1] * eta + AkLowEta_Fit1[ty1][2] * eta * eta +
5264  AkLowEta_Fit1[ty1][3] * eta * eta * eta;
5265  A2 = AkLowEta_Fit1[ty2][0] + AkLowEta_Fit1[ty2][1] * eta + AkLowEta_Fit1[ty2][2] * eta * eta +
5266  AkLowEta_Fit1[ty2][3] * eta * eta * eta;
5267  if (fr >= 0 && fr <= 1) {
5268  A1 *= FRCorrLowEta[ty1][fr];
5269  }
5270  }
5271 
5272  if (eta >= 1.6 && eta < 2.5) {
5273  A1 = AkHighEta_Fit1[ty1][0] + AkHighEta_Fit1[ty1][1] * eta + AkHighEta_Fit1[ty1][2] * eta * eta +
5274  AkHighEta_Fit1[ty1][3] * eta * eta * eta;
5275  A2 = AkHighEta_Fit1[ty2][0] + AkHighEta_Fit1[ty2][1] * eta + AkHighEta_Fit1[ty2][2] * eta * eta +
5276  AkHighEta_Fit1[ty2][3] * eta * eta * eta;
5277  if (fr >= 0 && fr <= 1) {
5278  A1 *= FRCorrHighEta[ty1][fr];
5279  }
5280  }
5281  A1 *= kGlobalScaleFactor;
5282  A2 *= kGlobalScaleFactor;
5283  Pt =
5284  1 /
5285  (((-dphi1 / c1 / c1 / A1 + r * dphi2 / c1 / c2 / A2 + dphi1 * r / c1 / c2 / A1 - dphi2 / c2 / c2 / A2) +
5286  sqrt((dphi1 / c1 / c1 / A1 - r * dphi2 / c1 / c2 / A2 - dphi1 * r / c1 / A1 / c2 + dphi2 / c2 / c2 / A2) *
5287  (dphi1 / c1 / c1 / A1 - r * dphi2 / c1 / c2 / A2 - dphi1 * r / c1 / A1 / c2 + dphi2 / c2 / c2 / A2) +
5288  8 * (1 - r * r) *
5289  (dphi1 * dphi1 / c1 / c1 / A1 / A1 - 2 * dphi1 * dphi2 * r / c1 / A1 / c2 / A2 +
5290  dphi2 * dphi2 / c2 / c2 / A2 / A2))) /
5291  (4 * (1 - r * r)));
5292 
5293  } // end 2 or 3 station method
5294  // if (Pt<0.0) Pt = 0.0;
5295  if (Pt < trigger_scale->getPtScale()->getLowEdge(1))
5296  Pt = trigger_scale->getPtScale()->getLowEdge(1);
5297 
5298  // switch to 2-stn Pt above 10 GeV:
5299  /*
5300  if (Pt>10.0) {
5301  switch (type)
5302  {
5303  case 1 :
5304  case 2 :
5305  Pt = Pt2Stn(1, eta, dphi1);
5306  break;
5307  case 3:
5308  Pt = Pt2Stn(2, eta, dphi1);
5309  break;
5310  case 4:
5311  Pt = Pt2Stn(3, eta, dphi1);
5312  }
5313  }
5314  */
5315 
5316  return Pt;
5317 }

References AkHighEta_Fit1, AkLowEta_Fit1, alignmentValidation::c1, PVValHelper::eta, FRCorrHighEta, FRCorrLowEta, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), kGlobalScaleFactor, kME1andME2, kME1andME3, kME2andME3, kME2andME4, kME3andME4, Pt2Stn(), alignCSCRings::r, mathSSE::sqrt(), and trigger_scale.

Referenced by CSCTFPtLUT::calcPt(), Pt3StnChiSq(), and Pt3StnHybrid().

◆ Pt3Stn2010()

float CSCTFPtMethods::Pt3Stn2010 ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  fr = -1,
int  method = 11 
) const

Definition at line 6418 of file CSCTFPtMethods.cc.

6418  {
6419  if (fabs(eta) >= 2.4)
6420  eta = 2.35;
6421  float Pt = 0.;
6422  double PTsolv = 1.; // for muon plus hypothesis
6423  double PTsolvMinus = 1.; //for muon minus hypothesis
6424  for (int iETA = 0; iETA < 15; iETA++) {
6425  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
6426  // calculate curvers of mean and sigma
6427  // calculate phi12 mean
6428  double par1[4] = {0., 0., 0., 0.};
6429  //double phi12mean = fitf5(v, par1); //mu12
6430  double par_sig1[3] = {0., 0., 0.};
6431  // calculate phi23 mean
6432  double par2[4] = {0., 0., 0., 0.};
6433  // calculate phi23 sig
6434  double par_sig2[3] = {0., 0., 0.};
6435  // calculate correlation rho
6436  double par_rho[5] = {0., 0., 0., 0., 0.};
6437  int iETA1 = iETA;
6438  int iETA2 = iETA;
6439  switch (type) // type = mode here
6440  {
6441  case 2: //1-2-3
6442  if (fr == 1) {
6443  if (iETA1 < 3)
6444  iETA1 = 3;
6445  //if(iETA1 > 11)iETA1 = 11;
6446  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
6447  par1[0] = A_mu12Front[0][iETA1];
6448  par1[1] = A_mu12Front[1][iETA1];
6449  par1[2] = A_mu12Front[2][iETA1];
6450  par1[3] = A_mu12Front[3][iETA1];
6451  par_sig1[0] = A_sig12Front[0][iETA1];
6452  par_sig1[1] = A_sig12Front[1][iETA1];
6453  par_sig1[2] = A_sig12Front[2][iETA1];
6454  par_rho[0] = A_rho123FrontCSCTF[0][iETA1];
6455  par_rho[1] = A_rho123FrontCSCTF[1][iETA1];
6456  par_rho[2] = A_rho123FrontCSCTF[2][iETA1];
6457  par_rho[3] = A_rho123FrontCSCTF[3][iETA1];
6458  par_rho[4] = A_rho123FrontCSCTF[4][iETA1];
6459  }
6460  if (fr == 0) {
6461  if (iETA1 < 1)
6462  iETA1 = 1;
6463  //if(iETA1 > 11)iETA1 = 11;
6464  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
6465  par1[0] = A_mu12Rare[0][iETA1];
6466  par1[1] = A_mu12Rare[1][iETA1];
6467  par1[2] = A_mu12Rare[2][iETA1];
6468  par1[3] = A_mu12Rare[3][iETA1];
6469  par_sig1[0] = A_sig12Rare[0][iETA1];
6470  par_sig1[1] = A_sig12Rare[1][iETA1];
6471  par_sig1[2] = A_sig12Rare[2][iETA1];
6472  par_rho[0] = A_rho123RareCSCTF[0][iETA1];
6473  par_rho[1] = A_rho123RareCSCTF[1][iETA1];
6474  par_rho[2] = A_rho123RareCSCTF[2][iETA1];
6475  par_rho[3] = A_rho123RareCSCTF[3][iETA1];
6476  par_rho[4] = A_rho123RareCSCTF[4][iETA1];
6477  }
6478  if (iETA2 < 2)
6479  iETA2 = 2;
6480  par2[0] = A_mu23[0][iETA2];
6481  par2[1] = A_mu23[1][iETA2];
6482  par2[2] = A_mu23[2][iETA2];
6483  par2[3] = A_mu23[3][iETA2];
6484  par_sig2[0] = A_sig23[0][iETA2];
6485  par_sig2[1] = A_sig23[1][iETA2];
6486  par_sig2[2] = A_sig23[2][iETA2];
6487 
6488  break;
6489  case 3: //1-2-4
6490  if (fr == 1) {
6491  if (iETA1 < 3)
6492  iETA1 = 3;
6493  //if(iETA1 > 11)iETA1 = 11;
6494  par1[0] = A_mu12Front[0][iETA1];
6495  par1[1] = A_mu12Front[1][iETA1];
6496  par1[2] = A_mu12Front[2][iETA1];
6497  par1[3] = A_mu12Front[3][iETA1];
6498  par_sig1[0] = A_sig12Front[0][iETA1];
6499  par_sig1[1] = A_sig12Front[1][iETA1];
6500  par_sig1[2] = A_sig12Front[2][iETA1];
6501  par_rho[0] = A_rho124FrontCSCTF[0][iETA1];
6502  par_rho[1] = A_rho124FrontCSCTF[1][iETA1];
6503  par_rho[2] = A_rho124FrontCSCTF[2][iETA1];
6504  par_rho[3] = A_rho124FrontCSCTF[3][iETA1];
6505  par_rho[4] = A_rho124FrontCSCTF[4][iETA1];
6506  }
6507  if (fr == 0) {
6508  if (iETA1 < 1)
6509  iETA1 = 1;
6510  //if(iETA1 > 11)iETA1 = 11;
6511  par1[0] = A_mu12Rare[0][iETA1];
6512  par1[1] = A_mu12Rare[1][iETA1];
6513  par1[2] = A_mu12Rare[2][iETA1];
6514  par1[3] = A_mu12Rare[3][iETA1];
6515  par_sig1[0] = A_sig12Rare[0][iETA1];
6516  par_sig1[1] = A_sig12Rare[1][iETA1];
6517  par_sig1[2] = A_sig12Rare[2][iETA1];
6518  par_rho[0] = A_rho124RareCSCTF[0][iETA1];
6519  par_rho[1] = A_rho124RareCSCTF[1][iETA1];
6520  par_rho[2] = A_rho124RareCSCTF[2][iETA1];
6521  par_rho[3] = A_rho124RareCSCTF[3][iETA1];
6522  par_rho[4] = A_rho124RareCSCTF[4][iETA1];
6523  }
6524  if (iETA2 < 9)
6525  iETA2 = 9;
6526  par2[0] = A_mu24[0][iETA2];
6527  par2[1] = A_mu24[1][iETA2];
6528  par2[2] = A_mu24[2][iETA2];
6529  par2[3] = A_mu24[3][iETA2];
6530  par_sig2[0] = A_sig24[0][iETA2];
6531  par_sig2[1] = A_sig24[1][iETA2];
6532  par_sig2[2] = A_sig24[2][iETA2];
6533  break;
6534  case 4: //1-3-4
6535  if (fr == 1) {
6536  if (iETA1 < 3)
6537  iETA1 = 3;
6538  //if(iETA1 > 11)iETA1 = 11;
6539  par1[0] = A_mu13Front[0][iETA1];
6540  par1[1] = A_mu13Front[1][iETA1];
6541  par1[2] = A_mu13Front[2][iETA1];
6542  par1[3] = A_mu13Front[3][iETA1];
6543  par_sig1[0] = A_sig13Front[0][iETA1];
6544  par_sig1[1] = A_sig13Front[1][iETA1];
6545  par_sig1[2] = A_sig13Front[2][iETA1];
6546  par_rho[0] = A_rho134FrontCSCTF[0][iETA1];
6547  par_rho[1] = A_rho134FrontCSCTF[1][iETA1];
6548  par_rho[2] = A_rho134FrontCSCTF[2][iETA1];
6549  par_rho[3] = A_rho134FrontCSCTF[3][iETA1];
6550  par_rho[4] = A_rho134FrontCSCTF[4][iETA1];
6551  }
6552  if (fr == 0) {
6553  if (iETA1 < 2)
6554  iETA1 = 2;
6555  //if(iETA1 > 11)iETA1 = 11;
6556  par1[0] = A_mu13Rare[0][iETA1];
6557  par1[1] = A_mu13Rare[1][iETA1];
6558  par1[2] = A_mu13Rare[2][iETA1];
6559  par1[3] = A_mu13Rare[3][iETA1];
6560  par_sig1[0] = A_sig13Rare[0][iETA1];
6561  par_sig1[1] = A_sig13Rare[1][iETA1];
6562  par_sig1[2] = A_sig13Rare[2][iETA1];
6563  par_rho[0] = A_rho134RareCSCTF[0][iETA1];
6564  par_rho[1] = A_rho134RareCSCTF[1][iETA1];
6565  par_rho[2] = A_rho134RareCSCTF[2][iETA1];
6566  par_rho[3] = A_rho134RareCSCTF[3][iETA1];
6567  par_rho[4] = A_rho134RareCSCTF[4][iETA1];
6568  }
6569  if (iETA2 < 9)
6570  iETA2 = 9;
6571  par2[0] = A_mu34[0][iETA2];
6572  par2[1] = A_mu34[1][iETA2];
6573  par2[2] = A_mu34[2][iETA2];
6574  par2[3] = A_mu34[3][iETA2];
6575  par_sig2[0] = A_sig34[0][iETA2];
6576  par_sig2[1] = A_sig34[1][iETA2];
6577  par_sig2[2] = A_sig34[2][iETA2];
6578  break;
6579  case 5: //2-3-4
6580  if (iETA1 < 9)
6581  iETA1 = 9;
6582  par1[0] = A_mu23[0][iETA1];
6583  par1[1] = A_mu23[1][iETA1];
6584  par1[2] = A_mu23[2][iETA1];
6585  par1[3] = A_mu23[3][iETA1];
6586  par_sig1[0] = A_sig23[0][iETA1];
6587  par_sig1[1] = A_sig23[1][iETA1];
6588  par_sig1[2] = A_sig23[2][iETA1];
6589  par_rho[0] = A_rho234CSCTF[0][iETA1];
6590  par_rho[1] = A_rho234CSCTF[1][iETA1];
6591  par_rho[2] = A_rho234CSCTF[2][iETA1];
6592  par_rho[3] = A_rho234CSCTF[3][iETA1];
6593  par_rho[4] = A_rho234CSCTF[4][iETA1];
6594 
6595  par2[0] = A_mu34[0][iETA1];
6596  par2[1] = A_mu34[1][iETA1];
6597  par2[2] = A_mu34[2][iETA1];
6598  par2[3] = A_mu34[3][iETA1];
6599  par_sig2[0] = A_sig34[0][iETA1];
6600  par_sig2[1] = A_sig34[1][iETA1];
6601  par_sig2[2] = A_sig34[2][iETA1];
6602  break;
6603  case 11: // b1-1-3
6604  if (iETA1 != 2)
6605  iETA1 = 2;
6606  par1[0] = A_mu51[0][iETA1];
6607  par1[1] = A_mu51[1][iETA1];
6608  par1[2] = A_mu51[2][iETA1];
6609  par1[3] = A_mu51[3][iETA1];
6610  par_sig1[0] = A_sig51[0][iETA1];
6611  par_sig1[1] = A_sig51[1][iETA1];
6612  par_sig1[2] = A_sig51[2][iETA1];
6613  par_rho[0] = A_rho513[0][iETA1];
6614  par_rho[1] = A_rho513[0][iETA1];
6615  par_rho[2] = A_rho513[0][iETA1];
6616  par_rho[3] = A_rho513[0][iETA1];
6617  par_rho[4] = A_rho513[0][iETA1];
6618 
6619  par2[0] = A_mu13Rare[0][iETA1];
6620  par2[1] = A_mu13Rare[1][iETA1];
6621  par2[2] = A_mu13Rare[2][iETA1];
6622  par2[3] = A_mu13Rare[3][iETA1];
6623  par_sig2[0] = A_sig13Rare[0][iETA1];
6624  par_sig2[1] = A_sig13Rare[1][iETA1];
6625  par_sig2[2] = A_sig13Rare[2][iETA1];
6626  break;
6627  case 12: // b1-2-3
6628  if (iETA1 != 2)
6629  iETA1 = 2;
6630  par1[0] = A_mu52[0][iETA1];
6631  par1[1] = A_mu52[1][iETA1];
6632  par1[2] = A_mu52[2][iETA1];
6633  par1[3] = A_mu52[3][iETA1];
6634  par_sig1[0] = A_sig52[0][iETA1];
6635  par_sig1[1] = A_sig52[1][iETA1];
6636  par_sig1[2] = A_sig52[2][iETA1];
6637  par_rho[0] = A_rho523[0][iETA1];
6638  par_rho[1] = A_rho523[0][iETA1];
6639  par_rho[2] = A_rho523[0][iETA1];
6640  par_rho[3] = A_rho523[0][iETA1];
6641  par_rho[4] = A_rho523[0][iETA1];
6642 
6643  par2[0] = A_mu23[0][iETA1];
6644  par2[1] = A_mu23[1][iETA1];
6645  par2[2] = A_mu23[2][iETA1];
6646  par2[3] = A_mu23[3][iETA1];
6647  par_sig2[0] = A_sig23[0][iETA1];
6648  par_sig2[1] = A_sig23[1][iETA1];
6649  par_sig2[2] = A_sig23[2][iETA1];
6650  break;
6651  case 14: // b1-1-2-(3)
6652  if (iETA1 < 1)
6653  iETA1 = 1;
6654  if (iETA1 > 2)
6655  iETA1 = 2;
6656  par1[0] = A_mu51[0][iETA1];
6657  par1[1] = A_mu51[1][iETA1];
6658  par1[2] = A_mu51[2][iETA1];
6659  par1[3] = A_mu51[3][iETA1];
6660  par_sig1[0] = A_sig51[0][iETA1];
6661  par_sig1[1] = A_sig51[1][iETA1];
6662  par_sig1[2] = A_sig51[2][iETA1];
6663  par_rho[0] = A_rho512[0][iETA1];
6664  par_rho[1] = A_rho512[0][iETA1];
6665  par_rho[2] = A_rho512[0][iETA1];
6666  par_rho[3] = A_rho512[0][iETA1];
6667  par_rho[4] = A_rho512[0][iETA1];
6668 
6669  par2[0] = A_mu12Rare[0][iETA1];
6670  par2[1] = A_mu12Rare[1][iETA1];
6671  par2[2] = A_mu12Rare[2][iETA1];
6672  par2[3] = A_mu12Rare[3][iETA1];
6673  par_sig2[0] = A_sig12Rare[0][iETA1];
6674  par_sig2[1] = A_sig12Rare[1][iETA1];
6675  par_sig2[2] = A_sig12Rare[2][iETA1];
6676  break;
6677  //default:
6678  //return 0.0;
6679  }
6680 
6681  // Switch to 2-Station measurement if dphi is too small
6682  // box cut around Pt of 10 GeV
6683  if (fabs(static_cast<double>(dphi2)) < 0.004) {
6684  if (type == 2 || type == 3)
6685  type = 6; // 1-2-3(or 4) -> 1-2
6686  if (type == 4)
6687  type = 7; // 1-3-4 -> 1-3
6688  if (type == 5)
6689  type = 8; // 2-3-4 -> 2-3
6690  if (type == 11)
6691  type = 14; // b1-1-3 -> b1-1 for pt_method > 10
6692  Pt = Pt2Stn2010(type, eta, dphi1, fr, method);
6693  } else {
6694  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
6695  double pt = 140;
6696  double dpt = 0.1;
6697  double step = 5.;
6698  while (pt > 2.) {
6699  double par_phi12[1] = {dphi1};
6700  double par_phi23[1] = {dphi2};
6701  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
6702  v[0] = 0;
6703  lpt1_1 = 1.;
6704  lpt1_2 = 2.;
6705  lpt2_1 = 1.;
6706  lpt2_2 = 2.;
6707  v[0] = pt;
6708  lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6709  v[0] = pt + dpt;
6710  lpt1_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6711  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
6712  v[0] = pt - step;
6713  lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6714  v[0] = pt - step + dpt;
6715  lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6716  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
6717  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
6718  v[0] = pt - 0.5 * step;
6719  double fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6720  v[0] = pt - 0.5 * step + dpt;
6721  double fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6722  v[0] = pt - 0.5 * step + 2 * dpt;
6723  double fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6724 
6725  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
6726 
6727  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
6728  PTsolv = pt - 0.5 * step;
6729  break;
6730  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
6731  /*
6732  if(pt == 140.){
6733  v[0] = 200.;
6734  lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6735  v[0] = 200.+ 5.;
6736  lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6737  lpt2 = (lpt2_2-lpt2_1)/5.;
6738  v[0] = 170.;
6739  fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6740  v[0] = 170.+5.;
6741  fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6742  v[0] = 170.+2*5.;
6743  fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6744  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
6745  }
6746 
6747  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = 137.5; break;}
6748 */
6749  //double rho = fitfrho(v, par_rho); //rho
6750  if (pt > 25) {
6751  dpt = 0.1;
6752  step = 5.;
6753  }
6754  if (pt <= 25) {
6755  dpt = 0.01;
6756  step = 0.5;
6757  }
6758  pt = pt - step;
6759  } // end while
6760  //*********** end solve equation for muon plus
6761  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
6762  // for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
6763  dphi1 = -dphi1;
6764  dphi2 = -dphi2;
6765  pt = 140;
6766  dpt = 0.1;
6767  step = 5.;
6768  while (pt > 2.) {
6769  double par_phi12[1] = {dphi1};
6770  double par_phi23[1] = {dphi2};
6771  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
6772  v[0] = 0;
6773  lpt1_1 = 1.;
6774  lpt1_2 = 2.;
6775  lpt2_1 = 1.;
6776  lpt2_2 = 2.;
6777  v[0] = pt;
6778  lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6779  v[0] = pt + dpt;
6780  lpt1_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6781  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
6782  v[0] = pt - step;
6783  lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6784  v[0] = pt - step + dpt;
6785  lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6786  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
6787  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
6788  v[0] = pt - 0.5 * step;
6789  double fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6790  v[0] = pt - 0.5 * step + dpt;
6791  double fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6792  v[0] = pt - 0.5 * step + 2 * dpt;
6793  double fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6794 
6795  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
6796 
6797  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
6798  PTsolvMinus = pt - 0.5 * step;
6799  break;
6800  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
6801  //if(iETA == 3 && v[0] < 4 && v[0] > 3) cout << "m12 = " << fitf5(v, par1) << " sig12 = " << fitf2(v, par_sig1) << endl;
6803  /*
6804  if(pt == 140.){
6805  v[0] = 200.;
6806  lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6807  v[0] = 200.+ 5.;
6808  lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6809  lpt2 = (lpt2_2-lpt2_1)/5.;
6810  v[0] = 170.;
6811  fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6812  v[0] = 170.+5.;
6813  fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6814  v[0] = 170.+2*5.;
6815  fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
6816  lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
6817  }
6818  if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = 137.5; break;}
6819 */
6820  //double rho = fitfrho(v, par_rho); //rho
6821  if (pt > 25) {
6822  dpt = 0.1;
6823  step = 5.;
6824  }
6825  if (pt <= 25) {
6826  dpt = 0.01;
6827  step = 0.5;
6828  }
6829  pt = pt - step;
6830  } // end while
6831  //*********** end solve equation for muon minus
6832  PTsolv = (PTsolv > PTsolvMinus)
6833  ? PTsolv
6834  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
6835  PTsolv = PTsolv * 1.2; // correction to have 90% efficiency for trigger cuts
6836  if (PTsolv > 137.5)
6837  PTsolv = 137.5;
6838  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
6839  dphi1 = -dphi1; //return to correct sing dphi
6840  dphi2 = -dphi2; //return to correct sing dphi
6841  Pt = PTsolv;
6842  } // end 2 or 3 station method
6843  }
6844  }
6845  // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;
6846 
6847  float Pt_min = trigger_scale->getPtScale()->getLowEdge(1); // 0 GeV
6848  if (method > 10)
6849  Pt_min = trigger_scale->getPtScale()->getLowEdge(3); // 2 GeV
6850 
6851  return (Pt > Pt_min) ? Pt : Pt_min;
6852 }

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu23, A_mu24, A_mu34, A_mu51, A_mu52, A_rho123FrontCSCTF, A_rho123RareCSCTF, A_rho124FrontCSCTF, A_rho124RareCSCTF, A_rho134FrontCSCTF, A_rho134RareCSCTF, A_rho234CSCTF, A_rho512, A_rho513, A_rho523, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig23, A_sig24, A_sig34, A_sig51, A_sig52, PVValHelper::eta, etabins, multPhiCorr_741_25nsDY_cfi::fx, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, pfMETCorrectionType0_cfi::par2, DiDispStaMuonMonitor_cfi::pt, Pt2Stn2010(), HLT_2018_cff::Pt_min, trigger_scale, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt().

◆ Pt3Stn2011()

float CSCTFPtMethods::Pt3Stn2011 ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  fr = -1,
int  method = 11 
) const

Definition at line 6853 of file CSCTFPtMethods.cc.

6853  {
6854  //if(fabs(eta) >= 2.4)eta = 2.35;
6855  if (fabs(eta) >= 2.2)
6856  eta = 2.15;
6857  float Pt = 0.;
6858  double PTsolv = 1.; // for muon plus hypothesis
6859  double PTsolvMinus = 1.; //for muon minus hypothesis
6860  for (int iETA = 0; iETA < 15; iETA++) {
6861  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
6862  // calculate curvers of mean and sigma
6863  // calculate phi12 mean
6864  double par1[4] = {0., 0., 0., 0.};
6865  //double phi12mean = fitf5(v, par1); //mu12
6866  double par_sig1[4] = {0., 0., 0., 0};
6867  // calculate phi23 mean
6868  double par2[4] = {0., 0., 0., 0.};
6869  // calculate phi23 sig
6870  double par_sig2[4] = {0., 0., 0., 0.};
6871  // calculate correlation rho
6872  double par_rho[5] = {0., 0., 0., 0., 0.};
6873  int iETA1 = iETA;
6874  int iETA2 = iETA;
6875 
6876  // defind which parameters will be use
6877  const double(*Amean12F)[15] = AB_mu12F;
6878  const double(*Asig12F)[15] = AB_sig12F;
6879  const double(*Amean12R)[15] = AB_mu12R;
6880  const double(*Asig12R)[15] = AB_sig12R;
6881 
6882  const double(*Amean13F)[15] = AB_mu13F;
6883  const double(*Asig13F)[15] = AB_sig13F;
6884  const double(*Amean13R)[15] = AB_mu13R;
6885  const double(*Asig13R)[15] = AB_sig13R;
6886 
6887  //const double(*Amean14F)[15] = AB_mu14F;
6888  //const double(*Asig14F)[15] = AB_sig14F;
6889  //const double(*Amean14R)[15] = AB_mu14R;
6890  //const double(*Asig14R)[15] = AB_sig14R;
6891 
6892  const double(*Amean23)[15] = AB_mu23;
6893  const double(*Asig23)[15] = AB_sig23;
6894  const double(*Amean24)[15] = AB_mu24;
6895  const double(*Asig24)[15] = AB_sig24;
6896  const double(*Amean34)[15] = AB_mu34;
6897  const double(*Asig34)[15] = AB_sig34;
6898 
6899  const double(*Amean5)[15] = AB_mu5;
6900  const double(*Asig5)[15] = AB_sig5;
6901  const double(*Amean51)[15] = AB_mu51;
6902  const double(*Asig51)[15] = AB_sig51;
6903  const double(*Amean52)[15] = AB_mu52;
6904  const double(*Asig52)[15] = AB_sig52;
6905  const double(*Amean53)[15] = AB_mu53;
6906  const double(*Asig53)[15] = AB_sig53;
6907 
6908  const double(*Arho123F)[15] = AB_rho123F;
6909  const double(*Arho123R)[15] = AB_rho123R;
6910  const double(*Arho124F)[15] = AB_rho124F;
6911  const double(*Arho124R)[15] = AB_rho124R;
6912  const double(*Arho134F)[15] = AB_rho134F;
6913  const double(*Arho134R)[15] = AB_rho134R;
6914  const double(*Arho234)[15] = AB_rho234;
6915 
6916  const double(*Arho51B)[15] = AB_rho51B;
6917  const double(*Arho52B)[15] = AB_rho52B;
6918  const double(*Arho53B)[15] = AB_rho53B;
6919  const double(*Arho512)[15] = AB_rho512;
6920  const double(*Arho513)[15] = AB_rho513;
6921  const double(*Arho523)[15] = AB_rho523;
6922 
6923  //cout << "iETA = " << iETA
6924  // << " AB_mu51[0][iETA] = " << AB_mu51[0][iETA] << " pointer = " << (*(Amean51+0))[iETA]
6925  // << " AB_mu51[3][iETA] = " << AB_mu51[3][iETA] << " pointer = " << (*(Amean51+3))[iETA]
6926  // << endl;
6927 
6928  switch (type) // type = mode here
6929  {
6930  case 2: //1-2-3
6931  if (iETA < 2)
6932  iETA2 = 2;
6933  if (fr == 1) {
6934  if (iETA < 3)
6935  iETA1 = 3;
6936  par1[0] = (*(Amean12F + 0))[iETA1];
6937  par1[1] = (*(Amean12F + 1))[iETA1];
6938  par1[2] = (*(Amean12F + 2))[iETA1];
6939  par1[3] = (*(Amean12F + 3))[iETA1];
6940  par_sig1[0] = (*(Asig12F + 0))[iETA1];
6941  par_sig1[1] = (*(Asig12F + 1))[iETA1];
6942  par_sig1[2] = (*(Asig12F + 2))[iETA1];
6943  par_sig1[3] = (*(Asig12F + 3))[iETA1];
6944  par_rho[0] = (*(Arho123F + 0))[iETA2];
6945  par_rho[1] = (*(Arho123F + 1))[iETA2];
6946  par_rho[2] = (*(Arho123F + 2))[iETA2];
6947  par_rho[3] = (*(Arho123F + 3))[iETA2];
6948  par_rho[4] = (*(Arho123F + 4))[iETA2];
6949  }
6950  if (fr == 0) {
6951  if (iETA < 1)
6952  iETA1 = 1;
6953  par1[0] = (*(Amean12R + 0))[iETA1];
6954  par1[1] = (*(Amean12R + 1))[iETA1];
6955  par1[2] = (*(Amean12R + 2))[iETA1];
6956  par1[3] = (*(Amean12R + 3))[iETA1];
6957  par_sig1[0] = (*(Asig12R + 0))[iETA1];
6958  par_sig1[1] = (*(Asig12R + 1))[iETA1];
6959  par_sig1[2] = (*(Asig12R + 2))[iETA1];
6960  par_sig1[3] = (*(Asig12R + 3))[iETA1];
6961  par_rho[0] = (*(Arho123R + 0))[iETA2];
6962  par_rho[1] = (*(Arho123R + 1))[iETA2];
6963  par_rho[2] = (*(Arho123R + 2))[iETA2];
6964  par_rho[3] = (*(Arho123R + 3))[iETA2];
6965  par_rho[4] = (*(Arho123R + 4))[iETA2];
6966  }
6967  par2[0] = (*(Amean23 + 0))[iETA2];
6968  par2[1] = (*(Amean23 + 1))[iETA2];
6969  par2[2] = (*(Amean23 + 2))[iETA2];
6970  par2[3] = (*(Amean23 + 3))[iETA2];
6971  par_sig2[0] = (*(Asig23 + 0))[iETA2];
6972  par_sig2[1] = (*(Asig23 + 1))[iETA2];
6973  par_sig2[2] = (*(Asig23 + 2))[iETA2];
6974  par_sig2[3] = (*(Asig23 + 3))[iETA2];
6975 
6976  break;
6977  case 3: //1-2-4
6978  if (iETA < 3)
6979  iETA2 = 3;
6980  if (fr == 1) {
6981  if (iETA < 3)
6982  iETA1 = 3;
6983  par1[0] = (*(Amean12F + 0))[iETA1];
6984  par1[1] = (*(Amean12F + 1))[iETA1];
6985  par1[2] = (*(Amean12F + 2))[iETA1];
6986  par1[3] = (*(Amean12F + 3))[iETA1];
6987  par_sig1[0] = (*(Asig12F + 0))[iETA1];
6988  par_sig1[1] = (*(Asig12F + 1))[iETA1];
6989  par_sig1[2] = (*(Asig12F + 2))[iETA1];
6990  par_sig1[3] = (*(Asig12F + 3))[iETA1];
6991  par_rho[0] = (*(Arho124F + 0))[iETA2];
6992  par_rho[1] = (*(Arho124F + 1))[iETA2];
6993  par_rho[2] = (*(Arho124F + 2))[iETA2];
6994  par_rho[3] = (*(Arho124F + 3))[iETA2];
6995  par_rho[4] = (*(Arho124F + 4))[iETA2];
6996  }
6997  if (fr == 0) {
6998  if (iETA < 1)
6999  iETA1 = 1;
7000  par1[0] = (*(Amean12R + 0))[iETA1];
7001  par1[1] = (*(Amean12R + 1))[iETA1];
7002  par1[2] = (*(Amean12R + 2))[iETA1];
7003  par1[3] = (*(Amean12R + 3))[iETA1];
7004  par_sig1[0] = (*(Asig12R + 0))[iETA1];
7005  par_sig1[1] = (*(Asig12R + 1))[iETA1];
7006  par_sig1[2] = (*(Asig12R + 2))[iETA1];
7007  par_sig1[3] = (*(Asig12R + 3))[iETA1];
7008  par_rho[0] = (*(Arho124R + 0))[iETA2];
7009  par_rho[1] = (*(Arho124R + 1))[iETA2];
7010  par_rho[2] = (*(Arho124R + 2))[iETA2];
7011  par_rho[3] = (*(Arho124R + 3))[iETA2];
7012  par_rho[4] = (*(Arho124R + 4))[iETA2];
7013  }
7014  par2[0] = (*(Amean24 + 0))[iETA2];
7015  par2[1] = (*(Amean24 + 1))[iETA2];
7016  par2[2] = (*(Amean24 + 2))[iETA2];
7017  par2[3] = (*(Amean24 + 3))[iETA2];
7018  par_sig2[0] = (*(Asig24 + 0))[iETA2];
7019  par_sig2[1] = (*(Asig24 + 1))[iETA2];
7020  par_sig2[2] = (*(Asig24 + 2))[iETA2];
7021  par_sig2[3] = (*(Asig24 + 3))[iETA2];
7022  break;
7023  case 4: //1-3-4
7024  if (iETA < 3)
7025  iETA2 = 3;
7026  if (fr == 1) {
7027  if (iETA < 3)
7028  iETA1 = 3;
7029  par1[0] = (*(Amean13F + 0))[iETA1];
7030  par1[1] = (*(Amean13F + 1))[iETA1];
7031  par1[2] = (*(Amean13F + 2))[iETA1];
7032  par1[3] = (*(Amean13F + 3))[iETA1];
7033  par_sig1[0] = (*(Asig13F + 0))[iETA1];
7034  par_sig1[1] = (*(Asig13F + 1))[iETA1];
7035  par_sig1[2] = (*(Asig13F + 2))[iETA1];
7036  par_sig1[3] = (*(Asig13F + 3))[iETA1];
7037  par_rho[0] = (*(Arho134F + 0))[iETA2];
7038  par_rho[1] = (*(Arho134F + 1))[iETA2];
7039  par_rho[2] = (*(Arho134F + 2))[iETA2];
7040  par_rho[3] = (*(Arho134F + 3))[iETA2];
7041  par_rho[4] = (*(Arho134F + 4))[iETA2];
7042  }
7043  if (fr == 0) {
7044  if (iETA < 3)
7045  iETA1 = 3;
7046  par1[0] = (*(Amean13R + 0))[iETA1];
7047  par1[1] = (*(Amean13R + 1))[iETA1];
7048  par1[2] = (*(Amean13R + 2))[iETA1];
7049  par1[3] = (*(Amean13R + 3))[iETA1];
7050  par_sig1[0] = (*(Asig13R + 0))[iETA1];
7051  par_sig1[1] = (*(Asig13R + 1))[iETA1];
7052  par_sig1[2] = (*(Asig13R + 2))[iETA1];
7053  par_sig1[3] = (*(Asig13R + 3))[iETA1];
7054  par_rho[0] = (*(Arho134R + 0))[iETA2];
7055  par_rho[1] = (*(Arho134R + 1))[iETA2];
7056  par_rho[2] = (*(Arho134R + 2))[iETA2];
7057  par_rho[3] = (*(Arho134R + 3))[iETA2];
7058  par_rho[4] = (*(Arho134R + 4))[iETA2];
7059  }
7060  par2[0] = (*(Amean34 + 0))[iETA2];
7061  par2[1] = (*(Amean34 + 1))[iETA2];
7062  par2[2] = (*(Amean34 + 2))[iETA2];
7063  par2[3] = (*(Amean34 + 3))[iETA2];
7064  par_sig2[0] = (*(Asig34 + 0))[iETA2];
7065  par_sig2[1] = (*(Asig34 + 1))[iETA2];
7066  par_sig2[2] = (*(Asig34 + 2))[iETA2];
7067  par_sig2[3] = (*(Asig34 + 3))[iETA2];
7068  break;
7069  case 5: //2-3-4
7070  if (iETA < 2)
7071  iETA1 = 2;
7072  if (iETA < 3)
7073  iETA2 = 3;
7074  par1[0] = (*(Amean23 + 0))[iETA1];
7075  par1[1] = (*(Amean23 + 1))[iETA1];
7076  par1[2] = (*(Amean23 + 2))[iETA1];
7077  par1[3] = (*(Amean23 + 3))[iETA1];
7078  par_sig1[0] = (*(Asig23 + 0))[iETA1];
7079  par_sig1[1] = (*(Asig23 + 1))[iETA1];
7080  par_sig1[2] = (*(Asig23 + 2))[iETA1];
7081  par_sig1[3] = (*(Asig23 + 3))[iETA1];
7082  par_rho[0] = (*(Arho234 + 0))[iETA2];
7083  par_rho[1] = (*(Arho234 + 1))[iETA2];
7084  par_rho[2] = (*(Arho234 + 2))[iETA2];
7085  par_rho[3] = (*(Arho234 + 3))[iETA2];
7086  par_rho[4] = (*(Arho234 + 4))[iETA2];
7087 
7088  par2[0] = (*(Amean34 + 0))[iETA2];
7089  par2[1] = (*(Amean34 + 1))[iETA2];
7090  par2[2] = (*(Amean34 + 2))[iETA2];
7091  par2[3] = (*(Amean34 + 3))[iETA2];
7092  par_sig2[0] = (*(Asig34 + 0))[iETA2];
7093  par_sig2[1] = (*(Asig34 + 1))[iETA2];
7094  par_sig2[2] = (*(Asig34 + 2))[iETA2];
7095  par_sig2[3] = (*(Asig34 + 3))[iETA2];
7096  break;
7097  case 11: // singles for method < 10, for method > 10: fr = 1 -> b1-1-3, fr = 0 -> b1-3-phiBend
7098  if (iETA != 2)
7099  iETA1 = 2;
7100  par1[0] = (*(Amean53 + 0))[iETA1];
7101  par1[1] = (*(Amean53 + 1))[iETA1];
7102  par1[2] = (*(Amean53 + 2))[iETA1];
7103  par1[3] = (*(Amean53 + 3))[iETA1];
7104  par_sig1[0] = (*(Asig53 + 0))[iETA1];
7105  par_sig1[1] = (*(Asig53 + 1))[iETA1];
7106  par_sig1[2] = (*(Asig53 + 2))[iETA1];
7107  par_sig1[3] = (*(Asig53 + 3))[iETA1];
7108  par_rho[0] = (*(Arho53B + 0))[iETA1];
7109  par_rho[1] = (*(Arho53B + 1))[iETA1];
7110  par_rho[2] = (*(Arho53B + 2))[iETA1];
7111  par_rho[3] = (*(Arho53B + 3))[iETA1];
7112  par_rho[4] = (*(Arho53B + 4))[iETA1];
7113 
7114  par2[0] = (*(Amean5 + 0))[iETA1];
7115  par2[1] = (*(Amean5 + 1))[iETA1];
7116  par2[2] = (*(Amean5 + 2))[iETA1];
7117  par2[3] = (*(Amean5 + 3))[iETA1];
7118  par_sig2[0] = (*(Asig5 + 0))[iETA1];
7119  par_sig2[1] = (*(Asig5 + 1))[iETA1];
7120  par_sig2[2] = (*(Asig5 + 2))[iETA1];
7121  par_sig2[3] = (*(Asig5 + 3))[iETA1];
7122 
7123  if (fr == 1) {
7124  par1[0] = (*(Amean51 + 0))[iETA1];
7125  par1[1] = (*(Amean51 + 1))[iETA1];
7126  par1[2] = (*(Amean51 + 2))[iETA1];
7127  par1[3] = (*(Amean51 + 3))[iETA1];
7128  par_sig1[0] = (*(Asig51 + 0))[iETA1];
7129  par_sig1[1] = (*(Asig51 + 1))[iETA1];
7130  par_sig1[2] = (*(Asig51 + 2))[iETA1];
7131  par_sig1[3] = (*(Asig51 + 3))[iETA1];
7132  par_rho[0] = (*(Arho513 + 0))[iETA1];
7133  par_rho[1] = (*(Arho513 + 1))[iETA1];
7134  par_rho[2] = (*(Arho513 + 2))[iETA1];
7135  par_rho[3] = (*(Arho513 + 3))[iETA1];
7136  par_rho[4] = (*(Arho513 + 4))[iETA1];
7137 
7138  par2[0] = (*(Amean13R + 0))[iETA1];
7139  par2[1] = (*(Amean13R + 1))[iETA1];
7140  par2[2] = (*(Amean13R + 2))[iETA1];
7141  par2[3] = (*(Amean13R + 3))[iETA1];
7142  par_sig2[0] = (*(Asig13R + 0))[iETA1];
7143  par_sig2[1] = (*(Asig13R + 1))[iETA1];
7144  par_sig2[2] = (*(Asig13R + 2))[iETA1];
7145  par_sig2[3] = (*(Asig13R + 3))[iETA1];
7146  }
7147  break;
7148  case 12: // b1-1-2 for method < 10; for method > 10: fr = 1 -> b1-2-3, fr = 0 -> b1-2-phiBend
7149  if (iETA < 1)
7150  iETA1 = 1;
7151  if (iETA > 2)
7152  iETA1 = 2;
7153  par1[0] = (*(Amean52 + 0))[iETA1];
7154  par1[1] = (*(Amean52 + 1))[iETA1];
7155  par1[2] = (*(Amean52 + 2))[iETA1];
7156  par1[3] = (*(Amean52 + 3))[iETA1];
7157  par_sig1[0] = (*(Asig52 + 0))[iETA1];
7158  par_sig1[1] = (*(Asig52 + 1))[iETA1];
7159  par_sig1[2] = (*(Asig52 + 2))[iETA1];
7160  par_sig1[3] = (*(Asig52 + 3))[iETA1];
7161  par_rho[0] = (*(Arho52B + 0))[iETA1];
7162  par_rho[1] = (*(Arho52B + 1))[iETA1];
7163  par_rho[2] = (*(Arho52B + 2))[iETA1];
7164  par_rho[3] = (*(Arho52B + 3))[iETA1];
7165  par_rho[4] = (*(Arho52B + 4))[iETA1];
7166 
7167  par2[0] = (*(Amean5 + 0))[iETA1];
7168  par2[1] = (*(Amean5 + 1))[iETA1];
7169  par2[2] = (*(Amean5 + 2))[iETA1];
7170  par2[3] = (*(Amean5 + 3))[iETA1];
7171  par_sig2[0] = (*(Asig5 + 0))[iETA1];
7172  par_sig2[1] = (*(Asig5 + 1))[iETA1];
7173  par_sig2[2] = (*(Asig5 + 2))[iETA1];
7174  par_sig2[3] = (*(Asig5 + 3))[iETA1];
7175 
7176  if (fr == 1) {
7177  if (iETA != 2)
7178  iETA1 = 2;
7179  par1[0] = (*(Amean52 + 0))[iETA1];
7180  par1[1] = (*(Amean52 + 1))[iETA1];
7181  par1[2] = (*(Amean52 + 2))[iETA1];
7182  par1[3] = (*(Amean52 + 3))[iETA1];
7183  par_sig1[0] = (*(Asig52 + 0))[iETA1];
7184  par_sig1[1] = (*(Asig52 + 1))[iETA1];
7185  par_sig1[2] = (*(Asig52 + 2))[iETA1];
7186  par_sig1[3] = (*(Asig52 + 3))[iETA1];
7187  par_rho[0] = (*(Arho523 + 0))[iETA1];
7188  par_rho[1] = (*(Arho523 + 1))[iETA1];
7189  par_rho[2] = (*(Arho523 + 2))[iETA1];
7190  par_rho[3] = (*(Arho523 + 3))[iETA1];
7191  par_rho[4] = (*(Arho523 + 4))[iETA1];
7192 
7193  par2[0] = (*(Amean23 + 0))[iETA1];
7194  par2[1] = (*(Amean23 + 1))[iETA1];
7195  par2[2] = (*(Amean23 + 2))[iETA1];
7196  par2[3] = (*(Amean23 + 3))[iETA1];
7197  par_sig2[0] = (*(Asig23 + 0))[iETA1];
7198  par_sig2[1] = (*(Asig23 + 1))[iETA1];
7199  par_sig2[2] = (*(Asig23 + 2))[iETA1];
7200  par_sig2[3] = (*(Asig23 + 3))[iETA1];
7201  }
7202  break;
7203  case 14: // b1-2 for method < 10; for method > 10: fr = 1 -> b1-1-2-(3), fr = 0 -> b1-1-phiBend
7204  if (iETA > 2)
7205  iETA1 = 2;
7206  par1[0] = (*(Amean51 + 0))[iETA1];
7207  par1[1] = (*(Amean51 + 1))[iETA1];
7208  par1[2] = (*(Amean51 + 2))[iETA1];
7209  par1[3] = (*(Amean51 + 3))[iETA1];
7210  par_sig1[0] = (*(Asig51 + 0))[iETA1];
7211  par_sig1[1] = (*(Asig51 + 1))[iETA1];
7212  par_sig1[2] = (*(Asig51 + 2))[iETA1];
7213  par_sig1[3] = (*(Asig51 + 3))[iETA1];
7214  par_rho[0] = (*(Arho51B + 0))[iETA1];
7215  par_rho[1] = (*(Arho51B + 1))[iETA1];
7216  par_rho[2] = (*(Arho51B + 2))[iETA1];
7217  par_rho[3] = (*(Arho51B + 3))[iETA1];
7218  par_rho[4] = (*(Arho51B + 4))[iETA1];
7219 
7220  par2[0] = (*(Amean5 + 0))[iETA1];
7221  par2[1] = (*(Amean5 + 1))[iETA1];
7222  par2[2] = (*(Amean5 + 2))[iETA1];
7223  par2[3] = (*(Amean5 + 3))[iETA1];
7224  par_sig2[0] = (*(Asig5 + 0))[iETA1];
7225  par_sig2[1] = (*(Asig5 + 1))[iETA1];
7226  par_sig2[2] = (*(Asig5 + 2))[iETA1];
7227  par_sig2[3] = (*(Asig5 + 3))[iETA1];
7228 
7229  if (fr == 1) {
7230  if (iETA < 1)
7231  iETA1 = 1;
7232  if (iETA > 2)
7233  iETA1 = 2;
7234  par1[0] = (*(Amean51 + 0))[iETA1];
7235  par1[1] = (*(Amean51 + 1))[iETA1];
7236  par1[2] = (*(Amean51 + 2))[iETA1];
7237  par1[3] = (*(Amean51 + 3))[iETA1];
7238  par_sig1[0] = (*(Asig51 + 0))[iETA1];
7239  par_sig1[1] = (*(Asig51 + 1))[iETA1];
7240  par_sig1[2] = (*(Asig51 + 2))[iETA1];
7241  par_sig1[3] = (*(Asig51 + 3))[iETA1];
7242  par_rho[0] = (*(Arho512 + 0))[iETA1];
7243  par_rho[1] = (*(Arho512 + 1))[iETA1];
7244  par_rho[2] = (*(Arho512 + 2))[iETA1];
7245  par_rho[3] = (*(Arho512 + 3))[iETA1];
7246  par_rho[4] = (*(Arho512 + 4))[iETA1];
7247 
7248  par2[0] = (*(Amean12R + 0))[iETA1];
7249  par2[1] = (*(Amean12R + 1))[iETA1];
7250  par2[2] = (*(Amean12R + 2))[iETA1];
7251  par2[3] = (*(Amean12R + 3))[iETA1];
7252  par_sig2[0] = (*(Asig12R + 0))[iETA1];
7253  par_sig2[1] = (*(Asig12R + 1))[iETA1];
7254  par_sig2[2] = (*(Asig12R + 2))[iETA1];
7255  par_sig2[3] = (*(Asig12R + 3))[iETA1];
7256  }
7257  break;
7258  //default:
7259  //return 0.0;
7260  }
7261 
7262  // Switch to 2-Station measurement if dphi is too small
7263  // box cut around Pt of 10 GeV
7264  if ((fabs(static_cast<double>(dphi2)) < 0.004 && type != 12 && method < 25) ||
7265  (fabs(static_cast<double>(dphi2)) < 0.004 && type != 12 && type != 14 && type != 11 && method >= 25)) {
7266  //if(type == 12 || type == 14 || type == 11) std::cout << "mode = " << type << " dphi23 = " << dphi2 << " method = " << method << std::endl; //test
7267  if (type == 2 || type == 3)
7268  type = 6; // 1-2-3(or 4) -> 1-2
7269  if (type == 4)
7270  type = 7; // 1-3-4 -> 1-3
7271  if (type == 5)
7272  type = 8; // 2-3-4 -> 2-3
7273  if (type == 11)
7274  type = 14; // b1-1-3 -> b1-1 for pt_method > 10
7275  //if(type == 14) type = 11;
7276  //phiSign
7277  Pt = Pt2Stn2011(type,
7278  eta,
7279  dphi1,
7280  fr,
7281  method,
7282  int(2)); //in 3 station track there is no information to which ME1/1 or ME1/2 track belong
7283  } else {
7284  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
7285  double pt = 140;
7286  double dpt = 0.1;
7287  double step = 5.;
7288  while (pt > 2.) {
7289  double par_phi12[1] = {dphi1};
7290  double par_phi23[1] = {dphi2};
7291  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
7292  v[0] = 0;
7293  lpt1_1 = 1.;
7294  lpt1_2 = 2.;
7295  lpt2_1 = 1.;
7296  lpt2_2 = 2.;
7297  v[0] = pt;
7298  lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7299  v[0] = pt + dpt;
7300  lpt1_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7301  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
7302  v[0] = pt - step;
7303  lpt2_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7304  v[0] = pt - step + dpt;
7305  lpt2_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7306  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
7307  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
7308  v[0] = pt - 0.5 * step;
7309  double fx = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7310  v[0] = pt - 0.5 * step + dpt;
7311  double fxh = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7312  v[0] = pt - 0.5 * step + 2 * dpt;
7313  double fx2h = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7314 
7315  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
7316 
7317  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
7318  PTsolv = pt - 0.5 * step;
7319  break;
7320  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
7321  //double rho = fitfrho(v, par_rho); //rho
7322  if (pt > 25) {
7323  dpt = 0.1;
7324  step = 5.;
7325  }
7326  if (pt <= 25) {
7327  dpt = 0.01;
7328  step = 0.5;
7329  }
7330  pt = pt - step;
7331  } // end while
7332  //*********** end solve equation for muon plus
7333  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
7334  // for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
7335  dphi1 = -dphi1;
7336  dphi2 = -dphi2;
7337  pt = 140;
7338  dpt = 0.1;
7339  step = 5.;
7340  while (pt > 2.) {
7341  double par_phi12[1] = {dphi1};
7342  double par_phi23[1] = {dphi2};
7343  double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
7344  v[0] = 0;
7345  lpt1_1 = 1.;
7346  lpt1_2 = 2.;
7347  lpt2_1 = 1.;
7348  lpt2_2 = 2.;
7349  v[0] = pt;
7350  lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7351  v[0] = pt + dpt;
7352  lpt1_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7353  double lpt1 = (lpt1_2 - lpt1_1) / dpt; // derivative at point pt1 = pt
7354  v[0] = pt - step;
7355  lpt2_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7356  v[0] = pt - step + dpt;
7357  lpt2_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7358  double lpt2 = (lpt2_2 - lpt2_1) / dpt; // derivative at point pt1 = pt - step
7359  // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
7360  v[0] = pt - 0.5 * step;
7361  double fx = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7362  v[0] = pt - 0.5 * step + dpt;
7363  double fxh = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7364  v[0] = pt - 0.5 * step + 2 * dpt;
7365  double fx2h = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
7366 
7367  double lpt2nd = -(fx2h + fx - 2 * fxh) / dpt / dpt;
7368 
7369  if (lpt1 * lpt2 <= 0 && lpt2nd > 0) {
7370  PTsolvMinus = pt - 0.5 * step;
7371  break;
7372  } // lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
7373  //double rho = fitfrho(v, par_rho); //rho
7374  if (pt > 25) {
7375  dpt = 0.1;
7376  step = 5.;
7377  }
7378  if (pt <= 25) {
7379  dpt = 0.01;
7380  step = 0.5;
7381  }
7382  pt = pt - step;
7383  } // end while
7384  //*********** end solve equation for muon minus
7385  PTsolv = (PTsolv > PTsolvMinus)
7386  ? PTsolv
7387  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
7388  PTsolv = PTsolv * 1.2; // correction to have 90% efficiency for trigger cuts
7389  if (PTsolv > 137.5)
7390  PTsolv = 137.5;
7391  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
7392  dphi1 = -dphi1; //return to correct sing dphi
7393  dphi2 = -dphi2; //return to correct sing dphi
7394  Pt = PTsolv;
7395  } // end 2 or 3 station method
7396  }
7397  }
7398  // fix overlap region high pt:
7399  if (method >= 25 && (type == 12 || type == 14 || type == 11) && fabs(dphi1) < 0.003 && fabs(dphi2) < 2)
7400  Pt = 140.;
7401  // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;
7402 
7403  //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
7404  //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV
7405  float Pt_min = 2; // 2 GeV
7406 
7407  return (Pt > Pt_min) ? Pt : Pt_min;
7408 }

References AB_mu12F, AB_mu12R, AB_mu13F, AB_mu13R, AB_mu23, AB_mu24, AB_mu34, AB_mu5, AB_mu51, AB_mu52, AB_mu53, AB_rho123F, AB_rho123R, AB_rho124F, AB_rho124R, AB_rho134F, AB_rho134R, AB_rho234, AB_rho512, AB_rho513, AB_rho51B, AB_rho523, AB_rho52B, AB_rho53B, AB_sig12F, AB_sig12R, AB_sig13F, AB_sig13R, AB_sig23, AB_sig24, AB_sig34, AB_sig5, AB_sig51, AB_sig52, AB_sig53, PVValHelper::eta, etabins, multPhiCorr_741_25nsDY_cfi::fx, Likelihood2011(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, pfMETCorrectionType0_cfi::par2, DiDispStaMuonMonitor_cfi::pt, Pt2Stn2011(), HLT_2018_cff::Pt_min, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt().

◆ Pt3Stn2012()

float CSCTFPtMethods::Pt3Stn2012 ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  PtbyMLH,
float &  theLH,
int  fr = -1,
int  method = 11 
) const

Definition at line 7732 of file CSCTFPtMethods.cc.

7733  {
7734  int useBestMLH = PtbyMLH;
7735  int use2Stn = false;
7736  int use2StnDT = true;
7737  if (type == 5)
7738  use2Stn = true; //switch 2 station assighment for mode = 5
7739 
7740  if (fabs(eta) >= 2.4)
7741  eta = 2.35;
7742  float Pt = 0.;
7743  double PTsolv = 1.; // for muon plus hypothesis
7744  double PTsolvMinus = 1.; //for muon minus hypothesis
7745  for (int iETA = 0; iETA < 15; iETA++) {
7746  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
7747  // calculate curvers of mean and sigma
7748  // calculate phi12 mean
7749  double par1[4] = {0., 0., 0., 0.};
7750  //double phi12mean = fitf5(v, par1); //mu12
7751  double par_sig1[3] = {0., 0., 0.};
7752  // calculate phi23 mean
7753  double par2[4] = {0., 0., 0., 0.};
7754  // calculate phi23 sig
7755  double par_sig2[3] = {0., 0., 0.};
7756  // calculate correlation rho
7757  double par_rho[5] = {0., 0., 0., 0., 0.};
7758  int iETA1 = iETA;
7759  int iETA2 = iETA;
7760  switch (type) // type = mode here
7761  {
7762  case 2: //1-2-3
7763  if (fr == 1) {
7764  if (iETA1 < 3)
7765  iETA1 = 3;
7766  //if(iETA1 > 11)iETA1 = 11;
7767  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7768  par1[0] = A_mu12Front[0][iETA1];
7769  par1[1] = A_mu12Front[1][iETA1];
7770  par1[2] = A_mu12Front[2][iETA1];
7771  par1[3] = A_mu12Front[3][iETA1];
7772  par_sig1[0] = A_sig12Front[0][iETA1];
7773  par_sig1[1] = A_sig12Front[1][iETA1];
7774  par_sig1[2] = A_sig12Front[2][iETA1];
7775  par_rho[0] = A_rho123FrontCSCTF[0][iETA1];
7776  par_rho[1] = A_rho123FrontCSCTF[1][iETA1];
7777  par_rho[2] = A_rho123FrontCSCTF[2][iETA1];
7778  par_rho[3] = A_rho123FrontCSCTF[3][iETA1];
7779  par_rho[4] = A_rho123FrontCSCTF[4][iETA1];
7780  }
7781  if (fr == 0) {
7782  if (iETA1 < 1)
7783  iETA1 = 1;
7784  //if(iETA1 > 11)iETA1 = 11;
7785  //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
7786  par1[0] = A_mu12Rare[0][iETA1];
7787  par1[1] = A_mu12Rare[1][iETA1];
7788  par1[2] = A_mu12Rare[2][iETA1];
7789  par1[3] = A_mu12Rare[3][iETA1];
7790  par_sig1[0] = A_sig12Rare[0][iETA1];
7791  par_sig1[1] = A_sig12Rare[1][iETA1];
7792  par_sig1[2] = A_sig12Rare[2][iETA1];
7793  par_rho[0] = A_rho123RareCSCTF[0][iETA1];
7794  par_rho[1] = A_rho123RareCSCTF[1][iETA1];
7795  par_rho[2] = A_rho123RareCSCTF[2][iETA1];
7796  par_rho[3] = A_rho123RareCSCTF[3][iETA1];
7797  par_rho[4] = A_rho123RareCSCTF[4][iETA1];
7798  }
7799  if (iETA2 < 2)
7800  iETA2 = 2;
7801  par2[0] = A_mu23[0][iETA2];
7802  par2[1] = A_mu23[1][iETA2];
7803  par2[2] = A_mu23[2][iETA2];
7804  par2[3] = A_mu23[3][iETA2];
7805  par_sig2[0] = A_sig23[0][iETA2];
7806  par_sig2[1] = A_sig23[1][iETA2];
7807  par_sig2[2] = A_sig23[2][iETA2];
7808 
7809  break;
7810  case 3: //1-2-4
7811  if (fr == 1) {
7812  if (iETA1 < 3)
7813  iETA1 = 3;
7814  //if(iETA1 > 11)iETA1 = 11;
7815  par1[0] = A_mu12Front[0][iETA1];
7816  par1[1] = A_mu12Front[1][iETA1];
7817  par1[2] = A_mu12Front[2][iETA1];
7818  par1[3] = A_mu12Front[3][iETA1];
7819  par_sig1[0] = A_sig12Front[0][iETA1];
7820  par_sig1[1] = A_sig12Front[1][iETA1];
7821  par_sig1[2] = A_sig12Front[2][iETA1];
7822  par_rho[0] = A_rho124FrontCSCTF[0][iETA1];
7823  par_rho[1] = A_rho124FrontCSCTF[1][iETA1];
7824  par_rho[2] = A_rho124FrontCSCTF[2][iETA1];
7825  par_rho[3] = A_rho124FrontCSCTF[3][iETA1];
7826  par_rho[4] = A_rho124FrontCSCTF[4][iETA1];
7827  }
7828  if (fr == 0) {
7829  if (iETA1 < 1)
7830  iETA1 = 1;
7831  //if(iETA1 > 11)iETA1 = 11;
7832  par1[0] = A_mu12Rare[0][iETA1];
7833  par1[1] = A_mu12Rare[1][iETA1];
7834  par1[2] = A_mu12Rare[2][iETA1];
7835  par1[3] = A_mu12Rare[3][iETA1];
7836  par_sig1[0] = A_sig12Rare[0][iETA1];
7837  par_sig1[1] = A_sig12Rare[1][iETA1];
7838  par_sig1[2] = A_sig12Rare[2][iETA1];
7839  par_rho[0] = A_rho124RareCSCTF[0][iETA1];
7840  par_rho[1] = A_rho124RareCSCTF[1][iETA1];
7841  par_rho[2] = A_rho124RareCSCTF[2][iETA1];
7842  par_rho[3] = A_rho124RareCSCTF[3][iETA1];
7843  par_rho[4] = A_rho124RareCSCTF[4][iETA1];
7844  }
7845  if (iETA2 < 9)
7846  iETA2 = 9;
7847  par2[0] = A_mu24[0][iETA2];
7848  par2[1] = A_mu24[1][iETA2];
7849  par2[2] = A_mu24[2][iETA2];
7850  par2[3] = A_mu24[3][iETA2];
7851  par_sig2[0] = A_sig24[0][iETA2];
7852  par_sig2[1] = A_sig24[1][iETA2];
7853  par_sig2[2] = A_sig24[2][iETA2];
7854  break;
7855  case 4: //1-3-4
7856  if (fr == 1) {
7857  if (iETA1 < 3)
7858  iETA1 = 3;
7859  //if(iETA1 > 11)iETA1 = 11;
7860  par1[0] = A_mu13Front[0][iETA1];
7861  par1[1] = A_mu13Front[1][iETA1];
7862  par1[2] = A_mu13Front[2][iETA1];
7863  par1[3] = A_mu13Front[3][iETA1];
7864  par_sig1[0] = A_sig13Front[0][iETA1];
7865  par_sig1[1] = A_sig13Front[1][iETA1];
7866  par_sig1[2] = A_sig13Front[2][iETA1];
7867  par_rho[0] = A_rho134FrontCSCTF[0][iETA1];
7868  par_rho[1] = A_rho134FrontCSCTF[1][iETA1];
7869  par_rho[2] = A_rho134FrontCSCTF[2][iETA1];
7870  par_rho[3] = A_rho134FrontCSCTF[3][iETA1];
7871  par_rho[4] = A_rho134FrontCSCTF[4][iETA1];
7872  }
7873  if (fr == 0) {
7874  if (iETA1 < 2)
7875  iETA1 = 2;
7876  //if(iETA1 > 11)iETA1 = 11;
7877  par1[0] = A_mu13Rare[0][iETA1];
7878  par1[1] = A_mu13Rare[1][iETA1];
7879  par1[2] = A_mu13Rare[2][iETA1];
7880  par1[3] = A_mu13Rare[3][iETA1];
7881  par_sig1[0] = A_sig13Rare[0][iETA1];
7882  par_sig1[1] = A_sig13Rare[1][iETA1];
7883  par_sig1[2] = A_sig13Rare[2][iETA1];
7884  par_rho[0] = A_rho134RareCSCTF[0][iETA1];
7885  par_rho[1] = A_rho134RareCSCTF[1][iETA1];
7886  par_rho[2] = A_rho134RareCSCTF[2][iETA1];
7887  par_rho[3] = A_rho134RareCSCTF[3][iETA1];
7888  par_rho[4] = A_rho134RareCSCTF[4][iETA1];
7889  }
7890  if (iETA2 < 9)
7891  iETA2 = 9;
7892  par2[0] = A_mu34[0][iETA2];
7893  par2[1] = A_mu34[1][iETA2];
7894  par2[2] = A_mu34[2][iETA2];
7895  par2[3] = A_mu34[3][iETA2];
7896  par_sig2[0] = A_sig34[0][iETA2];
7897  par_sig2[1] = A_sig34[1][iETA2];
7898  par_sig2[2] = A_sig34[2][iETA2];
7899  break;
7900  case 5: //2-3-4
7901  if (iETA1 < 9)
7902  iETA1 = 9;
7903  par1[0] = A_mu23[0][iETA1];
7904  par1[1] = A_mu23[1][iETA1];
7905  par1[2] = A_mu23[2][iETA1];
7906  par1[3] = A_mu23[3][iETA1];
7907  par_sig1[0] = A_sig23[0][iETA1];
7908  par_sig1[1] = A_sig23[1][iETA1];
7909  par_sig1[2] = A_sig23[2][iETA1];
7910  par_rho[0] = A_rho234CSCTF[0][iETA1];
7911  par_rho[1] = A_rho234CSCTF[1][iETA1];
7912  par_rho[2] = A_rho234CSCTF[2][iETA1];
7913  par_rho[3] = A_rho234CSCTF[3][iETA1];
7914  par_rho[4] = A_rho234CSCTF[4][iETA1];
7915 
7916  par2[0] = A_mu34[0][iETA1];
7917  par2[1] = A_mu34[1][iETA1];
7918  par2[2] = A_mu34[2][iETA1];
7919  par2[3] = A_mu34[3][iETA1];
7920  par_sig2[0] = A_sig34[0][iETA1];
7921  par_sig2[1] = A_sig34[1][iETA1];
7922  par_sig2[2] = A_sig34[2][iETA1];
7923  break;
7924  case 11: // b1-1-3
7925  if (iETA1 != 2)
7926  iETA1 = 2;
7927  par1[0] = A_mu51[0][iETA1];
7928  par1[1] = A_mu51[1][iETA1];
7929  par1[2] = A_mu51[2][iETA1];
7930  par1[3] = A_mu51[3][iETA1];
7931  par_sig1[0] = A_sig51[0][iETA1];
7932  par_sig1[1] = A_sig51[1][iETA1];
7933  par_sig1[2] = A_sig51[2][iETA1];
7934  par_rho[0] = A_rho513[0][iETA1];
7935  par_rho[1] = A_rho513[0][iETA1];
7936  par_rho[2] = A_rho513[0][iETA1];
7937  par_rho[3] = A_rho513[0][iETA1];
7938  par_rho[4] = A_rho513[0][iETA1];
7939 
7940  par2[0] = A_mu13Rare[0][iETA1];
7941  par2[1] = A_mu13Rare[1][iETA1];
7942  par2[2] = A_mu13Rare[2][iETA1];
7943  par2[3] = A_mu13Rare[3][iETA1];
7944  par_sig2[0] = A_sig13Rare[0][iETA1];
7945  par_sig2[1] = A_sig13Rare[1][iETA1];
7946  par_sig2[2] = A_sig13Rare[2][iETA1];
7947  break;
7948  case 12: // b1-2-3
7949  if (iETA1 != 2)
7950  iETA1 = 2;
7951  par1[0] = A_mu52[0][iETA1];
7952  par1[1] = A_mu52[1][iETA1];
7953  par1[2] = A_mu52[2][iETA1];
7954  par1[3] = A_mu52[3][iETA1];
7955  par_sig1[0] = A_sig52[0][iETA1];
7956  par_sig1[1] = A_sig52[1][iETA1];
7957  par_sig1[2] = A_sig52[2][iETA1];
7958  par_rho[0] = A_rho523[0][iETA1];
7959  par_rho[1] = A_rho523[0][iETA1];
7960  par_rho[2] = A_rho523[0][iETA1];
7961  par_rho[3] = A_rho523[0][iETA1];
7962  par_rho[4] = A_rho523[0][iETA1];
7963 
7964  par2[0] = A_mu23[0][iETA1];
7965  par2[1] = A_mu23[1][iETA1];
7966  par2[2] = A_mu23[2][iETA1];
7967  par2[3] = A_mu23[3][iETA1];
7968  par_sig2[0] = A_sig23[0][iETA1];
7969  par_sig2[1] = A_sig23[1][iETA1];
7970  par_sig2[2] = A_sig23[2][iETA1];
7971  break;
7972  case 14: // b1-1-2-(3)
7973  if (iETA1 < 1)
7974  iETA1 = 1;
7975  if (iETA1 > 2)
7976  iETA1 = 2;
7977  par1[0] = A_mu51[0][iETA1];
7978  par1[1] = A_mu51[1][iETA1];
7979  par1[2] = A_mu51[2][iETA1];
7980  par1[3] = A_mu51[3][iETA1];
7981  par_sig1[0] = A_sig51[0][iETA1];
7982  par_sig1[1] = A_sig51[1][iETA1];
7983  par_sig1[2] = A_sig51[2][iETA1];
7984  par_rho[0] = A_rho512[0][iETA1];
7985  par_rho[1] = A_rho512[0][iETA1];
7986  par_rho[2] = A_rho512[0][iETA1];
7987  par_rho[3] = A_rho512[0][iETA1];
7988  par_rho[4] = A_rho512[0][iETA1];
7989 
7990  par2[0] = A_mu12Rare[0][iETA1];
7991  par2[1] = A_mu12Rare[1][iETA1];
7992  par2[2] = A_mu12Rare[2][iETA1];
7993  par2[3] = A_mu12Rare[3][iETA1];
7994  par_sig2[0] = A_sig12Rare[0][iETA1];
7995  par_sig2[1] = A_sig12Rare[1][iETA1];
7996  par_sig2[2] = A_sig12Rare[2][iETA1];
7997  break;
7998  //default:
7999  //return 0.0;
8000  }
8001 
8002  // Switch to 2-Station measurement if dphi is too small
8003  // box cut around Pt of 10 GeV
8004  if (fabs(static_cast<double>(dphi2)) < 0.004 &&
8005  ((type >= 11 && use2StnDT) || (type >= 2 && type <= 5 && use2Stn))) {
8006  if (use2Stn) {
8007  if (type == 2 || type == 3)
8008  type = 6; // 1-2-3(or 4) -> 1-2
8009  if (type == 4)
8010  type = 7; // 1-3-4 -> 1-3
8011  Pt = Pt2Stn2012(type, eta, dphi1, useBestMLH, bestLH, fr, method);
8012  }
8013  if (use2StnDT) {
8014  if (type == 11)
8015  type = 14; // b1-1-3 -> b1-1 for pt_method > 10
8016  Pt = Pt2Stn2012(type, eta, dphi1, useBestMLH, bestLH, fr, method);
8017  }
8018  } else {
8019  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
8020  double muPlusMaxLH = -1e9;
8021  double pt = 140;
8022  double step = 5.;
8023  double maxLH = -1e9;
8024 
8025  while (pt > 2.) {
8026  double par_phi12[1] = {dphi1};
8027  double par_phi23[1] = {dphi2};
8028  double v[1], lpt1_1;
8029  v[0] = 0;
8030  lpt1_1 = 1.;
8031  v[0] = pt;
8032  lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
8033 
8034  if (lpt1_1 > maxLH) {
8035  maxLH = lpt1_1;
8036  PTsolv = pt;
8037  }
8038 
8039  if (pt <= 100) {
8040  step = 10.0 / 4.0;
8041  }
8042  if (pt <= 50) {
8043  step = 5.0 / 4.0;
8044  }
8045  if (pt <= 20) {
8046  step = 2.0 / 4.0;
8047  }
8048  if (pt <= 10) {
8049  step = 1.0 / 4.0;
8050  }
8051  if (pt <= 5) {
8052  step = 0.5 / 4.0;
8053  }
8054 
8055  pt = pt - step;
8056  } // end while
8057  muPlusMaxLH = maxLH;
8058 
8059  //*********** end solve equation for muon plus
8060  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
8061  // for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
8062  double muMinusMaxLH = -1e9;
8063  dphi1 = -dphi1;
8064  dphi2 = -dphi2;
8065  pt = 140;
8066  step = 5.;
8067  maxLH = -1e9;
8068 
8069  while (pt > 2.) {
8070  double par_phi12[1] = {dphi1};
8071  double par_phi23[1] = {dphi2};
8072  double v[1], lpt1_1;
8073  v[0] = 0;
8074  lpt1_1 = 1.;
8075  v[0] = pt;
8076  lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
8077 
8078  if (lpt1_1 > maxLH) {
8079  maxLH = lpt1_1;
8080  PTsolvMinus = pt;
8081  }
8082 
8083  if (pt <= 100) {
8084  step = 10.0 / 4.0;
8085  }
8086  if (pt <= 50) {
8087  step = 5.0 / 4.0;
8088  }
8089  if (pt <= 20) {
8090  step = 2.0 / 4.0;
8091  }
8092  if (pt <= 10) {
8093  step = 1.0 / 4.0;
8094  }
8095  if (pt <= 5) {
8096  step = 0.5 / 4.0;
8097  }
8098 
8099  pt = pt - step;
8100  } // end while
8101  muMinusMaxLH = maxLH;
8102 
8103  if (useBestMLH)
8104  PTsolv = (muPlusMaxLH > muMinusMaxLH)
8105  ? PTsolv
8106  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
8107  else
8108  PTsolv = (PTsolv > PTsolvMinus)
8109  ? PTsolv
8110  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
8111 
8112  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
8113  //*********** end solve equation for muon minus
8114 
8115  PTsolv = PTsolv * 1.2; // correction to have 90% efficiency for trigger cuts
8116  if (PTsolv > 137.5)
8117  PTsolv = 137.5;
8118  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
8119  dphi1 = -dphi1; //return to correct sing dphi
8120  dphi2 = -dphi2; //return to correct sing dphi
8121  Pt = PTsolv;
8122  } // end 2 or 3 station method
8123  }
8124  }
8125  // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;
8126 
8127  float Pt_min = trigger_scale->getPtScale()->getLowEdge(1); // 0 GeV
8128  if (method > 10)
8129  Pt_min = trigger_scale->getPtScale()->getLowEdge(3); // 2 GeV
8130 
8131  return (Pt > Pt_min) ? Pt : Pt_min;
8132 }

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu23, A_mu24, A_mu34, A_mu51, A_mu52, A_rho123FrontCSCTF, A_rho123RareCSCTF, A_rho124FrontCSCTF, A_rho124RareCSCTF, A_rho134FrontCSCTF, A_rho134RareCSCTF, A_rho234CSCTF, A_rho512, A_rho513, A_rho523, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig23, A_sig24, A_sig34, A_sig51, A_sig52, PVValHelper::eta, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, pfMETCorrectionType0_cfi::par2, DiDispStaMuonMonitor_cfi::pt, Pt2Stn2012(), HLT_2018_cff::Pt_min, trigger_scale, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt().

◆ Pt3Stn2012_DT()

float CSCTFPtMethods::Pt3Stn2012_DT ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  PtbyMLH,
float &  theLH,
int  fr = -1,
int  method = 11 
) const

Definition at line 8134 of file CSCTFPtMethods.cc.

8135  {
8136  int useBestMLH = PtbyMLH;
8137  int useBOXcutDT = true;
8138  int use2Stn = false;
8139  int use2StnDT = true;
8140 
8141  //if(fabs(eta) >= 2.4)eta = 2.35;
8142  if (fabs(eta) >= 2.2)
8143  eta = 2.15;
8144  float Pt = 0.;
8145  double PTsolv = 1.; // for muon plus hypothesis
8146  double PTsolvMinus = 1.; //for muon minus hypothesis
8147  for (int iETA = 0; iETA < 15; iETA++) {
8148  if (fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA + 1]) {
8149  // calculate curvers of mean and sigma
8150  // calculate phi12 mean
8151  double par1[4] = {0., 0., 0., 0.};
8152  //double phi12mean = fitf5(v, par1); //mu12
8153  double par_sig1[4] = {0., 0., 0., 0};
8154  // calculate phi23 mean
8155  double par2[4] = {0., 0., 0., 0.};
8156  // calculate phi23 sig
8157  double par_sig2[4] = {0., 0., 0., 0.};
8158  // calculate correlation rho
8159  double par_rho[5] = {0., 0., 0., 0., 0.};
8160  int iETA1 = iETA;
8161  int iETA2 = iETA;
8162 
8163  // defind which parameters will be use
8164  const double(*Amean12F)[15] = AB_mu12F;
8165  const double(*Asig12F)[15] = AB_sig12F;
8166  const double(*Amean12R)[15] = AB_mu12R;
8167  const double(*Asig12R)[15] = AB_sig12R;
8168 
8169  const double(*Amean13F)[15] = AB_mu13F;
8170  const double(*Asig13F)[15] = AB_sig13F;
8171  const double(*Amean13R)[15] = AB_mu13R;
8172  const double(*Asig13R)[15] = AB_sig13R;
8173 
8174  //const double(*Amean14F)[15] = AB_mu14F;
8175  //const double(*Asig14F)[15] = AB_sig14F;
8176  //const double(*Amean14R)[15] = AB_mu14R;
8177  //const double(*Asig14R)[15] = AB_sig14R;
8178 
8179  const double(*Amean23)[15] = AB_mu23;
8180  const double(*Asig23)[15] = AB_sig23;
8181  const double(*Amean24)[15] = AB_mu24;
8182  const double(*Asig24)[15] = AB_sig24;
8183  const double(*Amean34)[15] = AB_mu34;
8184  const double(*Asig34)[15] = AB_sig34;
8185 
8186  const double(*Amean5)[15] = AB_mu5;
8187  const double(*Asig5)[15] = AB_sig5;
8188  const double(*Amean51)[15] = AB_mu51;
8189  const double(*Asig51)[15] = AB_sig51;
8190  const double(*Amean52)[15] = AB_mu52;
8191  const double(*Asig52)[15] = AB_sig52;
8192  const double(*Amean53)[15] = AB_mu53;
8193  const double(*Asig53)[15] = AB_sig53;
8194 
8195  const double(*Arho123F)[15] = AB_rho123F;
8196  const double(*Arho123R)[15] = AB_rho123R;
8197  const double(*Arho124F)[15] = AB_rho124F;
8198  const double(*Arho124R)[15] = AB_rho124R;
8199  const double(*Arho134F)[15] = AB_rho134F;
8200  const double(*Arho134R)[15] = AB_rho134R;
8201  const double(*Arho234)[15] = AB_rho234;
8202 
8203  const double(*Arho51B)[15] = AB_rho51B;
8204  const double(*Arho52B)[15] = AB_rho52B;
8205  const double(*Arho53B)[15] = AB_rho53B;
8206  const double(*Arho512)[15] = AB_rho512;
8207  const double(*Arho513)[15] = AB_rho513;
8208  const double(*Arho523)[15] = AB_rho523;
8209 
8210  //cout << "iETA = " << iETA
8211  // << " AB_mu51[0][iETA] = " << AB_mu51[0][iETA] << " pointer = " << (*(Amean51+0))[iETA]
8212  // << " AB_mu51[3][iETA] = " << AB_mu51[3][iETA] << " pointer = " << (*(Amean51+3))[iETA]
8213  // << endl;
8214 
8215  switch (type) // type = mode here
8216  {
8217  case 2: //1-2-3
8218  if (iETA < 2)
8219  iETA2 = 2;
8220  if (fr == 1) {
8221  if (iETA < 3)
8222  iETA1 = 3;
8223  par1[0] = (*(Amean12F + 0))[iETA1];
8224  par1[1] = (*(Amean12F + 1))[iETA1];
8225  par1[2] = (*(Amean12F + 2))[iETA1];
8226  par1[3] = (*(Amean12F + 3))[iETA1];
8227  par_sig1[0] = (*(Asig12F + 0))[iETA1];
8228  par_sig1[1] = (*(Asig12F + 1))[iETA1];
8229  par_sig1[2] = (*(Asig12F + 2))[iETA1];
8230  par_sig1[3] = (*(Asig12F + 3))[iETA1];
8231  par_rho[0] = (*(Arho123F + 0))[iETA2];
8232  par_rho[1] = (*(Arho123F + 1))[iETA2];
8233  par_rho[2] = (*(Arho123F + 2))[iETA2];
8234  par_rho[3] = (*(Arho123F + 3))[iETA2];
8235  par_rho[4] = (*(Arho123F + 4))[iETA2];
8236  }
8237  if (fr == 0) {
8238  if (iETA < 1)
8239  iETA1 = 1;
8240  par1[0] = (*(Amean12R + 0))[iETA1];
8241  par1[1] = (*(Amean12R + 1))[iETA1];
8242  par1[2] = (*(Amean12R + 2))[iETA1];
8243  par1[3] = (*(Amean12R + 3))[iETA1];
8244  par_sig1[0] = (*(Asig12R + 0))[iETA1];
8245  par_sig1[1] = (*(Asig12R + 1))[iETA1];
8246  par_sig1[2] = (*(Asig12R + 2))[iETA1];
8247  par_sig1[3] = (*(Asig12R + 3))[iETA1];
8248  par_rho[0] = (*(Arho123R + 0))[iETA2];
8249  par_rho[1] = (*(Arho123R + 1))[iETA2];
8250  par_rho[2] = (*(Arho123R + 2))[iETA2];
8251  par_rho[3] = (*(Arho123R + 3))[iETA2];
8252  par_rho[4] = (*(Arho123R + 4))[iETA2];
8253  }
8254  par2[0] = (*(Amean23 + 0))[iETA2];
8255  par2[1] = (*(Amean23 + 1))[iETA2];
8256  par2[2] = (*(Amean23 + 2))[iETA2];
8257  par2[3] = (*(Amean23 + 3))[iETA2];
8258  par_sig2[0] = (*(Asig23 + 0))[iETA2];
8259  par_sig2[1] = (*(Asig23 + 1))[iETA2];
8260  par_sig2[2] = (*(Asig23 + 2))[iETA2];
8261  par_sig2[3] = (*(Asig23 + 3))[iETA2];
8262 
8263  break;
8264  case 3: //1-2-4
8265  if (iETA < 3)
8266  iETA2 = 3;
8267  if (fr == 1) {
8268  if (iETA < 3)
8269  iETA1 = 3;
8270  par1[0] = (*(Amean12F + 0))[iETA1];
8271  par1[1] = (*(Amean12F + 1))[iETA1];
8272  par1[2] = (*(Amean12F + 2))[iETA1];
8273  par1[3] = (*(Amean12F + 3))[iETA1];
8274  par_sig1[0] = (*(Asig12F + 0))[iETA1];
8275  par_sig1[1] = (*(Asig12F + 1))[iETA1];
8276  par_sig1[2] = (*(Asig12F + 2))[iETA1];
8277  par_sig1[3] = (*(Asig12F + 3))[iETA1];
8278  par_rho[0] = (*(Arho124F + 0))[iETA2];
8279  par_rho[1] = (*(Arho124F + 1))[iETA2];
8280  par_rho[2] = (*(Arho124F + 2))[iETA2];
8281  par_rho[3] = (*(Arho124F + 3))[iETA2];
8282  par_rho[4] = (*(Arho124F + 4))[iETA2];
8283  }
8284  if (fr == 0) {
8285  if (iETA < 1)
8286  iETA1 = 1;
8287  par1[0] = (*(Amean12R + 0))[iETA1];
8288  par1[1] = (*(Amean12R + 1))[iETA1];
8289  par1[2] = (*(Amean12R + 2))[iETA1];
8290  par1[3] = (*(Amean12R + 3))[iETA1];
8291  par_sig1[0] = (*(Asig12R + 0))[iETA1];
8292  par_sig1[1] = (*(Asig12R + 1))[iETA1];
8293  par_sig1[2] = (*(Asig12R + 2))[iETA1];
8294  par_sig1[3] = (*(Asig12R + 3))[iETA1];
8295  par_rho[0] = (*(Arho124R + 0))[iETA2];
8296  par_rho[1] = (*(Arho124R + 1))[iETA2];
8297  par_rho[2] = (*(Arho124R + 2))[iETA2];
8298  par_rho[3] = (*(Arho124R + 3))[iETA2];
8299  par_rho[4] = (*(Arho124R + 4))[iETA2];
8300  }
8301  par2[0] = (*(Amean24 + 0))[iETA2];
8302  par2[1] = (*(Amean24 + 1))[iETA2];
8303  par2[2] = (*(Amean24 + 2))[iETA2];
8304  par2[3] = (*(Amean24 + 3))[iETA2];
8305  par_sig2[0] = (*(Asig24 + 0))[iETA2];
8306  par_sig2[1] = (*(Asig24 + 1))[iETA2];
8307  par_sig2[2] = (*(Asig24 + 2))[iETA2];
8308  par_sig2[3] = (*(Asig24 + 3))[iETA2];
8309  break;
8310  case 4: //1-3-4
8311  if (iETA < 3)
8312  iETA2 = 3;
8313  if (fr == 1) {
8314  if (iETA < 3)
8315  iETA1 = 3;
8316  par1[0] = (*(Amean13F + 0))[iETA1];
8317  par1[1] = (*(Amean13F + 1))[iETA1];
8318  par1[2] = (*(Amean13F + 2))[iETA1];
8319  par1[3] = (*(Amean13F + 3))[iETA1];
8320  par_sig1[0] = (*(Asig13F + 0))[iETA1];
8321  par_sig1[1] = (*(Asig13F + 1))[iETA1];
8322  par_sig1[2] = (*(Asig13F + 2))[iETA1];
8323  par_sig1[3] = (*(Asig13F + 3))[iETA1];
8324  par_rho[0] = (*(Arho134F + 0))[iETA2];
8325  par_rho[1] = (*(Arho134F + 1))[iETA2];
8326  par_rho[2] = (*(Arho134F + 2))[iETA2];
8327  par_rho[3] = (*(Arho134F + 3))[iETA2];
8328  par_rho[4] = (*(Arho134F + 4))[iETA2];
8329  }
8330  if (fr == 0) {
8331  if (iETA < 3)
8332  iETA1 = 3;
8333  par1[0] = (*(Amean13R + 0))[iETA1];
8334  par1[1] = (*(Amean13R + 1))[iETA1];
8335  par1[2] = (*(Amean13R + 2))[iETA1];
8336  par1[3] = (*(Amean13R + 3))[iETA1];
8337  par_sig1[0] = (*(Asig13R + 0))[iETA1];
8338  par_sig1[1] = (*(Asig13R + 1))[iETA1];
8339  par_sig1[2] = (*(Asig13R + 2))[iETA1];
8340  par_sig1[3] = (*(Asig13R + 3))[iETA1];
8341  par_rho[0] = (*(Arho134R + 0))[iETA2];
8342  par_rho[1] = (*(Arho134R + 1))[iETA2];
8343  par_rho[2] = (*(Arho134R + 2))[iETA2];
8344  par_rho[3] = (*(Arho134R + 3))[iETA2];
8345  par_rho[4] = (*(Arho134R + 4))[iETA2];
8346  }
8347  par2[0] = (*(Amean34 + 0))[iETA2];
8348  par2[1] = (*(Amean34 + 1))[iETA2];
8349  par2[2] = (*(Amean34 + 2))[iETA2];
8350  par2[3] = (*(Amean34 + 3))[iETA2];
8351  par_sig2[0] = (*(Asig34 + 0))[iETA2];
8352  par_sig2[1] = (*(Asig34 + 1))[iETA2];
8353  par_sig2[2] = (*(Asig34 + 2))[iETA2];
8354  par_sig2[3] = (*(Asig34 + 3))[iETA2];
8355  break;
8356  case 5: //2-3-4
8357  if (iETA < 2)
8358  iETA1 = 2;
8359  if (iETA < 3)
8360  iETA2 = 3;
8361  par1[0] = (*(Amean23 + 0))[iETA1];
8362  par1[1] = (*(Amean23 + 1))[iETA1];
8363  par1[2] = (*(Amean23 + 2))[iETA1];
8364  par1[3] = (*(Amean23 + 3))[iETA1];
8365  par_sig1[0] = (*(Asig23 + 0))[iETA1];
8366  par_sig1[1] = (*(Asig23 + 1))[iETA1];
8367  par_sig1[2] = (*(Asig23 + 2))[iETA1];
8368  par_sig1[3] = (*(Asig23 + 3))[iETA1];
8369  par_rho[0] = (*(Arho234 + 0))[iETA2];
8370  par_rho[1] = (*(Arho234 + 1))[iETA2];
8371  par_rho[2] = (*(Arho234 + 2))[iETA2];
8372  par_rho[3] = (*(Arho234 + 3))[iETA2];
8373  par_rho[4] = (*(Arho234 + 4))[iETA2];
8374 
8375  par2[0] = (*(Amean34 + 0))[iETA2];
8376  par2[1] = (*(Amean34 + 1))[iETA2];
8377  par2[2] = (*(Amean34 + 2))[iETA2];
8378  par2[3] = (*(Amean34 + 3))[iETA2];
8379  par_sig2[0] = (*(Asig34 + 0))[iETA2];
8380  par_sig2[1] = (*(Asig34 + 1))[iETA2];
8381  par_sig2[2] = (*(Asig34 + 2))[iETA2];
8382  par_sig2[3] = (*(Asig34 + 3))[iETA2];
8383  break;
8384  case 11: // singles for method < 10, for method > 10: fr = 1 -> b1-1-3, fr = 0 -> b1-3-phiBend
8385  if (iETA != 2)
8386  iETA1 = 2;
8387  par1[0] = (*(Amean53 + 0))[iETA1];
8388  par1[1] = (*(Amean53 + 1))[iETA1];
8389  par1[2] = (*(Amean53 + 2))[iETA1];
8390  par1[3] = (*(Amean53 + 3))[iETA1];
8391  par_sig1[0] = (*(Asig53 + 0))[iETA1];
8392  par_sig1[1] = (*(Asig53 + 1))[iETA1];
8393  par_sig1[2] = (*(Asig53 + 2))[iETA1];
8394  par_sig1[3] = (*(Asig53 + 3))[iETA1];
8395  par_rho[0] = (*(Arho53B + 0))[iETA1];
8396  par_rho[1] = (*(Arho53B + 1))[iETA1];
8397  par_rho[2] = (*(Arho53B + 2))[iETA1];
8398  par_rho[3] = (*(Arho53B + 3))[iETA1];
8399  par_rho[4] = (*(Arho53B + 4))[iETA1];
8400 
8401  par2[0] = (*(Amean5 + 0))[iETA1];
8402  par2[1] = (*(Amean5 + 1))[iETA1];
8403  par2[2] = (*(Amean5 + 2))[iETA1];
8404  par2[3] = (*(Amean5 + 3))[iETA1];
8405  par_sig2[0] = (*(Asig5 + 0))[iETA1];
8406  par_sig2[1] = (*(Asig5 + 1))[iETA1];
8407  par_sig2[2] = (*(Asig5 + 2))[iETA1];
8408  par_sig2[3] = (*(Asig5 + 3))[iETA1];
8409 
8410  if (fr == 1) {
8411  par1[0] = (*(Amean51 + 0))[iETA1];
8412  par1[1] = (*(Amean51 + 1))[iETA1];
8413  par1[2] = (*(Amean51 + 2))[iETA1];
8414  par1[3] = (*(Amean51 + 3))[iETA1];
8415  par_sig1[0] = (*(Asig51 + 0))[iETA1];
8416  par_sig1[1] = (*(Asig51 + 1))[iETA1];
8417  par_sig1[2] = (*(Asig51 + 2))[iETA1];
8418  par_sig1[3] = (*(Asig51 + 3))[iETA1];
8419  par_rho[0] = (*(Arho513 + 0))[iETA1];
8420  par_rho[1] = (*(Arho513 + 1))[iETA1];
8421  par_rho[2] = (*(Arho513 + 2))[iETA1];
8422  par_rho[3] = (*(Arho513 + 3))[iETA1];
8423  par_rho[4] = (*(Arho513 + 4))[iETA1];
8424 
8425  par2[0] = (*(Amean13R + 0))[iETA1];
8426  par2[1] = (*(Amean13R + 1))[iETA1];
8427  par2[2] = (*(Amean13R + 2))[iETA1];
8428  par2[3] = (*(Amean13R + 3))[iETA1];
8429  par_sig2[0] = (*(Asig13R + 0))[iETA1];
8430  par_sig2[1] = (*(Asig13R + 1))[iETA1];
8431  par_sig2[2] = (*(Asig13R + 2))[iETA1];
8432  par_sig2[3] = (*(Asig13R + 3))[iETA1];
8433  }
8434  break;
8435  case 12: // b1-1-2 for method < 10; for method > 10: fr = 1 -> b1-2-3, fr = 0 -> b1-2-phiBend
8436  if (iETA < 1)
8437  iETA1 = 1;
8438  if (iETA > 2)
8439  iETA1 = 2;
8440  par1[0] = (*(Amean52 + 0))[iETA1];
8441  par1[1] = (*(Amean52 + 1))[iETA1];
8442  par1[2] = (*(Amean52 + 2))[iETA1];
8443  par1[3] = (*(Amean52 + 3))[iETA1];
8444  par_sig1[0] = (*(Asig52 + 0))[iETA1];
8445  par_sig1[1] = (*(Asig52 + 1))[iETA1];
8446  par_sig1[2] = (*(Asig52 + 2))[iETA1];
8447  par_sig1[3] = (*(Asig52 + 3))[iETA1];
8448  par_rho[0] = (*(Arho52B + 0))[iETA1];
8449  par_rho[1] = (*(Arho52B + 1))[iETA1];
8450  par_rho[2] = (*(Arho52B + 2))[iETA1];
8451  par_rho[3] = (*(Arho52B + 3))[iETA1];
8452  par_rho[4] = (*(Arho52B + 4))[iETA1];
8453 
8454  par2[0] = (*(Amean5 + 0))[iETA1];
8455  par2[1] = (*(Amean5 + 1))[iETA1];
8456  par2[2] = (*(Amean5 + 2))[iETA1];
8457  par2[3] = (*(Amean5 + 3))[iETA1];
8458  par_sig2[0] = (*(Asig5 + 0))[iETA1];
8459  par_sig2[1] = (*(Asig5 + 1))[iETA1];
8460  par_sig2[2] = (*(Asig5 + 2))[iETA1];
8461  par_sig2[3] = (*(Asig5 + 3))[iETA1];
8462 
8463  if (fr == 1) {
8464  if (iETA != 2)
8465  iETA1 = 2;
8466  par1[0] = (*(Amean52 + 0))[iETA1];
8467  par1[1] = (*(Amean52 + 1))[iETA1];
8468  par1[2] = (*(Amean52 + 2))[iETA1];
8469  par1[3] = (*(Amean52 + 3))[iETA1];
8470  par_sig1[0] = (*(Asig52 + 0))[iETA1];
8471  par_sig1[1] = (*(Asig52 + 1))[iETA1];
8472  par_sig1[2] = (*(Asig52 + 2))[iETA1];
8473  par_sig1[3] = (*(Asig52 + 3))[iETA1];
8474  par_rho[0] = (*(Arho523 + 0))[iETA1];
8475  par_rho[1] = (*(Arho523 + 1))[iETA1];
8476  par_rho[2] = (*(Arho523 + 2))[iETA1];
8477  par_rho[3] = (*(Arho523 + 3))[iETA1];
8478  par_rho[4] = (*(Arho523 + 4))[iETA1];
8479 
8480  par2[0] = (*(Amean23 + 0))[iETA1];
8481  par2[1] = (*(Amean23 + 1))[iETA1];
8482  par2[2] = (*(Amean23 + 2))[iETA1];
8483  par2[3] = (*(Amean23 + 3))[iETA1];
8484  par_sig2[0] = (*(Asig23 + 0))[iETA1];
8485  par_sig2[1] = (*(Asig23 + 1))[iETA1];
8486  par_sig2[2] = (*(Asig23 + 2))[iETA1];
8487  par_sig2[3] = (*(Asig23 + 3))[iETA1];
8488  }
8489  break;
8490  case 14: // b1-2 for method < 10; for method > 10: fr = 1 -> b1-1-2-(3), fr = 0 -> b1-1-phiBend
8491  if (iETA > 2)
8492  iETA1 = 2;
8493  par1[0] = (*(Amean51 + 0))[iETA1];
8494  par1[1] = (*(Amean51 + 1))[iETA1];
8495  par1[2] = (*(Amean51 + 2))[iETA1];
8496  par1[3] = (*(Amean51 + 3))[iETA1];
8497  par_sig1[0] = (*(Asig51 + 0))[iETA1];
8498  par_sig1[1] = (*(Asig51 + 1))[iETA1];
8499  par_sig1[2] = (*(Asig51 + 2))[iETA1];
8500  par_sig1[3] = (*(Asig51 + 3))[iETA1];
8501  par_rho[0] = (*(Arho51B + 0))[iETA1];
8502  par_rho[1] = (*(Arho51B + 1))[iETA1];
8503  par_rho[2] = (*(Arho51B + 2))[iETA1];
8504  par_rho[3] = (*(Arho51B + 3))[iETA1];
8505  par_rho[4] = (*(Arho51B + 4))[iETA1];
8506 
8507  par2[0] = (*(Amean5 + 0))[iETA1];
8508  par2[1] = (*(Amean5 + 1))[iETA1];
8509  par2[2] = (*(Amean5 + 2))[iETA1];
8510  par2[3] = (*(Amean5 + 3))[iETA1];
8511  par_sig2[0] = (*(Asig5 + 0))[iETA1];
8512  par_sig2[1] = (*(Asig5 + 1))[iETA1];
8513  par_sig2[2] = (*(Asig5 + 2))[iETA1];
8514  par_sig2[3] = (*(Asig5 + 3))[iETA1];
8515 
8516  if (fr == 1) {
8517  if (iETA < 1)
8518  iETA1 = 1;
8519  if (iETA > 2)
8520  iETA1 = 2;
8521  par1[0] = (*(Amean51 + 0))[iETA1];
8522  par1[1] = (*(Amean51 + 1))[iETA1];
8523  par1[2] = (*(Amean51 + 2))[iETA1];
8524  par1[3] = (*(Amean51 + 3))[iETA1];
8525  par_sig1[0] = (*(Asig51 + 0))[iETA1];
8526  par_sig1[1] = (*(Asig51 + 1))[iETA1];
8527  par_sig1[2] = (*(Asig51 + 2))[iETA1];
8528  par_sig1[3] = (*(Asig51 + 3))[iETA1];
8529  par_rho[0] = (*(Arho512 + 0))[iETA1];
8530  par_rho[1] = (*(Arho512 + 1))[iETA1];
8531  par_rho[2] = (*(Arho512 + 2))[iETA1];
8532  par_rho[3] = (*(Arho512 + 3))[iETA1];
8533  par_rho[4] = (*(Arho512 + 4))[iETA1];
8534 
8535  par2[0] = (*(Amean12R + 0))[iETA1];
8536  par2[1] = (*(Amean12R + 1))[iETA1];
8537  par2[2] = (*(Amean12R + 2))[iETA1];
8538  par2[3] = (*(Amean12R + 3))[iETA1];
8539  par_sig2[0] = (*(Asig12R + 0))[iETA1];
8540  par_sig2[1] = (*(Asig12R + 1))[iETA1];
8541  par_sig2[2] = (*(Asig12R + 2))[iETA1];
8542  par_sig2[3] = (*(Asig12R + 3))[iETA1];
8543  }
8544  break;
8545  //default:
8546  //return 0.0;
8547  }
8548 
8549  // Switch to 2-Station measurement if dphi is too small
8550  // box cut around Pt of 10 GeV
8551  if ((((fabs(static_cast<double>(dphi2)) < 0.004 && type != 12 && method < 25) ||
8552  (fabs(static_cast<double>(dphi2)) < 0.004 && type != 12 && type != 14 && type != 11 && method >= 25))) &&
8553  ((type >= 2 && type <= 5 && use2Stn) || (type >= 11 && use2StnDT))) {
8554  if (use2Stn) {
8555  //if(type == 12 || type == 14 || type == 11) std::cout << "mode = " << type << " dphi23 = " << dphi2 << " method = " << method << std::endl; //test
8556  if (type == 2 || type == 3)
8557  type = 6; // 1-2-3(or 4) -> 1-2
8558  if (type == 4)
8559  type = 7; // 1-3-4 -> 1-3
8560  if (type == 5)
8561  type = 8; // 2-3-4 -> 2-3
8562  Pt = Pt2Stn2012_DT(type,
8563  eta,
8564  dphi1,
8565  useBestMLH,
8566  bestLH,
8567  fr,
8568  method,
8569  int(2)); //in 3 station track there is no information to which ME1/1 or ME1/2 track belong
8570  }
8571  if (use2StnDT) {
8572  if (type == 11)
8573  type = 14; // b1-1-3 -> b1-1 for pt_method > 10
8574  //if(type == 14) type = 11;
8575  //phiSign
8576  Pt = Pt2Stn2012_DT(type,
8577  eta,
8578  dphi1,
8579  useBestMLH,
8580  bestLH,
8581  fr,
8582  method,
8583  int(2)); //in 3 station track there is no information to which ME1/1 or ME1/2 track belong
8584  }
8585  } else {
8586  //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
8587  double muPlusMaxLH = -1e9;
8588  double pt = 140;
8589  double step = 5.;
8590  double maxLH = -1e9;
8591  while (pt > 2.) {
8592  double par_phi12[1] = {dphi1};
8593  double par_phi23[1] = {dphi2};
8594  double v[1], lpt1_1;
8595  v[0] = 0;
8596  lpt1_1 = 1.;
8597  v[0] = pt;
8598  lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
8599 
8600  if (lpt1_1 > maxLH) {
8601  maxLH = lpt1_1;
8602  PTsolv = pt;
8603  }
8604 
8605  if (pt <= 100) {
8606  step = 10.0 / 4.0;
8607  }
8608  if (pt <= 50) {
8609  step = 5.0 / 4.0;
8610  }
8611  if (pt <= 20) {
8612  step = 2.0 / 4.0;
8613  }
8614  if (pt <= 10) {
8615  step = 1.0 / 4.0;
8616  }
8617  if (pt <= 5) {
8618  step = 0.5 / 4.0;
8619  }
8620 
8621  pt = pt - step;
8622  } // end while
8623  muPlusMaxLH = maxLH;
8624  //*********** end solve equation for muon plus
8625  //************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
8626  // for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
8627  double muMinusMaxLH = -1e9;
8628  dphi1 = -dphi1;
8629  dphi2 = -dphi2;
8630  pt = 140;
8631  step = 5.;
8632  maxLH = -1e9;
8633 
8634  while (pt > 2.) {
8635  double par_phi12[1] = {dphi1};
8636  double par_phi23[1] = {dphi2};
8637  double v[1], lpt1_1;
8638  v[0] = 0;
8639  lpt1_1 = 1.;
8640  v[0] = pt;
8641  lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
8642 
8643  if (lpt1_1 > maxLH) {
8644  maxLH = lpt1_1;
8645  PTsolvMinus = pt;
8646  }
8647 
8648  if (pt <= 100) {
8649  step = 10.0 / 4.0;
8650  }
8651  if (pt <= 50) {
8652  step = 5.0 / 4.0;
8653  }
8654  if (pt <= 20) {
8655  step = 2.0 / 4.0;
8656  }
8657  if (pt <= 10) {
8658  step = 1.0 / 4.0;
8659  }
8660  if (pt <= 5) {
8661  step = 0.5 / 4.0;
8662  }
8663  pt = pt - step;
8664  } // end while
8665  muMinusMaxLH = maxLH;
8666 
8667  if (useBestMLH)
8668  PTsolv = (muPlusMaxLH > muMinusMaxLH)
8669  ? PTsolv
8670  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
8671  else
8672  PTsolv = (PTsolv > PTsolvMinus)
8673  ? PTsolv
8674  : PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
8675 
8676  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
8677 
8678  PTsolv = PTsolv * 1.2; // correction to have 90% efficiency for trigger cuts
8679  if (PTsolv > 137.5)
8680  PTsolv = 137.5;
8681  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
8682  dphi1 = -dphi1; //return to correct sing dphi
8683  dphi2 = -dphi2; //return to correct sing dphi
8684  Pt = PTsolv;
8685  } // end 2 or 3 station method
8686  }
8687  }
8688  // fix overlap region high pt:
8689  if (useBOXcutDT)
8690  if (method >= 25 && (type == 12 || type == 14 || type == 11) && fabs(dphi1) < 0.003 && fabs(dphi2) < 2)
8691  Pt = 140.;
8692  // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;
8693 
8694  //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
8695  //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV
8696  float Pt_min = 2; // 2 GeV
8697 
8698  return (Pt > Pt_min) ? Pt : Pt_min;
8699 }

References AB_mu12F, AB_mu12R, AB_mu13F, AB_mu13R, AB_mu23, AB_mu24, AB_mu34, AB_mu5, AB_mu51, AB_mu52, AB_mu53, AB_rho123F, AB_rho123R, AB_rho124F, AB_rho124R, AB_rho134F, AB_rho134R, AB_rho234, AB_rho512, AB_rho513, AB_rho51B, AB_rho523, AB_rho52B, AB_rho53B, AB_sig12F, AB_sig12R, AB_sig13F, AB_sig13R, AB_sig23, AB_sig24, AB_sig34, AB_sig5, AB_sig51, AB_sig52, AB_sig53, PVValHelper::eta, etabins, Likelihood2011(), AlcaSiPixelAliHarvester0T_cff::method, pfMETCorrectionType0_cfi::par1, pfMETCorrectionType0_cfi::par2, DiDispStaMuonMonitor_cfi::pt, Pt2Stn2012_DT(), HLT_2018_cff::Pt_min, and findQualityFiles::v.

Referenced by CSCTFPtLUT::calcPt().

◆ Pt3StnChiSq()

float CSCTFPtMethods::Pt3StnChiSq ( int  type,
float  eta,
int  dphi1,
int  dphi2,
int  fr 
) const

Definition at line 9948 of file CSCTFPtMethods.cc.

9948  {
9949  float diff, min, ptmin, ptmax;
9950  float mypt = 0.0;
9951 
9952  int dphi1copy = dphi1, dphi2copy = dphi2;
9953 
9954  if (type < 4 || type > 5) {
9955  // std::cout << "PtParams: illegal track type for Chi-square method" << std::endl;
9956  edm::LogError("CSCTFPtMethods::Pt3StnChiSq()") << "Illegal track type for Chi-square method";
9957  return 0.;
9958  }
9959 
9960  // flip sign
9961  //dphi1 = -dphi1;
9962  //dphi2 = -dphi2;
9963 
9964  //determine which eta bin muon falls into
9965  int i = 0;
9966  for (i = 0; i < 15; i++) {
9967  if (eta >= etabins[i] && eta < etabins[i + 1])
9968  break;
9969  }
9970  if (i == 15) {
9971  //std::cout<<"muon not within any eta range";
9972  edm::LogWarning("CSCTFPtMethods::Pt3StnChiSq()") << "Muon not within any eta range";
9973  if (eta < etabins[0]) {
9974  eta = etabins[0];
9975  i = 0;
9976  } else if (eta >= etabins[15]) {
9977  eta = etabins[15];
9978  i = 15;
9979  } else
9980  exit(0);
9981  }
9982 
9983  bool bCallOldMethod = false;
9984 
9985  if (abs(dphi2) < 32)
9986  dphi2 = 0; //dphi2=dphi23 or dphi24
9987 
9988  //sta1-2-3, dphi1=dphi12, dphi2=dphi23
9989  if (type == 4) {
9990  if (fr == 0) {
9991  //advance past bins in array w/ default values
9992  //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
9993  int j = 0; //start from 1st column, j = 0
9994  while (
9995  ((dphifr0[0][i][j] == -1 && sigmafr0[0][i][j] == 1) || (dphifr0[2][i][j] == -1 && sigmafr0[2][i][j] == 1)) &&
9996  j != 28)
9997  j++;
9998  if (j == 28) {
9999  // std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;
10000  edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()") << "Every entry in row is default";
10001  // exit(0); //normal termination
10002  bCallOldMethod = true;
10003  }
10004 
10005  if (!bCallOldMethod) {
10006  //set min, ptmin, ptmax to first bin
10007  //in row that is not default
10008  min = 1.5625 * ((pow((dphi1 - dphifr0[0][i][j]), 2) / pow(sigmafr0[0][i][j], 2)) +
10009  (pow((dphi2 - dphifr0[2][i][j]), 2) / pow(sigmafr0[2][i][j], 2)) -
10010  (1.2 * (dphi1 - dphifr0[0][i][j]) * (dphi2 - dphifr0[2][i][j]) /
10011  (sigmafr0[0][i][j] * sigmafr0[2][i][j]))); //calculate chi square
10012  ptmin = ptbins[j];
10013  ptmax = ptbins[j + 1];
10014 
10015  //loop through all pt bins. assign pt of bin w/ least diff
10016  //do not include default bins in calculation
10017  for (int k = j; k < 28; k++) {
10018  if ((dphifr0[0][i][k] != -1 || sigmafr0[0][i][k] != 1) &&
10019  (dphifr0[2][i][k] != -1 || sigmafr0[2][i][k] != 1)) {
10020  diff = 1.5625 * ((pow((dphi1 - dphifr0[0][i][k]), 2) / pow(sigmafr0[0][i][k], 2)) +
10021  (pow((dphi2 - dphifr0[2][i][k]), 2) / pow(sigmafr0[2][i][k], 2)) -
10022  (1.2 * (dphi1 - dphifr0[0][i][k]) * (dphi2 - dphifr0[2][i][k]) /
10023  (sigmafr0[0][i][k] * sigmafr0[2][i][k])));
10024  if (diff < min) {
10025  min = diff;
10026  ptmin = ptbins[k];
10027  ptmax = ptbins[k + 1];
10028  }
10029  }
10030  }
10031  mypt = (ptmin + ptmax) / 2;
10032  }
10033  }
10034 
10035  if (fr == 1) {
10036  //advance past bins in array w/ default values
10037  //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
10038  int j = 0; //start from 1st column, j = 0
10039  while (
10040  ((dphifr1[0][i][j] == -1 && sigmafr1[0][i][j] == 1) || (dphifr1[2][i][j] == -1 && sigmafr1[2][i][j] == 1)) &&
10041  j != 28)
10042  j++;
10043  if (j == 28) {
10044  // std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;
10045  edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()") << "Every entry in row is default";
10046  // exit(0); //normal termination
10047  bCallOldMethod = true;
10048  }
10049 
10050  if (!bCallOldMethod) {
10051  //set min, ptmin, ptmax to first bin
10052  //in row that is not default
10053  min = 1.5625 * ((pow((dphi1 - dphifr1[0][i][j]), 2) / pow(sigmafr1[0][i][j], 2)) +
10054  (pow((dphi2 - dphifr1[2][i][j]), 2) / pow(sigmafr1[2][i][j], 2)) -
10055  (1.2 * (dphi1 - dphifr1[0][i][j]) * (dphi2 - dphifr1[2][i][j]) /
10056  (sigmafr1[0][i][j] * sigmafr1[2][i][j]))); //calculate chi square
10057  ptmin = ptbins[j];
10058  ptmax = ptbins[j + 1];
10059 
10060  //loop through all pt bins. assign pt of bin w/ least diff
10061  //do not include default bins in calculation
10062  for (int k = j; k < 28; k++) {
10063  if ((dphifr1[0][i][k] != -1 || sigmafr1[0][i][k] != 1) &&
10064  (dphifr1[2][i][k] != -1 || sigmafr1[2][i][k] != 1)) {
10065  diff = 1.5625 * ((pow((dphi1 - dphifr1[0][i][k]), 2) / pow(sigmafr1[0][i][k], 2)) +
10066  (pow((dphi2 - dphifr1[2][i][k]), 2) / pow(sigmafr1[2][i][k], 2)) -
10067  (1.2 * (dphi1 - dphifr1[0][i][k]) * (dphi2 - dphifr1[2][i][k]) /
10068  (sigmafr1[0][i][k] * sigmafr1[2][i][k])));
10069  if (diff < min) {
10070  min = diff;
10071  ptmin = ptbins[k];
10072  ptmax = ptbins[k + 1];
10073  }
10074  }
10075  mypt = (ptmin + ptmax) / 2;
10076  }
10077  }
10078  }
10079  }
10080 
10081  //sta1-2-4, dphi1=dphi12, dphi2=dphi24
10082  if (type == 5) {
10083  if (fr == 0) {
10084  //advance past bins in array w/ default values
10085  //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
10086  int j = 0; //start from 1st column, j = 0
10087  while (
10088  ((dphifr0[0][i][j] == -1 && sigmafr0[0][i][j] == 1) || (dphifr0[3][i][j] == -1 && sigmafr0[3][i][j] == 1)) &&
10089  j != 28)
10090  j++;
10091  if (j == 28) {
10092  // std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;
10093  edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()") << "Every entry in row is default";
10094  // exit(0); //normal termination
10095  bCallOldMethod = true;
10096  }
10097 
10098  if (!bCallOldMethod) {
10099  //set min, ptmin, ptmax to first bin
10100  //in row that is not default
10101  min = 1.5625 * ((pow((dphi1 - dphifr0[0][i][j]), 2) / pow(sigmafr0[0][i][j], 2)) +
10102  (pow((dphi2 - dphifr0[3][i][j]), 2) / pow(sigmafr0[3][i][j], 2)) -
10103  (1.2 * (dphi1 - dphifr0[0][i][j]) * (dphi2 - dphifr0[3][i][j]) /
10104  (sigmafr0[0][i][j] * sigmafr0[3][i][j]))); //calculate chi square
10105  ptmin = ptbins[j];
10106  ptmax = ptbins[j + 1];
10107 
10108  //loop through all pt bins. assign pt of bin w/ least diff
10109  //do not include default bins in calculation
10110  for (int k = j; k < 28; k++) {
10111  if ((dphifr0[0][i][k] != -1 || sigmafr0[0][i][k] != 1) &&
10112  (dphifr0[3][i][k] != -1 || sigmafr0[3][i][k] != 1)) {
10113  diff = 1.5625 * ((pow((dphi1 - dphifr0[0][i][k]), 2) / pow(sigmafr0[0][i][k], 2)) +
10114  (pow((dphi2 - dphifr0[3][i][k]), 2) / pow(sigmafr0[3][i][k], 2)) -
10115  (1.2 * (dphi1 - dphifr0[0][i][k]) * (dphi2 - dphifr0[3][i][k]) /
10116  (sigmafr0[0][i][k] * sigmafr0[3][i][k])));
10117  if (diff < min) {
10118  min = diff;
10119  ptmin = ptbins[k];
10120  ptmax = ptbins[k + 1];
10121  }
10122  }
10123  }
10124  mypt = (ptmin + ptmax) / 2;
10125  }
10126  }
10127 
10128  if (fr == 1) {
10129  //advance past bins in array w/ default values
10130  //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
10131  int j = 0; //start from 1st column, j = 0
10132  while (
10133  ((dphifr1[0][i][j] == -1 && sigmafr1[0][i][j] == 1) || (dphifr1[3][i][j] == -1 && sigmafr1[3][i][j] == 1)) &&
10134  j != 28)
10135  j++;
10136  if (j == 28) {
10137  // std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;
10138  edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()") << "Every entry in row is default";
10139  // exit(0); //normal termination
10140  bCallOldMethod = true;
10141  }
10142 
10143  if (!bCallOldMethod) {
10144  //set min, ptmin, ptmax to first bin
10145  //in row that is not default
10146  min = 1.5625 * ((pow((dphi1 - dphifr1[0][i][j]), 2) / pow(sigmafr1[0][i][j], 2)) +
10147  (pow((dphi2 - dphifr1[3][i][j]), 2) / pow(sigmafr1[3][i][j], 2)) -
10148  (1.2 * (dphi1 - dphifr1[0][i][j]) * (dphi2 - dphifr1[3][i][j]) /
10149  (sigmafr1[0][i][j] * sigmafr1[3][i][j]))); //calculate chi square
10150  ptmin = ptbins[j];
10151  ptmax = ptbins[j + 1];
10152 
10153  //loop through all pt bins. assign pt of bin w/ least diff
10154  //do not include default bins in calculation
10155  for (int k = j; k < 28; k++) {
10156  if ((dphifr1[0][i][k] != -1 || sigmafr1[0][i][k] != 1) &&
10157  (dphifr1[3][i][k] != -1 || sigmafr1[3][i][k] != 1)) {
10158  diff = 1.5625 * ((pow((dphi1 - dphifr1[0][i][k]), 2) / pow(sigmafr1[0][i][k], 2)) +
10159  (pow((dphi2 - dphifr1[3][i][k]), 2) / pow(sigmafr1[3][i][k], 2)) -
10160  (1.2 * (dphi1 - dphifr1[0][i][k]) * (dphi2 - dphifr1[3][i][k]) /
10161  (sigmafr1[0][i][k] * sigmafr1[3][i][k])));
10162  if (diff < min) {
10163  min = diff;
10164  ptmin = ptbins[k];
10165  ptmax = ptbins[k + 1];
10166  }
10167  }
10168  }
10169  mypt = (ptmin + ptmax) / 2;
10170  }
10171  }
10172  }
10173 
10174  if (bCallOldMethod) {
10175  float dphi12R = (static_cast<float>(dphi1copy)) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
10176  float dphi23R = (static_cast<float>(dphi2copy)) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
10177  // change defintion of track type to old method
10178  mypt = Pt3Stn(type - 3, eta, dphi12R, dphi23R, fr);
10179  }
10180  return mypt;
10181 }

References funct::abs(), change_name::diff, dphifr0, dphifr1, PVValHelper::eta, etabins, beamvalidation::exit(), mps_fire::i, dqmiolumiharvest::j, dqmdumpme::k, min(), funct::pow(), Pt3Stn(), ptbins, muonTiming_cfi::ptmax, ptmin, CSCTFConstants::SECTOR_RAD, sigmafr0, and sigmafr1.

Referenced by CSCTFPtLUT::calcPt(), and Pt3StnHybrid().

◆ Pt3StnHybrid()

float CSCTFPtMethods::Pt3StnHybrid ( int  type,
float  eta,
int  dphi1,
int  dphi2,
int  fr 
) const

Definition at line 10195 of file CSCTFPtMethods.cc.

10195  {
10196  float mypt = 0.0;
10197 
10198  mypt = Pt3StnChiSq(type, eta, dphi1, dphi2, fr);
10199  if (mypt >= 8.0) {
10200  float dphi12R = (static_cast<float>(dphi1)) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
10201  float dphi23R = (static_cast<float>(dphi2)) / static_cast<float>(1 << 12) * CSCTFConstants::SECTOR_RAD;
10202  // change defintion of track type to old method
10203  mypt = Pt3Stn(type - 3, eta, dphi12R, dphi23R, fr);
10204  }
10205 
10206  return mypt;
10207 }

References PVValHelper::eta, Pt3Stn(), Pt3StnChiSq(), and CSCTFConstants::SECTOR_RAD.

Referenced by CSCTFPtLUT::calcPt().

◆ PtEff90()

float CSCTFPtMethods::PtEff90 ( float  pt,
float  eta,
int  mode 
) const

Legacy Pt90 calculation function

Definition at line 10233 of file CSCTFPtMethods.cc.

10233  {
10234  // set pT resolution
10235  float c;
10236  switch (mode) {
10237  // 3-stn with ME1
10238  case 2:
10239  case 3:
10240  case 4:
10241  // leave as 2 Stn for now:
10242  // if (eta < 2.0)
10243  // c = 0.2;
10244  // else
10245  // c = 0.2 + (eta-2.0)*0.5;
10246  // break;
10247  // 2-stn with ME1
10248  case 6:
10249  case 7:
10250  // c=(-.2999 * (eta*eta*eta) + 2.030 * (eta*eta) - 4.235 * eta + 3.024)+0.02;
10251  // Try just fixed value from fits to Pt turn-on curves
10252  c = 0.3;
10253  break;
10254  // 2 or 3 stn without ME1
10255  case 5:
10256  case 8:
10257  case 9:
10258  c = (-2.484 * (eta * eta * eta) + 14.43 * (eta * eta) - 27.66 * eta + 18.47) * .72;
10259  break;
10260  case 10:
10261  c = 2.0;
10262  break;
10263  // MB1 tracks
10264  case 11:
10265  case 12:
10266  case 13:
10267  case 14:
10268  case 15:
10269  c = 0.3;
10270  break;
10271  default:
10272  c = 0.0;
10273  };
10274  // Calculation of 90% threshold from 50% one, assuming Gaussian resolution
10275  // 90% of Gaussian area extends to 1.28*sigma
10276  if (c > 0.78)
10277  c = 0.78;
10278  // return pt/(1.0 - 1.28*c);
10279  // Let's go back to old empirical method:
10280  return pt * (1.0 + 1.28 * c);
10281 }

References HltBtagPostValidation_cff::c, PVValHelper::eta, ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, and DiDispStaMuonMonitor_cfi::pt.

Member Data Documentation

◆ A_mu12Front

const double CSCTFPtMethods::A_mu12Front
static

parameters for Anna's method 2010

Definition at line 104 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu12Rare

const double CSCTFPtMethods::A_mu12Rare
static

Definition at line 111 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu13Front

const double CSCTFPtMethods::A_mu13Front
static

Definition at line 106 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu13Rare

const double CSCTFPtMethods::A_mu13Rare
static

Definition at line 113 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu14Front

const double CSCTFPtMethods::A_mu14Front
static

Definition at line 108 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ A_mu14Rare

const double CSCTFPtMethods::A_mu14Rare
static

Definition at line 115 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ A_mu23

const double CSCTFPtMethods::A_mu23
static

Definition at line 125 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu24

const double CSCTFPtMethods::A_mu24
static

Definition at line 127 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu34

const double CSCTFPtMethods::A_mu34
static

Definition at line 129 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu51

const double CSCTFPtMethods::A_mu51
static
Initial value:
= {
{-0.30205049387075266765, -0.19825408793401680385, -0.10259572704977054647, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0.39029489236430164878, -0.99999999999950184293, -0.99999999991334242999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{-0.0082240407388394932281, -0.008489109806000837144, -0.0096722775887914218262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{1.4884036315353963431, -2.8577685774096766025, -3.1123617094902709113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 118 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu52

const double CSCTFPtMethods::A_mu52
static
Initial value:
= {
{0, -0.31934822512291188845, -0.24671378669106625026, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -0.99999999999980493381, -0.99999999999999167333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -0.0073087160764979198016, -0.0070564603063957591009, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -5.0384103551069152616, -5.6736067150957572025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 120 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_mu53

const double CSCTFPtMethods::A_mu53
static
Initial value:
= {{0, 0, -0.2362111548723856147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.58675988413655344456, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.0074765217760223816323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1.392910355886719076, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 122 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ A_rho123FrontCSCTF

const double CSCTFPtMethods::A_rho123FrontCSCTF
static

Definition at line 140 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho123RareCSCTF

const double CSCTFPtMethods::A_rho123RareCSCTF
static

Definition at line 144 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho124FrontCSCTF

const double CSCTFPtMethods::A_rho124FrontCSCTF
static

Definition at line 141 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho124RareCSCTF

const double CSCTFPtMethods::A_rho124RareCSCTF
static

Definition at line 145 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho134FrontCSCTF

const double CSCTFPtMethods::A_rho134FrontCSCTF
static

Definition at line 142 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho134RareCSCTF

const double CSCTFPtMethods::A_rho134RareCSCTF
static

Definition at line 146 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho234CSCTF

const double CSCTFPtMethods::A_rho234CSCTF
static

Definition at line 148 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho512

const double CSCTFPtMethods::A_rho512
static
Initial value:
= {
{0, -1.3270643828972497058, -0.40947841616853780655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 2.025201781399017964, 0.58089265964690128818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -0.73760841017029699085, -0.060534778841327505083, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.077735281441295198124, -0.017952905037001157251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.005510074476231469412, 0.26061236699994605459, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

DT correlation.

Definition at line 150 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho513

const double CSCTFPtMethods::A_rho513
static
Initial value:
= {{0, 0, 0.18116780706048338234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.10826967270771679919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.033488168126484141318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.0040355575386412517735, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.4934185910548575249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 151 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_rho523

const double CSCTFPtMethods::A_rho523
static
Initial value:
= {{0, 0, -1.9080285362497979573, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 3.2540326879755121503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -1.2246911037569772063, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.13624286476587679773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.24605674796105389546, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 152 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig12Front

const double CSCTFPtMethods::A_sig12Front
static

Definition at line 105 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig12Rare

const double CSCTFPtMethods::A_sig12Rare
static

Definition at line 112 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig13Front

const double CSCTFPtMethods::A_sig13Front
static

Definition at line 107 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig13Rare

const double CSCTFPtMethods::A_sig13Rare
static

Definition at line 114 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig14Front

const double CSCTFPtMethods::A_sig14Front
static

Definition at line 109 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ A_sig14Rare

const double CSCTFPtMethods::A_sig14Rare
static

Definition at line 116 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ A_sig23

const double CSCTFPtMethods::A_sig23
static

Definition at line 126 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig24

const double CSCTFPtMethods::A_sig24
static

Definition at line 128 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig34

const double CSCTFPtMethods::A_sig34
static

Definition at line 130 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig51

const double CSCTFPtMethods::A_sig51
static
Initial value:
= {
{0.013883456707760059509, 0.011790507803505339071, 2.4609763012162222395e-15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0.33358000572065177325, 0.19837044850549298558, 0.21329994540971500272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0.0026062373849642236565, 0.0026272077989507240485, 0.0025484832112267707081, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 119 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig52

const double CSCTFPtMethods::A_sig52
static
Initial value:
= {
{0, 0.021754484285831678786, 0.0079969520010703034479, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.31662456185786602703, 0.25320436095234394314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.0026259453672001680305, 0.0027192866432913216992, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 121 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2012(), Pt3Stn2010(), and Pt3Stn2012().

◆ A_sig53

const double CSCTFPtMethods::A_sig53
static
Initial value:
= {{0, 0, 0.010082748878246528337, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.37397019929001934502, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.002686637834141298968, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 123 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

◆ AB_mu12F

const double CSCTFPtMethods::AB_mu12F
static

Definition at line 62 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu12FME11

const double CSCTFPtMethods::AB_mu12FME11
static

Definition at line 43 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu12FnoME11

const double CSCTFPtMethods::AB_mu12FnoME11
static

parameters for Anna's method 2011

Definition at line 37 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu12R

const double CSCTFPtMethods::AB_mu12R
static

Definition at line 65 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu12RME11

const double CSCTFPtMethods::AB_mu12RME11
static

Definition at line 46 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu12RnoME11

const double CSCTFPtMethods::AB_mu12RnoME11
static

Definition at line 40 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu13F

const double CSCTFPtMethods::AB_mu13F
static

Definition at line 63 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu13FME11

const double CSCTFPtMethods::AB_mu13FME11
static

Definition at line 44 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu13FnoME11

const double CSCTFPtMethods::AB_mu13FnoME11
static

Definition at line 38 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu13R

const double CSCTFPtMethods::AB_mu13R
static

Definition at line 66 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu13RME11

const double CSCTFPtMethods::AB_mu13RME11
static

Definition at line 47 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu13RnoME11

const double CSCTFPtMethods::AB_mu13RnoME11
static

Definition at line 41 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14F

const double CSCTFPtMethods::AB_mu14F
static

Definition at line 64 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14FME11

const double CSCTFPtMethods::AB_mu14FME11
static

Definition at line 45 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14FnoME11

const double CSCTFPtMethods::AB_mu14FnoME11
static

Definition at line 39 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14R

const double CSCTFPtMethods::AB_mu14R
static

Definition at line 67 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14RME11

const double CSCTFPtMethods::AB_mu14RME11
static

Definition at line 48 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu14RnoME11

const double CSCTFPtMethods::AB_mu14RnoME11
static

Definition at line 42 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_mu23

const double CSCTFPtMethods::AB_mu23
static

Definition at line 68 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu24

const double CSCTFPtMethods::AB_mu24
static

Definition at line 69 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu34

const double CSCTFPtMethods::AB_mu34
static

Definition at line 70 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu5

const double CSCTFPtMethods::AB_mu5
static

Definition at line 74 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu51

const double CSCTFPtMethods::AB_mu51
static

Definition at line 71 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu52

const double CSCTFPtMethods::AB_mu52
static
Initial value:
= {
{0, 0.28757434234141143747, 0.22290303793570814817, 0.17273536730279337448, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -0.42706501927164292054, -0.32770564806566382376, -0.24329418737097086023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -1.4010615867360699891e-05, -0.00025119211587389166183, 0.0004052999487437024392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1.3739531719045416924, 1.2264113571191062046, 1.5786429063982712062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 72 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_mu53

const double CSCTFPtMethods::AB_mu53
static
Initial value:
= {
{0, 0, 0.26147063359849342934, 0.21941755760197284575, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.62831662471165483641, -0.5360020970162280296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -0.00054456170542904129128, -5.2823850021272572564e-05, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.90160457604797583642, 0.89939017343329996645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 73 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho123F

const double CSCTFPtMethods::AB_rho123F
static

Definition at line 90 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho123R

const double CSCTFPtMethods::AB_rho123R
static

Definition at line 93 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho124F

const double CSCTFPtMethods::AB_rho124F
static

Definition at line 91 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho124R

const double CSCTFPtMethods::AB_rho124R
static

Definition at line 94 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho134F

const double CSCTFPtMethods::AB_rho134F
static

Definition at line 92 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho134R

const double CSCTFPtMethods::AB_rho134R
static

Definition at line 95 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho234

const double CSCTFPtMethods::AB_rho234
static

Definition at line 96 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho512

const double CSCTFPtMethods::AB_rho512
static
Initial value:
= {
{0, -0.10435343690000213612, 0.057141083389519162217, 0.023329220607928163878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.061466220874112284522, -0.001239563289620342415, -0.028051900619679361049, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 97 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho513

const double CSCTFPtMethods::AB_rho513
static
Initial value:
= {
{0, 0, -0.089534856488077518843, -0.084337975857153926751, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.058028755308100914145, 0.033446616671726735193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 98 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho51B

const double CSCTFPtMethods::AB_rho51B
static

Definition at line 100 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho523

const double CSCTFPtMethods::AB_rho523
static
Initial value:
= {
{0, -0.48242311538441046137, 0.25779875833780019345, -0.45638836512748476304, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.28941463846496195966, -0.15113497713160561897, 0.36832995181674366147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 99 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho52B

const double CSCTFPtMethods::AB_rho52B
static
Initial value:
= {
{0, -7.746830214751867949, -0.46812267787622985349, -0.41343591928047368489, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 12.920758877131683917, 2.1193678084821674368, 0.85191889903041662091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -7.1168839095051934507, -2.1008659109588445624, -0.69884960118479577673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1.239800569290119725, 0.49720027595717164459, 0.15699136302342500682, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 1.2582151000263612772, 1.2238929501776998343, 0.88233142702097189236, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 101 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_rho53B

const double CSCTFPtMethods::AB_rho53B
static
Initial value:
= {
{0, 0, 105.35018363918895545, 62.071727282426813588, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -180.24672833591944254, -170.8283169841847382, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 109.89608697213377297, 171.57904987557179766, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -25.005328082184355765, -60.507830469988306277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 3.0701361165201541681, 4.0540449945183194558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 102 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig12F

const double CSCTFPtMethods::AB_sig12F
static

Definition at line 76 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig12FME11

const double CSCTFPtMethods::AB_sig12FME11
static

Definition at line 55 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig12FnoME11

const double CSCTFPtMethods::AB_sig12FnoME11
static

Definition at line 49 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig12R

const double CSCTFPtMethods::AB_sig12R
static

Definition at line 79 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig12RME11

const double CSCTFPtMethods::AB_sig12RME11
static

Definition at line 58 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig12RnoME11

const double CSCTFPtMethods::AB_sig12RnoME11
static

Definition at line 52 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig13F

const double CSCTFPtMethods::AB_sig13F
static

Definition at line 77 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig13FME11

const double CSCTFPtMethods::AB_sig13FME11
static

Definition at line 56 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig13FnoME11

const double CSCTFPtMethods::AB_sig13FnoME11
static

Definition at line 50 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig13R

const double CSCTFPtMethods::AB_sig13R
static

Definition at line 80 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig13RME11

const double CSCTFPtMethods::AB_sig13RME11
static

Definition at line 59 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig13RnoME11

const double CSCTFPtMethods::AB_sig13RnoME11
static

Definition at line 53 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14F

const double CSCTFPtMethods::AB_sig14F
static

Definition at line 78 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14FME11

const double CSCTFPtMethods::AB_sig14FME11
static

Definition at line 57 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14FnoME11

const double CSCTFPtMethods::AB_sig14FnoME11
static

Definition at line 51 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14R

const double CSCTFPtMethods::AB_sig14R
static

Definition at line 81 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14RME11

const double CSCTFPtMethods::AB_sig14RME11
static

Definition at line 60 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig14RnoME11

const double CSCTFPtMethods::AB_sig14RnoME11
static

Definition at line 54 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

◆ AB_sig23

const double CSCTFPtMethods::AB_sig23
static

Definition at line 82 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig24

const double CSCTFPtMethods::AB_sig24
static

Definition at line 83 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig34

const double CSCTFPtMethods::AB_sig34
static

Definition at line 84 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig5

const double CSCTFPtMethods::AB_sig5
static

Definition at line 88 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig51

const double CSCTFPtMethods::AB_sig51
static

Definition at line 85 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig52

const double CSCTFPtMethods::AB_sig52
static
Initial value:
= {
{0, 0.015190485414726475483, 0.029402840059661459332, -0.03788341461455211473, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.57880911770054299659, 0.086708840790683153199, 0.96143975820959226564, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0.0017431812547872745089, 0.0016439557621822475496, 0.0024073931799825833838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, -1.4962480474138397657, 0.43719757342237014486, -2.5570410154645890621, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 86 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AB_sig53

const double CSCTFPtMethods::AB_sig53
static
Initial value:
= {
{0, 0, 0.0048807272389305694088, 0.072311934401593946919, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.58247011082391897396, -0.031665576145842380673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0.0019289670515048294459, -0.00057867999502623438789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, -1.1919870686056455167, 1.8999999999981564969, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}

Definition at line 87 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), Pt2Stn2012_DT(), Pt3Stn2011(), and Pt3Stn2012_DT().

◆ AkHighEta_Fit1

const float CSCTFPtMethods::AkHighEta_Fit1
static
Initial value:
= {
{0.6275, -0.2133, 0.0, 0.0},
{-1.124, 2.492, -1.347, 0.2204},
{0.5214, -0.7536, 0.3913, -.06739},
{1.394, -1.886, 0.8809, -0.1369},
{-0.5519E-02, 0.8496E-02, 0.0, 0.0},
{0.6644, -0.2312, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
}

Definition at line 29 of file CSCTFPtMethods.h.

Referenced by Pt3Stn().

◆ AkHighEta_Fit2

const float CSCTFPtMethods::AkHighEta_Fit2
static
Initial value:
= {
{0.6425, -0.2308, 0.0, 0.0},
{0.6923, -0.2336, 0.0, 0.0},
{-0.7147, .01117, -0.5255E-04, 0.7991E-07},
{-1.377, 2.150, -1.046, 0.1667},
{-.02974, .04816, -.02105, .003640},
{0.6425, -0.2308, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
}

Definition at line 21 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

◆ AkLowEta_Fit1

const float CSCTFPtMethods::AkLowEta_Fit1
static
Initial value:
= {
{3.900, -8.391, 6.062, -1.436},
{8.03602, -17.5355, 12.7725, -3.0616},
{0.8372, -2.220, 1.908, -0.5233},
{-0.04389, 0.05174, 0.0, 0.0},
{-0.5519E-02, 0.8496E-02, 0.0, 0.0},
{-4.228, 8.546, -5.617, 1.235},
{0.80, -0.54, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
}

The three station pt measument only needs a one constant fit, but the dependence on eta is still there dphi = A/pt

Definition at line 28 of file CSCTFPtMethods.h.

Referenced by Pt3Stn().

◆ AkLowEta_Fit2

const float CSCTFPtMethods::AkLowEta_Fit2
static
Initial value:
= {
{-0.6131, 0.6870, 0.0285, -0.1147},
{8.03602, -17.5355, 12.7725, -3.0616},
{5.765, -12.85, 9.543, -2.345},
{-4.068, 8.254, -5.491, 1.214},
{-.02974, .04816, -.02105, .003640},
{-3.358, 7.038, -4.766, 1.079},
{0.80, -0.54, 0.0, 0.0},
{0.80, -0.54, 0.0, 0.0},
}

First is the parameterizations of Acosta/McDonald The two station pt measument needs a two constant fit with a break in the detector depending on what detectors it hit (eta) dphi = A/pt + B/(pt^2)

Definition at line 20 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

◆ BkHighEta_Fit2

const float CSCTFPtMethods::BkHighEta_Fit2
static
Initial value:
= {
{14.79, -21.10, 10.16, -1.623},
{70.67, -105.7, 52.49, -8.631},
{15.70, -23.94, 11.89, -1.939},
{17.18, -26.38, 13.13, -2.139},
{0.0, 0.0, 0.0, 0.0},
{14.79, -21.10, 10.16, -1.623},
{0.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 0.0, 0.0}
}

Definition at line 24 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

◆ BkLowEta_Fit2

const float CSCTFPtMethods::BkLowEta_Fit2
static
Initial value:
= {
{7.0509, -7.3282, -0.1465, 1.308},
{0.0, 0.0, 0.0, 0.0},
{-38.55, 82.95, -59.66, 14.29},
{20.71, -45.34, 32.05, -7.415},
{0.0, 0.0, 0.0, 0.0},
{-0.6167, 0.08421, 0.2454, 0.0},
{0.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 0.0, 0.0}
}

Definition at line 23 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

◆ dphifr0

const float CSCTFPtMethods::dphifr0
static

Definition at line 194 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

◆ dphifr1

const float CSCTFPtMethods::dphifr1
static

Definition at line 195 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

◆ etabins

const float CSCTFPtMethods::etabins
static
Initial value:
= {
0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4}

Definition at line 193 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2Stn2011(), Pt2Stn2012(), Pt2Stn2012_DT(), Pt2StnChiSq(), Pt3Stn2010(), Pt3Stn2011(), Pt3Stn2012(), Pt3Stn2012_DT(), and Pt3StnChiSq().

◆ FRCorrHighEta

const float CSCTFPtMethods::FRCorrHighEta
static
Initial value:
= {
{0.966, 1.176},
{0.966, 1.176},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0}
}

Definition at line 34 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

◆ FRCorrLowEta

const float CSCTFPtMethods::FRCorrLowEta
static
Initial value:
= {
{1.30, 1.0},
{1.30, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0},
{1.0, 1.0}
}

Corrections for ME1 F/R bit

Definition at line 33 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

◆ kGlobalScaleFactor

const float CSCTFPtMethods::kGlobalScaleFactor = 1.36
static

Definition at line 31 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

◆ ptbins

const float CSCTFPtMethods::ptbins
static
Initial value:
= {2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0,
10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 25.0, 30.0, 35.0, 40.0,
45.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 120.0, 140.0}

Second are the parameterizations of Acosta/Yeh

Definition at line 192 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

◆ sigmafr0

const float CSCTFPtMethods::sigmafr0
static

Definition at line 196 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

◆ sigmafr1

const float CSCTFPtMethods::sigmafr1
static

Definition at line 197 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

◆ trigger_scale

const L1MuTriggerPtScale* CSCTFPtMethods::trigger_scale
private

Definition at line 223 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), Pt2Stn2010(), Pt2Stn2012(), Pt3Stn(), Pt3Stn2010(), and Pt3Stn2012().

CSCTFPtMethods::AB_sig14FME11
static const double AB_sig14FME11[4][15]
Definition: CSCTFPtMethods.h:57
change_name.diff
diff
Definition: change_name.py:13
CSCTFPtMethods::AB_mu12RnoME11
static const double AB_mu12RnoME11[4][15]
Definition: CSCTFPtMethods.h:40
CSCTFPtMethods::kGlobalScaleFactor
static const float kGlobalScaleFactor
Definition: CSCTFPtMethods.h:31
CSCTFPtMethods::kME2andMB2
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::A_sig12Rare
static const double A_sig12Rare[3][15]
Definition: CSCTFPtMethods.h:112
CSCTFPtMethods::Pt3Stn
float Pt3Stn(int type, float eta, float dphi1, float dphi2, int fr=-1) const
Definition: CSCTFPtMethods.cc:5218
CSCTFPtMethods::A_rho134FrontCSCTF
static const double A_rho134FrontCSCTF[5][15]
Definition: CSCTFPtMethods.h:142
CSCTFPtMethods::A_mu34
static const double A_mu34[4][15]
Definition: CSCTFPtMethods.h:129
CSCTFPtMethods::AB_mu13FME11
static const double AB_mu13FME11[4][15]
Definition: CSCTFPtMethods.h:44
CSCTFPtMethods::A_sig13Front
static const double A_sig13Front[3][15]
Definition: CSCTFPtMethods.h:107
mps_fire.i
i
Definition: mps_fire.py:355
CSCTFPtMethods::A_mu13Rare
static const double A_mu13Rare[4][15]
Definition: CSCTFPtMethods.h:113
CSCTFPtMethods::A_mu23
static const double A_mu23[4][15]
Definition: CSCTFPtMethods.h:125
CSCTFPtMethods::A_mu14Front
static const double A_mu14Front[4][15]
Definition: CSCTFPtMethods.h:108
CSCTFPtMethods::A_mu53
static const double A_mu53[4][15]
Definition: CSCTFPtMethods.h:122
CSCTFPtMethods::AB_rho523
static const double AB_rho523[5][15]
Definition: CSCTFPtMethods.h:99
CSCTFPtMethods::AB_sig12RnoME11
static const double AB_sig12RnoME11[4][15]
Definition: CSCTFPtMethods.h:52
CSCTFPtMethods::Pt2StnChiSq
float Pt2StnChiSq(int type, float eta, int dphi, int fr) const
Definition: CSCTFPtMethods.cc:9825
CSCTFPtMethods::A_rho512
static const double A_rho512[5][15]
DT correlation.
Definition: CSCTFPtMethods.h:150
CSCTFPtMethods::A_sig23
static const double A_sig23[3][15]
Definition: CSCTFPtMethods.h:126
CSCTFPtMethods::AB_sig13R
static const double AB_sig13R[4][15]
Definition: CSCTFPtMethods.h:80
step
step
Definition: StallMonitor.cc:94
CSCTFPtMethods::A_rho513
static const double A_rho513[5][15]
Definition: CSCTFPtMethods.h:151
CSCTFPtMethods::A_mu24
static const double A_mu24[4][15]
Definition: CSCTFPtMethods.h:127
CSCTFPtMethods::AkHighEta_Fit2
static const float AkHighEta_Fit2[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:21
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
min
T min(T a, T b)
Definition: MathUtil.h:58
multPhiCorr_741_25nsDY_cfi.fx
fx
Definition: multPhiCorr_741_25nsDY_cfi.py:9
CSCTFPtMethods::AB_sig23
static const double AB_sig23[4][15]
Definition: CSCTFPtMethods.h:82
CSCTFPtMethods::AB_mu14F
static const double AB_mu14F[4][15]
Definition: CSCTFPtMethods.h:64
gather_cfg.cout
cout
Definition: gather_cfg.py:144
AlcaSiPixelAliHarvester0T_cff.method
method
Definition: AlcaSiPixelAliHarvester0T_cff.py:41
CSCTFPtMethods::AB_sig14RnoME11
static const double AB_sig14RnoME11[4][15]
Definition: CSCTFPtMethods.h:54
CSCTFPtMethods::AB_mu12FnoME11
static const double AB_mu12FnoME11[4][15]
Definition: CSCTFPtMethods.h:37
CSCTFPtMethods::AB_mu14RnoME11
static const double AB_mu14RnoME11[4][15]
Definition: CSCTFPtMethods.h:42
CSCTFPtMethods::A_sig24
static const double A_sig24[3][15]
Definition: CSCTFPtMethods.h:128
ALCARECOPromptCalibProdSiPixelAli0T_cff.mode
mode
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:96
edm::LogInfo
Definition: MessageLogger.h:254
CSCTFPtMethods::AB_mu34
static const double AB_mu34[4][15]
Definition: CSCTFPtMethods.h:70
CSCTFPtMethods::Pt2Stn2010
float Pt2Stn2010(int type, float eta, float dphi, int fr=-1, int method=11) const
Definition: CSCTFPtMethods.cc:5472
CSCTFPtMethods::AB_sig12F
static const double AB_sig12F[4][15]
Definition: CSCTFPtMethods.h:76
CSCTFPtMethods::A_sig52
static const double A_sig52[3][15]
Definition: CSCTFPtMethods.h:121
CSCTFPtMethods::AB_mu13R
static const double AB_mu13R[4][15]
Definition: CSCTFPtMethods.h:66
CSCTFPtMethods::AB_rho124R
static const double AB_rho124R[5][15]
Definition: CSCTFPtMethods.h:94
pfMETCorrectionType0_cfi.par1
par1
Definition: pfMETCorrectionType0_cfi.py:48
CSCTFPtMethods::AB_mu12R
static const double AB_mu12R[4][15]
Definition: CSCTFPtMethods.h:65
findQualityFiles.v
v
Definition: findQualityFiles.py:179
CSCTFPtMethods::kME1andME2
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::Pt3StnChiSq
float Pt3StnChiSq(int type, float eta, int dphi1, int dphi2, int fr) const
Definition: CSCTFPtMethods.cc:9948
CSCTFPtMethods::AB_rho53B
static const double AB_rho53B[5][15]
Definition: CSCTFPtMethods.h:102
CSCTFPtMethods::AB_sig12FnoME11
static const double AB_sig12FnoME11[4][15]
Definition: CSCTFPtMethods.h:49
CSCTFPtMethods::A_mu12Front
static const double A_mu12Front[4][15]
Definition: CSCTFPtMethods.h:104
CSCTFPtMethods::A_rho123RareCSCTF
static const double A_rho123RareCSCTF[5][15]
Definition: CSCTFPtMethods.h:144
CSCTFPtMethods::etabins
static const float etabins[16]
Definition: CSCTFPtMethods.h:193
CSCTFPtMethods::A_rho123FrontCSCTF
static const double A_rho123FrontCSCTF[5][15]
Definition: CSCTFPtMethods.h:140
CSCTFPtMethods::AkHighEta_Fit1
static const float AkHighEta_Fit1[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:29
CSCTFPtMethods::A_sig14Rare
static const double A_sig14Rare[3][15]
Definition: CSCTFPtMethods.h:116
CSCTFPtMethods::AB_sig13F
static const double AB_sig13F[4][15]
Definition: CSCTFPtMethods.h:77
CSCTFPtMethods::A_mu12Rare
static const double A_mu12Rare[4][15]
Definition: CSCTFPtMethods.h:111
CSCTFPtMethods::kMaxParameters
Definition: CSCTFPtMethods.h:10
CSCTFPtMethods::AB_sig14F
static const double AB_sig14F[4][15]
Definition: CSCTFPtMethods.h:78
CSCTFPtMethods::AB_rho513
static const double AB_rho513[5][15]
Definition: CSCTFPtMethods.h:98
CSCTFPtMethods::AB_rho51B
static const double AB_rho51B[5][15]
Definition: CSCTFPtMethods.h:100
CSCTFPtMethods::AB_sig13FnoME11
static const double AB_sig13FnoME11[4][15]
Definition: CSCTFPtMethods.h:50
CSCTFPtMethods::kME2andMB1
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::dphifr0
static const float dphifr0[4][15][28]
Definition: CSCTFPtMethods.h:194
CSCTFPtMethods::A_mu51
static const double A_mu51[4][15]
Definition: CSCTFPtMethods.h:118
CSCTFPtMethods::A_rho134RareCSCTF
static const double A_rho134RareCSCTF[5][15]
Definition: CSCTFPtMethods.h:146
CSCTFPtMethods::AB_rho234
static const double AB_rho234[5][15]
Definition: CSCTFPtMethods.h:96
CSCTFPtMethods::AB_sig53
static const double AB_sig53[4][15]
Definition: CSCTFPtMethods.h:87
CSCTFPtMethods::Pt2Stn2012
float Pt2Stn2012(int type, float eta, float dphi, int PtbyMLH, float &theLH, int fr=-1, int method=11) const
Definition: CSCTFPtMethods.cc:7410
CSCTFPtMethods::AB_sig24
static const double AB_sig24[4][15]
Definition: CSCTFPtMethods.h:83
CSCTFPtMethods::AB_mu24
static const double AB_mu24[4][15]
Definition: CSCTFPtMethods.h:69
CSCTFPtMethods::AB_rho124F
static const double AB_rho124F[5][15]
Definition: CSCTFPtMethods.h:91
PVValHelper::eta
Definition: PVValidationHelpers.h:69
PVValHelper::pT
Definition: PVValidationHelpers.h:70
CSCTFPtMethods::A_sig53
static const double A_sig53[3][15]
Definition: CSCTFPtMethods.h:123
CSCTFPtMethods::AB_mu12F
static const double AB_mu12F[4][15]
Definition: CSCTFPtMethods.h:62
CSCTFPtMethods::A_rho124FrontCSCTF
static const double A_rho124FrontCSCTF[5][15]
Definition: CSCTFPtMethods.h:141
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
CSCTFPtMethods::A_rho523
static const double A_rho523[5][15]
Definition: CSCTFPtMethods.h:152
CSCTFPtMethods::AkLowEta_Fit1
static const float AkLowEta_Fit1[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:28
CSCTFPtMethods::AB_mu14RME11
static const double AB_mu14RME11[4][15]
Definition: CSCTFPtMethods.h:48
L1MuScale::getLowEdge
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
CSCTFPtMethods::AB_sig12FME11
static const double AB_sig12FME11[4][15]
Definition: CSCTFPtMethods.h:55
CSCTFPtMethods::A_mu14Rare
static const double A_mu14Rare[4][15]
Definition: CSCTFPtMethods.h:115
CSCTFPtMethods::A_rho234CSCTF
static const double A_rho234CSCTF[5][15]
Definition: CSCTFPtMethods.h:148
CSCTFPtMethods::AB_sig13RME11
static const double AB_sig13RME11[4][15]
Definition: CSCTFPtMethods.h:59
CSCTFPtMethods::AB_sig12RME11
static const double AB_sig12RME11[4][15]
Definition: CSCTFPtMethods.h:58
dqmdumpme.k
k
Definition: dqmdumpme.py:60
CSCTFPtMethods::Likelihood2_2011
double Likelihood2_2011(double *phi12, double *par_m12, double *par_sig12, double *v) const
Definition: CSCTFPtMethods.cc:5363
CSCTFPtMethods::FRCorrLowEta
static const float FRCorrLowEta[kME2andMB2][2]
Definition: CSCTFPtMethods.h:33
CSCTFPtMethods::kME2andME4
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::kME2andME3
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::AB_mu23
static const double AB_mu23[4][15]
Definition: CSCTFPtMethods.h:68
CSCTFPtMethods::AB_sig12R
static const double AB_sig12R[4][15]
Definition: CSCTFPtMethods.h:79
CSCTFPtMethods::FRCorrHighEta
static const float FRCorrHighEta[kME2andMB2][2]
Definition: CSCTFPtMethods.h:34
DDAxes::rho
CSCTFPtMethods::BkHighEta_Fit2
static const float BkHighEta_Fit2[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:24
edm::LogWarning
Definition: MessageLogger.h:141
CSCTFPtMethods::AB_mu12FME11
static const double AB_mu12FME11[4][15]
Definition: CSCTFPtMethods.h:43
CSCTFPtMethods::Likelihood2
double Likelihood2(double *phi12, double *par_m12, double *par_sig12, double *v) const
Definition: CSCTFPtMethods.cc:5347
CSCTFPtMethods::AB_sig14RME11
static const double AB_sig14RME11[4][15]
Definition: CSCTFPtMethods.h:60
CSCTFPtMethods::sigmafr1
static const float sigmafr1[4][15][28]
Definition: CSCTFPtMethods.h:197
CSCTFPtMethods::AB_rho134R
static const double AB_rho134R[5][15]
Definition: CSCTFPtMethods.h:95
CSCTFPtMethods::Likelihood2011
double Likelihood2011(double *phi12, double *phi23, double *par_m12, double *par_m23, double *par_sig12, double *par_sig23, double *par_rho, double *v) const
Definition: CSCTFPtMethods.cc:5422
HLT_2018_cff.Pt_min
Pt_min
Definition: HLT_2018_cff.py:460
CSCTFPtMethods::A_sig14Front
static const double A_sig14Front[3][15]
Definition: CSCTFPtMethods.h:109
mypt
Definition: mypt.h:6
CSCTFPtMethods::AB_mu13RME11
static const double AB_mu13RME11[4][15]
Definition: CSCTFPtMethods.h:47
CSCTFPtMethods::AB_sig13RnoME11
static const double AB_sig13RnoME11[4][15]
Definition: CSCTFPtMethods.h:53
edm::LogError
Definition: MessageLogger.h:183
CSCTFPtMethods::Pt2Stn
float Pt2Stn(int type, float eta, float dphi, int fr=-1) const
Definition: CSCTFPtMethods.cc:5168
CSCTFPtMethods::BkLowEta_Fit2
static const float BkLowEta_Fit2[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:23
L1MuTriggerPtScale::getPtScale
const L1MuScale * getPtScale() const
get the Pt scale
Definition: L1MuTriggerPtScale.h:59
CSCTFPtMethods::AB_sig51
static const double AB_sig51[4][15]
Definition: CSCTFPtMethods.h:85
pfMETCorrectionType0_cfi.par2
par2
Definition: pfMETCorrectionType0_cfi.py:49
A
CSCTFPtMethods::AB_sig13FME11
static const double AB_sig13FME11[4][15]
Definition: CSCTFPtMethods.h:56
CSCTFPtMethods::AB_mu14FnoME11
static const double AB_mu14FnoME11[4][15]
Definition: CSCTFPtMethods.h:39
alignmentValidation.c1
c1
do drawing
Definition: alignmentValidation.py:1025
CSCTFPtMethods::Likelihood
double Likelihood(double *phi12, double *phi23, double *par_m12, double *par_m23, double *par_sig12, double *par_sig23, double *par_rho, double *v) const
Definition: CSCTFPtMethods.cc:5382
CSCTFPtMethods::dphifr1
static const float dphifr1[4][15][28]
Definition: CSCTFPtMethods.h:195
CSCTFPtMethods::trigger_scale
const L1MuTriggerPtScale * trigger_scale
Definition: CSCTFPtMethods.h:223
CSCTFPtMethods::A_sig34
static const double A_sig34[3][15]
Definition: CSCTFPtMethods.h:130
CSCTFPtMethods::AB_mu14FME11
static const double AB_mu14FME11[4][15]
Definition: CSCTFPtMethods.h:45
CSCTFPtMethods::Pt2Stn2011
float Pt2Stn2011(int type, float eta, float dphi, int fr=-1, int method=11, int phiSign=2) const
Definition: CSCTFPtMethods.cc:5825
CSCTFPtMethods::AB_rho123R
static const double AB_rho123R[5][15]
Definition: CSCTFPtMethods.h:93
CSCTFPtMethods::A_mu13Front
static const double A_mu13Front[4][15]
Definition: CSCTFPtMethods.h:106
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
ptScale
const std::vector< double > ptScale
Definition: Utilities.cc:33
CSCTFPtMethods::Pt2Stn2012_DT
float Pt2Stn2012_DT(int type, float eta, float dphi, int PtbyMLH, float &theLH, int fr=-1, int method=11, int phiSign=2) const
Definition: CSCTFPtMethods.cc:8701
CSCTFPtMethods::AB_mu5
static const double AB_mu5[4][15]
Definition: CSCTFPtMethods.h:74
CSCTFPtMethods::AB_mu52
static const double AB_mu52[4][15]
Definition: CSCTFPtMethods.h:72
CSCTFPtMethods::A_sig13Rare
static const double A_sig13Rare[3][15]
Definition: CSCTFPtMethods.h:114
alignCSCRings.r
r
Definition: alignCSCRings.py:93
CSCTFPtMethods::A_rho124RareCSCTF
static const double A_rho124RareCSCTF[5][15]
Definition: CSCTFPtMethods.h:145
CSCTFPtMethods::A_sig12Front
static const double A_sig12Front[3][15]
Definition: CSCTFPtMethods.h:105
TtFullHadDaughter::B
static const std::string B
Definition: TtFullHadronicEvent.h:9
type
type
Definition: HCALResponse.h:21
muonTiming_cfi.ptmax
ptmax
Definition: muonTiming_cfi.py:22
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
CSCTFPtMethods::AB_mu12RME11
static const double AB_mu12RME11[4][15]
Definition: CSCTFPtMethods.h:46
CSCTFPtMethods::AB_mu51
static const double AB_mu51[4][15]
Definition: CSCTFPtMethods.h:71
CSCTFPtMethods::AB_sig34
static const double AB_sig34[4][15]
Definition: CSCTFPtMethods.h:84
CSCTFPtMethods::A_sig51
static const double A_sig51[3][15]
Definition: CSCTFPtMethods.h:119
CSCTFPtMethods::ptbins
static const float ptbins[29]
Definition: CSCTFPtMethods.h:192
CSCTFPtMethods::AB_mu13FnoME11
static const double AB_mu13FnoME11[4][15]
Definition: CSCTFPtMethods.h:38
ptmin
double ptmin
Definition: HydjetWrapper.h:84
CSCTFPtMethods::AB_sig14FnoME11
static const double AB_sig14FnoME11[4][15]
Definition: CSCTFPtMethods.h:51
CSCTFPtMethods::sigmafr0
static const float sigmafr0[4][15][28]
Definition: CSCTFPtMethods.h:196
dqm-mbProfile.log
log
Definition: dqm-mbProfile.py:17
Pi
const double Pi
Definition: CosmicMuonParameters.h:18
CSCTFPtMethods::AB_mu14R
static const double AB_mu14R[4][15]
Definition: CSCTFPtMethods.h:67
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
CSCTFPtMethods::AB_rho123F
static const double AB_rho123F[5][15]
Definition: CSCTFPtMethods.h:90
mps_fire.result
result
Definition: mps_fire.py:303
CSCTFConstants::SECTOR_RAD
const static double SECTOR_RAD
Definition: CSCTFConstants.h:55
CSCTFPtMethods::AB_rho134F
static const double AB_rho134F[5][15]
Definition: CSCTFPtMethods.h:92
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
CSCTFPtMethods::kME1andME2ovr
Definition: CSCTFPtMethods.h:12
beamvalidation.exit
def exit(msg="")
Definition: beamvalidation.py:53
CSCTFPtMethods::A_mu52
static const double A_mu52[4][15]
Definition: CSCTFPtMethods.h:120
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
JetChargeProducer_cfi.exp
exp
Definition: JetChargeProducer_cfi.py:6
CSCTFPtMethods::AkLowEta_Fit2
static const float AkLowEta_Fit2[kME2andMB2][kMaxParameters]
Definition: CSCTFPtMethods.h:20
CSCTFPtMethods::AB_rho512
static const double AB_rho512[5][15]
Definition: CSCTFPtMethods.h:97
CSCTFPtMethods::AB_sig52
static const double AB_sig52[4][15]
Definition: CSCTFPtMethods.h:86
CSCTFPtMethods::AB_mu13F
static const double AB_mu13F[4][15]
Definition: CSCTFPtMethods.h:63
CSCTFPtMethods::AB_sig14R
static const double AB_sig14R[4][15]
Definition: CSCTFPtMethods.h:81
CSCTFPtMethods::kME1andME3
Definition: CSCTFPtMethods.h:12
CSCTFPtMethods::AB_mu13RnoME11
static const double AB_mu13RnoME11[4][15]
Definition: CSCTFPtMethods.h:41
CSCTFPtMethods::AB_sig5
static const double AB_sig5[4][15]
Definition: CSCTFPtMethods.h:88
CSCTFPtMethods::AB_mu53
static const double AB_mu53[4][15]
Definition: CSCTFPtMethods.h:73
CSCTFPtMethods::AB_rho52B
static const double AB_rho52B[5][15]
Definition: CSCTFPtMethods.h:101
CSCTFPtMethods::kME3andME4
Definition: CSCTFPtMethods.h:12