CMS 3D CMS Logo

Public Types | Public Member Functions | Static Public Attributes | Private Attributes

CSCTFPtMethods Class Reference

#include <CSCTFPtMethods.h>

List of all members.

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=0)
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.
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 double AB_mu12F [4][15]
static double AB_mu12FME11 [4][15]
static double AB_mu12FnoME11 [4][15]
static double AB_mu12R [4][15]
static double AB_mu12RME11 [4][15]
static double AB_mu12RnoME11 [4][15]
static double AB_mu13F [4][15]
static double AB_mu13FME11 [4][15]
static double AB_mu13FnoME11 [4][15]
static double AB_mu13R [4][15]
static double AB_mu13RME11 [4][15]
static double AB_mu13RnoME11 [4][15]
static double AB_mu14F [4][15]
static double AB_mu14FME11 [4][15]
static double AB_mu14FnoME11 [4][15]
static double AB_mu14R [4][15]
static double AB_mu14RME11 [4][15]
static double AB_mu14RnoME11 [4][15]
static double AB_mu23 [4][15]
static double AB_mu24 [4][15]
static double AB_mu34 [4][15]
static double AB_mu5 [4][15]
static double AB_mu51 [4][15]
static double AB_mu52 [4][15]
static double AB_mu53 [4][15]
static double AB_rho123F [5][15]
static double AB_rho123R [5][15]
static double AB_rho124F [5][15]
static double AB_rho124R [5][15]
static double AB_rho134F [5][15]
static double AB_rho134R [5][15]
static double AB_rho234 [5][15]
static double AB_rho512 [5][15]
static double AB_rho513 [5][15]
static double AB_rho51B [5][15]
static double AB_rho523 [5][15]
static double AB_rho52B [5][15]
static double AB_rho53B [5][15]
static double AB_sig12F [4][15]
static double AB_sig12FME11 [4][15]
static double AB_sig12FnoME11 [4][15]
static double AB_sig12R [4][15]
static double AB_sig12RME11 [4][15]
static double AB_sig12RnoME11 [4][15]
static double AB_sig13F [4][15]
static double AB_sig13FME11 [4][15]
static double AB_sig13FnoME11 [4][15]
static double AB_sig13R [4][15]
static double AB_sig13RME11 [4][15]
static double AB_sig13RnoME11 [4][15]
static double AB_sig14F [4][15]
static double AB_sig14FME11 [4][15]
static double AB_sig14FnoME11 [4][15]
static double AB_sig14R [4][15]
static double AB_sig14RME11 [4][15]
static double AB_sig14RnoME11 [4][15]
static double AB_sig23 [4][15]
static double AB_sig24 [4][15]
static double AB_sig34 [4][15]
static double AB_sig5 [4][15]
static double AB_sig51 [4][15]
static double AB_sig52 [4][15]
static 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
Enumerator:
kMaxParameters 

Definition at line 11 of file CSCTFPtMethods.h.

anonymous enum

Allowed station combinations for extrapolation units

Enumerator:
kME1andME2 
kME1andME3 
kME2andME3 
kME2andME4 
kME3andME4 
kME1andME2ovr 
kME2andMB1 
kME2andMB2 

Definition at line 13 of file CSCTFPtMethods.h.


Constructor & Destructor Documentation

CSCTFPtMethods::CSCTFPtMethods ( const L1MuTriggerPtScale ptScale = 0)

Definition at line 1235 of file CSCTFPtMethods.cc.

  : trigger_scale( ptScale )
{
}

Member Function Documentation

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 5635 of file CSCTFPtMethods.cc.

References query::result.

{
  bool result = false;

  switch(method)
    {
    case 1:
      break;
    case 2:
      break;
    case 3:
      if(quality != 1)
        {
          if(pT <= 19)
            {
              if(eta >=4 && eta <=9)
                result = true;         
            }
          if(pT <= 18 && pT >= 10)
            {
              if(eta > 0 && eta < 4)
                result = true;
            }
        }
    };  
  
  return result;
}
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 1459 of file CSCTFPtMethods.cc.

References funct::exp(), funct::log(), and rho.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

   {
       double fitval = 0.;
       //double Pi  = acos(-1.);
       double m12 = 0.;
       if(v[0] > par_m12[3]) 
         m12 = 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
       double m23 = 0.;
       if(v[0] > par_m23[3]) 
         m23 = 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
       double sig12 = 0.1;
       if(v[0] > 0.) sig12 = par_sig12[0]/v[0] + par_sig12[1]/v[0]/v[0] + par_sig12[2];//sig12  
       double sig23 = 0.1;
       if(v[0] > 0.) sig23 = par_sig23[0]/v[0] + par_sig23[1]/v[0]/v[0] + par_sig23[2];//sig23  

       double rho = (par_rho[0] + par_rho[1]*log(v[0]) + par_rho[2]*log(v[0])*log(v[0]) + par_rho[3]*log(v[0])*log(v[0])*log(v[0]))*exp(-par_rho[4]*log(v[0])); //rho  
       if(rho > 0.95) rho = 0.95;
       if(rho < -0.95) rho = -0.95;
//
       fitval = (phi12[0] - m12)*(phi12[0] - m12)/sig12/sig12 + (phi23[0] - m23)*(phi23[0] - m23)/sig23/sig23;
       fitval = fitval - 2.*rho*(phi12[0] - m12)*(phi23[0] - m23)/sig12/sig23;
       fitval = fitval*(-1./(2.*(1-rho*rho)));
       fitval = fitval - log(sig12) - log(sig23) - 0.5*log(1-rho*rho) ;

      return fitval;
   }
double CSCTFPtMethods::Likelihood2 ( double *  phi12,
double *  par_m12,
double *  par_sig12,
double *  v 
) const

Definition at line 1430 of file CSCTFPtMethods.cc.

References funct::log(), and Pi.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

   {
       double fitval = 0.;
       double Pi  = acos(-1.);
       double m12 = 0;
       if(v[0] > par_m12[3]) 
         m12 = 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
       double sig12 = 0.1;
       if(v[0] > 0.) sig12 = par_sig12[0]/v[0] + par_sig12[1]/v[0]/v[0] + par_sig12[2];//sig12  
//     
       fitval = -(phi12[0] - m12)*(phi12[0] - m12)/2./sig12/sig12;
       fitval = fitval - log(sig12) - 0.5*log(2*Pi) ;

      return fitval;   }
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 1485 of file CSCTFPtMethods.cc.

References funct::exp(), funct::log(), and rho.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

   {
       double fitval = 0.;
       //double Pi  = acos(-1.);
       double m12 = 0.;
       if(v[0] > par_m12[3]) 
         m12 = 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
       double m23 = 0.;
       if(v[0] > par_m23[3]) 
         m23 = 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
       double sig12 = 0.1;
       if(v[0] > par_sig12[3]) sig12 = par_sig12[0]/(v[0]-par_sig12[3]) + par_sig12[1]/(v[0]-par_sig12[3])/(v[0]-par_sig12[3]) + par_sig12[2];//sig12  
       double sig23 = 0.1;
       if(v[0] > par_sig23[3]) sig23 = par_sig23[0]/(v[0]-par_sig23[3]) + par_sig23[1]/(v[0]-par_sig23[3])/(v[0]-par_sig23[3]) + par_sig23[2];//sig12  
       if(sig12 <0.0015)sig12 = 0.0015;
       if(sig23 <0.0015)sig23 = 0.0015;

       double rho = (par_rho[0] + par_rho[1]*log(v[0]) + par_rho[2]*log(v[0])*log(v[0]) + par_rho[3]*log(v[0])*log(v[0])*log(v[0]))*exp(-par_rho[4]*log(v[0])); //rho  
       //if(rho > 0.95) rho = 0.95;
       //if(rho < -0.95) rho = -0.95;
       if(rho > 0.7) rho = 0.7;
       if(rho < -0.7) rho = -0.7;
       //rho = 0.4; 
//
       fitval = (phi12[0] - m12)*(phi12[0] - m12)/sig12/sig12 + (phi23[0] - m23)*(phi23[0] - m23)/sig23/sig23;
       fitval = fitval - 2.*rho*(phi12[0] - m12)*(phi23[0] - m23)/sig12/sig23;
       fitval = fitval*(-1./(2.*(1-rho*rho)));
       fitval = fitval - log(sig12) - log(sig23) - 0.5*log(1-rho*rho) ;

      return fitval;
   }
double CSCTFPtMethods::Likelihood2_2011 ( double *  phi12,
double *  par_m12,
double *  par_sig12,
double *  v 
) const

Definition at line 1444 of file CSCTFPtMethods.cc.

References funct::log(), and Pi.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

   {
       double fitval = 0.;
       double Pi  = acos(-1.);
       double m12 = 0;
       if(v[0] > par_m12[3]) 
         m12 = 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
       double sig12 = 0.1;
       if(v[0] > par_sig12[3]) sig12 = par_sig12[0]/(v[0]-par_sig12[3]) + par_sig12[1]/(v[0]-par_sig12[3])/(v[0]-par_sig12[3]) + par_sig12[2];//sig12  
       if(sig12 <0.0015)sig12 = 0.0015;
//     
       fitval = -(phi12[0] - m12)*(phi12[0] - m12)/2./sig12/sig12;
       fitval = fitval - log(sig12) - 0.5*log(2*Pi) ;

      return fitval;   }
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 1244 of file CSCTFPtMethods.cc.

References funct::A, AkHighEta_Fit2, AkLowEta_Fit2, BkHighEta_Fit2, BkLowEta_Fit2, eta(), FRCorrHighEta, FRCorrLowEta, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), kGlobalScaleFactor, kME1andME2, kME2andMB2, reco::tau::disc::Pt(), mathSSE::sqrt(), and trigger_scale.

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

{
  float A = 0; 
  float B = 0;
  if (dphi == 0.0) dphi = 1.e-6;
  if (eta  < 0.0) eta  = static_cast<float>(fabs(static_cast<double>(eta)));
  if (dphi < 0.0) dphi = static_cast<float>(fabs(static_cast<double>(dphi)));
#ifdef L1CSC_STANDALONE
  if (type == kME1andME2 && eta <= 1.25) fr = 1; 
#else
  if (type == kME1andME2 && eta < 1.2) fr = 1; 
#endif
  if (type >= kME1andME2 && 
      type <= kME2andMB2 && eta < 2.5) 
    {
      if (eta >= 0.0 && eta < 1.6)
        {
          A = AkLowEta_Fit2[type-1][0] + AkLowEta_Fit2[type-1][1]*eta 
            + AkLowEta_Fit2[type-1][2]*eta*eta + AkLowEta_Fit2[type-1][3]*eta*eta*eta;
          B = BkLowEta_Fit2[type-1][0] + BkLowEta_Fit2[type-1][1]*eta 
            + BkLowEta_Fit2[type-1][2]*eta*eta + BkLowEta_Fit2[type-1][3]*eta*eta*eta;
          if (fr >= 0 && fr <= 1) 
            {     
              A *= FRCorrLowEta[type-1][fr];
              B *= FRCorrLowEta[type-1][fr];
            } 
        }       
      
      if (eta >= 1.6 && eta < 2.5)
        {
          A = AkHighEta_Fit2[type-1][0] + AkHighEta_Fit2[type-1][1]*eta 
            + AkHighEta_Fit2[type-1][2]*eta*eta + AkHighEta_Fit2[type-1][3]*eta*eta*eta;
          B = BkHighEta_Fit2[type-1][0] + BkHighEta_Fit2[type-1][1]*eta 
            + BkHighEta_Fit2[type-1][2]*eta*eta + BkHighEta_Fit2[type-1][3]*eta*eta*eta;
        if (fr >= 0 && fr <= 1) 
          {
            A *= FRCorrHighEta[type-1][fr];
            B *= FRCorrHighEta[type-1][fr];
          } 
        }
      
      A *= kGlobalScaleFactor;
      B *= kGlobalScaleFactor;
      float Pt = (A + sqrt(A*A + 4.*dphi*B))/(2.*dphi);

      //      return (Pt>0.0) ? Pt : 0.0;
      return (Pt>trigger_scale->getPtScale()->getLowEdge(1)) ? Pt 
        : trigger_scale->getPtScale()->getLowEdge(1);
    }
    return 0.0;
}
float CSCTFPtMethods::Pt2Stn2010 ( int  type,
float  eta,
float  dphi,
int  fr = -1,
int  method = 11 
) const

Definition at line 1517 of file CSCTFPtMethods.cc.

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, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood2(), reco::tau::disc::Pt(), launcher::step, trigger_scale, and v.

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

{
    if(fabs(eta) >= 2.4) eta = 2.35;  
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[3] = {0., 0., 0.};
        int iETA1 = iETA; 
        switch (type) // type = mode here
          {
          case 6 :  //1-2
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                 }
          break;
          case 7 :  //1-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu13Front[0][iETA1];
                   par1[1] = A_mu13Front[1][iETA1];
                   par1[2] = A_mu13Front[2][iETA1];
                   par1[3] = A_mu13Front[3][iETA1];
                   par_sig1[0] = A_sig13Front[0][iETA1];
                   par_sig1[1] = A_sig13Front[1][iETA1];
                   par_sig1[2] = A_sig13Front[2][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu13Rare[0][iETA1];
                   par1[1] = A_mu13Rare[1][iETA1];
                   par1[2] = A_mu13Rare[2][iETA1];
                   par1[3] = A_mu13Rare[3][iETA1];
                   par_sig1[0] = A_sig13Rare[0][iETA1];
                   par_sig1[1] = A_sig13Rare[1][iETA1];
                   par_sig1[2] = A_sig13Rare[2][iETA1];
                 }
          break;
          case 8 :  //2-3
                 if(iETA1 < 2)iETA1 = 2;
                 par1[0] = A_mu23[0][iETA1];
                 par1[1] = A_mu23[1][iETA1];
                 par1[2] = A_mu23[2][iETA1];
                 par1[3] = A_mu23[3][iETA1];
                 par_sig1[0] = A_sig23[0][iETA1];
                 par_sig1[1] = A_sig23[1][iETA1];
                 par_sig1[2] = A_sig23[2][iETA1];
          break;
          case 9 :  //2-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu24[0][iETA1];
                 par1[1] = A_mu24[1][iETA1];
                 par1[2] = A_mu24[2][iETA1];
                 par1[3] = A_mu24[3][iETA1];
                 par_sig1[0] = A_sig24[0][iETA1];
                 par_sig1[1] = A_sig24[1][iETA1];
                 par_sig1[2] = A_sig24[2][iETA1];
          break;
          case 10 :  //3-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu34[0][iETA1];
                 par1[1] = A_mu34[1][iETA1];
                 par1[2] = A_mu34[2][iETA1];
                 par1[3] = A_mu34[3][iETA1];
                 par_sig1[0] = A_sig34[0][iETA1];
                 par_sig1[1] = A_sig34[1][iETA1];
                 par_sig1[2] = A_sig34[2][iETA1];
          break;
          case 13 :  //1-4
                 if(iETA1 < 9)iETA1 = 9;
                 if(iETA1 > 12)iETA1 = 12;
                 if(fr == 1){
                   par1[0] = A_mu14Front[0][iETA1];
                   par1[1] = A_mu14Front[1][iETA1];
                   par1[2] = A_mu14Front[2][iETA1];
                   par1[3] = A_mu14Front[3][iETA1];
                   par_sig1[0] = A_sig14Front[0][iETA1];
                   par_sig1[1] = A_sig14Front[1][iETA1];
                   par_sig1[2] = A_sig14Front[2][iETA1];
                 }
                 if(fr == 0){
                   par1[0] = A_mu14Rare[0][iETA1];
                   par1[1] = A_mu14Rare[1][iETA1];
                   par1[2] = A_mu14Rare[2][iETA1];
                   par1[3] = A_mu14Rare[3][iETA1];
                   par_sig1[0] = A_sig14Rare[0][iETA1];
                   par_sig1[1] = A_sig14Rare[1][iETA1];
                   par_sig1[2] = A_sig14Rare[2][iETA1];
                 }
          break;
          case 11 : // b1-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu53[0][iETA1];
                 par1[1] = A_mu53[1][iETA1];
                 par1[2] = A_mu53[2][iETA1];
                 par1[3] = A_mu53[3][iETA1];
                 par_sig1[0] = A_sig53[0][iETA1];
                 par_sig1[1] = A_sig53[1][iETA1];
                 par_sig1[2] = A_sig53[2][iETA1];
                
          break;
          case 12 :  //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10: b1-2
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
          break;
          case 14 :  //2-b1 for pt_method < 10 and b1-1 for pt_method > 10
                 if(method < 10){
                    if(iETA1 < 1)iETA1 = 1;
                    if(iETA1 > 2)iETA1 = 2;
                 }
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
                 if(method > 10){
                    if(iETA1 > 2)iETA1 = 2;
                    par1[0] = A_mu51[0][iETA1];
                    par1[1] = A_mu51[1][iETA1];
                    par1[2] = A_mu51[2][iETA1];
                    par1[3] = A_mu51[3][iETA1];
                    par_sig1[0] = A_sig51[0][iETA1];
                    par_sig1[1] = A_sig51[1][iETA1];
                    par_sig1[2] = A_sig51[2][iETA1];
                 }
          break;
          //default:
          //return 0.0;
          }    

//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
          //if(fabs(dphi) >= 0.002)
          //if(fabs(dphi) >= 0.00)
          //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
          //{
                  double pt = 140;
                  double dpt = 0.1;
                  double step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2(par_phi12, par1, par_sig1, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;
                      //if(lpt1*lpt2 <= 0 && lpt2nd < 0) std::cout << "lpt2nd < 0 dphi12 = " << dphi <<" PT = " << pt<< " eta =" << fabs(eta) << std::endl; 
                      //lpt2nd = 1.; // don't care about 2nd derivative
                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
/*
                      if(pt == 140.){
                            v[0] = 200;
                            lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 200. + 5.;
                            lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
                            lpt2 = (lpt2_2-lpt2_1)/5.;

                            v[0] = 170.;
                            fx = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }
                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1 ){PTsolv = 137.5; break;}
*/
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
                  dphi = - dphi;
                  pt = 140;
                  dpt = 0.1;
                  step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.;
                         v[0] = pt;
                         lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2(par_phi12, par1, par_sig1, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
/*
                      if(pt == 140.){
                            v[0] = 200;
                            lpt2_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 200. + 5.;
                            lpt2_2 = Likelihood2(par_phi12, par1, par_sig1, v);

                            lpt2 = (lpt2_2-lpt2_1)/5.;

                            v[0] = 170.;
                            fx = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood2(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood2(par_phi12, par1, par_sig1, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }
                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1){PTsolvMinus = 137.5; break;}
*/
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//          }// if(fabs(dphi) >= 0.002)
//          else 
//          {PTsolv = 137.5;} 

//*********** end solve equation for muon minus 
          PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
          PTsolv = PTsolv*1.2;
          if(PTsolv > 137.5) PTsolv = 137.5;
          if(fabs(dphi) <= 0.002 && PTsolv < 120.)PTsolv = 140.;
          if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;
          dphi = - dphi; //return to correct sing dphi

    } //if(fabs(eta_TracMy) 
    } //end "for by iETA"

    float Pt = PTsolv;
    if(Pt > 10 && fabs(dphi) >= 0.1 ) std::cout << "iF = 0 for dphi = " << dphi <<" and Pt = " << Pt << std::endl;
                                                                    
    //if(Pt > 100 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi > 0.015 )std::cout << "dphi = " << dphi << " eta = " << eta << std::endl; 
    //if(Pt < 10 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi < 0.01)std::cout << "dphi = " << dphi << " eta = " << eta <<   std::endl; 
    //      return (Pt>0.0) ? Pt : 0.0;

    float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
float CSCTFPtMethods::Pt2Stn2011 ( int  type,
float  eta,
float  dphi,
int  fr = -1,
int  method = 11,
int  phiSign = 2 
) const

Definition at line 1824 of file CSCTFPtMethods.cc.

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, etabins, Likelihood2_2011(), reco::tau::disc::Pt(), launcher::step, and v.

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

{



    //if(fabs(eta) >= 2.4) eta = 2.35;  
    if(fabs(eta) >= 2.2) eta = 2.15;  
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[4] = {0., 0., 0.,0};
        int iETA1 = iETA; 
        int iETA2 = iETA; 

        double (*Amean12FnoME11)[15] = AB_mu12FnoME11; 
        double (*Asig12FnoME11)[15] = AB_sig12FnoME11; 
        double (*Amean12RnoME11)[15] = AB_mu12RnoME11; 
        double (*Asig12RnoME11)[15] = AB_sig12RnoME11; 

        double (*Amean13FnoME11)[15] = AB_mu13FnoME11; 
        double (*Asig13FnoME11)[15] = AB_sig13FnoME11; 
        double (*Amean13RnoME11)[15] = AB_mu13RnoME11; 
        double (*Asig13RnoME11)[15] = AB_sig13RnoME11; 

        double (*Amean14FnoME11)[15] = AB_mu14FnoME11; 
        double (*Asig14FnoME11)[15] = AB_sig14FnoME11; 
        double (*Amean14RnoME11)[15] = AB_mu14RnoME11; 
        double (*Asig14RnoME11)[15] = AB_sig14RnoME11; 
        //
        double (*Amean12FME11)[15] = AB_mu12FME11; 
        double (*Asig12FME11)[15] = AB_sig12FME11; 
        double (*Amean12RME11)[15] = AB_mu12RME11; 
        double (*Asig12RME11)[15] = AB_sig12RME11; 

        double (*Amean13FME11)[15] = AB_mu13FME11; 
        double (*Asig13FME11)[15] = AB_sig13FME11; 
        double (*Amean13RME11)[15] = AB_mu13RME11; 
        double (*Asig13RME11)[15] = AB_sig13RME11; 

        double (*Amean14FME11)[15] = AB_mu14FME11; 
        double (*Asig14FME11)[15] = AB_sig14FME11; 
        double (*Amean14RME11)[15] = AB_mu14RME11; 
        double (*Asig14RME11)[15] = AB_sig14RME11; 
        //
        double (*Amean12F)[15] = AB_mu12F; 
        double (*Asig12F)[15] = AB_sig12F; 
        double (*Amean12R)[15] = AB_mu12R; 
        double (*Asig12R)[15] = AB_sig12R; 

        double (*Amean13F)[15] = AB_mu13F; 
        double (*Asig13F)[15] = AB_sig13F; 
        double (*Amean13R)[15] = AB_mu13R; 
        double (*Asig13R)[15] = AB_sig13R; 

        double (*Amean14F)[15] = AB_mu14F; 
        double (*Asig14F)[15] = AB_sig14F; 
        double (*Amean14R)[15] = AB_mu14R; 
        double (*Asig14R)[15] = AB_sig14R; 

        double (*Amean23)[15] = AB_mu23;
        double (*Asig23)[15] = AB_sig23;
        double (*Amean24)[15] = AB_mu24;
        double (*Asig24)[15] = AB_sig24;
        double (*Amean34)[15] = AB_mu34;
        double (*Asig34)[15] = AB_sig34;

        double (*Amean51)[15] = AB_mu51;
        double (*Asig51)[15] = AB_sig51;
        double (*Amean52)[15] = AB_mu52;
        double (*Asig52)[15] = AB_sig52;
        double (*Amean53)[15] = AB_mu53;
        double (*Asig53)[15] = AB_sig53;

        switch (type) // type = mode here
          {
          case 6 :  //1-2
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean12FME11+0))[iETA2];
                   par1[1] = (*(Amean12FME11+1))[iETA2];
                   par1[2] = (*(Amean12FME11+2))[iETA2];
                   par1[3] = (*(Amean12FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean12RME11+0))[iETA2];
                   par1[1] = (*(Amean12RME11+1))[iETA2];
                   par1[2] = (*(Amean12RME11+2))[iETA2];
                   par1[3] = (*(Amean12RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean12FnoME11+0))[iETA2];
                   par1[1] = (*(Amean12FnoME11+1))[iETA2];
                   par1[2] = (*(Amean12FnoME11+2))[iETA2];
                   par1[3] = (*(Amean12FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 1)iETA2 = 1;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean12RnoME11+0))[iETA2];
                   par1[1] = (*(Amean12RnoME11+1))[iETA2];
                   par1[2] = (*(Amean12RnoME11+2))[iETA2];
                   par1[3] = (*(Amean12RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12RnoME11+3))[iETA2];
                 }
            }

          break;
          case 7 :  //1-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean13F+0))[iETA1];
                   par1[1] = (*(Amean13F+1))[iETA1];
                   par1[2] = (*(Amean13F+2))[iETA1];
                   par1[3] = (*(Amean13F+3))[iETA1];
                   par_sig1[0] = (*(Asig13F+0))[iETA1];
                   par_sig1[1] = (*(Asig13F+1))[iETA1];
                   par_sig1[2] = (*(Asig13F+2))[iETA1];
                   par_sig1[3] = (*(Asig13F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean13R+0))[iETA1];
                   par1[1] = (*(Amean13R+1))[iETA1];
                   par1[2] = (*(Amean13R+2))[iETA1];
                   par1[3] = (*(Amean13R+3))[iETA1];
                   par_sig1[0] = (*(Asig13R+0))[iETA1];
                   par_sig1[1] = (*(Asig13R+1))[iETA1];
                   par_sig1[2] = (*(Asig13R+2))[iETA1];
                   par_sig1[3] = (*(Asig13R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean13FME11+0))[iETA2];
                   par1[1] = (*(Amean13FME11+1))[iETA2];
                   par1[2] = (*(Amean13FME11+2))[iETA2];
                   par1[3] = (*(Amean13FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean13RME11+0))[iETA2];
                   par1[1] = (*(Amean13RME11+1))[iETA2];
                   par1[2] = (*(Amean13RME11+2))[iETA2];
                   par1[3] = (*(Amean13RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean13FnoME11+0))[iETA2];
                   par1[1] = (*(Amean13FnoME11+1))[iETA2];
                   par1[2] = (*(Amean13FnoME11+2))[iETA2];
                   par1[3] = (*(Amean13FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean13RnoME11+0))[iETA2];
                   par1[1] = (*(Amean13RnoME11+1))[iETA2];
                   par1[2] = (*(Amean13RnoME11+2))[iETA2];
                   par1[3] = (*(Amean13RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13RnoME11+3))[iETA2];
                 }
            }
          break;
          case 8 :  //2-3
                 if(iETA1 < 2)iETA1 = 2;
                   par1[0] = (*(Amean23+0))[iETA1];
                   par1[1] = (*(Amean23+1))[iETA1];
                   par1[2] = (*(Amean23+2))[iETA1];
                   par1[3] = (*(Amean23+3))[iETA1];
                   par_sig1[0] = (*(Asig23+0))[iETA1];
                   par_sig1[1] = (*(Asig23+1))[iETA1];
                   par_sig1[2] = (*(Asig23+2))[iETA1];
                   par_sig1[3] = (*(Asig23+3))[iETA1];

          break;
          case 9 :  //2-4
                 if(iETA1 < 3)iETA1 = 3;
                   par1[0] = (*(Amean24+0))[iETA1];
                   par1[1] = (*(Amean24+1))[iETA1];
                   par1[2] = (*(Amean24+2))[iETA1];
                   par1[3] = (*(Amean24+3))[iETA1];
                   par_sig1[0] = (*(Asig24+0))[iETA1];
                   par_sig1[1] = (*(Asig24+1))[iETA1];
                   par_sig1[2] = (*(Asig24+2))[iETA1];
                   par_sig1[3] = (*(Asig24+3))[iETA1];
          break;
          case 10 :  //3-4
                 if(iETA1 < 3)iETA1 = 3;
                   par1[0] = (*(Amean34+0))[iETA1];
                   par1[1] = (*(Amean34+1))[iETA1];
                   par1[2] = (*(Amean34+2))[iETA1];
                   par1[3] = (*(Amean34+3))[iETA1];
                   par_sig1[0] = (*(Asig34+0))[iETA1];
                   par_sig1[1] = (*(Asig34+1))[iETA1];
                   par_sig1[2] = (*(Asig34+2))[iETA1];
                   par_sig1[3] = (*(Asig34+3))[iETA1];
          break;
          case 13 :  //1-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean14F+0))[iETA1];
                   par1[1] = (*(Amean14F+1))[iETA1];
                   par1[2] = (*(Amean14F+2))[iETA1];
                   par1[3] = (*(Amean14F+3))[iETA1];
                   par_sig1[0] = (*(Asig14F+0))[iETA1];
                   par_sig1[1] = (*(Asig14F+1))[iETA1];
                   par_sig1[2] = (*(Asig14F+2))[iETA1];
                   par_sig1[3] = (*(Asig14F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean14R+0))[iETA1];
                   par1[1] = (*(Amean14R+1))[iETA1];
                   par1[2] = (*(Amean14R+2))[iETA1];
                   par1[3] = (*(Amean14R+3))[iETA1];
                   par_sig1[0] = (*(Asig14R+0))[iETA1];
                   par_sig1[1] = (*(Asig14R+1))[iETA1];
                   par_sig1[2] = (*(Asig14R+2))[iETA1];
                   par_sig1[3] = (*(Asig14R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 9)iETA2 = 9;
                   par1[0] = (*(Amean14FME11+0))[iETA2];
                   par1[1] = (*(Amean14FME11+1))[iETA2];
                   par1[2] = (*(Amean14FME11+2))[iETA2];
                   par1[3] = (*(Amean14FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 9)iETA2 = 9;
                   par1[0] = (*(Amean14RME11+0))[iETA2];
                   par1[1] = (*(Amean14RME11+1))[iETA2];
                   par1[2] = (*(Amean14RME11+2))[iETA2];
                   par1[3] = (*(Amean14RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 4)iETA2 = 4;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean14FnoME11+0))[iETA2];
                   par1[1] = (*(Amean14FnoME11+1))[iETA2];
                   par1[2] = (*(Amean14FnoME11+2))[iETA2];
                   par1[3] = (*(Amean14FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 4)iETA2 = 4;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean14RnoME11+0))[iETA2];
                   par1[1] = (*(Amean14RnoME11+1))[iETA2];
                   par1[2] = (*(Amean14RnoME11+2))[iETA2];
                   par1[3] = (*(Amean14RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14RnoME11+3))[iETA2];
                 }
            }

          break;
          case 11 : // b1-3 for pt_method > 10 & fr = 0, singles for pt_method < 10 
                 if(iETA1 != 2)iETA1 = 2;
                   par1[0] = (*(Amean53+0))[iETA1];
                   par1[1] = (*(Amean53+1))[iETA1];
                   par1[2] = (*(Amean53+2))[iETA1];
                   par1[3] = (*(Amean53+3))[iETA1];
                   par_sig1[0] = (*(Asig53+0))[iETA1];
                   par_sig1[1] = (*(Asig53+1))[iETA1];
                   par_sig1[2] = (*(Asig53+2))[iETA1];
                   par_sig1[3] = (*(Asig53+3))[iETA1];
          break;

          case 12 :  //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10 & fr = 0: b1-2
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;

                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];

          break;
          case 14 :  //2-b1 for pt_method < 10 and b1-1 for pt_method > 10 & fr = 0
                 if(method < 10){
                    if(iETA1 < 1)iETA1 = 1;
                    if(iETA1 > 2)iETA1 = 2;
                 }
                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];

                 if(method > 10){
                    if(iETA1 > 2)iETA1 = 2;
                    par1[0] = (*(Amean51+0))[iETA1];
                    par1[1] = (*(Amean51+1))[iETA1];
                    par1[2] = (*(Amean51+2))[iETA1];
                    par1[3] = (*(Amean51+3))[iETA1];
                    par_sig1[0] = (*(Asig51+0))[iETA1];
                    par_sig1[1] = (*(Asig51+1))[iETA1];
                    par_sig1[2] = (*(Asig51+2))[iETA1];
                    par_sig1[3] = (*(Asig51+3))[iETA1];
                 }
          break;
          //default:
          //return 0.0;
          }    

