CMS 3D CMS Logo

Public Member Functions | Private Attributes

PFSCEnergyCalibration Class Reference

#include <PFSCEnergyCalibration.h>

List of all members.

Public Member Functions

 PFSCEnergyCalibration ()
 PFSCEnergyCalibration (std::vector< double > &barrelFbremCorr, std::vector< double > &endcapFbremCorr, std::vector< double > &barrelCorr, std::vector< double > &endcapCorr)
double SCCorrEtEtaBarrel (double et, double eta)
double SCCorrEtEtaEndcap (double et, double eta)
double SCCorrFBremBarrel (double e, double et, double brLinear)
double SCCorrFBremEndcap (double e, double eta, double brLinear)
 ~PFSCEnergyCalibration ()

Private Attributes

std::vector< double > barrelCorr_
std::vector< double > barrelFbremCorr_
double bb [17]
double cc [9]
std::vector< double > endcapCorr_
std::vector< double > endcapFbremCorr_
double pbb [13]
double pbe [13]

Detailed Description

Definition at line 29 of file PFSCEnergyCalibration.h.


Constructor & Destructor Documentation

PFSCEnergyCalibration::PFSCEnergyCalibration ( )

Definition at line 7 of file PFSCEnergyCalibration.cc.

{}
PFSCEnergyCalibration::PFSCEnergyCalibration ( std::vector< double > &  barrelFbremCorr,
std::vector< double > &  endcapFbremCorr,
std::vector< double > &  barrelCorr,
std::vector< double > &  endcapCorr 
)

Definition at line 10 of file PFSCEnergyCalibration.cc.

References barrelCorr_, barrelFbremCorr_, bb, cc, gather_cfg::cout, endcapCorr_, endcapFbremCorr_, funct::log(), pbb, and pbe.

                                                                           :
  barrelFbremCorr_(barrelFbremCorr),
  endcapFbremCorr_(endcapFbremCorr),
  barrelCorr_(barrelCorr),
  endcapCorr_(endcapCorr)
{

  // intial parameters

  bool log = false;
  
  if(barrelFbremCorr_.size() != 13)
    edm::LogError("PFSCEnergyCalibration")<<" wrong size input paramter: calibPFSCEle_Fbrem_barrel read = "
                                          << barrelCorr_.size() << " expected = 13" << endl;
  
  
  if(endcapFbremCorr_.size() != 13)
    edm::LogError("PFSCEnergyCalibration")<<" wrong size input parameter: calibPFSCEle_Fbrem_endcap read = "
                                          << endcapCorr_.size() << " expected = 13" << endl;

  
  
  if(barrelCorr_.size() != 17)
    edm::LogError("PFSCEnergyCalibration")<<" wrong size input paramter: calibPFSCEle_barrel read = "
                                          << barrelCorr_.size() << " expected = 17" << endl;
  
  
  if(endcapCorr_.size() != 9)
    edm::LogError("PFSCEnergyCalibration")<<" wrong size input parameter: calibPFSCEle_endcap read = "
                                          << endcapCorr_.size() << " expected = 9" << endl;

  
  if(log)
    cout << " ****** THE BARREL SC FBREM CORRECTIONS ******* " << barrelFbremCorr_.size()  << endl;
  for(unsigned int ip = 0; ip< barrelFbremCorr_.size(); ip++){
    pbb[ip] = barrelFbremCorr_[ip];
    if(log)
      cout << " pbb[" << ip << "] " << " = " << pbb[ip] << endl;
  }
  
  if(log)
    cout << " ****** THE ENCCAP SC FBREM CORRECTIONS ******* " << endcapFbremCorr_.size() << endl;
  for(unsigned int ip = 0; ip< endcapFbremCorr_.size(); ip++){
    pbe[ip] = endcapFbremCorr_[ip];
    if(log)
      cout << " pbe[" << ip << "] " << " = " << pbe[ip] << endl;
  }
  
  if(log)
    cout << " ****** THE BARREL SC CORRECTIONS ******* " << barrelCorr_.size()  << endl;
  for(unsigned int ip = 0; ip< barrelCorr_.size(); ip++){
    bb[ip] = barrelCorr_[ip];
    if(log)
      cout << " bb[" << ip << "] " << " = " << bb[ip] << endl;
  }
  
  if(log)
    cout << " ****** THE ENCCAP SC CORRECTIONS ******* " << endcapCorr_.size() << endl;
  for(unsigned int ip = 0; ip< endcapCorr_.size(); ip++){
    cc[ip] = endcapCorr_[ip];
    if(log)
      cout << " cc[" << ip << "] " << " = " << cc[ip] << endl;
  }
}
PFSCEnergyCalibration::~PFSCEnergyCalibration ( )

