CMS 3D CMS Logo

Public Types | Public Member Functions | Private Attributes

ThirdHitCorrection Class Reference

#include <ThirdHitCorrection.h>

List of all members.

Public Types

typedef PixelRecoRange< float > Range

Public Member Functions

void correctRPhiRange (Range &range) const
void correctRZRange (Range &range) const
void init (const edm::EventSetup &es, float pt, const DetLayer *layer, const PixelRecoLineRZ &line, const PixelRecoPointRZ &constraint, bool useMultipleScattering, bool useBendingCorrection=false)
 ThirdHitCorrection (const edm::EventSetup &es, float pt, const DetLayer *layer, const PixelRecoLineRZ &line, const PixelRecoPointRZ &constraint, bool useMultipleScattering, bool useBendingCorrection=false)
 ThirdHitCorrection ()
 ~ThirdHitCorrection ()

Private Attributes

bool theBarrel
pixelrecoutilities::LongitudinalBendingCorrection theBendingCorrection
PixelRecoLineRZ theLine
float theMScoeff
float theMultScattCorrRPhi
bool theUseBendingCorrection
bool theUseMultipleScattering

Detailed Description

Definition at line 13 of file ThirdHitCorrection.h.


Member Typedef Documentation

Definition at line 16 of file ThirdHitCorrection.h.


Constructor & Destructor Documentation

ThirdHitCorrection::ThirdHitCorrection ( ) [inline]

Definition at line 18 of file ThirdHitCorrection.h.

{}
ThirdHitCorrection::ThirdHitCorrection ( const edm::EventSetup es,
float  pt,
const DetLayer layer,
const PixelRecoLineRZ line,
const PixelRecoPointRZ constraint,
bool  useMultipleScattering,
bool  useBendingCorrection = false 
) [inline]

Definition at line 20 of file ThirdHitCorrection.h.

References init().

  { 
    init(es, pt, layer, line, constraint, useMultipleScattering, useBendingCorrection);
  }
ThirdHitCorrection::~ThirdHitCorrection ( ) [inline]

Definition at line 42 of file ThirdHitCorrection.h.

{}

Member Function Documentation

void ThirdHitCorrection::correctRPhiRange ( Range range) const

Definition at line 56 of file ThirdHitCorrection.cc.

{
  if (theUseMultipleScattering) {
    range.first -= theMultScattCorrRPhi;
    range.second += theMultScattCorrRPhi;
  }
}
void ThirdHitCorrection::correctRZRange ( Range range) const

Definition at line 63 of file ThirdHitCorrection.cc.

References abs, corr, PixelRecoRange< T >::max(), PixelRecoRange< T >::min(), and CosmicsPD_Skims::radius.

{ 
  if (theUseMultipleScattering) {
    range.first -= theMScoeff;
    range.second += theMScoeff;
  } 

  if (theUseBendingCorrection) {
    if (theBarrel) {
      float cotTheta = theLine.cotLine();
      if (cotTheta > 0) {
        float radius = theLine.rAtZ(range.max());
        float corr = theBendingCorrection(radius) * cotTheta;
        range.second +=  corr;
      } else {
        float radius = theLine.rAtZ(range.min());
        float corr = theBendingCorrection(radius) * std::abs(cotTheta);
        range.first -=  corr;
      }
    } 
    else {
      float radius = range.max();
      float corr = theBendingCorrection(radius);
      range.first -= corr;
    }
  }
}
void ThirdHitCorrection::init ( const edm::EventSetup es,
float  pt,
const DetLayer layer,
const PixelRecoLineRZ line,
const PixelRecoPointRZ constraint,
bool  useMultipleScattering,
bool  useBendingCorrection = false 
)

Definition at line 19 of file ThirdHitCorrection.cc.

References abs, Reference_intrackfit_cff::barrel, PixelRecoLineRZ::cotLine(), alignCSCRings::e, f, geometryCSVtoXML::line, DetLayer::location(), funct::sqr(), and mathSSE::sqrt().

Referenced by ThirdHitCorrection().

                                                    {

  theUseMultipleScattering = useMultipleScattering;
  theUseBendingCorrection = useBendingCorrection;
  theLine = line;
  theMultScattCorrRPhi =0;
  theMScoeff=0;

  if (!theUseMultipleScattering && !theUseBendingCorrection) return;

  theBarrel = (layer->location() == GeomDetEnumerators::barrel);

  if (theUseMultipleScattering) {
    MultipleScatteringParametrisation sigmaRPhi(layer, es);
    theMultScattCorrRPhi = 3.f*sigmaRPhi(pt, line.cotLine(), constraint);
    float overSinTheta = std::sqrt(1.f+sqr(line.cotLine()));
    if (theBarrel) {
      theMScoeff =  theMultScattCorrRPhi*overSinTheta; 
    } else {
      float overCosTheta = std::abs(line.cotLine()) < 1.e-4f ? 
          1.e4f : overSinTheta/std::abs(line.cotLine());
      theMScoeff =  theMultScattCorrRPhi*overCosTheta;
      
    }
  }

  if (useBendingCorrection)  theBendingCorrection.init(pt,es);

}

Member Data Documentation

Definition at line 48 of file ThirdHitCorrection.h.

Definition at line 57 of file ThirdHitCorrection.h.

Definition at line 53 of file ThirdHitCorrection.h.

Definition at line 55 of file ThirdHitCorrection.h.

Definition at line 54 of file ThirdHitCorrection.h.

Definition at line 51 of file ThirdHitCorrection.h.

Definition at line 50 of file ThirdHitCorrection.h.