//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
          //if(fabs(dphi) >= 0.002)
          //if(fabs(dphi) >= 0.00)
          //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
          //{
                  double pt = 140;
                  double dpt = 0.1;
                  double step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;
                      //if(lpt1*lpt2 <= 0 && lpt2nd < 0) std::cout << "lpt2nd < 0 dphi12 = " << dphi <<" PT = " << pt<< " eta =" << fabs(eta) << std::endl; 
                      //lpt2nd = 1.; // don't care about 2nd derivative
                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
/*
                      if(pt == 140.){
                            v[0] = 200;
                            lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 200. + 5.;
                            lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            lpt2 = (lpt2_2-lpt2_1)/5.;

                            v[0] = 170.;
                            fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }
                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1 ){PTsolv = 137.5; break;}
*/
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
                  dphi = - dphi;
                  pt = 140;
                  dpt = 0.1;
                  step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.;
                         v[0] = pt;
                         lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
/*
                      if(pt == 140.){
                            v[0] = 200;
                            lpt2_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 200. + 5.;
                            lpt2_2 = Likelihood2_2011(par_phi12, par1, par_sig1, v);

                            lpt2 = (lpt2_2-lpt2_1)/5.;

                            v[0] = 170.;
                            fx = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }
                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0 && fabs(dphi) < 0.1){PTsolvMinus = 137.5; break;}
*/
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//          }// if(fabs(dphi) >= 0.002)
//          else 
//          {PTsolv = 137.5;} 

//*********** end solve equation for muon minus 
          PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
          PTsolv = PTsolv*1.2;
          if(PTsolv > 137.5) PTsolv = 137.5;
          if(fabs(dphi) <= 0.002 && PTsolv < 120.)PTsolv = 140.;
          //if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;
          dphi = - dphi; //return to correct sing dphi

    } //if(fabs(eta_TracMy) 
    } //end "for by iETA"

    float Pt = PTsolv;
                                                                    
    //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 
    float Pt_min = 2;// 0 GeV

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
float CSCTFPtMethods::Pt2Stn2012 ( int  type,
float  eta,
float  dphi,
int  PtbyMLH,
float &  theLH,
int  fr = -1,
int  method = 11 
) const

Definition at line 3259 of file CSCTFPtMethods.cc.

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, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood2(), reco::tau::disc::Pt(), launcher::step, trigger_scale, and v.

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

{
  int useBestMLH = PtbyMLH;
  int useBOXcut = false;
  int useDTBOXcut = true;
  if(type == 5) useBOXcut = true; // useBOXcut for mode 5 which come from 3 station 
  if(type == 5) type = 8; // 2-3-4 -> 2-3//
  
    if(fabs(eta) >= 2.4) eta = 2.35;  
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[3] = {0., 0., 0.};
        int iETA1 = iETA; 
        switch (type) // type = mode here
          {
          case 6 :  //1-2
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                 }
          break;
          case 7 :  //1-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu13Front[0][iETA1];
                   par1[1] = A_mu13Front[1][iETA1];
                   par1[2] = A_mu13Front[2][iETA1];
                   par1[3] = A_mu13Front[3][iETA1];
                   par_sig1[0] = A_sig13Front[0][iETA1];
                   par_sig1[1] = A_sig13Front[1][iETA1];
                   par_sig1[2] = A_sig13Front[2][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu13Rare[0][iETA1];
                   par1[1] = A_mu13Rare[1][iETA1];
                   par1[2] = A_mu13Rare[2][iETA1];
                   par1[3] = A_mu13Rare[3][iETA1];
                   par_sig1[0] = A_sig13Rare[0][iETA1];
                   par_sig1[1] = A_sig13Rare[1][iETA1];
                   par_sig1[2] = A_sig13Rare[2][iETA1];
                 }
          break;
          case 8 :  //2-3
                 if(iETA1 < 2)iETA1 = 2;
                 par1[0] = A_mu23[0][iETA1];
                 par1[1] = A_mu23[1][iETA1];
                 par1[2] = A_mu23[2][iETA1];
                 par1[3] = A_mu23[3][iETA1];
                 par_sig1[0] = A_sig23[0][iETA1];
                 par_sig1[1] = A_sig23[1][iETA1];
                 par_sig1[2] = A_sig23[2][iETA1];
          break;
          case 9 :  //2-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu24[0][iETA1];
                 par1[1] = A_mu24[1][iETA1];
                 par1[2] = A_mu24[2][iETA1];
                 par1[3] = A_mu24[3][iETA1];
                 par_sig1[0] = A_sig24[0][iETA1];
                 par_sig1[1] = A_sig24[1][iETA1];
                 par_sig1[2] = A_sig24[2][iETA1];
          break;
          case 10 :  //3-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu34[0][iETA1];
                 par1[1] = A_mu34[1][iETA1];
                 par1[2] = A_mu34[2][iETA1];
                 par1[3] = A_mu34[3][iETA1];
                 par_sig1[0] = A_sig34[0][iETA1];
                 par_sig1[1] = A_sig34[1][iETA1];
                 par_sig1[2] = A_sig34[2][iETA1];
          break;
          case 13 :  //1-4
                 if(iETA1 < 9)iETA1 = 9;
                 if(iETA1 > 11)iETA1 = 11;
                 //if(iETA1 > 12)iETA1 = 12;
                 if(fr == 1){
                   par1[0] = A_mu14Front[0][iETA1];
                   par1[1] = A_mu14Front[1][iETA1];
                   par1[2] = A_mu14Front[2][iETA1];
                   par1[3] = A_mu14Front[3][iETA1];
                   par_sig1[0] = A_sig14Front[0][iETA1];
                   par_sig1[1] = A_sig14Front[1][iETA1];
                   par_sig1[2] = A_sig14Front[2][iETA1];
                 }
                 if(fr == 0){
                   par1[0] = A_mu14Rare[0][iETA1];
                   par1[1] = A_mu14Rare[1][iETA1];
                   par1[2] = A_mu14Rare[2][iETA1];
                   par1[3] = A_mu14Rare[3][iETA1];
                   par_sig1[0] = A_sig14Rare[0][iETA1];
                   par_sig1[1] = A_sig14Rare[1][iETA1];
                   par_sig1[2] = A_sig14Rare[2][iETA1];
                 }
          break;
          case 11 : // b1-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu53[0][iETA1];
                 par1[1] = A_mu53[1][iETA1];
                 par1[2] = A_mu53[2][iETA1];
                 par1[3] = A_mu53[3][iETA1];
                 par_sig1[0] = A_sig53[0][iETA1];
                 par_sig1[1] = A_sig53[1][iETA1];
                 par_sig1[2] = A_sig53[2][iETA1];
                
          break;
          case 12 :  //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10: b1-2
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
          break;
          case 14 :  //2-b1 for pt_method < 10 and b1-1 for pt_method > 10
                 if(method < 10){
                    if(iETA1 < 1)iETA1 = 1;
                    if(iETA1 > 2)iETA1 = 2;
                 }
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
                 if(method > 10){
                    if(iETA1 > 2)iETA1 = 2;
                    par1[0] = A_mu51[0][iETA1];
                    par1[1] = A_mu51[1][iETA1];
                    par1[2] = A_mu51[2][iETA1];
                    par1[3] = A_mu51[3][iETA1];
                    par_sig1[0] = A_sig51[0][iETA1];
                    par_sig1[1] = A_sig51[1][iETA1];
                    par_sig1[2] = A_sig51[2][iETA1];
                 }
          break;
          //default:
          //return 0.0;
          }    

//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
          //if(fabs(dphi) >= 0.002)
          //if(fabs(dphi) >= 0.00)
          //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
          //{
        double muPlusMaxLH = -1e9;
                  double pt = 140;
                  double step = 5.;
                  double maxLH = -1e9;
                  
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.; 
                      v[0] = pt;
                      lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolv = pt;
                        }
                      
                             
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}
                      
                      pt = pt - step;
                  }// end while
                  muPlusMaxLH = maxLH;
                  
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
                  double muMinusMaxLH = -1e9;
                  dphi = - dphi;
                  pt = 140;
                  step = 5.;
                  maxLH = -1e9;
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.;
                      v[0] = pt;
                      lpt1_1 = Likelihood2(par_phi12, par1, par_sig1, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolvMinus = pt;
                        }

                     
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}
                      
                      pt = pt - step;
                    }// end while
                  muMinusMaxLH = maxLH;
                  
                  //          }// if(fabs(dphi) >= 0.002)
                  //          else 
//          {PTsolv = 137.5;} 
                  
//*********** end solve equation for muon minus 
                  if (useBestMLH)
                    PTsolv = (muPlusMaxLH > muMinusMaxLH) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  else
                    PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  
                  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
                  
                  
                  PTsolv = PTsolv*1.2;
          if(PTsolv > 137.5) PTsolv = 137.5;
          
          if (useBOXcut)
            if(fabs(dphi) <= 0.002 && PTsolv < 120.)PTsolv = 140.;
          if (useDTBOXcut)
            if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;

          dphi = - dphi; //return to correct sing dphi

    } //if(fabs(eta_TracMy) 
    } //end "for by iETA"

    float Pt = PTsolv;
    if(Pt > 10 && fabs(dphi) >= 0.1 ) std::cout << "iF = 0 for dphi = " << dphi <<" and Pt = " << Pt << std::endl;
                                                                    
    //if(Pt > 100 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi > 0.015 )std::cout << "dphi = " << dphi << " eta = " << eta << std::endl; 
    //if(Pt < 10 && (type == 12 || type == 14) && fabs(eta) <= 1.2 && dphi < 0.01)std::cout << "dphi = " << dphi << " eta = " << eta <<   std::endl; 
    //      return (Pt>0.0) ? Pt : 0.0;

    float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
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 4428 of file CSCTFPtMethods.cc.

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, etabins, Likelihood2_2011(), reco::tau::disc::Pt(), launcher::step, and v.

Referenced by Pt3Stn2012_DT().

{
  int useBestMLH = PtbyMLH;
  int useBOXcut = true;
 
    //if(fabs(eta) >= 2.4) eta = 2.35;  
    if(fabs(eta) >= 2.2) eta = 2.15;  
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[4] = {0., 0., 0.,0};
        int iETA1 = iETA; 
        int iETA2 = iETA; 

        double (*Amean12FnoME11)[15] = AB_mu12FnoME11; 
        double (*Asig12FnoME11)[15] = AB_sig12FnoME11; 
        double (*Amean12RnoME11)[15] = AB_mu12RnoME11; 
        double (*Asig12RnoME11)[15] = AB_sig12RnoME11; 

        double (*Amean13FnoME11)[15] = AB_mu13FnoME11; 
        double (*Asig13FnoME11)[15] = AB_sig13FnoME11; 
        double (*Amean13RnoME11)[15] = AB_mu13RnoME11; 
        double (*Asig13RnoME11)[15] = AB_sig13RnoME11; 

        double (*Amean14FnoME11)[15] = AB_mu14FnoME11; 
        double (*Asig14FnoME11)[15] = AB_sig14FnoME11; 
        double (*Amean14RnoME11)[15] = AB_mu14RnoME11; 
        double (*Asig14RnoME11)[15] = AB_sig14RnoME11; 
        //
        double (*Amean12FME11)[15] = AB_mu12FME11; 
        double (*Asig12FME11)[15] = AB_sig12FME11; 
        double (*Amean12RME11)[15] = AB_mu12RME11; 
        double (*Asig12RME11)[15] = AB_sig12RME11; 

        double (*Amean13FME11)[15] = AB_mu13FME11; 
        double (*Asig13FME11)[15] = AB_sig13FME11; 
        double (*Amean13RME11)[15] = AB_mu13RME11; 
        double (*Asig13RME11)[15] = AB_sig13RME11; 

        double (*Amean14FME11)[15] = AB_mu14FME11; 
        double (*Asig14FME11)[15] = AB_sig14FME11; 
        double (*Amean14RME11)[15] = AB_mu14RME11; 
        double (*Asig14RME11)[15] = AB_sig14RME11; 
        //
        double (*Amean12F)[15] = AB_mu12F; 
        double (*Asig12F)[15] = AB_sig12F; 
        double (*Amean12R)[15] = AB_mu12R; 
        double (*Asig12R)[15] = AB_sig12R; 

        double (*Amean13F)[15] = AB_mu13F; 
        double (*Asig13F)[15] = AB_sig13F; 
        double (*Amean13R)[15] = AB_mu13R; 
        double (*Asig13R)[15] = AB_sig13R; 

        double (*Amean14F)[15] = AB_mu14F; 
        double (*Asig14F)[15] = AB_sig14F; 
        double (*Amean14R)[15] = AB_mu14R; 
        double (*Asig14R)[15] = AB_sig14R; 

        double (*Amean23)[15] = AB_mu23;
        double (*Asig23)[15] = AB_sig23;
        double (*Amean24)[15] = AB_mu24;
        double (*Asig24)[15] = AB_sig24;
        double (*Amean34)[15] = AB_mu34;
        double (*Asig34)[15] = AB_sig34;

        double (*Amean51)[15] = AB_mu51;
        double (*Asig51)[15] = AB_sig51;
        double (*Amean52)[15] = AB_mu52;
        double (*Asig52)[15] = AB_sig52;
        double (*Amean53)[15] = AB_mu53;
        double (*Asig53)[15] = AB_sig53;

        switch (type) // type = mode here
          {
          case 6 :  //1-2
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean12FME11+0))[iETA2];
                   par1[1] = (*(Amean12FME11+1))[iETA2];
                   par1[2] = (*(Amean12FME11+2))[iETA2];
                   par1[3] = (*(Amean12FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean12RME11+0))[iETA2];
                   par1[1] = (*(Amean12RME11+1))[iETA2];
                   par1[2] = (*(Amean12RME11+2))[iETA2];
                   par1[3] = (*(Amean12RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean12FnoME11+0))[iETA2];
                   par1[1] = (*(Amean12FnoME11+1))[iETA2];
                   par1[2] = (*(Amean12FnoME11+2))[iETA2];
                   par1[3] = (*(Amean12FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 1)iETA2 = 1;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean12RnoME11+0))[iETA2];
                   par1[1] = (*(Amean12RnoME11+1))[iETA2];
                   par1[2] = (*(Amean12RnoME11+2))[iETA2];
                   par1[3] = (*(Amean12RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig12RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig12RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig12RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig12RnoME11+3))[iETA2];
                 }
            }

          break;
          case 7 :  //1-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean13F+0))[iETA1];
                   par1[1] = (*(Amean13F+1))[iETA1];
                   par1[2] = (*(Amean13F+2))[iETA1];
                   par1[3] = (*(Amean13F+3))[iETA1];
                   par_sig1[0] = (*(Asig13F+0))[iETA1];
                   par_sig1[1] = (*(Asig13F+1))[iETA1];
                   par_sig1[2] = (*(Asig13F+2))[iETA1];
                   par_sig1[3] = (*(Asig13F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean13R+0))[iETA1];
                   par1[1] = (*(Amean13R+1))[iETA1];
                   par1[2] = (*(Amean13R+2))[iETA1];
                   par1[3] = (*(Amean13R+3))[iETA1];
                   par_sig1[0] = (*(Asig13R+0))[iETA1];
                   par_sig1[1] = (*(Asig13R+1))[iETA1];
                   par_sig1[2] = (*(Asig13R+2))[iETA1];
                   par_sig1[3] = (*(Asig13R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean13FME11+0))[iETA2];
                   par1[1] = (*(Amean13FME11+1))[iETA2];
                   par1[2] = (*(Amean13FME11+2))[iETA2];
                   par1[3] = (*(Amean13FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 7)iETA2 = 7;
                   par1[0] = (*(Amean13RME11+0))[iETA2];
                   par1[1] = (*(Amean13RME11+1))[iETA2];
                   par1[2] = (*(Amean13RME11+2))[iETA2];
                   par1[3] = (*(Amean13RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean13FnoME11+0))[iETA2];
                   par1[1] = (*(Amean13FnoME11+1))[iETA2];
                   par1[2] = (*(Amean13FnoME11+2))[iETA2];
                   par1[3] = (*(Amean13FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 3)iETA2 = 3;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean13RnoME11+0))[iETA2];
                   par1[1] = (*(Amean13RnoME11+1))[iETA2];
                   par1[2] = (*(Amean13RnoME11+2))[iETA2];
                   par1[3] = (*(Amean13RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig13RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig13RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig13RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig13RnoME11+3))[iETA2];
                 }
            }
          break;
          case 8 :  //2-3
                 if(iETA1 < 2)iETA1 = 2;
                   par1[0] = (*(Amean23+0))[iETA1];
                   par1[1] = (*(Amean23+1))[iETA1];
                   par1[2] = (*(Amean23+2))[iETA1];
                   par1[3] = (*(Amean23+3))[iETA1];
                   par_sig1[0] = (*(Asig23+0))[iETA1];
                   par_sig1[1] = (*(Asig23+1))[iETA1];
                   par_sig1[2] = (*(Asig23+2))[iETA1];
                   par_sig1[3] = (*(Asig23+3))[iETA1];

          break;
          case 9 :  //2-4
                 if(iETA1 < 3)iETA1 = 3;
                   par1[0] = (*(Amean24+0))[iETA1];
                   par1[1] = (*(Amean24+1))[iETA1];
                   par1[2] = (*(Amean24+2))[iETA1];
                   par1[3] = (*(Amean24+3))[iETA1];
                   par_sig1[0] = (*(Asig24+0))[iETA1];
                   par_sig1[1] = (*(Asig24+1))[iETA1];
                   par_sig1[2] = (*(Asig24+2))[iETA1];
                   par_sig1[3] = (*(Asig24+3))[iETA1];
          break;
          case 10 :  //3-4
                 if(iETA1 < 3)iETA1 = 3;
                   par1[0] = (*(Amean34+0))[iETA1];
                   par1[1] = (*(Amean34+1))[iETA1];
                   par1[2] = (*(Amean34+2))[iETA1];
                   par1[3] = (*(Amean34+3))[iETA1];
                   par_sig1[0] = (*(Asig34+0))[iETA1];
                   par_sig1[1] = (*(Asig34+1))[iETA1];
                   par_sig1[2] = (*(Asig34+2))[iETA1];
                   par_sig1[3] = (*(Asig34+3))[iETA1];
          break;
          case 13 :  //1-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean14F+0))[iETA1];
                   par1[1] = (*(Amean14F+1))[iETA1];
                   par1[2] = (*(Amean14F+2))[iETA1];
                   par1[3] = (*(Amean14F+3))[iETA1];
                   par_sig1[0] = (*(Asig14F+0))[iETA1];
                   par_sig1[1] = (*(Asig14F+1))[iETA1];
                   par_sig1[2] = (*(Asig14F+2))[iETA1];
                   par_sig1[3] = (*(Asig14F+3))[iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   //if(iETA1 > 11)iETA1 = 11;
                   par1[0] = (*(Amean14R+0))[iETA1];
                   par1[1] = (*(Amean14R+1))[iETA1];
                   par1[2] = (*(Amean14R+2))[iETA1];
                   par1[3] = (*(Amean14R+3))[iETA1];
                   par_sig1[0] = (*(Asig14R+0))[iETA1];
                   par_sig1[1] = (*(Asig14R+1))[iETA1];
                   par_sig1[2] = (*(Asig14R+2))[iETA1];
                   par_sig1[3] = (*(Asig14R+3))[iETA1];
                 }
            if(phiSign == 0){ // track belong to ME11 station
                 if(fr == 1){
                   if(iETA2 < 9)iETA2 = 9;
                   par1[0] = (*(Amean14FME11+0))[iETA2];
                   par1[1] = (*(Amean14FME11+1))[iETA2];
                   par1[2] = (*(Amean14FME11+2))[iETA2];
                   par1[3] = (*(Amean14FME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14FME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14FME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14FME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14FME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 9)iETA2 = 9;
                   par1[0] = (*(Amean14RME11+0))[iETA2];
                   par1[1] = (*(Amean14RME11+1))[iETA2];
                   par1[2] = (*(Amean14RME11+2))[iETA2];
                   par1[3] = (*(Amean14RME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14RME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14RME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14RME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14RME11+3))[iETA2];
                 }
            }
            if(phiSign == 1){ // track belong to ME1/2 or ME1/3 station
                 if(fr == 1){
                   if(iETA2 < 4)iETA2 = 4;
                   if(iETA2 > 7)iETA2 = 7;
                   par1[0] = (*(Amean14FnoME11+0))[iETA2];
                   par1[1] = (*(Amean14FnoME11+1))[iETA2];
                   par1[2] = (*(Amean14FnoME11+2))[iETA2];
                   par1[3] = (*(Amean14FnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14FnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14FnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14FnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14FnoME11+3))[iETA2];
                 }
                 if(fr == 0){
                   if(iETA2 < 4)iETA2 = 4;
                   if(iETA2 > 6)iETA2 = 6;// rare ME1/2 only till 1.6
                   par1[0] = (*(Amean14RnoME11+0))[iETA2];
                   par1[1] = (*(Amean14RnoME11+1))[iETA2];
                   par1[2] = (*(Amean14RnoME11+2))[iETA2];
                   par1[3] = (*(Amean14RnoME11+3))[iETA2];
                   par_sig1[0] = (*(Asig14RnoME11+0))[iETA2];
                   par_sig1[1] = (*(Asig14RnoME11+1))[iETA2];
                   par_sig1[2] = (*(Asig14RnoME11+2))[iETA2];
                   par_sig1[3] = (*(Asig14RnoME11+3))[iETA2];
                 }
            }

          break;
          case 11 : // b1-3 for pt_method > 10 & fr = 0, singles for pt_method < 10 
                 if(iETA1 != 2)iETA1 = 2;
                   par1[0] = (*(Amean53+0))[iETA1];
                   par1[1] = (*(Amean53+1))[iETA1];
                   par1[2] = (*(Amean53+2))[iETA1];
                   par1[3] = (*(Amean53+3))[iETA1];
                   par_sig1[0] = (*(Asig53+0))[iETA1];
                   par_sig1[1] = (*(Asig53+1))[iETA1];
                   par_sig1[2] = (*(Asig53+2))[iETA1];
                   par_sig1[3] = (*(Asig53+3))[iETA1];
          break;

          case 12 :  //1-2-b1 = 2-b1 for pt_method < 10, for pt_method > 10 & fr = 0: b1-2
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;

                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];

          break;
          case 14 :  //2-b1 for pt_method < 10 and b1-1 for pt_method > 10 & fr = 0
                 if(method < 10){
                    if(iETA1 < 1)iETA1 = 1;
                    if(iETA1 > 2)iETA1 = 2;
                 }
                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];

                 if(method > 10){
                    if(iETA1 > 2)iETA1 = 2;
                    par1[0] = (*(Amean51+0))[iETA1];
                    par1[1] = (*(Amean51+1))[iETA1];
                    par1[2] = (*(Amean51+2))[iETA1];
                    par1[3] = (*(Amean51+3))[iETA1];
                    par_sig1[0] = (*(Asig51+0))[iETA1];
                    par_sig1[1] = (*(Asig51+1))[iETA1];
                    par_sig1[2] = (*(Asig51+2))[iETA1];
                    par_sig1[3] = (*(Asig51+3))[iETA1];
                 }
          break;
          //default:
          //return 0.0;
          }    

//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
          //if(fabs(dphi) >= 0.002)
          //if(fabs(dphi) >= 0.00)
          //if(fabs(dphi) >= 0.002 || (fabs(dphi) >= 0.01 && (type == 12 || type == 14)))
          //{
        double muPlusMaxLH = -1e9;
                  double pt = 140;
                  double step = 5.;
                  double maxLH = -1e9;
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.;
                      v[0] = pt;
                      lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolv = pt;
                        }
                                          
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}

                      
                      pt = pt - step;
                    }// end while
                    muPlusMaxLH = maxLH;
                  
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi > 0 for muon minus!!! => dphi = -dphi < 0
                      double muMinusMaxLH = -1e9;
                    dphi = - dphi;
                  pt = 140;
                  step = 5.;
                  maxLH = -1e9;
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.; 
                      v[0] = pt;
                      lpt1_1 = Likelihood2_2011(par_phi12, par1, par_sig1, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolvMinus = pt;
                        }
                      
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}
                         

                         
                      pt = pt - step;
                  }// end while
                  muMinusMaxLH = maxLH;
                  
//          }// if(fabs(dphi) >= 0.002)
//          else 
//          {PTsolv = 137.5;} 

//*********** end solve equation for muon minus 
                  if (useBestMLH)
                    PTsolv = (muPlusMaxLH > muMinusMaxLH) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  else
                    PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  
                  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
                  

                  
          PTsolv = PTsolv*1.2;
          if(PTsolv > 137.5) PTsolv = 137.5;

          if (useBOXcut)
            if(fabs(dphi) <= 0.002 && PTsolv < 120.)PTsolv = 140.;
          //if( fabs(dphi) <= 0.01 && (type == 11 || type == 12 || type == 14) && PTsolv < 120.)PTsolv = 140.;
          dphi = - dphi; //return to correct sing dphi

    } //if(fabs(eta_TracMy) 
    } //end "for by iETA"

    float Pt = PTsolv;
                                                                    
    //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 
    float Pt_min = 2;// 0 GeV

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
float CSCTFPtMethods::Pt2StnChiSq ( int  type,
float  eta,
int  dphi,
int  fr 
) const