Definition at line 77 of file PFSCEnergyCalibration.cc.

{}

Member Function Documentation

double PFSCEnergyCalibration::SCCorrEtEtaBarrel ( double  et,
double  eta 
)

Definition at line 171 of file PFSCEnergyCalibration.cc.

References bb, alignmentValidation::c1, debug_cff::d0, debug_cff::d1, and p1.

                                                                     {
  double fCorr = 0;
  
  
  // 25 November Morning
  
//   //p0  
//   double bb0 = 1.03257;
//   double bb1 = -1.37103e+01;
//   double bb2 = 3.39716e+02;
//   double bb3 = 4.86192e-01;
  
//   //p1
//   double bb4 = 1.81653e-03;
//   double bb5 = 3.64445e-01;
//   double bb6 = 1.41132;
  
  
//   //p2
//   double bb7 = 1.02061;
//   double bb8 = 5.91624e-03;
//   double bb9 = -5.14434e-05;
//   double bb10 = 1.42516e-07; 
  
  //2010 corrections
//  double temp_et = et;
//   // Avoid energy correction divergency at low Et. 
//   if(temp_et < 2)
//     temp_et = 2;
  
//   double d0 = 15.0;     // sharpness of the curve
//   double d1 = -0.00181;
//   double d2 = 1.081;
  
//   double p0 = bb[0] + bb[1]/(temp_et + bb[2]) - bb[3]/(temp_et) ;
//   double p1 = bb[4] + bb[5]/(bb[6] + temp_et);

  

//   // for the momentum the fixed value d2 is prefered to p2
//   double p2 = bb[7] + bb[8]*temp_et + bb[9]*temp_et*temp_et + bb[10]*temp_et*temp_et*temp_et;
  
//   if(temp_et > 130) {
//     double y = 130;
//     p2 = bb[7] + bb[8]*y + bb[9]*y*y + bb[10]*y*y*y;
//   }
   
//   fCorr = p0 + p1*atan(d0*(d2 - fabs(eta))) + d1*fabs(eta);
 

  //February 2011 corrections
  double temp_et = et;
  // Avoid energy correction divergency at low Et. 
  if(temp_et < 3)
    temp_et = 3;

  double c0 = bb[0];
  double c1 = bb[1];
  double c2 = bb[2];
  double c3 = bb[3];

  double d0 = bb[4];
  double d1 = bb[5];
  double d2 = bb[6];
  double d3 = bb[7];

  double e0 = 1.081;  // curve point in eta distribution
  double e1 = 7.6;     // sharpness of the curve
  double e2 = -0.00181;

  //Low pt ( < 25 GeV) dedidacted corrections
  if(temp_et < bb[8] ) {

    c0 = bb[9];
    c1 = bb[10];
    c2 = bb[11];
    c3 = bb[12];
    
    d0 = bb[13];
    d1 = bb[14];
    d2 = bb[15];
    d3 = bb[16];
    
  }
  
  double p0 = c0 + c1/(temp_et + c2) + c3/(temp_et*temp_et);
  double p1 = d0/(temp_et + d1) + d2/(temp_et*temp_et + d3);


  fCorr = p0 + p1*atan(e1*(e0 - fabs(eta))) + e2*fabs(eta);
  
  return et/fCorr;
  
}
double PFSCEnergyCalibration::SCCorrEtEtaEndcap ( double  et,
double  eta 
)

Definition at line 266 of file PFSCEnergyCalibration.cc.

References cc, eta(), p1, and p2.

                                                                     {
  double fCorr = 0;
  

//   //p0
//   double c0 = 9.99464e-01;
//   double c1 = -1.23130e+01;
//   double c2 = 2.87841;
  
//   //p1
//   double c3 = -1.05697e-04;
//   double c4 = 1.02819e+01;
//   double c5 = 3.05904; 
  
  
//   //p2
//   double c6 = 1.35017e-03;
//   double c7 = -2.21845;
//   double c8 = 3.42062;
 
  double temp_et = et;
  // Avoid energy correction divergency at low Et. 
  if(temp_et < 3)
    temp_et = 3;

  double p0 = cc[0] + cc[1]/(cc[2] + temp_et);
  double p1 = cc[3] + cc[4]/(cc[5] + temp_et);
  double p2 = cc[6] + cc[7]/(cc[8] + temp_et);
    
    
    fCorr = p0 + p1*fabs(eta) +  p2*eta*eta;
    
    return et/fCorr;
}
double PFSCEnergyCalibration::SCCorrFBremBarrel ( double  e,
double  et,
double  brLinear 
)

