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
float Pt2Stn (int type, float eta, float dphi, int fr=-1) const
float Pt2Stn2010 (int type, float eta, float dphi, int fr=-1) 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) 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_mu52 [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_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_sig52 [3][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 427 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 1953 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 636 of file CSCTFPtMethods.cc.

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

Referenced by Pt3Stn2010().

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

References funct::log(), and Pi.

Referenced by Pt2Stn2010().

   {
       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;   }
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 436 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 
) const

Definition at line 664 of file CSCTFPtMethods.cc.

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu14Front, A_mu14Rare, A_mu23, A_mu24, A_mu34, A_mu52, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig14Front, A_sig14Rare, A_sig23, A_sig24, A_sig34, A_sig52, gather_cfg::cout, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood2(), reco::tau::disc::Pt(), ExpressReco_HICollisions_FallBack::pt, ExpressReco_HICollisions_FallBack::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 12 :  //1-2-b1 = 2-b1
          case 14 :  //2-b1
                 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;
          //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 == 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;
    return (Pt>trigger_scale->getPtScale()->getLowEdge(1)) ? Pt 
    : trigger_scale->getPtScale()->getLowEdge(1);
}
float CSCTFPtMethods::Pt2StnChiSq ( int  type,
float  eta,
int  dphi,
int  fr 
) const

Definition at line 1548 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 1923 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 489 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(), csvReporter::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 
) const

*

Definition at line 935 of file CSCTFPtMethods.cc.

References A_mu12Front, A_mu12Rare, A_mu13Front, A_mu13Rare, A_mu23, A_mu24, A_mu34, A_rho123FrontCSCTF, A_rho123RareCSCTF, A_rho124FrontCSCTF, A_rho124RareCSCTF, A_rho134FrontCSCTF, A_rho134RareCSCTF, A_rho234CSCTF, A_sig12Front, A_sig12Rare, A_sig13Front, A_sig13Rare, A_sig23, A_sig24, A_sig34, etabins, L1MuScale::getLowEdge(), L1MuTriggerPtScale::getPtScale(), Likelihood(), reco::tau::disc::Pt(), ExpressReco_HICollisions_FallBack::pt, Pt2Stn2010(), ExpressReco_HICollisions_FallBack::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;
          //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 == 12) type = 14; //1-2-b1 -> 2-b1 
            Pt = Pt2Stn2010(type, eta, dphi1, fr);
          }
        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;
        if (Pt<trigger_scale->getPtScale()->getLowEdge(1)) 
          Pt = trigger_scale->getPtScale()->getLowEdge(1);
    
    return Pt;
}
float CSCTFPtMethods::Pt3StnChiSq ( int  type,
float  eta,
int  dphi1,
int  dphi2,
int  fr 
) const

Definition at line 1691 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 1937 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 1982 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 39 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010(), and Pt3Stn2010().

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

Referenced by Pt2Stn2010().

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

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::dphifr1 [static]

Definition at line 97 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 95 of file CSCTFPtMethods.h.

Referenced by Pt2Stn2010(), Pt2StnChiSq(), Pt3Stn2010(), 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 94 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::sigmafr0 [static]

Definition at line 98 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

const float CSCTFPtMethods::sigmafr1 [static]

Definition at line 99 of file CSCTFPtMethods.h.

Referenced by Pt2StnChiSq(), and Pt3StnChiSq().

Definition at line 125 of file CSCTFPtMethods.h.

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