Definition at line 5230 of file CSCTFPtMethods.cc.

References diffTreeTool::diff, dphifr0, dphifr1, etabins, cmsRelvalreport::exit, i, j, gen::k, min, Pt2Stn(), ptbins, ptmin, CSCTFConstants::SECTOR_RAD, sigmafr0, and sigmafr1.

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

{

  float diff, min, ptmin, ptmax;
  float mypt = 0.0;

  int dphicopy = dphi;

  if (type<0 || type>3) 
    {
//      std::cout << "CSCTFPtMethods: illegal track type for Chi-square method" << std::endl;
      edm::LogError("CSCTFPtMethods::Pt2StnChiSq()")<<"Illegal track type for Chi-square method";
      return 0.;
    }
  
  // flip sign
  //dphi = -dphi;
  
  // force positive
  eta = fabs(eta);
  
  //determine which eta bin muon falls into
  int i = 0;
  for(i = 0; i < 15; i++) 
    {
      if (eta >= etabins[i] && eta < etabins[i+1]) break;
    }
  if ( i == 15 ) 
    {
//      std::cout<<" CSCTFPtMethods: muon not within any eta range"<< std::endl;
      edm::LogWarning("CSCTFPtMethods::Pt2StnChiSq()")<<"Muon not within any eta range";
      if (eta<etabins[0]) 
        { 
          eta = etabins[0];
          i = 0;
        }
      else if (eta>=etabins[15]) 
        {
          eta = etabins[15];
          i = 15;
        }
      else
        exit(0);
    }

  bool bCallOldMethod = false;
  
  if (fr == 0) 
    {
      //advance past bins in array w/ default values
      //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
      int j = 0;  //start from 1st column, j=0
      while (dphifr0[type][i][j] == -1 && sigmafr0[type][i][j] == 1 && j != 28) j++;
      if ( j == 28 ) 
        {
//        std::cout <<" CSCTFPtMethods: every entry in row is default"<< std::endl;
          edm::LogInfo("CSCTFPtMethods::Pt2StnChiSq()")<<"Every entry in row is default";
          //      exit(0); //normal termination
          bCallOldMethod = true;
        }

      if (!bCallOldMethod) 
        {
          //set min, ptmin, ptmax to first bin
          //in row that is not default
          min = fabs(dphi - dphifr0[type][i][j]) / sigmafr0[type][i][j];
          ptmin = ptbins[j];
          ptmax = ptbins[j+1];
          
          //loop through all pt bins.  assign pt of bin w/ least diff
          //do not include default bins in calculation
          for ( int k = j; k < 28; k++ ) 
            {
              if(dphifr0[type][i][k] != -1 || sigmafr0[type][i][k] != 1) 
                {
                  diff = fabs(dphi - dphifr0[type][i][k]) / sigmafr0[type][i][k];
                  if (diff < min) 
                    {
                      min = diff;
                      ptmin = ptbins[k];
                      ptmax = ptbins[k+1];
                    }
                }
            }
          mypt = (ptmin + ptmax)/2;
        }
    }

  if (fr == 1) 
    {
      //advance past bins in array w/ default values
      //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
      int j = 0;  //start from 1st column, j=0
      
      while (dphifr1[type][i][j] == -1 && sigmafr1[type][i][j] == 1 && j != 28) j++;
      
      if ( j == 28 ) 
        {
//        std::cout <<" CSCTFPtMethods: every entry in row is default"<< std::endl;
          edm::LogInfo("CSCTFPtMethods::Pt2StnChiSq()")<<"Every entry in row is default";
          //      exit(0); //normal termination
          bCallOldMethod = true;
        }

    if (!bCallOldMethod) 
      {
        //set min, ptmin, ptmax to first bin
        //in row that is not default
        min = fabs(dphi - dphifr1[type][i][j]) / sigmafr1[type][i][j];
        ptmin = ptbins[j];
        ptmax = ptbins[j+1];
        
        //loop through all pt bins.  assign pt of bin w/ least diff
        //do not include default bins in calculation
        for ( int k = j; k < 28; k++ ) 
          {
            if(dphifr1[type][i][k] != -1 || sigmafr1[type][i][k] != 1) 
              {
                diff = fabs(dphi - dphifr1[type][i][k]) / sigmafr1[type][i][k];
                if (diff < min) 
                  {
                    min = diff;
                    ptmin = ptbins[k];
                    ptmax = ptbins[k+1];
                  }
              }
          }
        mypt = (ptmin + ptmax)/2;
      }
    }

  // hybrid approach:
  if (bCallOldMethod)
    {
      float dphiR = static_cast<float>(dphicopy) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      // must change type definition, just add one
      mypt =  Pt2Stn(type+1, eta, dphiR, fr);
    }
  
  return mypt;
}
float CSCTFPtMethods::Pt2StnHybrid ( int  type,
float  eta,
int  dphi,
int  fr 
) const

Third is the hybrid method

Definition at line 5605 of file CSCTFPtMethods.cc.

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

Referenced by CSCTFPtLUT::calcPt().

{
  float mypt = 0.0;

  mypt = Pt2StnChiSq(type, eta, dphi, fr);
  if(mypt >= 8.0)
    {
      float dphiR = static_cast<float>(dphi) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      mypt = Pt2Stn(type+1, eta, dphiR, fr);
    }

  return mypt;
}
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 1297 of file CSCTFPtMethods.cc.

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

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

{
    int ty1 = 0, ty2 =0;

    switch (type)
      {
      case 1 :
        ty1 = kME1andME2 -1; // subtype sets the right position for array A
        ty2 = kME2andME3 -1;
        break;
      case 2 :
        ty1 = kME1andME2 -1;
        ty2 = kME2andME4 -1;
        break;
      case 3 :
        ty1 = kME1andME3 -1;
        ty2 = kME3andME4 -1;
        break;
      case 4 :
        ty1 = kME2andME3 -1;
        ty2 = kME3andME4 -1;
        break;
      default:
        return 0.0;
      }

    // Switch to 2-Station measurement if dphi is too small
    // box cut around Pt of 10 GeV
    float Pt;
//    if ( (fabs(static_cast<double>(dphi2))<0.004) &&
//         (fabs(static_cast<double>(dphi1))<0.030)) {
    if ( fabs(static_cast<double>(dphi2))<0.004 ) 
      {
        Pt = Pt2Stn((ty1+1), eta, dphi1, fr);
      }
    else 
      {
        float c1=(-.2999 * (eta*eta*eta) + 2.030 * (eta*eta) - 4.235 * eta + 3.024) + 0.02;
        float c2=(-2.484 * (eta*eta*eta) + 14.43 * (eta*eta) - 27.66 * eta + 18.47)*.72;
        float r = 0.6; //correlation
        float A1 = 0; 
        float A2 = 0;
        
        if (dphi1 == 0.0) dphi1 = 1.e-6;
        if (dphi2 == 0.0) dphi2 = 1.e-6;    
        if (eta  < 0.0) eta  = static_cast<float>(fabs(static_cast<double>(eta)));
        if (eta >= 0.0 && eta < 1.6) 
          {
            A1 = AkLowEta_Fit1[ty1][0]         + AkLowEta_Fit1[ty1][1]*eta 
              + AkLowEta_Fit1[ty1][2]*eta*eta + AkLowEta_Fit1[ty1][3]*eta*eta*eta;
            A2 = AkLowEta_Fit1[ty2][0]         + AkLowEta_Fit1[ty2][1]*eta 
              + AkLowEta_Fit1[ty2][2]*eta*eta + AkLowEta_Fit1[ty2][3]*eta*eta*eta;
            if (fr >= 0 && fr <= 1) 
              {
                A1 *= FRCorrLowEta[ty1][fr];
              }
          }
        
      if (eta >= 1.6 && eta < 2.5)
        {       
          A1 = AkHighEta_Fit1[ty1][0]         + AkHighEta_Fit1[ty1][1]*eta
            + AkHighEta_Fit1[ty1][2]*eta*eta + AkHighEta_Fit1[ty1][3]*eta*eta*eta;
          A2 = AkHighEta_Fit1[ty2][0]         + AkHighEta_Fit1[ty2][1]*eta
            + AkHighEta_Fit1[ty2][2]*eta*eta + AkHighEta_Fit1[ty2][3]*eta*eta*eta;
          if (fr >= 0 && fr <= 1) 
            {
              A1 *= FRCorrHighEta[ty1][fr];
            }
        }
      A1 *= kGlobalScaleFactor;
      A2 *= kGlobalScaleFactor;
      Pt = 1/((( -dphi1/c1/c1/A1+r*dphi2/c1/c2/A2+dphi1*r/c1/c2/A1-dphi2/c2/c2/A2)
               + sqrt( (dphi1/c1/c1/A1-r*dphi2/c1/c2/A2-dphi1*r/c1/A1/c2+dphi2/c2/c2/A2)
                       *(dphi1/c1/c1/A1-r*dphi2/c1/c2/A2-dphi1*r/c1/A1/c2+dphi2/c2/c2/A2)
                       + 8*(1-r*r)*(dphi1*dphi1/c1/c1/A1/A1-2*dphi1*dphi2*r/c1/A1/c2/A2
                                    +dphi2*dphi2/c2/c2/A2/A2)))/(4*(1-r*r)));
      
      } // end 2 or 3 station method
    //    if (Pt<0.0) Pt = 0.0;
    if (Pt<trigger_scale->getPtScale()->getLowEdge(1)) 
      Pt = trigger_scale->getPtScale()->getLowEdge(1);

    // switch to 2-stn Pt above 10 GeV:
    /*
      if (Pt>10.0) {
      switch (type)
      {
      case 1 :
      case 2 :
      Pt = Pt2Stn(1, eta, dphi1);
      break;
      case 3:
      Pt = Pt2Stn(2, eta, dphi1);
      break;
      case 4:
      Pt = Pt2Stn(3, eta, dphi1);
      }
      }
    */
    
    return Pt;
}
float CSCTFPtMethods::Pt3Stn2010 ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  fr = -1,
int  method = 11 
) const

*

Definition at line 2359 of file CSCTFPtMethods.cc.

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, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood(), reco::tau::disc::Pt(), Pt2Stn2010(), launcher::step, trigger_scale, and v.

Referenced by CSCTFPtLUT::calcPt().

{

    if(fabs(eta) >= 2.4)eta = 2.35;
    float Pt = 0.;
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[3] = {0., 0., 0.};
              // calculate phi23 mean  
              double par2[4] = {0., 0., 0., 0.};
              // calculate phi23 sig
              double par_sig2[3] = {0., 0., 0.};
              // calculate correlation rho
              double par_rho[5] = {0., 0., 0., 0., 0.};
              int iETA1 = iETA;
              int iETA2 = iETA;
        switch (type) // type = mode here
          {
          case 2 :  //1-2-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                   par_rho[0] = A_rho123FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho123FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho123FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho123FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho123FrontCSCTF[4][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                   par_rho[0] = A_rho123RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho123RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho123RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho123RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho123RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 2)iETA2 = 2;
                 par2[0] = A_mu23[0][iETA2];
                 par2[1] = A_mu23[1][iETA2];
                 par2[2] = A_mu23[2][iETA2];
                 par2[3] = A_mu23[3][iETA2];
                 par_sig2[0] = A_sig23[0][iETA2];
                 par_sig2[1] = A_sig23[1][iETA2];
                 par_sig2[2] = A_sig23[2][iETA2];

          break;
          case 3 : //1-2-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                   par_rho[0] = A_rho124FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho124FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho124FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho124FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho124FrontCSCTF[4][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                   par_rho[0] = A_rho124RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho124RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho124RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho124RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho124RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 9)iETA2 = 9;
                 par2[0] = A_mu24[0][iETA2];
                 par2[1] = A_mu24[1][iETA2];
                 par2[2] = A_mu24[2][iETA2];
                 par2[3] = A_mu24[3][iETA2];
                 par_sig2[0] = A_sig24[0][iETA2];
                 par_sig2[1] = A_sig24[1][iETA2];
                 par_sig2[2] = A_sig24[2][iETA2];
          break;
          case 4 : //1-3-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu13Front[0][iETA1];
                   par1[1] = A_mu13Front[1][iETA1];
                   par1[2] = A_mu13Front[2][iETA1];
                   par1[3] = A_mu13Front[3][iETA1];
                   par_sig1[0] = A_sig13Front[0][iETA1];
                   par_sig1[1] = A_sig13Front[1][iETA1];
                   par_sig1[2] = A_sig13Front[2][iETA1];
                   par_rho[0] = A_rho134FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho134FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho134FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho134FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho134FrontCSCTF[4][iETA1];                 
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu13Rare[0][iETA1];
                   par1[1] = A_mu13Rare[1][iETA1];
                   par1[2] = A_mu13Rare[2][iETA1];
                   par1[3] = A_mu13Rare[3][iETA1];
                   par_sig1[0] = A_sig13Rare[0][iETA1];
                   par_sig1[1] = A_sig13Rare[1][iETA1];
                   par_sig1[2] = A_sig13Rare[2][iETA1];
                   par_rho[0] = A_rho134RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho134RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho134RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho134RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho134RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 9)iETA2 = 9;
                 par2[0] = A_mu34[0][iETA2];
                 par2[1] = A_mu34[1][iETA2];
                 par2[2] = A_mu34[2][iETA2];
                 par2[3] = A_mu34[3][iETA2];
                 par_sig2[0] = A_sig34[0][iETA2];
                 par_sig2[1] = A_sig34[1][iETA2];
                 par_sig2[2] = A_sig34[2][iETA2];
          break;
          case 5 ://2-3-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu23[0][iETA1];
                 par1[1] = A_mu23[1][iETA1];
                 par1[2] = A_mu23[2][iETA1];
                 par1[3] = A_mu23[3][iETA1];
                 par_sig1[0] = A_sig23[0][iETA1];
                 par_sig1[1] = A_sig23[1][iETA1];
                 par_sig1[2] = A_sig23[2][iETA1];
                 par_rho[0] = A_rho234CSCTF[0][iETA1];
                 par_rho[1] = A_rho234CSCTF[1][iETA1];
                 par_rho[2] = A_rho234CSCTF[2][iETA1];
                 par_rho[3] = A_rho234CSCTF[3][iETA1];
                 par_rho[4] = A_rho234CSCTF[4][iETA1];

                 par2[0] = A_mu34[0][iETA1];
                 par2[1] = A_mu34[1][iETA1];
                 par2[2] = A_mu34[2][iETA1];
                 par2[3] = A_mu34[3][iETA1];
                 par_sig2[0] = A_sig34[0][iETA1];
                 par_sig2[1] = A_sig34[1][iETA1];
                 par_sig2[2] = A_sig34[2][iETA1];
          break;
          case 11 : // b1-1-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu51[0][iETA1];
                 par1[1] = A_mu51[1][iETA1];
                 par1[2] = A_mu51[2][iETA1];
                 par1[3] = A_mu51[3][iETA1];
                 par_sig1[0] = A_sig51[0][iETA1];
                 par_sig1[1] = A_sig51[1][iETA1];
                 par_sig1[2] = A_sig51[2][iETA1];
                 par_rho[0] = A_rho513[0][iETA1]; 
                 par_rho[1] = A_rho513[0][iETA1]; 
                 par_rho[2] = A_rho513[0][iETA1]; 
                 par_rho[3] = A_rho513[0][iETA1]; 
                 par_rho[4] = A_rho513[0][iETA1]; 

                 par2[0] = A_mu13Rare[0][iETA1];
                 par2[1] = A_mu13Rare[1][iETA1];
                 par2[2] = A_mu13Rare[2][iETA1];
                 par2[3] = A_mu13Rare[3][iETA1];
                 par_sig2[0] = A_sig13Rare[0][iETA1];
                 par_sig2[1] = A_sig13Rare[1][iETA1];
                 par_sig2[2] = A_sig13Rare[2][iETA1];
          break;
          case 12 : // b1-2-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
                 par_rho[0] = A_rho523[0][iETA1];
                 par_rho[1] = A_rho523[0][iETA1];
                 par_rho[2] = A_rho523[0][iETA1];
                 par_rho[3] = A_rho523[0][iETA1];
                 par_rho[4] = A_rho523[0][iETA1];
                 
                 par2[0] = A_mu23[0][iETA1];
                 par2[1] = A_mu23[1][iETA1];
                 par2[2] = A_mu23[2][iETA1];
                 par2[3] = A_mu23[3][iETA1];
                 par_sig2[0] = A_sig23[0][iETA1];
                 par_sig2[1] = A_sig23[1][iETA1];
                 par_sig2[2] = A_sig23[2][iETA1];
          break;
          case 14 : // b1-1-2-(3)
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;
                 par1[0] = A_mu51[0][iETA1];
                 par1[1] = A_mu51[1][iETA1];
                 par1[2] = A_mu51[2][iETA1];
                 par1[3] = A_mu51[3][iETA1];
                 par_sig1[0] = A_sig51[0][iETA1];
                 par_sig1[1] = A_sig51[1][iETA1];
                 par_sig1[2] = A_sig51[2][iETA1];
                 par_rho[0] = A_rho512[0][iETA1];
                 par_rho[1] = A_rho512[0][iETA1];
                 par_rho[2] = A_rho512[0][iETA1];
                 par_rho[3] = A_rho512[0][iETA1];
                 par_rho[4] = A_rho512[0][iETA1];
                 
                 par2[0] = A_mu12Rare[0][iETA1];
                 par2[1] = A_mu12Rare[1][iETA1];
                 par2[2] = A_mu12Rare[2][iETA1];
                 par2[3] = A_mu12Rare[3][iETA1];
                 par_sig2[0] = A_sig12Rare[0][iETA1];
                 par_sig2[1] = A_sig12Rare[1][iETA1];
                 par_sig2[2] = A_sig12Rare[2][iETA1]; 
          break;
          //default:
          //return 0.0;
          }

        // Switch to 2-Station measurement if dphi is too small
        // box cut around Pt of 10 GeV
        if ( fabs(static_cast<double>(dphi2))<0.004 ) 
          {
            if(type == 2 || type == 3) type = 6; // 1-2-3(or 4) -> 1-2 
            if(type == 4) type = 7; // 1-3-4 -> 1-3
            if(type == 5) type = 8; // 2-3-4 -> 2-3
            if(type == 11) type = 14; // b1-1-3 -> b1-1 for pt_method > 10
            Pt = Pt2Stn2010(type, eta, dphi1, fr, method);
          }
        else 
          {
//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
                  double pt = 140;
                  double dpt = 0.1;
                  double step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
/*
                      if(pt == 140.){
                           v[0] = 200.;
                           lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                           v[0] = 200.+ 5.;
                           lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                           lpt2 = (lpt2_2-lpt2_1)/5.;
                            v[0] = 170.;
                            fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }

                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = 137.5; break;}
*/
                      //double rho = fitfrho(v, par_rho); //rho 
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
                  dphi1 = - dphi1;
                  dphi2 = - dphi2;      
                  pt = 140;
                  dpt = 0.1;
                  step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
                      //if(iETA == 3 && v[0] < 4 && v[0] > 3) cout << "m12 = " << fitf5(v, par1) << " sig12 = " << fitf2(v, par_sig1) << endl;
/*
                      if(pt == 140.){
                           v[0] = 200.;
                           lpt2_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                           v[0] = 200.+ 5.;
                           lpt2_2 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                           lpt2 = (lpt2_2-lpt2_1)/5.;
                            v[0] = 170.;
                            fx = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            v[0] = 170.+5.;
                            fxh = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            v[0] = 170.+2*5.;
                            fx2h = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                            lpt2nd = -(fx2h + fx - 2*fxh)/5./5.;
                      }
                      if(pt == 140. && lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = 137.5; break;}
*/
                      //double rho = fitfrho(v, par_rho); //rho 
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon minus 
                  PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  PTsolv = PTsolv*1.2; // correction to have 90% efficiency for trigger cuts
                  if(PTsolv > 137.5) PTsolv = 137.5;
                  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
                  dphi1 = - dphi1; //return to correct sing dphi
                  dphi2 = - dphi2; //return to correct sing dphi
                  Pt = PTsolv;
          } // end 2 or 3 station method
    }}
           // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;

    float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
float CSCTFPtMethods::Pt3Stn2011 ( int  type,
float  eta,
float  dphi1,
float  dphi2,
int  fr = -1,
int  method = 11 
) const

Definition at line 2750 of file CSCTFPtMethods.cc.

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, etabins, Likelihood2011(), reco::tau::disc::Pt(), Pt2Stn2011(), launcher::step, and v.

Referenced by CSCTFPtLUT::calcPt().