Definition at line 80 of file PFSCEnergyCalibration.cc.

References a, b, trackerHits::c, p1, p2, p3, p4, pbb, dtT0WireCalibration_cfg::threshold, and detailsBasic3DVector::y.

                                                                                    { //MM
  double fCorr = 1;

  // make NO correction if brLinear is invalid!
  if ( brLinear == 0 ) return e;
  //
  
  if ( brLinear < pbb[0] ) brLinear = pbb[0];
  if ( brLinear > pbb[1] ) brLinear = pbb[1];
  
  
  double p0 = pbb[2]; 
  double p1 = pbb[3];  
  double p2 = pbb[4]; 
  double p3 = pbb[5];
  double p4 = pbb[6];  
  

  //Low pt ( < 25 GeV) dedicated corrections
  if( et < pbb[7] ) {
    p0 = pbb[8]; 
    p1 = pbb[9];  
    p2 = pbb[10];  
    p3 = pbb[11];
    p4 = pbb[12];
  }

  double threshold = p4;
  
  double y = p0*threshold*threshold + p1*threshold + p2;
  double yprime = 2*p0*threshold + p1;
  double a = p3;
  double b = yprime - 2*a*threshold;
  double c = y - a*threshold*threshold - b*threshold;
  
  if ( brLinear < threshold ) 
    fCorr = p0*brLinear*brLinear + p1*brLinear + p2;
  else 
    fCorr = a*brLinear*brLinear + b*brLinear + c;
  
  return e/fCorr;

}
double PFSCEnergyCalibration::SCCorrFBremEndcap ( double  e,
double  eta,
double  brLinear 
)

Definition at line 125 of file PFSCEnergyCalibration.cc.

References a, b, trackerHits::c, p1, p2, p3, p4, pbe, dtT0WireCalibration_cfg::threshold, and detailsBasic3DVector::y.

                                                                                     {//MM
  double fCorr = 1;

  //Energy must contain associated preshower energy

  if ( brLinear == 0 ) return e;
  
  if ( brLinear < pbe[0] ) brLinear = pbe[0];
  if ( brLinear > pbe[1] ) brLinear = pbe[1];
  
  
  double p0 = pbe[2]; 
  double p1 = pbe[3];  
  double p2 = pbe[4]; 
  double p3 = pbe[5];
  double p4 = pbe[6];  

  //Change of set of corrections to take
  //into account the active preshower region
  if(fabs(eta) > pbe[7] ) {
    p0 = pbe[8]; 
    p1 = pbe[9];  
    p2 = pbe[10];  
    p3 = pbe[11];
    p4 = pbe[12];   
  }

  double threshold = p4;
    
  double y = p0*threshold*threshold + p1*threshold + p2;
  double yprime = 2*p0*threshold + p1;
  double a = p3;
  double b = yprime - 2*a*threshold;
  double c = y - a*threshold*threshold - b*threshold;

  if ( brLinear < threshold ) 
    fCorr = p0*brLinear*brLinear + p1*brLinear + p2;
  else 
    fCorr = a*brLinear*brLinear + b*brLinear + c;
    
  return e/fCorr;


}

Member Data Documentation

std::vector<double> PFSCEnergyCalibration::barrelCorr_ [private]

Definition at line 60 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration().

std::vector<double> PFSCEnergyCalibration::barrelFbremCorr_ [private]

Definition at line 54 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration().

double PFSCEnergyCalibration::bb[17] [private]

Definition at line 63 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration(), and SCCorrEtEtaBarrel().

double PFSCEnergyCalibration::cc[9] [private]

Definition at line 62 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration(), and SCCorrEtEtaEndcap().

std::vector<double> PFSCEnergyCalibration::endcapCorr_ [private]

Definition at line 61 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration().

std::vector<double> PFSCEnergyCalibration::endcapFbremCorr_ [private]

Definition at line 55 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration().

double PFSCEnergyCalibration::pbb[13] [private]

Definition at line 56 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration(), and SCCorrFBremBarrel().

double PFSCEnergyCalibration::pbe[13] [private]

Definition at line 57 of file PFSCEnergyCalibration.h.

Referenced by PFSCEnergyCalibration(), and SCCorrFBremEndcap().