{

    //if(fabs(eta) >= 2.4)eta = 2.35;
    if(fabs(eta) >= 2.2) eta = 2.15;  
    float Pt = 0.;
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[4] = {0., 0., 0., 0};
              // calculate phi23 mean  
              double par2[4] = {0., 0., 0., 0.};
              // calculate phi23 sig
              double par_sig2[4] = {0., 0., 0., 0.};
              // calculate correlation rho
              double par_rho[5] = {0., 0., 0., 0., 0.};
              int iETA1 = iETA;
              int iETA2 = iETA; 

// defind which parameters will be use
        double (*Amean12F)[15] = AB_mu12F; 
        double (*Asig12F)[15] = AB_sig12F; 
        double (*Amean12R)[15] = AB_mu12R; 
        double (*Asig12R)[15] = AB_sig12R; 

        double (*Amean13F)[15] = AB_mu13F; 
        double (*Asig13F)[15] = AB_sig13F; 
        double (*Amean13R)[15] = AB_mu13R; 
        double (*Asig13R)[15] = AB_sig13R; 

        //double (*Amean14F)[15] = AB_mu14F; 
        //double (*Asig14F)[15] = AB_sig14F; 
        //double (*Amean14R)[15] = AB_mu14R; 
        //double (*Asig14R)[15] = AB_sig14R; 

        double (*Amean23)[15] = AB_mu23;
        double (*Asig23)[15] = AB_sig23;
        double (*Amean24)[15] = AB_mu24;
        double (*Asig24)[15] = AB_sig24;
        double (*Amean34)[15] = AB_mu34;
        double (*Asig34)[15] = AB_sig34;

        double (*Amean5)[15] = AB_mu5;
        double (*Asig5)[15] = AB_sig5;
        double (*Amean51)[15] = AB_mu51;
        double (*Asig51)[15] = AB_sig51;
        double (*Amean52)[15] = AB_mu52;
        double (*Asig52)[15] = AB_sig52;
        double (*Amean53)[15] = AB_mu53;
        double (*Asig53)[15] = AB_sig53;

        double (*Arho123F)[15] = AB_rho123F;
        double (*Arho123R)[15] = AB_rho123R;
        double (*Arho124F)[15] = AB_rho124F;
        double (*Arho124R)[15] = AB_rho124R;
        double (*Arho134F)[15] = AB_rho134F;
        double (*Arho134R)[15] = AB_rho134R;
        double (*Arho234)[15] = AB_rho234;

        double (*Arho51B)[15] = AB_rho51B;
        double (*Arho52B)[15] = AB_rho52B;
        double (*Arho53B)[15] = AB_rho53B;
        double (*Arho512)[15] = AB_rho512;
        double (*Arho513)[15] = AB_rho513;
        double (*Arho523)[15] = AB_rho523;

        //cout << "iETA = " << iETA 
        //     << " AB_mu51[0][iETA] = " << AB_mu51[0][iETA] << " pointer = " << (*(Amean51+0))[iETA]   
        //     << " AB_mu51[3][iETA] = " << AB_mu51[3][iETA] << " pointer = " << (*(Amean51+3))[iETA]   
        //     << endl;
 
        switch (type) // type = mode here
          {
          case 2 :  //1-2-3
                 if(iETA < 2)iETA2 = 2;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                   par_rho[0] = (*(Arho123F+0))[iETA2];
                   par_rho[1] = (*(Arho123F+1))[iETA2];
                   par_rho[2] = (*(Arho123F+2))[iETA2];
                   par_rho[3] = (*(Arho123F+3))[iETA2];
                   par_rho[4] = (*(Arho123F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 1)iETA1 = 1;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                   par_rho[0] = (*(Arho123R+0))[iETA2];
                   par_rho[1] = (*(Arho123R+1))[iETA2];
                   par_rho[2] = (*(Arho123R+2))[iETA2];
                   par_rho[3] = (*(Arho123R+3))[iETA2];
                   par_rho[4] = (*(Arho123R+4))[iETA2];
                 }
                 par2[0] = (*(Amean23+0))[iETA2];
                 par2[1] = (*(Amean23+1))[iETA2];
                 par2[2] = (*(Amean23+2))[iETA2];
                 par2[3] = (*(Amean23+3))[iETA2];
                 par_sig2[0] = (*(Asig23+0))[iETA2];
                 par_sig2[1] = (*(Asig23+1))[iETA2];
                 par_sig2[2] = (*(Asig23+2))[iETA2]; 
                 par_sig2[3] = (*(Asig23+3))[iETA2]; 

          break;
          case 3 : //1-2-4
                 if(iETA < 3)iETA2 = 3;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                   par_rho[0] = (*(Arho124F+0))[iETA2];
                   par_rho[1] = (*(Arho124F+1))[iETA2];
                   par_rho[2] = (*(Arho124F+2))[iETA2];
                   par_rho[3] = (*(Arho124F+3))[iETA2];
                   par_rho[4] = (*(Arho124F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 1)iETA1 = 1;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                   par_rho[0] = (*(Arho124R+0))[iETA2];
                   par_rho[1] = (*(Arho124R+1))[iETA2];
                   par_rho[2] = (*(Arho124R+2))[iETA2];
                   par_rho[3] = (*(Arho124R+3))[iETA2];
                   par_rho[4] = (*(Arho124R+4))[iETA2];
                 }
                 par2[0] = (*(Amean24+0))[iETA2];
                 par2[1] = (*(Amean24+1))[iETA2];
                 par2[2] = (*(Amean24+2))[iETA2];
                 par2[3] = (*(Amean24+3))[iETA2];
                 par_sig2[0] = (*(Asig24+0))[iETA2];
                 par_sig2[1] = (*(Asig24+1))[iETA2];
                 par_sig2[2] = (*(Asig24+2))[iETA2]; 
                 par_sig2[3] = (*(Asig24+3))[iETA2]; 
          break;
          case 4 : //1-3-4
                 if(iETA < 3)iETA2 = 3;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean13F+0))[iETA1];
                   par1[1] = (*(Amean13F+1))[iETA1];
                   par1[2] = (*(Amean13F+2))[iETA1];
                   par1[3] = (*(Amean13F+3))[iETA1];
                   par_sig1[0] = (*(Asig13F+0))[iETA1];
                   par_sig1[1] = (*(Asig13F+1))[iETA1];
                   par_sig1[2] = (*(Asig13F+2))[iETA1];
                   par_sig1[3] = (*(Asig13F+3))[iETA1];
                   par_rho[0] = (*(Arho134F+0))[iETA2];
                   par_rho[1] = (*(Arho134F+1))[iETA2];
                   par_rho[2] = (*(Arho134F+2))[iETA2];
                   par_rho[3] = (*(Arho134F+3))[iETA2];
                   par_rho[4] = (*(Arho134F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean13R+0))[iETA1];
                   par1[1] = (*(Amean13R+1))[iETA1];
                   par1[2] = (*(Amean13R+2))[iETA1];
                   par1[3] = (*(Amean13R+3))[iETA1];
                   par_sig1[0] = (*(Asig13R+0))[iETA1];
                   par_sig1[1] = (*(Asig13R+1))[iETA1];
                   par_sig1[2] = (*(Asig13R+2))[iETA1];
                   par_sig1[3] = (*(Asig13R+3))[iETA1];
                   par_rho[0] = (*(Arho134R+0))[iETA2];
                   par_rho[1] = (*(Arho134R+1))[iETA2];
                   par_rho[2] = (*(Arho134R+2))[iETA2];
                   par_rho[3] = (*(Arho134R+3))[iETA2];
                   par_rho[4] = (*(Arho134R+4))[iETA2];
                 }
                 par2[0] = (*(Amean34+0))[iETA2];
                 par2[1] = (*(Amean34+1))[iETA2];
                 par2[2] = (*(Amean34+2))[iETA2];
                 par2[3] = (*(Amean34+3))[iETA2];
                 par_sig2[0] = (*(Asig34+0))[iETA2];
                 par_sig2[1] = (*(Asig34+1))[iETA2];
                 par_sig2[2] = (*(Asig34+2))[iETA2]; 
                 par_sig2[3] = (*(Asig34+3))[iETA2]; 
          break;
          case 5 ://2-3-4
                 if(iETA < 2)iETA1 = 2;
                 if(iETA < 3)iETA2 = 3;
                 par1[0] = (*(Amean23+0))[iETA1];
                 par1[1] = (*(Amean23+1))[iETA1];
                 par1[2] = (*(Amean23+2))[iETA1];
                 par1[3] = (*(Amean23+3))[iETA1];
                 par_sig1[0] = (*(Asig23+0))[iETA1];
                 par_sig1[1] = (*(Asig23+1))[iETA1];
                 par_sig1[2] = (*(Asig23+2))[iETA1];
                 par_sig1[3] = (*(Asig23+3))[iETA1];
                 par_rho[0] = (*(Arho234+0))[iETA2];
                 par_rho[1] = (*(Arho234+1))[iETA2];
                 par_rho[2] = (*(Arho234+2))[iETA2];
                 par_rho[3] = (*(Arho234+3))[iETA2];
                 par_rho[4] = (*(Arho234+4))[iETA2];
                 
                 par2[0] = (*(Amean34+0))[iETA2];
                 par2[1] = (*(Amean34+1))[iETA2];
                 par2[2] = (*(Amean34+2))[iETA2];
                 par2[3] = (*(Amean34+3))[iETA2];
                 par_sig2[0] = (*(Asig34+0))[iETA2];
                 par_sig2[1] = (*(Asig34+1))[iETA2];
                 par_sig2[2] = (*(Asig34+2))[iETA2]; 
                 par_sig2[3] = (*(Asig34+3))[iETA2]; 
          break;
          case 11 : // singles for method < 10, for method > 10: fr = 1 -> b1-1-3, fr = 0 -> b1-3-phiBend
                 if(iETA != 2)iETA1 = 2;
                 par1[0] = (*(Amean53+0))[iETA1];
                 par1[1] = (*(Amean53+1))[iETA1];
                 par1[2] = (*(Amean53+2))[iETA1];
                 par1[3] = (*(Amean53+3))[iETA1];
                 par_sig1[0] = (*(Asig53+0))[iETA1];
                 par_sig1[1] = (*(Asig53+1))[iETA1];
                 par_sig1[2] = (*(Asig53+2))[iETA1];
                 par_sig1[3] = (*(Asig53+3))[iETA1];
                 par_rho[0] = (*(Arho53B+0))[iETA1];
                 par_rho[1] = (*(Arho53B+1))[iETA1];
                 par_rho[2] = (*(Arho53B+2))[iETA1];
                 par_rho[3] = (*(Arho53B+3))[iETA1];
                 par_rho[4] = (*(Arho53B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   par1[0] = (*(Amean51+0))[iETA1];
                   par1[1] = (*(Amean51+1))[iETA1];
                   par1[2] = (*(Amean51+2))[iETA1];
                   par1[3] = (*(Amean51+3))[iETA1];
                   par_sig1[0] = (*(Asig51+0))[iETA1];
                   par_sig1[1] = (*(Asig51+1))[iETA1];
                   par_sig1[2] = (*(Asig51+2))[iETA1];
                   par_sig1[3] = (*(Asig51+3))[iETA1];
                   par_rho[0] = (*(Arho513+0))[iETA1];
                   par_rho[1] = (*(Arho513+1))[iETA1];
                   par_rho[2] = (*(Arho513+2))[iETA1];
                   par_rho[3] = (*(Arho513+3))[iETA1];
                   par_rho[4] = (*(Arho513+4))[iETA1];
                 
                   par2[0] = (*(Amean13R+0))[iETA1];
                   par2[1] = (*(Amean13R+1))[iETA1];
                   par2[2] = (*(Amean13R+2))[iETA1];
                   par2[3] = (*(Amean13R+3))[iETA1];
                   par_sig2[0] = (*(Asig13R+0))[iETA1];
                   par_sig2[1] = (*(Asig13R+1))[iETA1];
                   par_sig2[2] = (*(Asig13R+2))[iETA1]; 
                   par_sig2[3] = (*(Asig13R+3))[iETA1]; 
                 }    
          break;
          case 12 : // b1-1-2 for method < 10; for method > 10: fr = 1 -> b1-2-3, fr = 0 -> b1-2-phiBend
                 if(iETA < 1)iETA1 = 1;
                 if(iETA > 2)iETA1 = 2;
                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];
                 par_rho[0] = (*(Arho52B+0))[iETA1];
                 par_rho[1] = (*(Arho52B+1))[iETA1];
                 par_rho[2] = (*(Arho52B+2))[iETA1];
                 par_rho[3] = (*(Arho52B+3))[iETA1];
                 par_rho[4] = (*(Arho52B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   if(iETA != 2)iETA1 = 2;
                   par1[0] = (*(Amean52+0))[iETA1];
                   par1[1] = (*(Amean52+1))[iETA1];
                   par1[2] = (*(Amean52+2))[iETA1];
                   par1[3] = (*(Amean52+3))[iETA1];
                   par_sig1[0] = (*(Asig52+0))[iETA1];
                   par_sig1[1] = (*(Asig52+1))[iETA1];
                   par_sig1[2] = (*(Asig52+2))[iETA1];
                   par_sig1[3] = (*(Asig52+3))[iETA1];
                   par_rho[0] = (*(Arho523+0))[iETA1];
                   par_rho[1] = (*(Arho523+1))[iETA1];
                   par_rho[2] = (*(Arho523+2))[iETA1];
                   par_rho[3] = (*(Arho523+3))[iETA1];
                   par_rho[4] = (*(Arho523+4))[iETA1];
                 
                   par2[0] = (*(Amean23+0))[iETA1];
                   par2[1] = (*(Amean23+1))[iETA1];
                   par2[2] = (*(Amean23+2))[iETA1];
                   par2[3] = (*(Amean23+3))[iETA1];
                   par_sig2[0] = (*(Asig23+0))[iETA1];
                   par_sig2[1] = (*(Asig23+1))[iETA1];
                   par_sig2[2] = (*(Asig23+2))[iETA1]; 
                   par_sig2[3] = (*(Asig23+3))[iETA1]; 
                 }    
          break;
          case 14 : // b1-2 for method < 10; for method > 10: fr = 1 -> b1-1-2-(3), fr = 0 -> b1-1-phiBend
                 if(iETA > 2)iETA1 = 2;
                 par1[0] = (*(Amean51+0))[iETA1];
                 par1[1] = (*(Amean51+1))[iETA1];
                 par1[2] = (*(Amean51+2))[iETA1];
                 par1[3] = (*(Amean51+3))[iETA1];
                 par_sig1[0] = (*(Asig51+0))[iETA1];
                 par_sig1[1] = (*(Asig51+1))[iETA1];
                 par_sig1[2] = (*(Asig51+2))[iETA1];
                 par_sig1[3] = (*(Asig51+3))[iETA1];
                 par_rho[0] = (*(Arho51B+0))[iETA1];
                 par_rho[1] = (*(Arho51B+1))[iETA1];
                 par_rho[2] = (*(Arho51B+2))[iETA1];
                 par_rho[3] = (*(Arho51B+3))[iETA1];
                 par_rho[4] = (*(Arho51B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   if(iETA < 1)iETA1 = 1;
                   if(iETA > 2)iETA1 = 2;
                   par1[0] = (*(Amean51+0))[iETA1];
                   par1[1] = (*(Amean51+1))[iETA1];
                   par1[2] = (*(Amean51+2))[iETA1];
                   par1[3] = (*(Amean51+3))[iETA1];
                   par_sig1[0] = (*(Asig51+0))[iETA1];
                   par_sig1[1] = (*(Asig51+1))[iETA1];
                   par_sig1[2] = (*(Asig51+2))[iETA1];
                   par_sig1[3] = (*(Asig51+3))[iETA1];
                   par_rho[0] = (*(Arho512+0))[iETA1];
                   par_rho[1] = (*(Arho512+1))[iETA1];
                   par_rho[2] = (*(Arho512+2))[iETA1];
                   par_rho[3] = (*(Arho512+3))[iETA1];
                   par_rho[4] = (*(Arho512+4))[iETA1];
                 
                   par2[0] = (*(Amean12R+0))[iETA1];
                   par2[1] = (*(Amean12R+1))[iETA1];
                   par2[2] = (*(Amean12R+2))[iETA1];
                   par2[3] = (*(Amean12R+3))[iETA1];
                   par_sig2[0] = (*(Asig12R+0))[iETA1];
                   par_sig2[1] = (*(Asig12R+1))[iETA1];
                   par_sig2[2] = (*(Asig12R+2))[iETA1]; 
                   par_sig2[3] = (*(Asig12R+3))[iETA1]; 
                 }   
          break;
          //default:
          //return 0.0;
          }

        // Switch to 2-Station measurement if dphi is too small
        // box cut around Pt of 10 GeV
        if ( (fabs(static_cast<double>(dphi2))<0.004  && type != 12 && method < 25)||
             (fabs(static_cast<double>(dphi2))<0.004  && type != 12 && type != 14 && type != 11 && method >= 25) ) 
          {
            //if(type == 12 || type == 14 || type == 11) std::cout << "mode = " << type << " dphi23 = " << dphi2 << " method = " << method << std::endl; //test  
            if(type == 2 || type == 3) type = 6; // 1-2-3(or 4) -> 1-2 
            if(type == 4) type = 7; // 1-3-4 -> 1-3
            if(type == 5) type = 8; // 2-3-4 -> 2-3
            if(type == 11) type = 14; // b1-1-3 -> b1-1 for pt_method > 10
            //if(type == 14) type = 11;
                                                         //phiSign
            Pt = Pt2Stn2011(type, eta, dphi1, fr, method,int(2));//in 3 station track there is no information to which ME1/1 or ME1/2 track belong
          }
        else 
          {
//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
                  double pt = 140;
                  double dpt = 0.1;
                  double step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolv = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
                      //double rho = fitfrho(v, par_rho); //rho 
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
                  dphi1 = - dphi1;
                  dphi2 = - dphi2;      
                  pt = 140;
                  dpt = 0.1;
                  step = 5.;
                  while(pt > 2. ){
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1, lpt1_2, lpt2_1, lpt2_2;
                       v[0] = 0; lpt1_1 = 1.; lpt1_2 = 2.; lpt2_1 = 1.; lpt2_2 = 2.; 
                         v[0] = pt;
                         lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt + dpt;
                         lpt1_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt1 = (lpt1_2-lpt1_1)/dpt; // derivative at point pt1 = pt
                         v[0] = pt - step;
                         lpt2_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                         v[0] = pt - step + dpt;
                         lpt2_2 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      double lpt2 = (lpt2_2-lpt2_1)/dpt; // derivative at point pt1 = pt - step
                      // calculate 2nd derivative at point pt-0.5*step, it should be > 0 if minimum
                      v[0] = pt - 0.5*step;
                      double fx = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + dpt;
                      double fxh = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      v[0] = pt - 0.5*step + 2*dpt;
                      double fx2h = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
    
                      double lpt2nd = -(fx2h + fx - 2*fxh)/dpt/dpt;

                      if(lpt1*lpt2 <= 0 && lpt2nd > 0){PTsolvMinus = pt - 0.5*step; break;}// lpt = 0 between lpt1 and lpt2 => maximum pt_solv is a solution of the likelihood
                      //double rho = fitfrho(v, par_rho); //rho 
                      if(pt > 25) {dpt = 0.1; step = 5.;}
                      if(pt <= 25) {dpt = 0.01; step = 0.5;}
                      pt = pt - step;
                  }// end while
//*********** end solve equation for muon minus 
                  PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  PTsolv = PTsolv*1.2; // correction to have 90% efficiency for trigger cuts
                  if(PTsolv > 137.5) PTsolv = 137.5;
                  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
                  dphi1 = - dphi1; //return to correct sing dphi
                  dphi2 = - dphi2; //return to correct sing dphi
                  Pt = PTsolv;
          } // end 2 or 3 station method
    }}
    // fix overlap region high pt:
    if(method >= 25 && (type == 12 || type == 14 || type == 11) && fabs(dphi1)<0.003 && fabs(dphi2) <2) Pt = 140.; 
           // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;

    //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 
    float Pt_min = 2;// 2 GeV

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
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 3545 of file CSCTFPtMethods.cc.

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, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood(), reco::tau::disc::Pt(), Pt2Stn2012(), launcher::step, trigger_scale, and v.

Referenced by CSCTFPtLUT::calcPt().

{

  int useBestMLH = PtbyMLH;
  int use2Stn = false;
  int use2StnDT = true;
  if(type == 5) use2Stn = true;//switch 2 station assighment for mode = 5
  
    if(fabs(eta) >= 2.4)eta = 2.35;
    float Pt = 0.;
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[3] = {0., 0., 0.};
              // calculate phi23 mean  
              double par2[4] = {0., 0., 0., 0.};
              // calculate phi23 sig
              double par_sig2[3] = {0., 0., 0.};
              // calculate correlation rho
              double par_rho[5] = {0., 0., 0., 0., 0.};
              int iETA1 = iETA;
              int iETA2 = iETA;
        switch (type) // type = mode here
          {
          case 2 :  //1-2-3
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                   par_rho[0] = A_rho123FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho123FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho123FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho123FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho123FrontCSCTF[4][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   //if(fabs(eta)>1.56 && fabs(eta) < 1.6) iETA1 = iETA +1;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                   par_rho[0] = A_rho123RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho123RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho123RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho123RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho123RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 2)iETA2 = 2;
                 par2[0] = A_mu23[0][iETA2];
                 par2[1] = A_mu23[1][iETA2];
                 par2[2] = A_mu23[2][iETA2];
                 par2[3] = A_mu23[3][iETA2];
                 par_sig2[0] = A_sig23[0][iETA2];
                 par_sig2[1] = A_sig23[1][iETA2];
                 par_sig2[2] = A_sig23[2][iETA2];

          break;
          case 3 : //1-2-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu12Front[0][iETA1];
                   par1[1] = A_mu12Front[1][iETA1];
                   par1[2] = A_mu12Front[2][iETA1];
                   par1[3] = A_mu12Front[3][iETA1];
                   par_sig1[0] = A_sig12Front[0][iETA1];
                   par_sig1[1] = A_sig12Front[1][iETA1];
                   par_sig1[2] = A_sig12Front[2][iETA1];
                   par_rho[0] = A_rho124FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho124FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho124FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho124FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho124FrontCSCTF[4][iETA1];
                 }
                 if(fr == 0){
                   if(iETA1 < 1)iETA1 = 1;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu12Rare[0][iETA1];
                   par1[1] = A_mu12Rare[1][iETA1];
                   par1[2] = A_mu12Rare[2][iETA1];
                   par1[3] = A_mu12Rare[3][iETA1];
                   par_sig1[0] = A_sig12Rare[0][iETA1];
                   par_sig1[1] = A_sig12Rare[1][iETA1];
                   par_sig1[2] = A_sig12Rare[2][iETA1];
                   par_rho[0] = A_rho124RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho124RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho124RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho124RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho124RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 9)iETA2 = 9;
                 par2[0] = A_mu24[0][iETA2];
                 par2[1] = A_mu24[1][iETA2];
                 par2[2] = A_mu24[2][iETA2];
                 par2[3] = A_mu24[3][iETA2];
                 par_sig2[0] = A_sig24[0][iETA2];
                 par_sig2[1] = A_sig24[1][iETA2];
                 par_sig2[2] = A_sig24[2][iETA2];
          break;
          case 4 : //1-3-4
                 if(fr == 1){
                   if(iETA1 < 3)iETA1 = 3;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu13Front[0][iETA1];
                   par1[1] = A_mu13Front[1][iETA1];
                   par1[2] = A_mu13Front[2][iETA1];
                   par1[3] = A_mu13Front[3][iETA1];
                   par_sig1[0] = A_sig13Front[0][iETA1];
                   par_sig1[1] = A_sig13Front[1][iETA1];
                   par_sig1[2] = A_sig13Front[2][iETA1];
                   par_rho[0] = A_rho134FrontCSCTF[0][iETA1];
                   par_rho[1] = A_rho134FrontCSCTF[1][iETA1];
                   par_rho[2] = A_rho134FrontCSCTF[2][iETA1];
                   par_rho[3] = A_rho134FrontCSCTF[3][iETA1];
                   par_rho[4] = A_rho134FrontCSCTF[4][iETA1];                 
                 }
                 if(fr == 0){
                   if(iETA1 < 2)iETA1 = 2;
                   if(iETA1 > 11)iETA1 = 11;
                   par1[0] = A_mu13Rare[0][iETA1];
                   par1[1] = A_mu13Rare[1][iETA1];
                   par1[2] = A_mu13Rare[2][iETA1];
                   par1[3] = A_mu13Rare[3][iETA1];
                   par_sig1[0] = A_sig13Rare[0][iETA1];
                   par_sig1[1] = A_sig13Rare[1][iETA1];
                   par_sig1[2] = A_sig13Rare[2][iETA1];
                   par_rho[0] = A_rho134RareCSCTF[0][iETA1];
                   par_rho[1] = A_rho134RareCSCTF[1][iETA1];
                   par_rho[2] = A_rho134RareCSCTF[2][iETA1];
                   par_rho[3] = A_rho134RareCSCTF[3][iETA1];
                   par_rho[4] = A_rho134RareCSCTF[4][iETA1];
                 }
                 if(iETA2 < 9)iETA2 = 9;
                 par2[0] = A_mu34[0][iETA2];
                 par2[1] = A_mu34[1][iETA2];
                 par2[2] = A_mu34[2][iETA2];
                 par2[3] = A_mu34[3][iETA2];
                 par_sig2[0] = A_sig34[0][iETA2];
                 par_sig2[1] = A_sig34[1][iETA2];
                 par_sig2[2] = A_sig34[2][iETA2];
          break;
          case 5 ://2-3-4
                 if(iETA1 < 9)iETA1 = 9;
                 par1[0] = A_mu23[0][iETA1];
                 par1[1] = A_mu23[1][iETA1];
                 par1[2] = A_mu23[2][iETA1];
                 par1[3] = A_mu23[3][iETA1];
                 par_sig1[0] = A_sig23[0][iETA1];
                 par_sig1[1] = A_sig23[1][iETA1];
                 par_sig1[2] = A_sig23[2][iETA1];
                 par_rho[0] = A_rho234CSCTF[0][iETA1];
                 par_rho[1] = A_rho234CSCTF[1][iETA1];
                 par_rho[2] = A_rho234CSCTF[2][iETA1];
                 par_rho[3] = A_rho234CSCTF[3][iETA1];
                 par_rho[4] = A_rho234CSCTF[4][iETA1];

                 par2[0] = A_mu34[0][iETA1];
                 par2[1] = A_mu34[1][iETA1];
                 par2[2] = A_mu34[2][iETA1];
                 par2[3] = A_mu34[3][iETA1];
                 par_sig2[0] = A_sig34[0][iETA1];
                 par_sig2[1] = A_sig34[1][iETA1];
                 par_sig2[2] = A_sig34[2][iETA1];
          break;
          case 11 : // b1-1-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu51[0][iETA1];
                 par1[1] = A_mu51[1][iETA1];
                 par1[2] = A_mu51[2][iETA1];
                 par1[3] = A_mu51[3][iETA1];
                 par_sig1[0] = A_sig51[0][iETA1];
                 par_sig1[1] = A_sig51[1][iETA1];
                 par_sig1[2] = A_sig51[2][iETA1];
                 par_rho[0] = A_rho513[0][iETA1]; 
                 par_rho[1] = A_rho513[0][iETA1]; 
                 par_rho[2] = A_rho513[0][iETA1]; 
                 par_rho[3] = A_rho513[0][iETA1]; 
                 par_rho[4] = A_rho513[0][iETA1]; 

                 par2[0] = A_mu13Rare[0][iETA1];
                 par2[1] = A_mu13Rare[1][iETA1];
                 par2[2] = A_mu13Rare[2][iETA1];
                 par2[3] = A_mu13Rare[3][iETA1];
                 par_sig2[0] = A_sig13Rare[0][iETA1];
                 par_sig2[1] = A_sig13Rare[1][iETA1];
                 par_sig2[2] = A_sig13Rare[2][iETA1];
          break;
          case 12 : // b1-2-3
                 if(iETA1 != 2)iETA1 = 2;
                 par1[0] = A_mu52[0][iETA1];
                 par1[1] = A_mu52[1][iETA1];
                 par1[2] = A_mu52[2][iETA1];
                 par1[3] = A_mu52[3][iETA1];
                 par_sig1[0] = A_sig52[0][iETA1];
                 par_sig1[1] = A_sig52[1][iETA1];
                 par_sig1[2] = A_sig52[2][iETA1];
                 par_rho[0] = A_rho523[0][iETA1];
                 par_rho[1] = A_rho523[0][iETA1];
                 par_rho[2] = A_rho523[0][iETA1];
                 par_rho[3] = A_rho523[0][iETA1];
                 par_rho[4] = A_rho523[0][iETA1];
                 
                 par2[0] = A_mu23[0][iETA1];
                 par2[1] = A_mu23[1][iETA1];
                 par2[2] = A_mu23[2][iETA1];
                 par2[3] = A_mu23[3][iETA1];
                 par_sig2[0] = A_sig23[0][iETA1];
                 par_sig2[1] = A_sig23[1][iETA1];
                 par_sig2[2] = A_sig23[2][iETA1];
          break;
          case 14 : // b1-1-2-(3)
                 if(iETA1 < 1)iETA1 = 1;
                 if(iETA1 > 2)iETA1 = 2;
                 par1[0] = A_mu51[0][iETA1];
                 par1[1] = A_mu51[1][iETA1];
                 par1[2] = A_mu51[2][iETA1];
                 par1[3] = A_mu51[3][iETA1];
                 par_sig1[0] = A_sig51[0][iETA1];
                 par_sig1[1] = A_sig51[1][iETA1];
                 par_sig1[2] = A_sig51[2][iETA1];
                 par_rho[0] = A_rho512[0][iETA1];
                 par_rho[1] = A_rho512[0][iETA1];
                 par_rho[2] = A_rho512[0][iETA1];
                 par_rho[3] = A_rho512[0][iETA1];
                 par_rho[4] = A_rho512[0][iETA1];
                 
                 par2[0] = A_mu12Rare[0][iETA1];
                 par2[1] = A_mu12Rare[1][iETA1];
                 par2[2] = A_mu12Rare[2][iETA1];
                 par2[3] = A_mu12Rare[3][iETA1];
                 par_sig2[0] = A_sig12Rare[0][iETA1];
                 par_sig2[1] = A_sig12Rare[1][iETA1];
                 par_sig2[2] = A_sig12Rare[2][iETA1]; 
          break;
          //default:
          //return 0.0;
          }

        // Switch to 2-Station measurement if dphi is too small 
        // box cut around Pt of 10 GeV
        if ( fabs(static_cast<double>(dphi2))<0.004  && ((type >= 11 && use2StnDT) || (type>=2 && type<=5 && use2Stn)))
          {
            if (use2Stn)
              {
                if(type == 2 || type == 3) type = 6; // 1-2-3(or 4) -> 1-2 
                if(type == 4) type = 7; // 1-3-4 -> 1-3
                Pt = Pt2Stn2012(type, eta, dphi1, useBestMLH, bestLH, fr, method);
              }
            if (use2StnDT)
              {
                if(type == 11) type = 14; // b1-1-3 -> b1-1 for pt_method > 10
                Pt = Pt2Stn2012(type, eta, dphi1, useBestMLH, bestLH, fr, method);
              }
          }
        else 
          {
//************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
            double muPlusMaxLH = -1e9;
                  double pt = 140;
                  double step = 5.;
                  double maxLH = -1e9;
                  
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1; 
                      v[0] = 0; lpt1_1 = 1.;
                      v[0] = pt;
                      lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolv = pt;
                        }

                                           
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}

                      pt = pt - step;
                  }// end while
                  muPlusMaxLH = maxLH;
                  
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
                  double muMinusMaxLH = -1e9;
                  dphi1 = - dphi1;
                  dphi2 = - dphi2;      
                  pt = 140;
                  step = 5.;
                  maxLH = -1e9;
                  
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.; 
                      v[0] = pt;
                      lpt1_1 = Likelihood(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolvMinus = pt;
                        }
                      
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}
                      
                      pt = pt - step;
                    }// end while
                  muMinusMaxLH = maxLH;

                  if (useBestMLH)
                    PTsolv = (muPlusMaxLH > muMinusMaxLH) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  else
                    PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  
                  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;
                  //*********** end solve equation for muon minus 
                  
                  PTsolv = PTsolv*1.2; // correction to have 90% efficiency for trigger cuts
                  if(PTsolv > 137.5) PTsolv = 137.5;
                  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
                  dphi1 = - dphi1; //return to correct sing dphi
                  dphi2 = - dphi2; //return to correct sing dphi
                  Pt = PTsolv;
          } // end 2 or 3 station method
    }
    }
           // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;

    float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
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 3913 of file CSCTFPtMethods.cc.

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, etabins, Likelihood2011(), reco::tau::disc::Pt(), Pt2Stn2012_DT(), launcher::step, and v.

Referenced by CSCTFPtLUT::calcPt().

{
  int useBestMLH = PtbyMLH;
  int useBOXcutDT = true;
  int use2Stn = false;
  int use2StnDT = true;
  
    //if(fabs(eta) >= 2.4)eta = 2.35;
    if(fabs(eta) >= 2.2) eta = 2.15;  
    float Pt = 0.;
    double PTsolv = 1.; // for muon plus hypothesis
    double PTsolvMinus = 1.;//for muon minus hypothesis
    for(int iETA = 0; iETA < 15; iETA++){
    if(fabs(eta) >= etabins[iETA] && fabs(eta) < etabins[iETA+1] ){

// calculate curvers of mean and sigma 
              // calculate phi12 mean  
              double par1[4] = {0., 0., 0., 0.};
              //double phi12mean = fitf5(v, par1); //mu12 
              double par_sig1[4] = {0., 0., 0., 0};
              // calculate phi23 mean  
              double par2[4] = {0., 0., 0., 0.};
              // calculate phi23 sig
              double par_sig2[4] = {0., 0., 0., 0.};
              // calculate correlation rho
              double par_rho[5] = {0., 0., 0., 0., 0.};
              int iETA1 = iETA;
              int iETA2 = iETA;

// defind which parameters will be use
        double (*Amean12F)[15] = AB_mu12F; 
        double (*Asig12F)[15] = AB_sig12F; 
        double (*Amean12R)[15] = AB_mu12R; 
        double (*Asig12R)[15] = AB_sig12R; 

        double (*Amean13F)[15] = AB_mu13F; 
        double (*Asig13F)[15] = AB_sig13F; 
        double (*Amean13R)[15] = AB_mu13R; 
        double (*Asig13R)[15] = AB_sig13R; 

        //double (*Amean14F)[15] = AB_mu14F; 
        //double (*Asig14F)[15] = AB_sig14F; 
        //double (*Amean14R)[15] = AB_mu14R; 
        //double (*Asig14R)[15] = AB_sig14R; 

        double (*Amean23)[15] = AB_mu23;
        double (*Asig23)[15] = AB_sig23;
        double (*Amean24)[15] = AB_mu24;
        double (*Asig24)[15] = AB_sig24;
        double (*Amean34)[15] = AB_mu34;
        double (*Asig34)[15] = AB_sig34;

        double (*Amean5)[15] = AB_mu5;
        double (*Asig5)[15] = AB_sig5;
        double (*Amean51)[15] = AB_mu51;
        double (*Asig51)[15] = AB_sig51;
        double (*Amean52)[15] = AB_mu52;
        double (*Asig52)[15] = AB_sig52;
        double (*Amean53)[15] = AB_mu53;
        double (*Asig53)[15] = AB_sig53;

        double (*Arho123F)[15] = AB_rho123F;
        double (*Arho123R)[15] = AB_rho123R;
        double (*Arho124F)[15] = AB_rho124F;
        double (*Arho124R)[15] = AB_rho124R;
        double (*Arho134F)[15] = AB_rho134F;
        double (*Arho134R)[15] = AB_rho134R;
        double (*Arho234)[15] = AB_rho234;

        double (*Arho51B)[15] = AB_rho51B;
        double (*Arho52B)[15] = AB_rho52B;
        double (*Arho53B)[15] = AB_rho53B;
        double (*Arho512)[15] = AB_rho512;
        double (*Arho513)[15] = AB_rho513;
        double (*Arho523)[15] = AB_rho523;

        //cout << "iETA = " << iETA 
        //     << " AB_mu51[0][iETA] = " << AB_mu51[0][iETA] << " pointer = " << (*(Amean51+0))[iETA]   
        //     << " AB_mu51[3][iETA] = " << AB_mu51[3][iETA] << " pointer = " << (*(Amean51+3))[iETA]   
        //     << endl;
 
        switch (type) // type = mode here
          {
          case 2 :  //1-2-3
                 if(iETA < 2)iETA2 = 2;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                   par_rho[0] = (*(Arho123F+0))[iETA2];
                   par_rho[1] = (*(Arho123F+1))[iETA2];
                   par_rho[2] = (*(Arho123F+2))[iETA2];
                   par_rho[3] = (*(Arho123F+3))[iETA2];
                   par_rho[4] = (*(Arho123F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 1)iETA1 = 1;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                   par_rho[0] = (*(Arho123R+0))[iETA2];
                   par_rho[1] = (*(Arho123R+1))[iETA2];
                   par_rho[2] = (*(Arho123R+2))[iETA2];
                   par_rho[3] = (*(Arho123R+3))[iETA2];
                   par_rho[4] = (*(Arho123R+4))[iETA2];
                 }
                 par2[0] = (*(Amean23+0))[iETA2];
                 par2[1] = (*(Amean23+1))[iETA2];
                 par2[2] = (*(Amean23+2))[iETA2];
                 par2[3] = (*(Amean23+3))[iETA2];
                 par_sig2[0] = (*(Asig23+0))[iETA2];
                 par_sig2[1] = (*(Asig23+1))[iETA2];
                 par_sig2[2] = (*(Asig23+2))[iETA2]; 
                 par_sig2[3] = (*(Asig23+3))[iETA2]; 

          break;
          case 3 : //1-2-4
                 if(iETA < 3)iETA2 = 3;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean12F+0))[iETA1];
                   par1[1] = (*(Amean12F+1))[iETA1];
                   par1[2] = (*(Amean12F+2))[iETA1];
                   par1[3] = (*(Amean12F+3))[iETA1];
                   par_sig1[0] = (*(Asig12F+0))[iETA1];
                   par_sig1[1] = (*(Asig12F+1))[iETA1];
                   par_sig1[2] = (*(Asig12F+2))[iETA1];
                   par_sig1[3] = (*(Asig12F+3))[iETA1];
                   par_rho[0] = (*(Arho124F+0))[iETA2];
                   par_rho[1] = (*(Arho124F+1))[iETA2];
                   par_rho[2] = (*(Arho124F+2))[iETA2];
                   par_rho[3] = (*(Arho124F+3))[iETA2];
                   par_rho[4] = (*(Arho124F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 1)iETA1 = 1;
                   par1[0] = (*(Amean12R+0))[iETA1];
                   par1[1] = (*(Amean12R+1))[iETA1];
                   par1[2] = (*(Amean12R+2))[iETA1];
                   par1[3] = (*(Amean12R+3))[iETA1];
                   par_sig1[0] = (*(Asig12R+0))[iETA1];
                   par_sig1[1] = (*(Asig12R+1))[iETA1];
                   par_sig1[2] = (*(Asig12R+2))[iETA1];
                   par_sig1[3] = (*(Asig12R+3))[iETA1];
                   par_rho[0] = (*(Arho124R+0))[iETA2];
                   par_rho[1] = (*(Arho124R+1))[iETA2];
                   par_rho[2] = (*(Arho124R+2))[iETA2];
                   par_rho[3] = (*(Arho124R+3))[iETA2];
                   par_rho[4] = (*(Arho124R+4))[iETA2];
                 }
                 par2[0] = (*(Amean24+0))[iETA2];
                 par2[1] = (*(Amean24+1))[iETA2];
                 par2[2] = (*(Amean24+2))[iETA2];
                 par2[3] = (*(Amean24+3))[iETA2];
                 par_sig2[0] = (*(Asig24+0))[iETA2];
                 par_sig2[1] = (*(Asig24+1))[iETA2];
                 par_sig2[2] = (*(Asig24+2))[iETA2]; 
                 par_sig2[3] = (*(Asig24+3))[iETA2]; 
          break;
          case 4 : //1-3-4
                 if(iETA < 3)iETA2 = 3;
                 if(fr == 1){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean13F+0))[iETA1];
                   par1[1] = (*(Amean13F+1))[iETA1];
                   par1[2] = (*(Amean13F+2))[iETA1];
                   par1[3] = (*(Amean13F+3))[iETA1];
                   par_sig1[0] = (*(Asig13F+0))[iETA1];
                   par_sig1[1] = (*(Asig13F+1))[iETA1];
                   par_sig1[2] = (*(Asig13F+2))[iETA1];
                   par_sig1[3] = (*(Asig13F+3))[iETA1];
                   par_rho[0] = (*(Arho134F+0))[iETA2];
                   par_rho[1] = (*(Arho134F+1))[iETA2];
                   par_rho[2] = (*(Arho134F+2))[iETA2];
                   par_rho[3] = (*(Arho134F+3))[iETA2];
                   par_rho[4] = (*(Arho134F+4))[iETA2];
                 
                 }
                 if(fr == 0){
                   if(iETA < 3)iETA1 = 3;
                   par1[0] = (*(Amean13R+0))[iETA1];
                   par1[1] = (*(Amean13R+1))[iETA1];
                   par1[2] = (*(Amean13R+2))[iETA1];
                   par1[3] = (*(Amean13R+3))[iETA1];
                   par_sig1[0] = (*(Asig13R+0))[iETA1];
                   par_sig1[1] = (*(Asig13R+1))[iETA1];
                   par_sig1[2] = (*(Asig13R+2))[iETA1];
                   par_sig1[3] = (*(Asig13R+3))[iETA1];
                   par_rho[0] = (*(Arho134R+0))[iETA2];
                   par_rho[1] = (*(Arho134R+1))[iETA2];
                   par_rho[2] = (*(Arho134R+2))[iETA2];
                   par_rho[3] = (*(Arho134R+3))[iETA2];
                   par_rho[4] = (*(Arho134R+4))[iETA2];
                 }
                 par2[0] = (*(Amean34+0))[iETA2];
                 par2[1] = (*(Amean34+1))[iETA2];
                 par2[2] = (*(Amean34+2))[iETA2];
                 par2[3] = (*(Amean34+3))[iETA2];
                 par_sig2[0] = (*(Asig34+0))[iETA2];
                 par_sig2[1] = (*(Asig34+1))[iETA2];
                 par_sig2[2] = (*(Asig34+2))[iETA2]; 
                 par_sig2[3] = (*(Asig34+3))[iETA2]; 
          break;
          case 5 ://2-3-4
                 if(iETA < 2)iETA1 = 2;
                 if(iETA < 3)iETA2 = 3;
                 par1[0] = (*(Amean23+0))[iETA1];
                 par1[1] = (*(Amean23+1))[iETA1];
                 par1[2] = (*(Amean23+2))[iETA1];
                 par1[3] = (*(Amean23+3))[iETA1];
                 par_sig1[0] = (*(Asig23+0))[iETA1];
                 par_sig1[1] = (*(Asig23+1))[iETA1];
                 par_sig1[2] = (*(Asig23+2))[iETA1];
                 par_sig1[3] = (*(Asig23+3))[iETA1];
                 par_rho[0] = (*(Arho234+0))[iETA2];
                 par_rho[1] = (*(Arho234+1))[iETA2];
                 par_rho[2] = (*(Arho234+2))[iETA2];
                 par_rho[3] = (*(Arho234+3))[iETA2];
                 par_rho[4] = (*(Arho234+4))[iETA2];
                 
                 par2[0] = (*(Amean34+0))[iETA2];
                 par2[1] = (*(Amean34+1))[iETA2];
                 par2[2] = (*(Amean34+2))[iETA2];
                 par2[3] = (*(Amean34+3))[iETA2];
                 par_sig2[0] = (*(Asig34+0))[iETA2];
                 par_sig2[1] = (*(Asig34+1))[iETA2];
                 par_sig2[2] = (*(Asig34+2))[iETA2]; 
                 par_sig2[3] = (*(Asig34+3))[iETA2]; 
          break;
          case 11 : // singles for method < 10, for method > 10: fr = 1 -> b1-1-3, fr = 0 -> b1-3-phiBend
                 if(iETA != 2)iETA1 = 2;
                 par1[0] = (*(Amean53+0))[iETA1];
                 par1[1] = (*(Amean53+1))[iETA1];
                 par1[2] = (*(Amean53+2))[iETA1];
                 par1[3] = (*(Amean53+3))[iETA1];
                 par_sig1[0] = (*(Asig53+0))[iETA1];
                 par_sig1[1] = (*(Asig53+1))[iETA1];
                 par_sig1[2] = (*(Asig53+2))[iETA1];
                 par_sig1[3] = (*(Asig53+3))[iETA1];
                 par_rho[0] = (*(Arho53B+0))[iETA1];
                 par_rho[1] = (*(Arho53B+1))[iETA1];
                 par_rho[2] = (*(Arho53B+2))[iETA1];
                 par_rho[3] = (*(Arho53B+3))[iETA1];
                 par_rho[4] = (*(Arho53B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   par1[0] = (*(Amean51+0))[iETA1];
                   par1[1] = (*(Amean51+1))[iETA1];
                   par1[2] = (*(Amean51+2))[iETA1];
                   par1[3] = (*(Amean51+3))[iETA1];
                   par_sig1[0] = (*(Asig51+0))[iETA1];
                   par_sig1[1] = (*(Asig51+1))[iETA1];
                   par_sig1[2] = (*(Asig51+2))[iETA1];
                   par_sig1[3] = (*(Asig51+3))[iETA1];
                   par_rho[0] = (*(Arho513+0))[iETA1];
                   par_rho[1] = (*(Arho513+1))[iETA1];
                   par_rho[2] = (*(Arho513+2))[iETA1];
                   par_rho[3] = (*(Arho513+3))[iETA1];
                   par_rho[4] = (*(Arho513+4))[iETA1];
                 
                   par2[0] = (*(Amean13R+0))[iETA1];
                   par2[1] = (*(Amean13R+1))[iETA1];
                   par2[2] = (*(Amean13R+2))[iETA1];
                   par2[3] = (*(Amean13R+3))[iETA1];
                   par_sig2[0] = (*(Asig13R+0))[iETA1];
                   par_sig2[1] = (*(Asig13R+1))[iETA1];
                   par_sig2[2] = (*(Asig13R+2))[iETA1]; 
                   par_sig2[3] = (*(Asig13R+3))[iETA1]; 
                 }    
          break;
          case 12 : // b1-1-2 for method < 10; for method > 10: fr = 1 -> b1-2-3, fr = 0 -> b1-2-phiBend
                 if(iETA < 1)iETA1 = 1;
                 if(iETA > 2)iETA1 = 2;
                 par1[0] = (*(Amean52+0))[iETA1];
                 par1[1] = (*(Amean52+1))[iETA1];
                 par1[2] = (*(Amean52+2))[iETA1];
                 par1[3] = (*(Amean52+3))[iETA1];
                 par_sig1[0] = (*(Asig52+0))[iETA1];
                 par_sig1[1] = (*(Asig52+1))[iETA1];
                 par_sig1[2] = (*(Asig52+2))[iETA1];
                 par_sig1[3] = (*(Asig52+3))[iETA1];
                 par_rho[0] = (*(Arho52B+0))[iETA1];
                 par_rho[1] = (*(Arho52B+1))[iETA1];
                 par_rho[2] = (*(Arho52B+2))[iETA1];
                 par_rho[3] = (*(Arho52B+3))[iETA1];
                 par_rho[4] = (*(Arho52B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   if(iETA != 2)iETA1 = 2;
                   par1[0] = (*(Amean52+0))[iETA1];
                   par1[1] = (*(Amean52+1))[iETA1];
                   par1[2] = (*(Amean52+2))[iETA1];
                   par1[3] = (*(Amean52+3))[iETA1];
                   par_sig1[0] = (*(Asig52+0))[iETA1];
                   par_sig1[1] = (*(Asig52+1))[iETA1];
                   par_sig1[2] = (*(Asig52+2))[iETA1];
                   par_sig1[3] = (*(Asig52+3))[iETA1];
                   par_rho[0] = (*(Arho523+0))[iETA1];
                   par_rho[1] = (*(Arho523+1))[iETA1];
                   par_rho[2] = (*(Arho523+2))[iETA1];
                   par_rho[3] = (*(Arho523+3))[iETA1];
                   par_rho[4] = (*(Arho523+4))[iETA1];
                 
                   par2[0] = (*(Amean23+0))[iETA1];
                   par2[1] = (*(Amean23+1))[iETA1];
                   par2[2] = (*(Amean23+2))[iETA1];
                   par2[3] = (*(Amean23+3))[iETA1];
                   par_sig2[0] = (*(Asig23+0))[iETA1];
                   par_sig2[1] = (*(Asig23+1))[iETA1];
                   par_sig2[2] = (*(Asig23+2))[iETA1]; 
                   par_sig2[3] = (*(Asig23+3))[iETA1]; 
                 }    
          break;
          case 14 : // b1-2 for method < 10; for method > 10: fr = 1 -> b1-1-2-(3), fr = 0 -> b1-1-phiBend
                 if(iETA > 2)iETA1 = 2;
                 par1[0] = (*(Amean51+0))[iETA1];
                 par1[1] = (*(Amean51+1))[iETA1];
                 par1[2] = (*(Amean51+2))[iETA1];
                 par1[3] = (*(Amean51+3))[iETA1];
                 par_sig1[0] = (*(Asig51+0))[iETA1];
                 par_sig1[1] = (*(Asig51+1))[iETA1];
                 par_sig1[2] = (*(Asig51+2))[iETA1];
                 par_sig1[3] = (*(Asig51+3))[iETA1];
                 par_rho[0] = (*(Arho51B+0))[iETA1];
                 par_rho[1] = (*(Arho51B+1))[iETA1];
                 par_rho[2] = (*(Arho51B+2))[iETA1];
                 par_rho[3] = (*(Arho51B+3))[iETA1];
                 par_rho[4] = (*(Arho51B+4))[iETA1];
               
                 par2[0] = (*(Amean5+0))[iETA1];
                 par2[1] = (*(Amean5+1))[iETA1];
                 par2[2] = (*(Amean5+2))[iETA1];
                 par2[3] = (*(Amean5+3))[iETA1];
                 par_sig2[0] = (*(Asig5+0))[iETA1];
                 par_sig2[1] = (*(Asig5+1))[iETA1];
                 par_sig2[2] = (*(Asig5+2))[iETA1]; 
                 par_sig2[3] = (*(Asig5+3))[iETA1]; 

                 if(fr == 1){
                   if(iETA < 1)iETA1 = 1;
                   if(iETA > 2)iETA1 = 2;
                   par1[0] = (*(Amean51+0))[iETA1];
                   par1[1] = (*(Amean51+1))[iETA1];
                   par1[2] = (*(Amean51+2))[iETA1];
                   par1[3] = (*(Amean51+3))[iETA1];
                   par_sig1[0] = (*(Asig51+0))[iETA1];
                   par_sig1[1] = (*(Asig51+1))[iETA1];
                   par_sig1[2] = (*(Asig51+2))[iETA1];
                   par_sig1[3] = (*(Asig51+3))[iETA1];
                   par_rho[0] = (*(Arho512+0))[iETA1];
                   par_rho[1] = (*(Arho512+1))[iETA1];
                   par_rho[2] = (*(Arho512+2))[iETA1];
                   par_rho[3] = (*(Arho512+3))[iETA1];
                   par_rho[4] = (*(Arho512+4))[iETA1];
                 
                   par2[0] = (*(Amean12R+0))[iETA1];
                   par2[1] = (*(Amean12R+1))[iETA1];
                   par2[2] = (*(Amean12R+2))[iETA1];
                   par2[3] = (*(Amean12R+3))[iETA1];
                   par_sig2[0] = (*(Asig12R+0))[iETA1];
                   par_sig2[1] = (*(Asig12R+1))[iETA1];
                   par_sig2[2] = (*(Asig12R+2))[iETA1]; 
                   par_sig2[3] = (*(Asig12R+3))[iETA1]; 
                 }   
          break;
          //default:
          //return 0.0;
          }

        // Switch to 2-Station measurement if dphi is too small
        // box cut around Pt of 10 GeV
        if ( ( ( (fabs(static_cast<double>(dphi2))<0.004  && type != 12 && method < 25)||
                 (fabs(static_cast<double>(dphi2))<0.004  && type != 12 && type != 14 && type != 11 && method >= 25))) &&
             ((type>=2 && type<=5 && use2Stn) || (type >= 11 && use2StnDT)))
          {
            if (use2Stn)
              {
                //if(type == 12 || type == 14 || type == 11) std::cout << "mode = " << type << " dphi23 = " << dphi2 << " method = " << method << std::endl; //test  
                if(type == 2 || type == 3) type = 6; // 1-2-3(or 4) -> 1-2 
                if(type == 4) type = 7; // 1-3-4 -> 1-3
                if(type == 5) type = 8; // 2-3-4 -> 2-3
                Pt = Pt2Stn2012_DT(type, eta, dphi1, useBestMLH, bestLH, fr, method,int(2));//in 3 station track there is no information to which ME1/1 or ME1/2 track belong
              }
            if (use2StnDT)
            {
              if(type == 11) type = 14; // b1-1-3 -> b1-1 for pt_method > 10
              //if(type == 14) type = 11;
              //phiSign
              Pt = Pt2Stn2012_DT(type, eta, dphi1,  useBestMLH, bestLH, fr, method,int(2));//in 3 station track there is no information to which ME1/1 or ME1/2 track belong
            }
          }
        else 
          {
            //************* solve equation dLog(Likelihood)/dpt = 0 for muon + ;
            double muPlusMaxLH = -1e9;
            double pt = 140;
                  double step = 5.;
                  double maxLH = -1e9;
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1;
                      v[0] = 0; lpt1_1 = 1.; 
                      v[0] = pt;
                      lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                      
                      if (lpt1_1 > maxLH)
                        {
                          maxLH = lpt1_1;
                          PTsolv = pt;
                        }
                                         
                      if(pt <= 100) {step = 10.0/4.0;}
                      if(pt <= 50) {step = 5.0/4.0;}
                      if(pt <= 20) {step = 2.0/4.0;}
                      if(pt <= 10) {step = 1.0/4.0;}
                      if(pt <=5) {step = 0.5/4.0;}
                      
                      pt = pt - step;
                  }// end while
                  muPlusMaxLH = maxLH;
//*********** end solve equation for muon plus
//************* solve equation dLog(Likelihood)/dpt = 0 for muon minus ;
// for one station method we know sing of muon: dphi1 > 0 for muon minus!!! => dphi1 = -dphi1 < 0
                  double muMinusMaxLH = -1e9;
                  dphi1 = - dphi1;
                  dphi2 = - dphi2;      
                  pt = 140;
                  step = 5.;
                  maxLH = -1e9;
                  
                  while(pt > 2. )
                    {
                      double par_phi12[1] = {dphi1};
                      double par_phi23[1] = {dphi2};
                      double v[1], lpt1_1;
                       v[0] = 0; lpt1_1 = 1.; 
                       v[0] = pt;
                       lpt1_1 = Likelihood2011(par_phi12, par_phi23, par1, par2, par_sig1, par_sig2, par_rho, v);
                       
                       if (lpt1_1 > maxLH)
                         {
                           maxLH = lpt1_1;
                           PTsolvMinus = pt;
                         }
                                          
                       if(pt <= 100) {step = 10.0/4.0;}
                       if(pt <= 50) {step = 5.0/4.0;}
                       if(pt <= 20) {step = 2.0/4.0;}
                       if(pt <= 10) {step = 1.0/4.0;}
                       if(pt <=5) {step = 0.5/4.0;} 
                       pt = pt - step;
                    }// end while
                  muMinusMaxLH = maxLH;

                  if (useBestMLH)
                    PTsolv = (muPlusMaxLH > muMinusMaxLH) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  else
                    PTsolv = (PTsolv > PTsolvMinus) ? PTsolv: PTsolvMinus; // select Maximum solution from muon plus and moun minus hypotesis
                  
                  bestLH = (muPlusMaxLH > muMinusMaxLH) ? muPlusMaxLH : muMinusMaxLH;

                  PTsolv = PTsolv*1.2; // correction to have 90% efficiency for trigger cuts
                  if(PTsolv > 137.5) PTsolv = 137.5;
                  //if(fabs(dphi1) < 0.002 && fabs(dphi2) <= CutPhi23){PTsolv = 140;}
                  dphi1 = - dphi1; //return to correct sing dphi
                  dphi2 = - dphi2; //return to correct sing dphi
                  Pt = PTsolv;
          } // end 2 or 3 station method
    }}
    // fix overlap region high pt:
    if (useBOXcutDT)
      if(method >= 25 && (type == 12 || type == 14 || type == 11) && fabs(dphi1)<0.003 && fabs(dphi2) <2) Pt = 140.; 
           // if ( fabs(static_cast<double>(dphi2))>0.004 ) std::cout << "Pt = " << Pt << " Mode = " << type << " dphi1 = " << dphi1 << " dphi2 = " << dphi2 << std::endl;

    //float Pt_min = trigger_scale->getPtScale()->getLowEdge(1);// 0 GeV
    //if(method > 10) Pt_min = trigger_scale->getPtScale()->getLowEdge(3);// 2 GeV 
    float Pt_min = 2;// 2 GeV

    return (Pt > Pt_min)  ? Pt : Pt_min;
}
float CSCTFPtMethods::Pt3StnChiSq ( int  type,
float  eta,
int  dphi1,
int  dphi2,
int  fr 
) const

Definition at line 5373 of file CSCTFPtMethods.cc.

References abs, diffTreeTool::diff, dphifr0, dphifr1, etabins, cmsRelvalreport::exit, i, j, gen::k, min, funct::pow(), Pt3Stn(), ptbins, ptmin, CSCTFConstants::SECTOR_RAD, sigmafr0, and sigmafr1.

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

{

  float diff, min, ptmin, ptmax;
  float mypt = 0.0;

  int dphi1copy = dphi1, dphi2copy = dphi2;

  if (type<4 || type>5) 
    {
//      std::cout << "PtParams: illegal track type for Chi-square method" << std::endl;
      edm::LogError("CSCTFPtMethods::Pt3StnChiSq()")<<"Illegal track type for Chi-square method";
      return 0.;
    }

  // flip sign
  //dphi1 = -dphi1; 
  //dphi2 = -dphi2; 


  //determine which eta bin muon falls into
  int i = 0;
  for( i = 0; i < 15; i++ ) 
    {
      if ( eta >= etabins[i] && eta < etabins[i + 1] ) break;
    }
  if ( i == 15 ) 
    {
      //std::cout<<"muon not within any eta range";
      edm::LogWarning("CSCTFPtMethods::Pt3StnChiSq()")<<"Muon not within any eta range";
      if (eta<etabins[0]) 
        { 
          eta = etabins[0];
          i = 0;
        }
      else if (eta>=etabins[15]) 
        {
          eta = etabins[15];
          i = 15;
        }
      else
        exit(0);
    }

  bool bCallOldMethod = false;

  if(abs(dphi2) < 32) dphi2 = 0; //dphi2=dphi23 or dphi24

  //sta1-2-3, dphi1=dphi12, dphi2=dphi23
  if (type == 4) 
    {
      if (fr == 0) 
        {
          //advance past bins in array w/ default values
          //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
          int j = 0;  //start from 1st column, j = 0
          while ( ((dphifr0[0][i][j] == -1 && sigmafr0[0][i][j] == 1) || (dphifr0[2][i][j] == -1 && sigmafr0[2][i][j] == 1)) && j != 28 ) j++;
          if ( j == 28 ) 
            {
//            std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;  
              edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()")<<"Every entry in row is default";
              //        exit(0); //normal termination
              bCallOldMethod = true;
            }
          
          if (!bCallOldMethod) 
            {
              //set min, ptmin, ptmax to first bin
              //in row that is not default
              min = 1.5625 * ( (pow((dphi1 - dphifr0[0][i][j]),2) / pow(sigmafr0[0][i][j],2)) + (pow((dphi2 - dphifr0[2][i][j]),2) / pow(sigmafr0[2][i][j],2)) - (1.2 * (dphi1 - dphifr0[0][i][j]) * (dphi2 - dphifr0[2][i][j]) / (sigmafr0[0][i][j] * sigmafr0[2][i][j])) ); //calculate chi square
              ptmin = ptbins[j];
              ptmax = ptbins[j + 1];
              
              //loop through all pt bins.  assign pt of bin w/ least diff
              //do not include default bins in calculation
              for ( int k = j; k < 28; k++ ) 
                {
                  if( (dphifr0[0][i][k] != -1 || sigmafr0[0][i][k] != 1) && (dphifr0[2][i][k] != -1 || sigmafr0[2][i][k] != 1) ) 
                    {
                      diff = 1.5625 * ( (pow((dphi1 - dphifr0[0][i][k]),2) / pow(sigmafr0[0][i][k],2)) + (pow((dphi2 - dphifr0[2][i][k]),2) / pow(sigmafr0[2][i][k],2)) - (1.2 * (dphi1 - dphifr0[0][i][k]) * (dphi2 - dphifr0[2][i][k]) / (sigmafr0[0][i][k] * sigmafr0[2][i][k])) );
                      if (diff < min) 
                        {
                          min = diff;
                          ptmin = ptbins[k];
                          ptmax = ptbins[k + 1];
                        }
                    }
                }
              mypt = (ptmin + ptmax) / 2;
            }
        }
      
      if (fr == 1) 
        {
          //advance past bins in array w/ default values
          //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
          int j = 0;  //start from 1st column, j = 0
          while ( ((dphifr1[0][i][j] == -1 && sigmafr1[0][i][j] == 1) || (dphifr1[2][i][j] == -1 && sigmafr1[2][i][j] == 1)) && j != 28 ) j++;
          if ( j == 28 ) 
            {
//            std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;  
              edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()")<<"Every entry in row is default";
              //        exit(0); //normal termination
              bCallOldMethod = true;
            }

          if (!bCallOldMethod) 
            {
              //set min, ptmin, ptmax to first bin
              //in row that is not default
              min = 1.5625 * ( (pow((dphi1 - dphifr1[0][i][j]),2) / pow(sigmafr1[0][i][j],2)) + (pow((dphi2 - dphifr1[2][i][j]),2) / pow(sigmafr1[2][i][j],2)) - (1.2 * (dphi1 - dphifr1[0][i][j]) * (dphi2 - dphifr1[2][i][j]) / (sigmafr1[0][i][j] * sigmafr1[2][i][j])) ); //calculate chi square
              ptmin = ptbins[j];
              ptmax = ptbins[j + 1];
              
              //loop through all pt bins.  assign pt of bin w/ least diff
              //do not include default bins in calculation
              for ( int k = j; k  < 28; k++ ) 
                {
                  if( (dphifr1[0][i][k] != -1 || sigmafr1[0][i][k] != 1) && (dphifr1[2][i][k] != -1 || sigmafr1[2][i][k] != 1) ) 
                    {
                      diff = 1.5625 * ( (pow((dphi1 - dphifr1[0][i][k]),2) / pow(sigmafr1[0][i][k],2)) + (pow((dphi2 - dphifr1[2][i][k]),2) / pow(sigmafr1[2][i][k],2)) - (1.2 * (dphi1 - dphifr1[0][i][k]) * (dphi2 - dphifr1[2][i][k]) / (sigmafr1[0][i][k] * sigmafr1[2][i][k])) );
                      if (diff < min) 
                        {
                          min = diff;
                          ptmin = ptbins[k];
                          ptmax = ptbins[k + 1];
                        }
                    }
                  mypt = (ptmin + ptmax) / 2;
                }
            }
        }
    }
  
  //sta1-2-4, dphi1=dphi12, dphi2=dphi24
  if (type == 5) 
    {
      
      if (fr == 0) 
        {
          //advance past bins in array w/ default values
          //default is: dphifr0[x][y][z] = -1, sigmafr0[x][y][z] = 1
          int j = 0;  //start from 1st column, j = 0
          while ( ((dphifr0[0][i][j] == -1 && sigmafr0[0][i][j] == 1) || (dphifr0[3][i][j] == -1 && sigmafr0[3][i][j] == 1)) && j != 28 ) j++;
          if ( j == 28 ) 
            {
//            std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;  
              edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()")<<"Every entry in row is default";
              //        exit(0); //normal termination
              bCallOldMethod = true;
            }

          if (!bCallOldMethod) 
            {
              //set min, ptmin, ptmax to first bin
              //in row that is not default
              min = 1.5625 * ( (pow((dphi1 - dphifr0[0][i][j]),2) / pow(sigmafr0[0][i][j],2)) + (pow((dphi2 - dphifr0[3][i][j]),2) / pow(sigmafr0[3][i][j],2)) - (1.2 * (dphi1 - dphifr0[0][i][j]) * (dphi2 - dphifr0[3][i][j]) / (sigmafr0[0][i][j] * sigmafr0[3][i][j])) ); //calculate chi square
              ptmin = ptbins[j];
              ptmax = ptbins[j + 1];
              
              //loop through all pt bins.  assign pt of bin w/ least diff
      //do not include default bins in calculation
              for ( int k = j; k < 28; k++ ) 
                {
                  if( (dphifr0[0][i][k] != -1 || sigmafr0[0][i][k] != 1) && (dphifr0[3][i][k] != -1 || sigmafr0[3][i][k] != 1) ) 
                    {
                      diff = 1.5625 * ( (pow((dphi1 - dphifr0[0][i][k]),2) / pow(sigmafr0[0][i][k],2)) + (pow((dphi2 - dphifr0[3][i][k]),2) / pow(sigmafr0[3][i][k],2)) - (1.2 * (dphi1 - dphifr0[0][i][k]) * (dphi2 - dphifr0[3][i][k]) / (sigmafr0[0][i][k] * sigmafr0[3][i][k])) );
                      if (diff < min) 
                        {
                          min = diff;
                          ptmin = ptbins[k];
                          ptmax = ptbins[k + 1];
                        }
                    }
                }
              mypt = (ptmin + ptmax) / 2;
            }
        }
      
      if (fr == 1) 
        {
          //advance past bins in array w/ default values
          //default is: dphifr1[x][y][z] = -1, sigmafr1[x][y][z] = 1
          int j = 0;  //start from 1st column, j = 0
          while ( ((dphifr1[0][i][j] == -1 && sigmafr1[0][i][j] == 1) || (dphifr1[3][i][j] == -1 && sigmafr1[3][i][j] == 1)) && j != 28 ) j++;
          if ( j == 28 ) 
            {
//            std::cout<<" L1MuCSCPtParams: every entry in row is default"<<std::endl;  
              edm::LogInfo("CSCTFPtMethods::Pt3StnChiSq()")<<"Every entry in row is default";
              //        exit(0); //normal termination
              bCallOldMethod = true;
            }
          
          if (!bCallOldMethod) 
            {
              //set min, ptmin, ptmax to first bin
              //in row that is not default
              min = 1.5625 * ( (pow((dphi1 - dphifr1[0][i][j]),2) / pow(sigmafr1[0][i][j],2)) + (pow((dphi2 - dphifr1[3][i][j]),2) / pow(sigmafr1[3][i][j],2)) - (1.2 * (dphi1 - dphifr1[0][i][j]) * (dphi2 - dphifr1[3][i][j]) / (sigmafr1[0][i][j] * sigmafr1[3][i][j])) ); //calculate chi square
              ptmin = ptbins[j];
              ptmax = ptbins[j + 1];
              
              //loop through all pt bins.  assign pt of bin w/ least diff
              //do not include default bins in calculation
              for ( int k = j; k < 28; k++ ) 
                {
                  if( (dphifr1[0][i][k] != -1 || sigmafr1[0][i][k] != 1) && (dphifr1[3][i][k] != -1 || sigmafr1[3][i][k] != 1) ) 
                    {
                      diff = 1.5625 * ( (pow((dphi1 - dphifr1[0][i][k]),2) / pow(sigmafr1[0][i][k],2)) + (pow((dphi2 - dphifr1[3][i][k]),2) / pow(sigmafr1[3][i][k],2)) - (1.2 * (dphi1 - dphifr1[0][i][k]) * (dphi2 - dphifr1[3][i][k]) / (sigmafr1[0][i][k] * sigmafr1[3][i][k])) );
                      if (diff < min) 
                        {
                          min = diff;
                          ptmin = ptbins[k];
                          ptmax = ptbins[k + 1];
                        }
                    }
                }
              mypt = (ptmin + ptmax) / 2;
            }
        }
    }
    
  if (bCallOldMethod) 
    {
      float dphi12R = (static_cast<float>(dphi1copy)) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      float dphi23R = (static_cast<float>(dphi2copy)) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      // change defintion of track type to old method
      mypt =  Pt3Stn(type-3, eta, dphi12R, dphi23R, fr);
    }
  return mypt;

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

Definition at line 5619 of file CSCTFPtMethods.cc.

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

Referenced by CSCTFPtLUT::calcPt().

{
  float mypt = 0.0;

  mypt = Pt3StnChiSq(type, eta, dphi1, dphi2, fr);
  if(mypt >= 8.0)
    {
      float dphi12R = (static_cast<float>(dphi1)) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      float dphi23R = (static_cast<float>(dphi2)) / static_cast<float>(1<<12) * CSCTFConstants::SECTOR_RAD;
      // change defintion of track type to old method
      mypt =  Pt3Stn(type-3, eta, dphi12R, dphi23R, fr);      
    }

  return mypt;
}
float CSCTFPtMethods::PtEff90 ( float  pt,
float  eta,
int  mode 
) const

Legacy Pt90 calculation function

Definition at line 5664 of file CSCTFPtMethods.cc.

References trackerHits::c, and eta().

{
  // set pT resolution 
  float c;
  switch (mode) 
    {
      // 3-stn with ME1
    case 2:
    case 3:
    case 4:
      // leave as 2 Stn for now:
      //        if (eta < 2.0)
      //            c = 0.2;
      //        else
      //            c = 0.2 + (eta-2.0)*0.5;
      //        break;
      // 2-stn with ME1
    case 6:
    case 7:
      //        c=(-.2999 * (eta*eta*eta) + 2.030 * (eta*eta) - 4.235 * eta + 3.024)+0.02;
      // Try just fixed value from fits to Pt turn-on curves
      c=0.3;
      break;
      // 2 or 3 stn without ME1
    case 5:
    case 8:
    case 9:
      c=(-2.484 * (eta*eta*eta) + 14.43 * (eta*eta) - 27.66 * eta + 18.47)*.72;
      break;
    case 10:
      c=2.0;
      break;
      // MB1 tracks
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
      c=0.3;
      break;
    default:
      c = 0.0;
    };
  // Calculation of 90% threshold from 50% one, assuming Gaussian resolution
  // 90% of Gaussian area extends to 1.28*sigma
  if (c>0.78) c = 0.78;
  //    return pt/(1.0 - 1.28*c);
  // Let's go back to old empirical method:
  return pt*(1.0 + 1.28*c);
}

Member Data Documentation

const double CSCTFPtMethods::A_mu12Front [static]
Initial value:
 
  {
    {0, 0, 0, -0.10523922235654110946, -0.10983929659374999654, -0.11452047380694262146, -0.11922097760176857129, -0.31345770385362781152, -0.29879434616186489881, -0.26915122313015271693, -0.23825592462089598134, -0.21577716540165170489, 0, 0, 0},
    {0, 0, 0, 0.26520808786388666567, 0.20543788970357632073, 0.15092171845376831096, 0.10960449046799547457, 0.07249357497808966988, 0.084725241812656573726, 0.080545185052021503469, 0.063499540823294411962, 0.052274729725005748826, 0, 0, 0},
    {0, 0, 0, 0.00053807554094229155788, 0.00045289727656323158257, 0.00048500971554021258918, 0.00062343043239925161666, 0.00018916793540052533398, 9.9877853046464147579e-05, 0.00011936753945903473204, -0.00013555974179713960442, -0.00018396374782998390577, 0, 0, 0},
    {0, 0, 0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0, 0} 
  }

parameters for Anna's method 2010

Definition at line 106 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu12Rare [static]
Initial value:
 
  {
    {0, -0.10374889091836100863, -0.099788822609968519384, -0.13818657823143312702, -0.13717556879309533713, -0.14490849378394998759, -0.14408105919423722097, -0.2740736915947392105, -0.25354252758973594428, -0.22856287512160483599, -0.19978450972956338094, -0.18078462391477437277, 0, 0, 0},
    {0, 0.43901381552049162371, 0.33269140862921836588, 0.2867281989745522619, 0.1745740696789168378, 0.13068773408294853677, 0.090289532623200399741, 0.14511096793044100939, 0.089110172781148286325, 0.088325915559225531837, 0.058284739852102536439, 0.054838099980182117288, 0, 0, 0},
    {0, 0.00090427118272218449946, 0.00051285798655137816021, 0.00096712518524937637985, 0.0005533967588738022839, 0.00058699577022335697706, 0.00046096277656442602704, 0.00059775151582151515688, 0.0002982802094889720106, 0.00025087464533485412822, -1.2763501682976573746e-06, 8.7075909949317653082e-05, 0, 0, 0},
    {0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0, 0}
  }

Definition at line 113 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu13Front [static]
Initial value:
 
  {
   {0, 0, 0, -0.13778088536998894797, -0.15278054690526707282, -0.143346136779766542, -0.14969165155567873415, -0.31735124864642083597, -0.33366154127080654979, -0.32035587063652937179, -0.29063133844224109392, -0.2625110988870774098, 0, 0, 0},
   {0, 0, 0, 0.50472519215627242861, 0.45431218833331760143, 0.27978303792475944789, 0.21659344933388599563, 0.39042059382545513113, 0.21436973705419076763, 0.21989939737961083921, 0.17248537946455347325, 0.14545152483288878442, 0, 0, 0},
   {0, 0, 0, 0.00074029784977316568338, 0.00094379263107391029794, 0.00044290989468863904959, 0.00032465731761844673995, 0.00080437043173185620963, 0.00030621821048436737717, 0.00036742704696401365556, 0.00031744969589481185704, 4.3755432326479009111e-05, 0, 0, 0},
   {0, 0, 0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0, 0}
  }

Definition at line 108 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu13Rare [static]
Initial value:
 
  {
   {0, 0, -0.12623127354128180211, -0.17935797490956165157, -0.18060840788964968584, -0.18696605249703140972, -0.19077279628481272344, -0.29349472537983850584, -0.28999462954606641807, -0.28042269536018021858, -0.24794997339523475177, -0.22381101094323510581, 0, 0, 0},
   {0, 0, 0.46581826439734036471, 0.59045368664701669559, 0.42112504758806018623, 0.31214409746624299791, 0.22991099738945788844, 0.38259688787882195626, 0.21032714197086083141, 0.23803428613207575082, 0.16848812991169570541, 0.13391107896586992854, 0, 0, 0},
   {0, 0, 0.0002201385928033240463, 0.00094588024264893161806, 0.0006090017795757148196, 0.00055819818498869361832, 0.00051220623767016942862, 0.0010722093641169425093, 0.00033951226487555219435, 0.00057667736469464204747, 0.00038672362687909188003, 0.00018665348905046641372, 0, 0, 0},
   {0, 0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0, 0}
  }

Definition at line 115 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu14Front [static]
Initial value:
 
  {
   {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.32728513383665119862, -0.30618420062024648276, -0.27554118389520276811, -0.16285631900256525295, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.32023477684420448286, 0.2693691108403535317, 0.22056748837118930751, 0.064251774309308562483, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00042613689417415228419, 0.00055054357631906247761, 0.00015434926334609733872, -0.012950297280226659088, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0}
  }

Definition at line 110 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

const double CSCTFPtMethods::A_mu14Rare [static]
Initial value:
 
  {
   {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.2849452232390318196, -0.26600970450734234829, -0.23683395869018955548, -0.22057309433227462181, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.33740004932669764859, 0.27762229117854592131, 0.19628468723350062097, 0.17323896845886521678, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00036794862559287675862, 0.00059266387001125628905, 0.00029802341315537321086, 0.00025629117987456756858, 0, 0},
   {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0.5999999999999999778, 0, 0}
  }

Definition at line 117 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

const double CSCTFPtMethods::A_mu23 [static]
Initial value:
 
  {

    {0, 0, -0.038262994788483634112, -0.038329955987871006107, -0.0374748823380766094, -0.041131685825480934771, -0.041682237062370237901, -0.043941548191289134251, -0.036858451809650610853, -0.041160145519271960912, -0.03640665951155453578, -0.037033177234847232395, -0.039730205721839016719, -0.041049544792113090708, -0.03904511674158141904},
    {0, 0, 0.22476203480449799543, 0.19067575131669534105, 0.15256324303025625699, 0.13801063658393192268, 0.12256502197662035025, 0.11905632873396845839, 0.10056103279215167223, 0.094455197819930808434, 0.06542931061274483151, 0.055715924150473321308, 0.053301837423971050456, 0.045890095913808617856, 0.027949821903864861122},
    {0, 0, 0.00069404495353071109318, 0.00065670816947569431686, 0.00050715045635956769714, 0.00051087666765004164943, 0.00050201870311558270069, 0.00025160072489320881679, 0.00026119341522217484446, 0.00027099698566654400892, 9.9011225161971808595e-05, 7.3884094779271263388e-05, 0.00025118886053809180194, 0.00035276812785148709559, 0.00023201907068018601732},
    {0, 0, 1.5949221750821838128, 1.7201281725872403783, 1.58953615582846286, 1.1423843849936006212, 0.97788843089194554814, 0.90488697221367975221, 1.1715145764654877336, 1.1384185105977693286, 1.1222106905033706337, 0.8870702391119174024, 0.61881410578333895245, 0.2103057782202895909, 0.20906493220451535797}
  }

Definition at line 127 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu24 [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.061959407101930465134, -0.058818321370234280532, -0.068352281408454867995, -0.061460298909070447404, -0.052235918421231680719, -0.072498226107478094815},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.21211506894042392313, 0.1693324759070968244, 0.16427164509165567696, 0.12206249376578166832, 0.059425221503678751778, 0.10342818163255371178},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00082310131655814202344, 0.00076119821363284040708, 0.0011383177083823211358, 0.00088025107979697856699, 0.00053811687741542281113, 0.0012072828551724611168},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.90513569051375386554, 0.84830498879329219175, 0.61907648481747246105, 0.62281733240515868566, 0.96959526780257299095, 0.22278747273629403991}
  }

Definition at line 129 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_mu34 [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.0058446275511135183447, -0.0044363335612002457661, -0.0063690633680748938092, -0.0071732602982787522714, -0.0060076595959582691081, -0.0097192787716524169095},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.069899440774008433919, 0.041945454306693608082, 0.033695321175754334997, 0.02572107994967174141, 0.011966531649750349747, 0.013632158523237790024},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.00028713324507221590172, -0.00029722368993748908127, -0.00021881992359872021571, -0.00019444183718237873664, -0.00019245346134829781652, -4.7403620157884084486e-05},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 1.23011991602398707, 1.3460026509066507217, 1.3048596027895269511, 1.1101126497057096643, 1.3404667534791459005, 1.1961024662925265893}
  }

Definition at line 131 of file CSCTFPtMethods.h.

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

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 120 of file CSCTFPtMethods.h.

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

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 122 of file CSCTFPtMethods.h.

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

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 124 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

const double CSCTFPtMethods::A_rho123FrontCSCTF [static]
Initial value:
 
  {
    {0, 0, 0, -1.8018355270558423786, -3.0800442413303450451, -73.019003781704810763, -71.455790570687398144, -64.380384468942153831, 2.1550121774347754666, 2.5576552488389672213, 2.449616802429892104, 2.6048654763866916362, 0, 0, 0},
    {0, 0, 0, -2.1007675246065984354, 5.0425956104081919307, 199.99999998505296617, 197.550283903424031, 199.99999998947504309, -3.6752175165788334432, -5.1722529027050292427, -4.3622079033393852399, -3.8822092661387657131, 0, 0, 0},
    {0, 0, 0, 4.7467280498208239692, -0.9954101483761357283, -174.31370635014994264, -172.76138545990900752, -195.76348611065316163, 3.4105036734574345481, 4.6147873662827647578, 3.7484788313774726198, 3.1712066148946220778, 0, 0, 0},
    {0, 0, 0, 0.30810891952961361184, -1.5943850767419220915e-06, 54.774256057823905053, 53.990647071858525408, 62.484493391665445472, -0.69848464296741152868, -0.91930506751317175862, -0.74283883233049896599, -0.63029551267626326982, 0, 0, 0},
    {0, 0, 0, 1.5832663901749726154, 0.74552216086091394054, 2.3871718840149540597, 2.3429031884405246977, 2.5923987724387411724, 0.78470036712835855575, 0.84997184658808944135, 0.77449725473134001241, 0.7103384244719952445, 0, 0, 0}
  }

Definition at line 142 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho123RareCSCTF [static]
Initial value:
 
  {
    {0, 3.693736660096563762e-07, 3.6624889920579235536, -1.5878130861362493853, -16.882029490672145755, -19.782998814333478066, -60.455933184308456418, 4.7409034663087075145, 1.2313698717610916944, 4.0535624038761168819, 2.839672990936767949, 1.1264072104945499486, 0, 0, 0},
    {0, 1.2460479107724575787e-08, -9.1322692253088106895, 2.7885945213228429118, 35.574384349975474606, 52.562872763020486389, 165.96545891988304788, -7.8572084740661054525, -2.2073725837258022509, -8.2319545861659868535, -5.2739465547973312098, -1.6641893104460985242, 0, 0, 0},
    {0, -3.4521070809865814222e-09, 0.304049807886722534, -1.0070939003771062215, -25.509204584815140748, -43.856338459435548316, -142.9795139802988615, 5.1120722960994200434, 2.5507720910098483635, 6.5298492011791555711, 4.4578719360600889132, 2.2487455007422072484, 0, 0, 0},
    {0, 0.11247782203128549317, 6.1743739480412145326, 0.11162411914689808479, 8.9528675403092599083, 15.100558849256662697, 44.430568006333729159, -0.9341261050017011236, -0.55701647459573400134, -1.2571707419142834627, -0.88779580801276813951, -0.51779245640493165581, 0, 0, 0},
    {0, 5.2468060541259898405e-05, 1.8940496384956984066, 0.066707207826664116634, 1.7508237418861856138, 1.8900280458873763845, 2.1844068317738409846, 0.76180412238695105476, 0.72372957011062566401, 0.89275082928758009437, 0.81250184984526685472, 0.71783981961882159517, 0, 0, 0}
  }

Definition at line 146 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho124FrontCSCTF [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 1.3870060999256690337, 2.9712356450806232111, 3.570810174736656073, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -2.5249315692538325528, -5.0029964029336300158, -5.9723457657194050086, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 2.5905258665507675531, 3.7350919226554304409, 4.4308882990573090765, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.46509034721864128681, -0.65123509278498414865, -0.77222404956138701593, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.80362588618902608406, 0.76388670904989408594, 0.8119443249235495097, 0, 0, 0}
  }

Definition at line 143 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho124RareCSCTF [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 3.6863837484595949334, 2.3224336525694582178, 3.2507026803368823664, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -6.9075821699787951502, -4.3426737934213210934, -6.2428017762167931082, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 5.1741882361155777659, 3.6659747818805397124, 5.1137870308059385493, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.8788429753762293517, -0.6687776952912940498, -0.89611818355296113392, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.89064996021251574554, 0.79339716446029262542, 0.92504977817804989737, 0, 0, 0}
  }

Definition at line 147 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho134FrontCSCTF [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 1.9650106495811070495, 4.4682144046367060497, 3.6127345552596952238, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -2.8639423697800454605, -8.5042162539937766752, -6.2743097440414938859, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 2.3846745836159768395, 6.2976695885419857746, 4.8907783903396619962, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.45508861624906205012, -1.1535577557401812676, -0.887603855749135362, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.61133320621013831353, 0.8416666357275194299, 0.84060163399865650558, 0, 0, 0}
  }

Definition at line 144 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho134RareCSCTF [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 3.4612440846722587473, 5.7154640478562965811, 6.1988763822017318716, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -5.7252426310553330424, -10.734814097449786985, -11.773479219426080888, 0, 0, 0}, 
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 4.1825411479975462825, 7.4929964403945605866, 8.4655628853855269256, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.76190351147590362757, -1.349101837260204606, -1.4909015696715794963, 0, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.73180297067413413448, 0.85937126410475961347, 0.96408406745158758966, 0, 0, 0}
  }

Definition at line 148 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_rho234CSCTF [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.90545523934272553745, 0.87175008048078328482, 11.473027189906936485, 11.663806475851881572, 0.42441495626586411838, 0.32838673222117276129},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.44139458152853866535, -0.42393288245808863346, -22.394533628750806997, -23.701781706067023947, 0.3795109868989199331, 0.61276617249320963765},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.051844682585598461655, 0.049996912305763613338, 16.507523030995347568, 17.496995261382853215, -0.25771028946901503032, -0.35814371755433299649},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 2.7429208195040022389e-07, 9.0318461390404003453e-08, -3.1629404839892929502, -3.4008584782052286855, 0.032310851118482836197, 0.04444079467290308616},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, -0.42794073513595692893, -0.42484700224018712156, 1.2597467573071601254, 1.2343273593218078155, -0.1335866415068663049, -0.10123375520631937297}
  }

Definition at line 150 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

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 152 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

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 153 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

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 154 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2010(), and Pt3Stn2012().

const double CSCTFPtMethods::A_sig12Front [static]
Initial value:
 
  {
    {0, 0, 0, 0.012128390128145795368, 0.0060118459615588950434, 0.0066857690437444544998, 0.016870580188088974555, 3.2471855065940857799e-17, 0.04950616849006982817, 0.047875666889731632869, 0.046434926233452016031, 0.043576561593816925955, 0, 0, 0},
    {0, 0, 0, 0.11205437847560090203, 0.14710111810994394577, 0.12139003108545433351, 0.05805544863709271447, 0.44230910905171338943, 0.097455948703866090987, 0.091167182629549800565, 0.08155034337565571223, 0.10115334241053108855, 0, 0, 0},
    {0, 0, 0, 0.00045794655246943964493, 0.00060328713936987944655, 0.00059167776206113108402, 0.00032821487645948946993, 0.0017467056059844235372, 0.00059613339189244513722, 0.00058184715339610595854, 0.00064476542748265707177, 0.00065843267283058381015, 0, 0, 0}
  }

Definition at line 107 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig12Rare [static]
Initial value:
 
  {
    {0, 0.0038093885421048444447, 0.0065769632315039548015, 0.0055592323950014550446, 0.0093835962422483230883, 0.017396352418037726306, 0.020259861529127568686, 0.028034021369845840699, 0.039800110854239546809, 0.039980148857628114434, 0.038524308685830198351, 0.040281758067103733134, 0, 0, 0},
    {0, 0.23514753393254139713, 0.20840454339700395514, 0.1734554515667367236, 0.14712778893221009624, 0.068478644292554124995, 0.045578777378287992084, 0.17971688457142401263, 0.10413274328597779683, 0.096806606002943468292, 0.095972114441355463321, 0.077888109608563196873, 0, 0, 0},
    {0, 0.00060835884164537896556, 0.00057248928258038056342, 0.00054601310456751364283, 0.00045596139082362406765, 0.00036256195477186049098, 0.00033554189220614231851, 0.00081415383922815243514, 0.00064529700989722222747, 0.00063280618158918571729, 0.00066801533625483495039, 0.00061304601669530541484, 0, 0, 0}
  }

Definition at line 114 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig13Front [static]
Initial value:
 
  {
    {0, 0, 0, 0.022229486577380466045, 0.014786622332179612943, 0.022206319015528955263, 0.030956563988669690696, 0.10438632614093404372, 0.052151139493775117151, 0.061379169888241082165, 0.063070119166874993866, 0.062738437335733338029, 0, 0, 0},
    {0, 0, 0, 0.17561127734822717938, 0.248243347883890908, 0.15435972163154007553, 0.098222588303399416265, 0.28864281120179885454, 0.28143242857015660086, 0.16091447629058408531, 0.13483945718353784748, 0.13542102637707623125, 0, 0, 0},
    {0, 0, 0, 0.00050105260335033322255, 0.00060095811169912115909, 0.00049407859567527159534, 0.00062091453005704531909, 0.00046438613640785659023, 0.00074251112464886865304, 0.00070054085319381544095, 0.00064104982805283157888, 0.00060566613754535849647, 0, 0, 0}
  }

Definition at line 109 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig13Rare [static]
Initial value:
 
  {
    {0, 0, 0.015046443595756202674, 0.024350274050281187077, 0.030516519859742685661, 0.034951536569288559064, 0.040872596013944946514, 0.075500038528175023034, 0.054258877880390701809, 0.057948329004836200695, 0.055684189309453437089, 0.055547652610341891055, 0, 0, 0},
    {0, 0, 0.72981359973468040714, 0.25552798678505961316, 0.20538399097483123201, 0.13568477284924612691, 0.087691623490571385391, 0.14380693710811331965, 0.17784552932129321645, 0.15447707796169932171, 0.15118995597952319954, 0.13106219757004208826, 0, 0, 0},
    {0, 0, 0.00047001852983351251119, 0.00053481400606665866967, 0.00036348184816972377081, 0.00037774161715020031574, 0.00026657604722595630358, 0.00029086094173271957383, 0.00068184877937593074432, 0.00058313040724595804811, 0.00061068422520455867882, 0.00061315948044054677767, 0, 0, 0}
  }

Definition at line 116 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig14Front [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.060082258981389996544, 0.07247051398468504213, 0.069785008221314948074, 3.6424053064063738328e-12, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.30722806049859069377, 0.20925971382909466789, 0.21969785537300090539, 0.022179262487250456931, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00094734288756094921311, 0.00069588950170735620632, 0.00069173065831375820777, 0.095265205090887594697, 0, 0}
  }

Definition at line 111 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

const double CSCTFPtMethods::A_sig14Rare [static]
Initial value:
 
  {
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.057936258148966857107, 0.067831242837197713857, 0.065620840504349520206, 0.054328715544637938561, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.30423086251952391468, 0.20761013178198547968, 0.19093892168102474804, 0.38288685251508419727, 0, 0},
    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00080261760198784384054, 0.00063696047781503656055, 0.00065139580093967995589, 0.00069639579902228165072, 0, 0}
  }

Definition at line 118 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

const double CSCTFPtMethods::A_sig23 [static]
Initial value:
 
  {
     {0, 0, 5.1487948019707241443e-14, 1.371515748194163109e-17, 5.7867664653155070908e-15, 0.0018689633292167232882, 0.0022366390858728274135, 0.0098612407883851022766, 6.8801945206625053642e-12, 0.0032973305248131545321, 0.0054990363466139750501, 0.0092745687266331533483, 0.011501230292384876167, 0.012866555123334103353, 0.01433335748409165708},
     {0, 0, 0.20455300017238808863, 0.19201919320235372179, 0.17201776141542601817, 0.12441381076621171875, 0.1050096955004960475, 0.086699597450937707088, 0.12195247491883690061, 0.12325808533281308599, 0.096676601548240911899, 0.075608663356511091047, 0.063411508431177876499, 0.053299915739310803342, 0.048982690822271121589},
     {0, 0, 0.00067345631439024247495, 0.00071637601448934864513, 0.00073991596851847836816, 0.0007991069380909875423, 0.0008004777620410123912, 0.00089609812741991013828, 0.001505913962207979526, 0.0014477291363779595194, 0.001410515534491615236, 0.0013306603256628582281, 0.0012465454381592282456, 0.0012290059929163277448, 0.001182792281371985825}
  }

Definition at line 128 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig24 [static]
Initial value:
 
  {
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.036897103741702109991, 0.039899187881393870236, 0.037199371928606554671, 0.044110460084859734464, 0.04574632914580819415, 0.043819228659279139959},
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.12588087914450593607, 0.096275574709463407341, 0.097301378507412841778, 0.062284950968221723666, 0.040981290949611878793, 0.062080679266191686472},
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00015197851743841865125, 0.00020141684336612834154, 0.00023753469072643055345, 5.280883524679438998e-05, 5.5577569515852236366e-05, 6.1083145679098556401e-05}
  }

Definition at line 130 of file CSCTFPtMethods.h.

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

const double CSCTFPtMethods::A_sig34 [static]
Initial value:
 
  {
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.014243461206981972156, 0.010278183995352333305, 0.013373297961434488582, 0.018049641090122695714, 0.018285814028279508137, 0.018004419633993375832},
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.080281940189430453514, 0.097702954127336857915, 0.068717674384759980244, 0.047838267178665204449, 0.043271382660605303694, 0.034571413197575895371},
     {0, 0, 0, 0, 0, 0, 0, 0, 0, 0.00019610172919627981338, 0.00020181030100052541531, 9.721123551963389408e-05, 7.9515919724251022879e-05, 3.152903608551011833e-05, -1.5281155054305934032e-05}
  }

Definition at line 132 of file CSCTFPtMethods.h.

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

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 121 of file CSCTFPtMethods.h.

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

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 123 of file CSCTFPtMethods.h.

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

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 125 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt2Stn2012().

double CSCTFPtMethods::AB_mu12F [static]
Initial value:
 
    {
  {0, 0, 0, 0.089491067646809183134, 0.10739646024310070538, 0.12549844133338972085, 0.1194760053165676017, 0.30626893792235526659, 0.30009410052196983099, 0.2690532347360728993, 0.23688757461948814487, 0.21899489554680626191, 0.21285418228245533978, 0.15525112596260939868, 0.1770936851403528689},
  {0, 0, 0, -0.16463359422729287318, -0.18522613297525072906, -0.17065296570525056996, -0.1155394236109319045, -0.18380971440851143206, -0.1859966131117936905, -0.15845841533583629457, -0.12868208564229521862, -0.11875959710980291129, -0.13461549793851387835, -0.090885866696312114787, -0.14347961143957646546},
  {0, 0, 0, 5.0479701928535670313e-06, -8.5107255627149016024e-05, -0.00031591725812981632723, -0.00010313307150067754737, 6.1998863886012596167e-05, 3.5535741450015050427e-05, -0.00033034534768735314718, 0.00025570884563717226432, -3.2430491772480606483e-05, -3.928192779951495588e-05, 0.0028259336045576349469, -0.00124297387660909117},
  {0, 0, 0, 1.6276716966428210753, 1.1244502885068945464, 0.44061802755260442988, 0.68081944372417602107, 1.2892912513078853554, 1.2098030702058406582, 1.2406526312160988113, 1.2588644895814975477, 1.2343544778925670258, 0.59901494992516879368, 0.9845753793507600049, 0.72134724334000244195}
  }

Definition at line 64 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.30997988806094234349, 0.2960464576032310613, 0.26865522361643923155, 0.24306471114654951138, 0.21612598016341960649, 0.20916086000526656896, 0.14505390185826338989, 0.19626640578808879356},
  {0, 0, 0, 0, 0, 0, 0, -0.18938263233962521204, -0.18099881965541908535, -0.15817156292403300455, -0.13527092529520332032, -0.11802970951212833628, -0.13142443653269073045, -0.081045302368033256268, -0.16548691953190999837},
  {0, 0, 0, 0, 0, 0, 0, 1.9132754352698083493e-05, 0.0001244919158836254626, -0.00036815494148734217474, -0.0003021495594158459864, 0.00032190104529820852321, 5.9699515482881178492e-05, 0.0035011369787794933972, -0.0021251348628855359045},
  {0, 0, 0, 0, 0, 0, 0, 1.2633991230895826874, 1.2237510610710955472, 1.2446734233372107603, 1.2072459880229720053, 1.2073932498298223237, 0.64342700161682475635, 1.0965614756840385002, 0.41184878672694380519}
  }

Definition at line 45 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0.089491067646809183134, 0.10739646024310070538, 0.12549844133338972085, 0.11746188101535759429, 0.11365654376086815891, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.16463359422729287318, -0.18522613297525072906, -0.17065296570525056996, -0.11673113772749151018, -0.096673008784020367234, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 5.0479701928535670313e-06, -8.5107255627149016024e-05, -0.00031591725812981632723, 2.8829297417277944225e-05, -3.3664459708458401629e-05, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 1.6276716966428210753, 1.1244502885068945464, 0.44061802755260442988, 0.82271567628154873564, 0.65764083792276606388, 0, 0, 0, 0, 0, 0, 0}
  }

parameters for Anna's method 2011

Definition at line 39 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu12R [static]
Initial value:
 
    {
  {0, 0.1017548888755877845, 0.13020457985822880831, 0.11777472840868662141, 0.1352735458205116259, 0.14797523226644127003, 0.14891234013414389459, 0.27354809992824791198, 0.25530642162633726544, 0.22812303598569572127, 0.20002002697417936572, 0.18418627647990021279, 0.16918688305075030298, 0.1508108314248207682, 0.11470950874198342084},
  {0, -0.40835812179222591434, -0.4909339449226597929, -0.19396964458569518341, -0.18405457126044733052, -0.15348184403810183341, -0.11949446624665205352, -0.16735504431990988472, -0.15229364636923176102, -0.1292580848284842765, -0.10394284592826465163, -0.093240808678399900167, -0.073171468194201616519, -0.088574463928718608074, -0.066404462713869835677},
  {0, -0.00046324193156588387276, -0.0012328343527384165272, 5.8536010291841255454e-05, 5.3175743777652564014e-05, -0.00027992198289290446886, 0.00017291608058844862988, -0.00050299670363365375, 5.1602382309461525441e-05, -3.0783724988483899057e-05, 0.00040527338575157016622, -7.4202404535834238977e-05, 0.00011377538633743067547, 0.0024019828117533849852, 0.0024540507720086741569},
  {0, 0.82326825991227925439, 0.66225151266154569374, 1.6047267765109303195, 1.172660602794620921, 0.91611151466846096891, 0.923434361821059424, 1.188325655620871224, 1.1930557749505621423, 1.1956156176382155554, 1.2507536548585385106, 1.1818666483459900896, 0.74072890966654614253, 0.49759993894696635808, 1.0630007937555521202}
  }

Definition at line 67 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.27354810039733407079, 0.25530642585169710523, 0.2281232078009739761, 0.20002002697391027541, 0.18418628467434680629, 0.1691868825133146792, 0.15081083142497944682, 0.11470950819931940989},
  {0, 0, 0, 0, 0, 0, 0, -0.16735504499789077837, -0.15229365225374749682, -0.12925824722117412735, -0.10394284592720609561, -0.093240817997744127044, -0.073171468346305876262, -0.088574463929812302654, -0.066404461904397707461},
  {0, 0, 0, 0, 0, 0, 0, -0.00050299673411093688211, 5.1602356927429220493e-05, -3.0794024894263357945e-05, 0.0004052733857930102164, -7.420268691546845442e-05, 0.00011377542095117624751, 0.002401982811750403863, 0.0024540507098964291222},
  {0, 0, 0, 0, 0, 0, 0, 1.1883256550892249415, 1.1930557391196678907, 1.1956122499877577248, 1.2507536548522568687, 1.1818664879149434199, 0.74072892184538741134, 0.4975999389532442807, 1.0630008076007997353}
  }

Definition at line 48 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0.1017548888755877845, 0.13020457985822880831, 0.11777472840868662141, 0.1352735458205116259, 0.14797523226644127003, 0.14891234013414389459, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, -0.40835812179222591434, -0.4909339449226597929, -0.19396964458569518341, -0.18405457126044733052, -0.15348184403810183341, -0.11949446624665205352, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, -0.00046324193156588387276, -0.0012328343527384165272, 5.8536010291841255454e-05, 5.3175743777652564014e-05, -0.00027992198289290446886, 0.00017291608058844862988, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0.82326825991227925439, 0.66225151266154569374, 1.6047267765109303195, 1.172660602794620921, 0.91611151466846096891, 0.923434361821059424, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 42 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu13F [static]
Initial value:
 
    {
  {0, 0, 0, 0.11794009048617049018, 0.14086291718874013879, 0.16139997805131156561, 0.15937656116892420788, 0.34414162356457134173, 0.34440937003010801964, 0.31471704006829814837, 0.27226322158180205069, 0.24550847587442392594, 0.24463956799494918082, 0.16276628030235296141, 0.183078101259807835},
  {0, 0, 0, -0.33781826981928775311, -0.37684193029815427067, -0.3462789133929889962, -0.25060466660909758163, 0.99999999999361011138, -0.31182750009024823301, -0.25849818207822566896, -0.19230025423676194718, -0.15638199224610474514, -0.1860677216141479462, -0.089736178206281214109, -0.12591247971454427867},
  {0, 0, 0, -1.8754239266677112923e-05, -0.00019673769085880689952, -0.00052669062346466261493, -0.00030449439108233132979, 0.00071230918348081078556, -0.00045941836356435766754, -0.00045256277284001311754, 0.00064215185932415489584, 0.00046541851817373622747, 0.00019049878005133037782, 0.0043442731774379211851, 0.0015460291314785047125},
  {0, 0, 0, 1.2452803747346312679, 0.74944265252708708314, 0.37224767027460281543, 0.31339057767893530038, -2.0890914872066272956, 0.95830873379506731347, 1.0457163419608694888, 1.1230565694613476868, 1.1770351235140514845, 0.65014435708651741042, 1.129972103442078657, 0.68378819802357770907}
  }

Definition at line 65 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0.17684262466990949281, 0.34711584948456875033, 0.34173632193931768875, 0.31856060138741582044, 0.29169375726034846297, 0.24666606646956890092, 0.21434901698955760585, 0.22194241387027591195, 0.13650791328679393044},
  {0, 0, 0, 0, 0, 0, 0.99999999999949551466, 0.99999999999457755973, -0.30995317528055632561, -0.26510423524582477084, -0.22052246537701888918, -0.1597247313884862796, -0.14032250966056744601, -0.14430798488566201621, -0.075894576731296098382},
  {0, 0, 0, 0, 0, 0, 0.010426580434797315736, 0.00056720513052092998933, -0.00047916406780649806879, -0.00043513801305821104073, -0.00035934925416836774022, 0.00064159373840440422562, 0.0011012063282968072471, 0.00059066112387542329433, 0.0061369729760295480686},
  {0, 0, 0, 0, 0, 0, -0.46194813956282321232, -2.1380051317667612132, 0.99475655086418368622, 1.0240107231697159751, 1.0710375546859214335, 1.1466745846418702204, 1.0634581787492956018, 0.35737857407704720636, 1.1165504043676175439}
  }

Definition at line 46 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0.11479489063486028599, 0.1385846143670735886, 0.16069130395935576905, 0.16229285551120029019, 0.15970793987729367536, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.31624871209539057171, -0.37204708239816158821, -0.35001738011313637822, -0.28067946142333310977, -0.22587297159275510072, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 4.5422334693538224219e-05, -0.0001534874341906974503, -0.00049456554072302828882, -0.00040362112138876319418, -0.00037532294041719521617, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 1.3698214790637726068, 0.83827124867878388681, 0.35268421062422455892, 0.30966868638086236798, 0.39552380610102405578, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 40 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu13R [static]
Initial value:
 
    {
  {0, 0, 0, 0.17152643870188713504, 0.18220699353677527466, 0.19718061346676321599, 0.20409261783490945108, 0.28630621673439216046, 0.29827733143097401314, 0.27230375589695204885, 0.23990484313734378174, 0.21461969319950535695, 0.20904691238932027186, 0.17455215996309358939, 0.10530527961885094435},
  {0, 0, 0, -0.51329151983333287657, -0.43421697939765058205, -0.38701854807672181336, -0.29367743292763504037, -0.21320341238440754239, -0.27792002471255045082, -0.22893879370744105173, -0.17267579393834603385, -0.13655560753345002967, -0.13221415770245384391, -0.092817386598829765276, -0.047633719610788972931},
  {0, 0, 0, -0.00028330256767296205581, -0.00011104889576832950495, -0.0003659472931155986178, -0.0004494825869971541348, 0.0012300659193085917292, -0.00026218872326014996304, -0.00020411464851317293609, 8.8191777707538176329e-05, 0.0004404702492616239173, -0.00067348981143074907862, 0.0026726730925728564743, 0.0067869187519593900115},
  {0, 0, 0, 1.0806773148892279135, 0.81710737240426545291, 0.49165515886235822141, 0.40288815951359424616, 1.2315550399117412006, 0.86296110777384626989, 0.94745955410233306804, 1.0617206089312878348, 1.0876186592703975808, 0.81349751271060222191, 0.51174005866205685145, 1.3970393581376403525}
  }

Definition at line 68 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.28630621682529061589, 0.29827733143141249572, 0.27230375589683164517, 0.23990484313749371736, 0.21461969319969206871, 0.20904691221965984727, 0.17455215996464093497, 0.10530528191221873169},
  {0, 0, 0, 0, 0, 0, 0, -0.21320341298073050562, -0.27792002471345611525, -0.22893879370711203713, -0.17267579393860862935, -0.13655560753368203852, -0.13221415752155918355, -0.092817386598587681146, -0.047633722138851357364},
  {0, 0, 0, 0, 0, 0, 0, 0.0012300659344863943204, -0.00026218872327451808128, -0.00020411464851349467309, 8.8191777702590311294e-05, 0.00044047024925421437123, -0.00067348979494906663183, 0.0026726730924768165448, 0.0067869186945352134865},
  {0, 0, 0, 0, 0, 0, 0, 1.2315550372405590362, 0.86296110777082257748, 0.94745955410457627366, 1.0617206089293684812, 1.0876186592684131682, 0.81349751399897141102, 0.51174005862466220851, 1.3970393153313427348}
  }

Definition at line 49 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0.17152643870188713504, 0.18220699353677527466, 0.19718061346676321599, 0.20409261783490945108, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.51329151983333287657, -0.43421697939765058205, -0.38701854807672181336, -0.29367743292763504037, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.00028330256767296205581, -0.00011104889576832950495, -0.0003659472931155986178, -0.0004494825869971541348, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 1.0806773148892279135, 0.81710737240426545291, 0.49165515886235822141, 0.40288815951359424616, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 43 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu14F [static]
Initial value:
 
    {
  {0, 0, 0, 0.12104944074518421415, 0.10503732418316034936, 0.099386285225076712035, 0.15823526186568545593, 0.25605688745800425643, 0.39267951247468363407, 0.32990417209085837191, 0.29155610498631334693, 0.25993455189370084923, 0.27876104145873625839, 0.17123500452830145435, 0.1377101784898823178},
  {0, 0, 0, -0.34834159047255092156, -0.3100051372552997675, -0.19689884687529440876, -0.42846101907983596968, -0.19825501228941203036, -0.69127391031064666649, -0.37799519092326222536, -0.2813623780771447036, -0.21851172477385713555, -0.29451256139301251746, -0.11968566909919842178, -0.082430041079910781887},
  {0, 0, 0, 0.0006127466960683334565, 0.0018163416142308417157, 0.0023773788535300438216, 0.0015618030372482551073, 0.0074745015886553429346, 0.018200042017815356438, -0.00044263832599834499045, -0.00013173112084098321899, 0.00048044142847010538715, -0.00028331509653057088387, 0.0047044170533411542104, 0.0077579174433774081635},
  {0, 0, 0, 1.8999999999207801693, 1.3811827661042299642, 1.361253443017911513, 0.16448981101549500772, 1.7211759130995385458, 0.30399083099267765196, 0.92381972077138352351, 0.98949705099683071818, 1.0305604944719717331, 0.18365768267421325732, 0.96525152167887728893, 1.1235655996998157313}
  }

Definition at line 66 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0, 0.21118188098880102954, 0.33402008586605308471, 0.29298980221468984286, 0.26806296448653738063, 0.23720733268363508595, 0.2510285652964933667, 0.14583302968662079091},
  {0, 0, 0, 0, 0, 0, 0, 0, -0.14883704087325219656, -0.39197899608005709604, -0.28520435482868433663, -0.23819454759756183981, -0.2024802801289519727, -0.2369976701205682712, -0.086510146140783658608},
  {0, 0, 0, 0, 0, 0, 0, 0, 0.010748111373072187155, -0.00054440793841566191644, -6.6117096422286744401e-05, 0.00032426109337843134813, 0.00086123563095007638242, 0.00046858791450944800496, 0.0055934740677286293176},
  {0, 0, 0, 0, 0, 0, 0, 0, 1.8177576283415954883, 0.90124364385162747393, 1.0058576108118726378, 0.97434013632935245752, 0.75135849774137752899, 0.090012990328703759713, 1.1491738867249043921}
  }

Definition at line 47 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, 0.10167174785035071327, 0.072305163037876873933, 0.12811797755236814522, 0.15630771929281417343, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, -0.2851531414997146574, -0.12625245577882274195, -0.2693337001449228052, -0.35816854038946227545, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 0.0016536940782984094634, 0.0032050914503555030799, 0.0017500898659728782863, 0.0014193550176488352668, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 1.8999999999960794916, 1.8999999999875891721, 1.1603749006227730423, 0.36919547110219635977, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 41 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu14R [static]
Initial value:
 
    {
  {0, 0, 0, 0.11411457974213083666, 0.14612498789299999125, 0.15438328053344949065, 0.17021962182813230036, 0.23217608026225655671, 0.17425716827684778476, 0.28951128865791975198, 0.26122027861775976021, 0.23988161223077880679, 0.21857963541170638555, 0.15353493229270298581, 0.099522853724256579722},
  {0, 0, 0, -0.32211539883453449429, -0.3332077022119345755, -0.28947013547326555516, -0.31678412927379157038, -0.20453745460807634671, -0.15291198578472323111, -0.37098278728491984602, -0.2755329314623077841, -0.22166866616574540383, -0.17253577136159981009, -0.10047612457203594638, -0.044726394456946053091},
  {0, 0, 0, 0.0021189308480414714535, 0.0017232488622970817526, 0.0014181868364706309241, 0.0020581588744611055593, 0.0075216673068132632735, 0.0091493927895737042766, -0.00026846347791510813061, -0.00028436387259422706009, -0.00033797061809048655314, -0.00032290147294203845477, 0.0043983126453652227755, 0.0087398105487928243185},
  {0, 0, 0, 1.8999999998213816799, 1.8999999999320695832, 1.2588510283946776624, 0.91969335359675130626, 1.402123244759204912, 1.6613910381353069745, 0.73820877543905039087, 0.87917754884863041909, 0.86376276633290960394, 0.6479179238685032205, 1.0974109668483333913, 1.4759522529227795395}
  }

Definition at line 69 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.2321760802583729133, 0.17425716826944270821, 0.28951128850821888916, 0.26122027532891867185, 0.23988161223010590062, 0.21857963541150710052, 0.15353493229255876784, 0.09952290576921750398},
  {0, 0, 0, 0, 0, 0, 0, -0.20453745460356828612, -0.15291198577104561651, -0.370982786914061613, -0.27553292468971468665, -0.22166866616439959148, -0.17253577136118664059, -0.10047612457180872536, -0.044726719317877430826},
  {0, 0, 0, 0, 0, 0, 0, 0.0075216673069431437548, 0.0091493927899154794958, -0.00026846347496581161613, -0.00028436379808289408404, -0.00033797061806371863149, -0.00032290147294330767604, 0.0043983126453711971632, 0.0087398021641503856327},
  {0, 0, 0, 0, 0, 0, 0, 1.4021232447364970763, 1.6613910381816205941, 0.73820877609189006208, 0.87917756535000690654, 0.86376276633863802168, 0.64791792386852542496, 1.0974109668506901727, 1.475947804634221372}
  }

Definition at line 50 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0.11411457974213083666, 0.14612498789299999125, 0.15438328053344949065, 0.17021962182813230036, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.32211539883453449429, -0.3332077022119345755, -0.28947013547326555516, -0.31678412927379157038, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.0021189308480414714535, 0.0017232488622970817526, 0.0014181868364706309241, 0.0020581588744611055593, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 1.8999999998213816799, 1.8999999999320695832, 1.2588510283946776624, 0.91969335359675130626, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 44 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_mu23 [static]
Initial value:
 
    {
  {0, 0, 0.040640362633691015648, 0.04143975404558240816, 0.04469283410800238554, 0.050265056377639047436, 0.057855720910264404888, 0.040911062522024761734, 0.054867130272661442103, 0.054846907254368672258, 0.046280965740868151848, 0.038682214878367017497, 0.047358821703414828719, 0.037269955397813366027, 0.015397788631092694522},
  {0, 0, -0.30371495175799717581, -0.27234040198084696893, -0.27046501071411871431, -0.26067833814957336314, -0.26954736490580177843, -0.1426457415021130104, -0.23307410221367635961, -0.18779763084602629775, -0.11810763599908662147, -0.072929591279204522558, -0.079006610877654537273, -0.042031527428910676891, 0.46158743398909729549},
  {0, 0, -0.00025828047348465653929, -0.00027808828382601912237, -0.00020419752504549583318, -0.00028862468215624839229, -0.00051268154965345151715, 0.00019102278127906206339, -0.00054091437361434690362, -0.00041573301097917752687, -0.000207953040744469843, 0.0001988367837501522125, -0.00031823156270582506067, 0.00033071671524661735465, 0.00045799410811140088724},
  {0, 0, 0.72752266254137853974, 1.0478492412845885617, 0.60915246815134527214, 0.26469232068298520488, 0.036425986309331782886, 0.7132004473344412121, 0.4197273677305951578, 0.44676889254736196211, 0.60643361041043153392, 0.7258089895367305644, 0.21165518657016521575, 0.40994342351793594537, -4.9999999982804226306}
  }

Definition at line 70 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_mu24 [static]
Initial value:
 
    {
  {0, 0, 0, 0.053011865513752004508, 0.062832623407280213668, 0.052170541013462037871, 0.041027537810126024631, 0.040854761324689348179, 0.071402550009543430676, 0.076745077029754082965, 0.079391267110108354466, 0.061688220309377483908, 0.067651891693652002613, 0.053009728431201032228, 0.046716301280283124842},
  {0, 0, 0, -0.3616747887108062165, -0.45141581345418907434, -0.28705970459229912528, -0.2938013269353861312, -0.27050961323017558291, -0.55762354970371696972, -0.39024523502067204328, -0.31496123297823475085, -0.1983420756482438263, -0.17915991058479247, -0.1008896787182539112, -0.055261431747836577133},
  {0, 0, 0, -0.00011948386184051261938, -0.00041171189171825890067, 4.5077223215480308541e-05, 0.00064791923408717482999, 0.00079626044366867831676, -0.00020119232396926791046, -0.00036565327240405023478, -0.00092893743231344070178, -0.00011554026166780945835, -0.00037143262941893379287, 0.00034827979969636918729, 0.00038063971268359605635},
  {0, 0, 0, 1.2751116233058998883, 0.70084162417453721439, 0.90478318682312330878, 0.6800676895845826353, 0.50537353022178055362, 0.054689818098332523832, 0.35827703859892973126, 0.37385157757276732404, 0.50609881884151997067, 0.24620464307424153039, 0.33739943648039177893, 0.61708181749152601903}
  }

Definition at line 71 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_mu34 [static]
Initial value:
 
    {
  {0, 0, 0, 0.019865692759581058541, 0.028670254062000518486, 0.0062000769568667634529, 0.059000642112303595954, 0.021075145497371470388, -0.058857073670921543351, 0.022193946634618946789, 0.032900966871925077517, 0.022468452340586538007, 0.017925131684213620187, 0.021562743542542832376, 0.0096332062965229867807},
  {0, 0, 0, -0.16028204223466294143, -0.24129340031911647446, -0.12167938296678502963, -0.48887217760468759664, -0.41129235965903232497, -0.0044574375495286568116, -0.20497526229305951251, -0.20945390137984670753, -0.133016919476993567, -0.09164367838969658675, -0.078156831196806775264, -0.027061677954361280235},
  {0, 0, 0, -7.2934093657490810247e-05, -0.0005630858306214800782, 0.00056399922304054862787, -0.0014284170932996325277, 0.00026420696996418537115, 0.0019432020683277269335, 5.0465562334091047629e-05, -0.00051405817655614813658, -0.0001476820743599914173, 6.32019763480822774e-05, -0.00034513677440660433691, 0.00057652344564092553817},
  {0, 0, 0, 1.4981302006935997007, 0.74196319813429467693, 1.0145720473926143068, -0.61744054266046588531, -0.95877986541993265313, 1.2494500863514628186, 0.39038293713197214085, 0.24923581566989111424, 0.37358913393430570604, 0.3656156971405563616, 0.18480549227136852664, 0.58966094664056056818}
  }

Definition at line 72 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_mu5 [static]
Initial value:
 
    {
  {-21.733893412375444143, -20.005957733042006197, -17.376452159382715479, -17.985193664266713398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {16.418302072038855499, 13.469008846185953843, 12.429426411511585115, 13.9963454706980297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-0.055045848107516816283, -0.040869122792827908275, -0.025980934073070366397, 0.24210701585155450233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {1.8999999999801029382, 1.7642902553920492004, 1.8222993024358542513, 1.7990108859658437979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 76 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_mu51 [static]
Initial value:
 
    {
  {0.30091153701686212951, 0.21726754617902110933, 0.1456728385238945378, 0.043250093988852815474, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-0.29502353719653978681, -0.19109266041343297982, -0.12108184175216289702, 0.72288502126591014374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0.00012873560389623916068, 4.9291809907909536412e-05, -0.00021151799450913838594, 0.00032645001523661659488, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {1.5787330473223266658, 1.6594505002776189784, 1.8999999999615408974, -4.9999999999974642506, 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().

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 74 of file CSCTFPtMethods.h.

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

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 75 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_rho123F [static]
Initial value:
 
    {
  {0, 0, 0, 0.22630471857151249204, -0.013379305064225920779, -0.095121706310405507168, 0.090200403370782444856, 0.068042852566437661554, 0.079571614226972439687, 0.088219335458001243988, 0.11303324434571153378, 0.10710141493712137251, 0.026455786925147606325, 0.046817553749737651769, 0.039162183157051222437},
  {0, 0, 0, -0.10527570667400622251, 0.12879264930099568187, 0.15092684710998546804, 0.007231087835331297814, -0.015515942667432135182, -0.028054920465640682814, -0.025513746642979444335, -0.038661914393439029969, -0.033319542824023648531, 0.017459601922314698513, -0.015147480411169431461, -0.0040274062679487923622},
  {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 92 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho123R [static]
Initial value:
 
    {
  {0, 0, 0, -0.50534064712241677508, 0.15886026549683709974, 0.24117112423743908289, 0.19155165906038881807, 0.082144222540501604657, 0.079920425013872073428, 0.10933442504482954183, 0.11216820513068381793, 0.14139192912438111605, 0.081067695752670754228, 0.068628530591297767782, 0.105151142748966267},
  {0, 0, 0, 0.4061798017233729241, -0.036885583937586396974, -0.10109132139709975373, -0.093632233538226902758, -0.023232568114674286008, -0.0085349848344330059985, -0.030347560681224468315, -0.04053489453902145434, -0.065178885697974128788, -0.016390211022617402759, -0.016822502733541477155, -0.062227091495819800149},
  {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 95 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho124F [static]
Initial value:
 
    {
  {0, 0, 0, -0.58347458948865937867, 0.40592680503129663361, 0.01641809001879873664, 0.11475806753693058859, -0.18048876743928712885, 0.0068468168498605876462, -0.030777506509684072339, 0.054741994048828152009, 0.097187337842417537148, 0.025067334674935798366, 0.075946312071830973656, 0.085523782829277653073},
  {0, 0, 0, 0.4258108214245352463, -0.23106738109445768004, 0.052661321450187599524, -0.038151728575192320192, 0.1458955237360785584, 0.024582860384737240111, 0.040630008358215272124, -0.0014353305569224008437, -0.020931085629827921035, 0.029892828324785188088, -0.014638662581363729928, -0.031371352411171941899},
  {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 93 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho124R [static]
Initial value:
 
    {
  {0, 0, 0, -0.36581744112230984989, -0.016324931472307423197, -0.208168363607231649, -0.15220265819093764526, 0.049548837240151813455, -0.046656697978846251029, 0.037095174357064712722, 0.035330048922600804095, 0.074157637081893032494, 0.036436813593929799626, 0.14420567874993162061, 0.19071920385708884815},
  {0, 0, 0, 0.29009232235255510979, 0.053824155318333753717, 0.11835331987655291208, 0.10356729636019955387, 0.0067230075967922332814, 0.11622283669531324746, 0.0088495323612498635879, 0.010530505354448004701, -0.015216911572413798284, 0.029269517338766565251, -0.060899379503146208736, -0.10887509306211247406},
  {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 96 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho134F [static]
Initial value:
 
    {
  {0, 0, 0, -0.18585738888975150696, 0.13519522007618323123, 0.28221167590680890092, 0.18146765887707849707, 0.1244677849160726324, 0.31105116640597857414, -0.16202243055042145348, 0.039896884577315043507, -0.37248330593247946929, -0.17019868779262120606, -0.029323371944494535518, 0.149148671625682544},
  {0, 0, 0, 0.14049664985969073649, -0.0029515280689123499225, -0.14984825183404815174, -0.053408519838017261272, -0.055260431588822184201, -0.24961446622059946243, 0.16914774696773446361, 0.026377838114293443439, 0.38350727297664199966, 0.20884886406321828689, 0.088477254929584317478, -0.049311016665284521099},
  {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 94 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho134R [static]
Initial value:
 
    {
  {0, 0, 0, -0.32424288544586399308, 0.065574046096960866836, -0.49534925125377193833, -0.41401921450752909859, 0, -0.054897105600349827004, -0.054121337557626672532, -0.29310761272328111904, -0.15103243717763431553, -0.24914325132296299969, 0.07909932691386906134, 0.12529327248093721781},
  {0, 0, 0, 0.27459892265632174224, -0.0040433910166926267937, 0.37706697672498318274, 0.4151086501992986566, 0, 0.096654494887792055668, 0.085974946019564915667, 0.29549944312402365298, 0.18974566842525927846, 0.29979099594550706609, 0.0234247525877835025, -0.040829919454425725456},
  {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().

double CSCTFPtMethods::AB_rho234 [static]
Initial value:
 
    {
  {0, 0, 0, -0.66569231418957641733, -0.16487806934241325263, -0.31385730203879769196, 0.52187103693478709143, 0.37489404891915861784, 0.29994883232428287689, -0.12176552846395131968, 0.023619718470720949682, -0.1231122737596004324, -0.013562360832243002678, 0.153600562632957377, 0.21939787654152581586},
  {0, 0, 0, 0.5208746747250042608, 0.18612484901444453778, 0.27332732398493131409, -0.23999307292846960848, -0.25179957455310036929, -0.18381974435716647021, 0.20095666079537191639, 0.099861239186999406492, 0.23937023494386369671, 0.16677027620912032724, 0.030275177235765518557, -0.0069954356449047749161},
  {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().

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 99 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

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 100 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_rho51B [static]
Initial value:
 
    {
  {98.146234211833089489, 199.99999999999047873, 199.99591177997166369, -3.3007364270967505249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-198.36420128721084666, 199.99999999971919351, -68.130825896452520851, 5.6331862234953877788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {138.59040321786872596, -199.99999999975074161, -75.103918757648003179, -3.3878388130039773785, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-35.107257005538130556, -78.172491143917071099, 0.25111444908575936141, 0.62856545928460827444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {3.1832394351004249522, 4.981276803141434506, 4.5629636390469778817, 1.1898949050757507973, 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().

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 101 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

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 103 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

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 104 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_sig12F [static]
Initial value:
 
    {
  {0, 0, 0, -0.0076412310580529349199, 0.013106555291144636813, 0.025063779434470568469, 0.01934375127428624927, 0.053326545670601563365, 0.0093197497326487303143, 0.0564902513339693782, 0.032206519204039697757, -0.035023660563668873591, 0.028213900213068406758, 0.022784114759202493683, 0.042615038347082211112},
  {0, 0, 0, 0.11492024270448454593, 0.021102150917381608253, -4.2436183419689021967e-08, 1.3095720405656430252e-08, -0.037472879155788924033, 0.84044166517252949511, 0.15966830269465748238, 0.37149319186299001316, 0.84416754574977770353, 0.033343799149249016278, 6.6539790067633719506e-08, -1.3686068460749822862e-06},
  {0, 0, 0, 0.0021104070024291496713, 0.0018253795336503611177, 0.0016311827288382637312, 0.0021015267562687076422, 0.0014715412047011698984, 0.0018518237493182830404, 0.0011606808553826068482, 0.0013698268430796098002, 0.0034437807938464026943, 0.004439146916271847175, 0.0056493862115556715831, 0.0036722950074267479183},
  {0, 0, 0, 0.90082232171804188514, 1.4715701060292549762, 0.38179435996930433106, 0.90052675260749392994, 1.8999999999893364411, -3.1887755118603267057, -0.93952603198035322674, -1.4200273548894686293, -1.3313935786554595975, 0.84940608722578914147, 1.5495399676596248728, 0.1693217499087649458}
  }

Definition at line 78 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.05458876370405055245, 0.014223815371885261197, 0.051739718849001303802, 0.0043781295277517066206, -0.073251670679359628946, 0.016350518117378025351, 0.024953176408713924339, 0.018013937106717257258},
  {0, 0, 0, 0, 0, 0, 0, -0.037781377479947614306, 0.80848693770251023327, 0.1697030494994675176, 0.78252633158781936817, 1.2537997106918414847, 0.10612967759966565606, -9.206320800321521336e-08, 2.2213840653040328732e-07},
  {0, 0, 0, 0, 0, 0, 0, 0.0013753615162960116606, 0.0017341536986479849473, 0.0013675349666495530479, 0.0017609996279085446749, 0.0046166207484297843919, 0.00495761383888420476, 0.0050988257402144569752, 0.0064203615570604640264},
  {0, 0, 0, 0, 0, 0, 0, 1.8999999999988979038, -3.2324234827503541823, -0.81829590015205422304, -2.7507108181454631435, -1.7359928981630718958, 0.40689058927975751967, 1.4828812725128097672, 1.5951851243514818535}
  }

Definition at line 57 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, -0.0076412310580529349199, 0.013106555291144636813, 0.025063779434470568469, 0.0087226608724667777789, -0.0012964802596261630445, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.11492024270448454593, 0.021102150917381608253, -4.2436183419689021967e-08, 0.072972237191400349254, 0.19729003982512077764, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.0021104070024291496713, 0.0018253795336503611177, 0.0016311827288382637312, 0.0024898068482018614021, 0.0023171447579502014481, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.90082232171804188514, 1.4715701060292549762, 0.38179435996930433106, -0.31089206041852102125, -1.8605481532163505864, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 51 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig12R [static]
Initial value:
 
    {
  {0, -0.024837587047074519142, -0.038443755326854262, 0.010789426545740953695, 0.016714316978066363906, 0.036977680482507623017, 0.023903736191005935108, 0.029083895240537907534, 0.029312604029813168344, -0.035917405187485026974, 0.026066086885230148329, -0.032213952427413247714, 0.034901078113956519877, 0.038079760873761171747, -0.087892299405550919356},
  {0, 0.44916461963533510504, 0.54293566642571933212, 0.018977673263371359902, 0.007932079958008179596, -9.4309201558850225267e-08, 5.2699963039304353885e-09, 0.41762122295566816987, 0.24571510737505500299, 1.3824483935622682296, 0.59561566602531357262, 1.3203480960823190671, -2.930413320681446443e-08, 6.1897109794855492693e-08, 1.3315902039120812717},
  {0, 0.0022745078222873717048, 0.0026499504248443657255, 0.0019347176520538985831, 0.0018882668324742895791, 0.0015313004238581028917, 0.0027721700163088574924, 0.0019308246515342586576, 0.0018496886131083114559, 0.0027736328912367847269, 0.0017558352148668789246, 0.0025111400562838814485, 0.0029777661392665598361, 0.0043603280275831372836, 0.0076843830377456264283},
  {0, -0.87241910961768964761, -1.0549928243465211963, 1.8999999999485288615, 1.6191292705343984792, -0.63912490618228612327, 0.6398194632982362462, -2.0511755324568126113, -0.82689751226606089674, -4.4494753423464956654, -2.9771639242617897736, -4.40606108289291587, 0.96642021015404266926, 0.27486695110845749124, -4.9999999999409219242}
  }

Definition at line 81 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.029083895221947490134, 0.02931261189231387787, -0.035917405392017993926, 0.02606608527812858539, -0.032213952425992904705, 0.034901077580037881409, 0.038079609520293045133, -0.087892299038559315583},
  {0, 0, 0, 0, 0, 0, 0, 0.41762122325588330041, 0.24571503336772770876, 1.382448398827999192, 0.59561568267877507132, 1.3203480961328621923, -2.9132130347376411494e-08, -4.2309101866118761781e-07, 1.3315902017409027014},
  {0, 0, 0, 0, 0, 0, 0, 0.0019308246518827238379, 0.0018496885043595501577, 0.0027736328929315792052, 0.0017558352623714590553, 0.0025111400562270263202, 0.0029777661938234362138, 0.0043603459843407146868, 0.0076843830249820627848},
  {0, 0, 0, 0, 0, 0, 0, -2.0511755338229731294, -0.82689722791688569092, -4.4494753588966791114, -2.9771639615408234114, -4.4060610830752349187, 0.96642022916504122243, 0.27488639218488036819, -4.9999999999412514384}
  }

Definition at line 60 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, -0.024837587047074519142, -0.038443755326854262, 0.010789426545740953695, 0.016714316978066363906, 0.036977680482507623017, 0.023903736191005935108, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0.44916461963533510504, 0.54293566642571933212, 0.018977673263371359902, 0.007932079958008179596, -9.4309201558850225267e-08, 5.2699963039304353885e-09, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0.0022745078222873717048, 0.0026499504248443657255, 0.0019347176520538985831, 0.0018882668324742895791, 0.0015313004238581028917, 0.0027721700163088574924, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, -0.87241910961768964761, -1.0549928243465211963, 1.8999999999485288615, 1.6191292705343984792, -0.63912490618228612327, 0.6398194632982362462, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 54 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig13F [static]
Initial value:
 
    {
  {0, 0, 0, -0.016313221502792758094, -0.0012344271616210600317, 0.022739050214132340566, 0.019894322103056659434, 0.070152538754905693907, 0.079150371235280320148, 0.079140295486563524974, 0.073877518420634002982, 0.082767871936852088766, 0.021369139940037504971, -0.16477473035652481781, -0.055605012351420450567},
  {0, 0, 0, 0.40633016978672931163, 0.31906794350617523337, 0.18604815325310422591, 0.22274309425577301647, -0.038098997442242876765, -0.054611240400435009934, -0.050739779309414811959, -0.040691137768363160043, -0.046730053313388586478, 0.34160850069918163863, 2.4811837846155828657, 1.1192582255168381788},
  {0, 0, 0, 0.002149342213264975824, 0.0019487436377840527436, 0.0015505100309095498287, 0.0017303935347270330437, 0.0012782681837905638701, 0.00077081684260600570775, 0.00078212255888550081661, 0.00085709016208379811951, 0.00040671635301994584974, 0.0047052241934661294398, 0.0091387563643038176309, 0.0065810423040581775625},
  {0, 0, 0, -0.47422656465701568118, -0.40214476680739164038, -0.807446632577722756, -1.1159653538458467192, 1.1939302604989951995, 1.2565879679975411332, 1.2135620508983242516, 1.3126461466411822876, 1.3303466630446105778, -1.3225160658785197754, -4.99999996608921915, -3.3146932668018336265}
  }

Definition at line 79 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, -0.19347059395018284533, 0.072568004970527941189, 0.08577237659734933406, 0.078682638529076837086, 0.077062920521249994588, 0.080098726616512086474, 0.023748955156449799708, 0.015834208336261056116, -0.021587059944354128338},
  {0, 0, 0, 0, 0, 0, 2.6546929735503304038, -0.040973653768088071081, -0.063777717641833361895, -0.050952537148763105135, -0.044007209248372716748, -0.044262064708301115945, 0.29785332091460725579, 0.71835272096206526093, 0.65633476797761147736},
  {0, 0, 0, 0, 0, 0, 0.0065104044193550428959, 0.0011700415681633554756, 0.00045437269348538639104, 0.0008801332589677031415, 0.00078367838118213598627, 0.00060453583918787642728, 0.004657287607776092013, 0.0037849066904824596111, 0.0061259831222526071187},
  {0, 0, 0, 0, 0, 0, -4.9999999979557490093, 1.1707517726253902079, 1.0992454619450249265, 1.2206213897813062985, 1.2578764060460077001, 1.3625276752124573232, -1.0956263938322794438, -2.8508701454429501432, -2.1472735770040620729}
  }

Definition at line 58 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, -0.013922695503875197331, -0.0018020343253406317062, 0.017121560844724798001, 0.018609272384097541586, -0.0050380425848817458542, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.36952186524609842433, 0.29771940602043445168, 0.25881377301982183559, 0.21522443888607742379, 0.59520725339836588752, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.0021171146723497585689, 0.001962910013039776292, 0.0016295699065661407162, 0.0017542445121842159018, 0.0018291018059847885362, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.24903532893487495548, -0.20762623792196052697, -1.23723285975173658, -0.93877564336741559092, -2.7137466589111389759, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 52 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig13R [static]
Initial value:
 
    {
  {0, 0, 0, 0.0036225404374523491324, 0.020602869778294785608, 0.031371735116656827846, 0.044385023713376312027, 0.069382928901304388725, 0.062546773237833669379, 0.066219648548455148362, 0.066114165216842671335, 0.064968538738919279218, 0.051540701111634862341, -0.14520516686903245374, -0.029300157343301824753},
  {0, 0, 0, 0.40723755341312423139, 0.24719809506286585798, 0.23886286984905105713, 0.092388265632692603835, -0.038083245108582644556, -0.028685880355116981366, -0.031288010457665590969, -0.03072550558016601957, -0.028439782714834840882, 8.984728870169156334e-07, 1.7723836216527502074, 0.79014046453097108724},
  {0, 0, 0, 0.0018900875181423510037, 0.0016683560130446085414, 0.0015517088923086459762, 0.0014400104759778459274, 0.00031828667387254205856, 0.0012881264560692922555, 0.00092903731815355522061, 0.0011795342366973096335, 0.00083538332113278278117, 0.0027329868075049237874, 0.0097615976878032660602, 0.0062076155003686038503},
  {0, 0, 0, -0.50487582216370696653, -0.21797446389232158492, -0.76054681766358056549, -0.16793042826918122556, 1.3727842428768588512, 1.5374702497476731011, 1.4476836940468174042, 1.4342564113548856852, 1.3613055688979065483, 0.85184694861412824096, -3.9945473104690254473, -2.8070030811132413717}
  }

Definition at line 82 of file CSCTFPtMethods.h.

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

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.069382927814675421363, 0.062546773192992718982, 0.066219648548532128451, 0.066114165177748651647, 0.06496853782135392219, 0.051540701102725301752, -0.14520516691085255667, -0.029300158926639723045},
  {0, 0, 0, 0, 0, 0, 0, -0.03808324381918145457, -0.02868588030414172263, -0.031288010457747920945, -0.030725505585511597717, -0.02843978176922726947, 8.9697287389278734793e-07, 1.7723836220217532578, 0.79014048067174824652},
  {0, 0, 0, 0, 0, 0, 0, 0.00031828670642815944016, 0.0012881264558822541535, 0.00092903731815034164537, 0.0011795342397226430894, 0.00083538336551440930174, 0.0027329868075334912136, 0.0097615976891543883992, 0.0062076155203765765594},
  {0, 0, 0, 0, 0, 0, 0, 1.3727842579605455953, 1.5374702505093122973, 1.4476836940454602676, 1.4342564093482235155, 1.3613055874742052698, 0.85184697646817630901, -3.994547310920665506, -2.8070031114324471844}
  }

Definition at line 61 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0.0036225404374523491324, 0.020602869778294785608, 0.031371735116656827846, 0.044385023713376312027, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.40723755341312423139, 0.24719809506286585798, 0.23886286984905105713, 0.092388265632692603835, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.0018900875181423510037, 0.0016683560130446085414, 0.0015517088923086459762, 0.0014400104759778459274, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.50487582216370696653, -0.21797446389232158492, -0.76054681766358056549, -0.16793042826918122556, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 55 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig14F [static]
Initial value:
 
    {
  {0, 0, 0, -0.023008179953388042255, -0.087196623845599563474, 0.014221968418245287125, -0.021787486380662964697, 0.066204099694590276548, 0.13000102518515968542, 0.086982120087735009806, 0.086006702272218293892, 0.090001124258988041138, 0.013343436845426187576, 0.058197437679117815235, 0.015055422275464733217},
  {0, 0, 0, 0.58165240914811378037, 1.6572607614650631813, 0.26374858984348420465, 0.56929114216912790614, -0.031761470721266109318, 6.8045996289272520086e-06, -0.040675205849149999315, -0.038282822732629118168, -0.041914122856581741139, 0.73743983985226857492, -0.015956321538818291073, 0.31976184596833290286},
  {0, 0, 0, 0.0021194192496740956247, 0.0031051396726804536899, 0.0016030344438190185716, 0.0037337124950505506081, 0.00038923034858751352164, 0.00435858958532461295, 0.00085195563700394898957, 0.0011709394391764601367, 0.0007183252935922569693, 0.0048589598885515790372, 0.0035711294225182332179, 0.0063024666771318840416},
  {0, 0, 0, -0.11185686895850970035, -2.8414639600328577274, -0.10356160152745381986, -1.2383039973901615038, 1.8999999999999264144, -1.1268332104959208895, 1.3399041969100440319, 1.3441201753115872286, 1.4026191965547902818, -2.9935330315178338978, 1.8045262655928504536, -1.0659192090967317679}
  }

Definition at line 80 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0, 0.0011704660991897508117, 0.084739514416067682201, 0.086139578586588813613, 0.093199773864805768309, 0.0068597584931722067197, 0.073137137801632320921, -0.024117519905137906056},
  {0, 0, 0, 0, 0, 0, 0, 0, 0.7338374554546823747, -0.036989032906862853722, -0.038391760412970953042, -0.046077469375633541004, 0.62423005995004055002, -0.040314539852839455236, 0.63248947781334297069},
  {0, 0, 0, 0, 0, 0, 0, 0, 0.0031924502818212936207, 0.0010331185400558220815, 0.0010342430652703427443, 0.00092674943585657754141, 0.0050760196464007447531, 0.0032319531506008868788, 0.0067125188107654068514},
  {0, 0, 0, 0, 0, 0, 0, 0, -1.785448670968939, 1.3255257799041022526, 1.3571670682651415518, 1.3337095100618956423, -2.0375413343465438309, 1.4881244856244408847, -1.5048835864460361478}
  }

Definition at line 59 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, -0.049226069782944893716, -0.05447625811386536121, 0.024782117383430092572, 0.0087723204390127967195, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 0.96194395556167033856, 1.9107390804546595664, 0.10243277620694382635, 0.29010825363315317915, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 0.0025849149683154332667, 0.0022908589943121454233, 0.0017080431015829389101, 0.0022045212844627971524, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, -1.2932328975948934602, -4.7562023014669927434, 0.78711144534012145169, -0.57517454556474645333, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 53 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig14R [static]
Initial value:
 
    {
  {0, 0, 0, -0.035861540596622137889, -0.1163451242952821818, -0.3223054960806409075, 0.028427718090213778546, 0.082096556211394805525, -0.15497655162567502973, 0.077768957491548482142, 0.079360069813406791672, 0.070390471478570457164, 0.045116757562121037606, -0.064677236200079091244, 0.042980998502111025794},
  {0, 0, 0, 0.91272061044138930175, 1.0649835191592700312, 3.75045883898615795, 0.20554379357162461117, -0.046354224360297492658, 3.4599916691801695379, -0.029070628890768772379, -0.03047627128290695056, -0.02335627487211913364, 0.42581999019359662029, 1.1914459601497096042, 0.11545322117611778179},
  {0, 0, 0, 0.0023100741888551377598, 0.0065631885708627574205, 0.010122343115052657297, 0.0021541859801294522929, 0.0018078552644429368712, 0.0040217835853228389373, 0.00086395925415043829752, 0.0010071371561587601478, 0.0010978456762463116234, 0.0028425080621485550661, 0.0071491121463381828924, 0.0050018423505071209906},
  {0, 0, 0, -0.85246870399928331707, -1.26158946908596592, -4.209205295019181392, 0.071706289987386498397, 1.2752968417552010827, -4.9999999999938600226, 1.5920301264071463621, 1.5139604617023065813, 1.5241944088777494848, -2.2799952377707408679, -3.0288053889674522168, -0.35716203827983550312}
  }

Definition at line 83 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, 0, 0, 0, 0, 0.082096556211616628085, -0.15497763380540566236, 0.077768957501462190884, 0.079360215708304482352, 0.070390471145737557035, 0.045116756706396796139, -0.064677235510244679428, 0.042981004219577227665},
  {0, 0, 0, 0, 0, 0, 0, -0.046354224360547445494, 3.4600023508388892957, -0.029070628904851493479, -0.030476400557346697284, -0.023356274628402451388, 0.42581998625965733485, 1.1914459601216282891, 0.11545316275932009098},
  {0, 0, 0, 0, 0, 0, 0, 0.0018078552644396556418, 0.0040218048707196616537, 0.00086395925657936829302, 0.0010071336547866846251, 0.0010978456712284635072, 0.002842508081006394835, 0.0071491121214516993934, 0.0050018422461340821331},
  {0, 0, 0, 0, 0, 0, 0, 1.2752968417470296192, -4.9999999984414591481, 1.5920301262211007387, 1.5139579024840714716, 1.5241944165676217793, -2.2799951898153256735, -3.0288054012274616689, -0.35716168503710210569}
  }

Definition at line 62 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

Initial value:
 
    {
  {0, 0, 0, -0.035861540596622137889, -0.1163451242952821818, -0.3223054960806409075, 0.028427718090213778546, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.91272061044138930175, 1.0649835191592700312, 3.75045883898615795, 0.20554379357162461117, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0.0023100741888551377598, 0.0065631885708627574205, 0.010122343115052657297, 0.0021541859801294522929, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, -0.85246870399928331707, -1.26158946908596592, -4.209205295019181392, 0.071706289987386498397, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 56 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2011(), and Pt2Stn2012_DT().

double CSCTFPtMethods::AB_sig23 [static]
Initial value:
 
    {
  {0, 0, -0.010357268292725162889, -0.016380566175621592839, -0.019840699509577841564, -0.0086381386262834487788, -0.003374013086892733819, -0.011814434815520722527, -0.00084060561010774765417, -0.017179591290799121894, 0.0035639959717427907582, 0.0047700899414562444867, 0.010577222576560912568, 0.02059122419865432041, 0.011800502388303060752},
  {0, 0, 0.14187419330052780664, 0.23041504331599421684, 0.31155426692107951459, 0.26259379394895659976, 0.22004268983078550947, 0.34945904479011519195, 0.26666091393686436328, 0.38600077292544848762, 0.18137548923438057136, 0.12968791855407682534, 0.083124796029554012811, 0.010205021983518632739, 0.071807703627737515251},
  {0, 0, 0.0021465575441230368842, 0.0022224405572812359205, 0.002251545746496887504, 0.0020929103385102986942, 0.0020355680620528313757, 0.0020702424442080634773, 0.0018383336874655056836, 0.0025004017593913750554, 0.001949774989293934788, 0.001939959052276510592, 0.0017195026729185311498, 0.0017139698182589511305, 0.0019431688340545527453},
  {0, 0, 1.0630745945983459677, 0.3265773132215800123, -0.65134529804641994044, -1.0524984197072553282, -1.0511032049676600764, -1.8483720507053891247, -1.3389601882033761449, -1.8551069091565570712, -0.98414331636612584209, -0.6063730875586622604, -0.38865902654376205394, 0.43290122641744543941, -0.53818963658092677793}
  }

Definition at line 84 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_sig24 [static]
Initial value:
 
    {
  {0, 0, 0, -0.019324652110983078085, -0.012002425151063148695, -0.02231499394993846988, -0.020935767372829247601, -0.066886386651832344108, -0.04726302695322702474, -0.04612160370322201941, -0.0015531365858601525916, 0.013723579428071824154, 0.016617430908367349096, 0.030685502798890051251, 0.002966505822064327124},
  {0, 0, 0, 0.38549899615915406148, 0.32619220210735977439, 0.34706342932948464064, 0.68304114341992616666, 0.9242780677421167379, 0.9319676477585573382, 0.81979381283063590402, 0.4452794101956150663, 0.25406245303464969343, 0.16553792723142907173, 0.11438558724198649719, 0.32271248995562107353},
  {0, 0, 0, 0.0022171043021711415305, 0.0021520852248391748179, 0.0029359514546444223822, 0.0021275297531913790229, 0.0033328143360110804201, 0.0024627396815788253105, 0.0037704003574912637285, 0.0023868429840302176834, 0.0020064709921131366512, 0.0021463956760972590677, 0.0015026596429240307931, 0.0023198792169650144825},
  {0, 0, 0, 0.086888271968145289192, 0.019758737551725517878, -0.17987080158763540938, -1.7261300785529098967, -2.6644913692232643498, -2.3141437377987581492, -1.8966055410735647158, -1.2208593823013969004, -0.653071688514877291, -0.34080947192812982571, -0.40136037854760781007, -1.4481957993152787534}
  }

Definition at line 85 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_sig34 [static]
Initial value:
 
    {
  {0, 0, 0, -0.012400659358070893756, -0.009978612935288379282, -0.038466135371859951075, -0.01237181151567546232, -0.055252999880455823389, 0.044965296368124886561, 0.0020215713950015390746, 0.0018486442968475248413, -0.011461744909954231161, 0.00041337329418400558037, 0.013323692621683664444, -0.0011526907758626363416},
  {0, 0, 0, 0.11483786317689233247, 0.17614008187718299681, 0.35943587710185270767, 0.31393248752071051255, 0.81003852118825403483, 2.8222370465191132238e-07, 0.15870310756426259102, 0.18489150278200164323, 0.2277514636318530572, 0.10863865522427501586, 0.0081807264119966201232, 0.10304189680104243465},
  {0, 0, 0, 0.0023086535455528549819, 0.002110004845191660542, 0.0030013629537848584249, 0.0021561954526101824794, 0.0029044705640973510034, 0.001129264217117841116, 0.0020148575420415437004, 0.0022924616641584912025, 0.0022462281749858711323, 0.001953151997646814745, 0.0022772917353313174016, 0.002205332383050566912},
  {0, 0, 0, 1.4465873202620711524, 0.018290937265976234261, -1.0034048194561047129, -1.5842206847979445339, -3.6001627650055127994, 0.54269742517812191718, -0.54629346359450747794, -0.88004590995407039333, -1.0607951764628562596, -0.386770214915317323, 0.73185507165720742329, -0.7791766852022135037}
  }

Definition at line 86 of file CSCTFPtMethods.h.

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

double CSCTFPtMethods::AB_sig5 [static]
Initial value:
 
    {
  {8.0056375707676412645, 2.9947749309947320207, 1.2367570923503916624, 19.305763753429292962, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-30.026695140142752649, 8.307837839928444712e-06, -2.4301404809023985365e-06, -99.99999999998537703, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0.49287055372768900918, 0.59795299802278500945, 0.72517967446074338422, 1.499999999999955147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-4.7146152770331735127, -1.6075341775064360128, 0.81763143841002616785, -2.2550678981626472996, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
  }

Definition at line 90 of file CSCTFPtMethods.h.

Referenced by Pt3Stn2011(), and Pt3Stn2012_DT().

double CSCTFPtMethods::AB_sig51 [static]
Initial value:
 
    {
  {0.0019758831360956788901, 0.046577756215196844392, -0.05341714103952534265, 0.038119020055320480822, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0.85917433021287148431, 3.6326347655629698252e-08, 1.2753791210899891873, -0.02296026572998403209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0.0018421521390111581656, 0.0013309336424003853465, 0.0024439910926895226824, 0.00084506127844618638811, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {-2.8012298341138666125, 0.89678691204809468651, -4.9999999999931583616, 1.899999999961135444, 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().

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 88 of file CSCTFPtMethods.h.

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

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 89 of file CSCTFPtMethods.h.

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

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 31 of file CSCTFPtMethods.h.

Referenced by Pt3Stn().

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 23 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

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 30 of file CSCTFPtMethods.h.

Referenced by Pt3Stn().

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 22 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

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 26 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

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 25 of file CSCTFPtMethods.h.

Referenced by Pt2Stn().

const float CSCTFPtMethods::dphifr0 [static]

Definition at line 179 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::dphifr1 [static]

Definition at line 180 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

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 178 of file CSCTFPtMethods.h.

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

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 36 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

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 35 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

const float CSCTFPtMethods::kGlobalScaleFactor = 1.36 [static]

Definition at line 33 of file CSCTFPtMethods.h.

Referenced by Pt2Stn(), and Pt3Stn().

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 177 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::sigmafr0 [static]

Definition at line 181 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::sigmafr1 [static]

Definition at line 182 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

Definition at line 208 of file CSCTFPtMethods.h.

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