CMS 3D CMS Logo

Public Types | Public Member Functions | Private Attributes

HitQuadrupletGeneratorFromLayerPairForPhotonConversion Class Reference

#include <HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h>

Inheritance diagram for HitQuadrupletGeneratorFromLayerPairForPhotonConversion:
HitPairGenerator OrderedHitsGenerator

List of all members.

Public Types

typedef ctfseeding::SeedingLayer Layer
typedef
CombinedHitPairGenerator::LayerCacheType 
LayerCacheType

Public Member Functions

void bubbleSortVsR (int n, double *ax, double *ay, double *aey)
virtual
HitQuadrupletGeneratorFromLayerPairForPhotonConversion
clone () const
bool failCheckRZCompatibility (const RecHitsSortedInPhi::Hit &hit, const DetLayer &layer, const HitRZCompatibility *checkRZ, const TrackingRegion &region)
bool failCheckSegmentZCompatibility (double &rInn, double &zInnMin, double &zInnMax, double &rInt, double &zIntMin, double &zIntMax, double &rOut, double &zOutMin, double &zOutMax)
bool failCheckSlopeTest (const RecHitsSortedInPhi::Hit &ohit, const RecHitsSortedInPhi::Hit &nohit, const RecHitsSortedInPhi::Hit &ihit, const RecHitsSortedInPhi::Hit &nihit, const TrackingRegion &region)
double getEffectiveErrorOnZ (const RecHitsSortedInPhi::Hit &hit, const TrackingRegion &region)
double getSqrEffectiveErrorOnZ (const RecHitsSortedInPhi::Hit &hit, const TrackingRegion &region)
double getZAtR (double &rInn, double &zInn, double &r, double &rOut, double &zOut)
virtual void hitPairs (const TrackingRegion &reg, OrderedHitPairs &prs, const edm::Event &ev, const edm::EventSetup &es)
 HitQuadrupletGeneratorFromLayerPairForPhotonConversion (const Layer &inner, const Layer &outer, LayerCacheType *layerCache, unsigned int nSize=30000, unsigned int max=0)
const LayerinnerLayer () const
const LayerouterLayer () const
double verySimpleFit (int size, double *ax, double *ay, double *e2y, double &p0, double &e2p0, double &p1)
virtual ~HitQuadrupletGeneratorFromLayerPairForPhotonConversion ()

Private Attributes

std::stringstream * ss
Layer theInnerLayer
LayerCacheTypetheLayerCache
Layer theOuterLayer

Detailed Description

Definition at line 14 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.


Member Typedef Documentation


Constructor & Destructor Documentation

HitQuadrupletGeneratorFromLayerPairForPhotonConversion::HitQuadrupletGeneratorFromLayerPairForPhotonConversion ( const Layer inner,
const Layer outer,
LayerCacheType layerCache,
unsigned int  nSize = 30000,
unsigned int  max = 0 
)

Definition at line 37 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References max(), ss, and OrderedHitsGenerator::theMaxElement.

Referenced by clone().

  : HitPairGenerator(nSize),
    theLayerCache(*layerCache), theOuterLayer(outer), theInnerLayer(inner)
{
  theMaxElement=max;
  ss = new std::stringstream;
}
virtual HitQuadrupletGeneratorFromLayerPairForPhotonConversion::~HitQuadrupletGeneratorFromLayerPairForPhotonConversion ( ) [inline, virtual]

Member Function Documentation

void HitQuadrupletGeneratorFromLayerPairForPhotonConversion::bubbleSortVsR ( int  n,
double *  ax,
double *  ay,
double *  aey 
)

Definition at line 381 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References i, and j.

Referenced by failCheckSlopeTest().

                                                                                                                    {
  bool swapped = true;
  int j = 0;
  double tmpr, tmpz, tmpez;
  while (swapped) {
    swapped = false;
    j++;
    for (int i = 0; i < n - j; i++) {
      if (  ar[i] > ar[i+1] ) {
        tmpr = ar[i];
        ar[i] = ar[i + 1];
        ar[i + 1] = tmpr;
        tmpz = az[i];
        az[i] = az[i + 1];
        az[i + 1] = tmpz;
        tmpez = aez[i];
        aez[i] = aez[i + 1];
        aez[i + 1] = tmpez;
        swapped = true;
      }
    }
  }
}
virtual HitQuadrupletGeneratorFromLayerPairForPhotonConversion* HitQuadrupletGeneratorFromLayerPairForPhotonConversion::clone ( void  ) const [inline, virtual]
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckRZCompatibility ( const RecHitsSortedInPhi::Hit hit,
const DetLayer layer,
const HitRZCompatibility checkRZ,
const TrackingRegion region 
)

Definition at line 223 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References Reference_intrackfit_cff::barrel, f, PixelRecoRange< T >::intersection(), DetLayer::location(), PixelRecoRange< T >::min(), nSigmaRZ, TrackingRegion::origin(), HitRZCompatibility::range(), funct::sqr(), mathSSE::sqrt(), ss, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().

Referenced by hitPairs().

                                                                                                                                                {

  if(!checkRZ) {
#ifdef mydebug_QSeed
    (*ss) << "*******\nNo valid checkRZ\n*******" << std::endl;
#endif
    return true;
  }

  static const float nSigmaRZ = std::sqrt(12.f);
  float r_reduced = std::sqrt( sqr(hit->globalPosition().x()-region.origin().x())+sqr(hit->globalPosition().y()-region.origin().y()));
  Range allowed;
  Range hitRZ;
  if (layer.location() == barrel) {
    allowed = checkRZ->range(r_reduced);
    float zErr = nSigmaRZ * hit->errorGlobalZ();
    hitRZ = Range(hit->globalPosition().z()-zErr, hit->globalPosition().z()+zErr);
  } else {
    allowed = checkRZ->range(hit->globalPosition().z());
    float rErr = nSigmaRZ * hit->errorGlobalR();
    hitRZ = Range(r_reduced-rErr, r_reduced+rErr);
  }
  Range crossRange = allowed.intersection(hitRZ);

#ifdef mydebug_QSeed      
  (*ss) 
    << "\n\t\t allowed Range " << allowed.min() << " \t, " << allowed.max() 
    << "\n\t\t hitRz   Range " << hitRZ.min()   << " \t, " << hitRZ.max() 
    << "\n\t\t Cross   Range " << crossRange.min()   << " \t, " << crossRange.max() 
    << std::endl;
  if( !crossRange.empty())
    (*ss) << "\n\t\t !!!!ACCEPTED!!! \n\n";
#endif
  
  return crossRange.empty();
}
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckSegmentZCompatibility ( double &  rInn,
double &  zInnMin,
double &  zInnMax,
double &  rInt,
double &  zIntMin,
double &  zIntMax,
double &  rOut,
double &  zOutMin,
double &  zOutMax 
)

Definition at line 406 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References getZAtR().

Referenced by failCheckSlopeTest().

                                                                              {
  //
  // Check the compatibility in z of an INTermediate segment between an INNer segment and an OUTer segment;
  // when true is returned zIntMin and zIntMax are replaced with allowed range values
  
  //Left side
  double zLeft = getZAtR(rInn, zInnMin, rInt, rOut, zOutMin);
  if ( zIntMax < zLeft ) return true; 
  //Right side
  double zRight = getZAtR(rInn, zInnMax, rInt, rOut, zOutMax);
  if ( zIntMin > zRight ) return true; 
  if ( zIntMin < zLeft && zIntMax < zRight ) {
    zIntMax = zLeft;
    return false;
  }
  if ( zIntMin > zLeft && zIntMax > zRight ) {
    zIntMax = zRight;
    return false;
  }
  
  //Segment is fully contained
  return false;

}
bool HitQuadrupletGeneratorFromLayerPairForPhotonConversion::failCheckSlopeTest ( const RecHitsSortedInPhi::Hit ohit,
const RecHitsSortedInPhi::Hit nohit,
const RecHitsSortedInPhi::Hit ihit,
const RecHitsSortedInPhi::Hit nihit,
const TrackingRegion region 
)

Definition at line 262 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References bubbleSortVsR(), failCheckSegmentZCompatibility(), getEffectiveErrorOnZ(), TrackingRegion::origin(), TrackingRegion::originZBound(), PV3DBase< T, PVType, FrameType >::perp(), csvReporter::r, PV3DBase< T, PVType, FrameType >::z(), and z.

Referenced by hitPairs().

                                                                                                                                                                                                   {

  double r[5], z[5], ez[5];
  //  double pr[2], pz[2], e2pz[2], mr[2], mz[2], e2mz[2];

  //
  //Hits
  r[0] = ohit->globalPosition().perp();
  z[0] = ohit->globalPosition().z();
  ez[0] = getEffectiveErrorOnZ(ohit, region);
  //
  r[1] = nohit->globalPosition().perp();
  z[1] = nohit->globalPosition().z();
  ez[1] = getEffectiveErrorOnZ(nohit, region);
  //
  r[2] = nihit->globalPosition().perp();
  z[2] = nihit->globalPosition().z();
  ez[2] = getEffectiveErrorOnZ(nihit, region);
  //
  r[3] = ihit->globalPosition().perp();
  z[3] = ihit->globalPosition().z();
  ez[3] = getEffectiveErrorOnZ(ihit, region);
  //
  //R (r) ordering of the 4 hit arrays
  bubbleSortVsR(4, r, z, ez);
  //
  //Vertex
  r[4] = region.origin().perp();
  z[4] = region.origin().z();
  double vError = region.originZBound();
  if ( vError > 15. ) vError = 1.;
  ez[4] = 3.*vError;

  //
  //Sequence of checks
  //
  //Inner segment == vertex
  double rInn = r[4];
  double zInnMin = z[4]-ez[4];
  double zInnMax = z[4]+ez[4];
  //
  // Int == 2, Out == 3
  double rOut = r[3];
  double zOutMin = z[3]-ez[3];
  double zOutMax = z[3]+ez[3];
  double rInt = r[2];
  double zIntMin = z[2]-ez[2];
  double zIntMax = z[2]+ez[2];
  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax, 
                                      rInt, zIntMin, zIntMax,
                                      rOut, zOutMin, zOutMax) ) return true;
  //
  // Int == 1, Out == 2 (with updated limits)
  rOut = rInt;
  zOutMin = zIntMin;
  zOutMax = zIntMax;
  rInt    = r[1];
  zIntMin = z[1]-ez[1];
  zIntMax = z[1]+ez[1];
  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax, 
                                      rInt, zIntMin, zIntMax,
                                      rOut, zOutMin, zOutMax) ) return true;
  //
  // Int == 0, Out == 1 (with updated limits)
  rOut = rInt;
  zOutMin = zIntMin;
  zOutMax = zIntMax;
  rInt    = r[0];
  zIntMin = z[0]-ez[0];
  zIntMax = z[0]+ez[0];
  if ( failCheckSegmentZCompatibility(rInn, zInnMin, zInnMax, 
                                      rInt, zIntMin, zIntMax,
                                      rOut, zOutMin, zOutMax) ) return true;

  //
  // Test is ok!!!
  return false;

}
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getEffectiveErrorOnZ ( const RecHitsSortedInPhi::Hit hit,
const TrackingRegion region 
)

Definition at line 361 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References TrackingRegion::origin(), PV3DBase< T, PVType, FrameType >::perp(), funct::sqr(), mathSSE::sqrt(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by failCheckSlopeTest().

                                                                                                                                                   {

  //
  //Fit-wise the effective error on Z is approximately the sum in quadrature of the error on Z 
  //and the error on R correctly projected by using hit-vertex direction
  double sqrProjFactor = sqr((hit->globalPosition().z()-region.origin().z())/(hit->globalPosition().perp()-region.origin().perp()));
  double effErr = sqrt(hit->globalPositionError().czz()+sqrProjFactor*hit->globalPositionError().rerr(hit->globalPosition())); 
  if ( effErr>2. ) {
    effErr*=1.8; //Single Side error is strip length * sqrt( 12.) = 3.46
    //empirically found that the error on ss hits value it is already twice as large (two sigmas)!
    //Multiply by sqrt(12.)/2.=1.73 to have effErr equal to the strip lenght (1.8 to allow for some margin)
    //effErr*=2.5; //Used in some tests
  } else {
    effErr*=2.; //Tight //Double side... allowing for 2 sigma variation 
    //effErr*=5.; //Loose //Double side... allowing for 2 sigma variation 
  }
  return effErr;

}
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getSqrEffectiveErrorOnZ ( const RecHitsSortedInPhi::Hit hit,
const TrackingRegion region 
)

Definition at line 350 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References TrackingRegion::origin(), PV3DBase< T, PVType, FrameType >::perp(), funct::sqr(), and PV3DBase< T, PVType, FrameType >::z().

                                                                                                                                                      {

  //
  //Fit-wise the effective error on Z is approximately the sum in quadrature of the error on Z 
  //and the error on R correctly projected by using hit-vertex direction

  double sqrProjFactor = sqr((hit->globalPosition().z()-region.origin().z())/(hit->globalPosition().perp()-region.origin().perp()));
  return (hit->globalPositionError().czz()+sqrProjFactor*hit->globalPositionError().rerr(hit->globalPosition()));

}
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::getZAtR ( double &  rInn,
double &  zInn,
double &  r,
double &  rOut,
double &  zOut 
)

Definition at line 434 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

Referenced by failCheckSegmentZCompatibility().

                                   {

  //    z - zInn      r - rInn                                  r - rInn 
  //  ----------- = ----------- ==> z = zInn + (zOut - zInn) * -----------
  //  zOut - zInn   rOut - rInn                                rOut - rInn

  
  return zInn + (zOut - zInn)*(r - rInn)/(rOut - rInn);

}
void HitQuadrupletGeneratorFromLayerPairForPhotonConversion::hitPairs ( const TrackingRegion reg,
OrderedHitPairs prs,
const edm::Event ev,
const edm::EventSetup es 
) [virtual]

Implements HitPairGenerator.

Definition at line 50 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

References RecHitsSortedInPhi::all(), TrackingRegion::checkRZ(), gather_cfg::cout, reco::deltaPhi(), Geom::deltaPhi(), ctfseeding::SeedingLayer::detLayer(), RecHitsSortedInPhi::empty(), failCheckRZCompatibility(), failCheckSlopeTest(), RecHitsSortedInPhi::hits(), CommPDSkim_cfg::maxDeltaPhi, ctfseeding::SeedingLayer::name(), PV3DBase< T, PVType, FrameType >::perp(), PV3DBase< T, PVType, FrameType >::phi(), OrderedHitPairs::size(), ss, theInnerLayer, theLayerCache, OrderedHitsGenerator::theMaxElement, theOuterLayer, and PV3DBase< T, PVType, FrameType >::z().

{

  ss->str("");

  typedef OrderedHitPair::InnerRecHit InnerHit;
  typedef OrderedHitPair::OuterRecHit OuterHit;
  typedef RecHitsSortedInPhi::Hit Hit;

  size_t totCountP2=0, totCountP1=0, totCountM2=0, totCountM1=0, selCount=0;
#ifdef mydebug_QSeed
  (*ss) << "In " << theInnerLayer.name() << " Out " << theOuterLayer.name() << std::endl;
#endif

  /*get hit sorted in phi for each layer: NB: doesn't apply any region cut*/
  const RecHitsSortedInPhi & innerHitsMap = theLayerCache(&theInnerLayer, region, event, es);
  if (innerHitsMap.empty()) return;
 
  const RecHitsSortedInPhi& outerHitsMap = theLayerCache(&theOuterLayer, region, event, es);
  if (outerHitsMap.empty()) return;
  /*----------------*/

  /*This object will check the compatibility of the his in phi among the two layers. */
  //InnerDeltaPhi deltaPhi(*theInnerLayer.detLayer(), region, es);

  vector<RecHitsSortedInPhi::Hit> innerHits;
  //  float outerPhimin, outerPhimax;
  float innerPhimin, innerPhimax;
  //  float maxDeltaPhi=2.; //sguazz
  float maxDeltaPhi=1.;

  RecHitsSortedInPhi::Range outerHits = outerHitsMap.all();

  RecHitsSortedInPhi::HitIter nextoh;
  for (RecHitsSortedInPhi::HitIter oh = outerHits.first; oh!= outerHits.second; ++oh) { 
    RecHitsSortedInPhi::Hit ohit = (*oh).hit();
    GlobalPoint oPos = ohit->globalPosition();  

    totCountP2++;
    const HitRZCompatibility *checkRZ = region.checkRZ(theOuterLayer.detLayer(), ohit, es);    
    for(nextoh=oh+1;nextoh!=outerHits.second; ++nextoh){
      
      RecHitsSortedInPhi::Hit nohit = (*nextoh).hit();
      GlobalPoint noPos = nohit->globalPosition();  
      
    
#ifdef mydebug_QSeed
      (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() <<  " cotTheta " << oPos.z()/oPos.perp() << std::endl;
      (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() <<  " cotTheta " << noPos.z()/noPos.perp() << std::endl;
      (*ss) << "\tDeltaPhi " << reco::deltaPhi(noPos.phi(),oPos.phi()) << std::endl;
#endif
    
    if(fabs(reco::deltaPhi(noPos.phi(),oPos.phi()))>maxDeltaPhi)  break;

    totCountM2++;
    
    /*Check the compatibility of the ohit with the eta of the seeding track*/
    if(failCheckRZCompatibility(nohit,*theOuterLayer.detLayer(),checkRZ,region)) continue;

    /*  
    //Do I need this? it uses a compatibility that probably I wouldn't 
    //Removing for the time being

    PixelRecoRange<float> phiRange = deltaPhi( oPos.perp(), oPos.phi(), oPos.z(), nSigmaPhi*(ohit->errorGlobalRPhi()));    
    if (phiRange.empty()) continue;
    */

  
    /*Get only the inner hits compatible with the conversion region*/
    innerPhimin=ohit->globalPosition().phi();
    innerPhimax=nohit->globalPosition().phi();
    // checkPhiRange(innerPhimin,innerPhimax);

    innerHits.clear();    
    innerHitsMap.hits(innerPhimin, innerPhimax, innerHits);

#ifdef mydebug_QSeed
    (*ss) << "\tiphimin, iphimax " << innerPhimin << " " << innerPhimax << std::endl;
#endif    

    const HitRZCompatibility *checkRZb = region.checkRZ(theInnerLayer.detLayer(),  ohit, es);
    const HitRZCompatibility *checkRZc = region.checkRZ(theInnerLayer.detLayer(), nohit, es);

    /*Loop on inner hits*/
    vector<RecHitsSortedInPhi::Hit>::const_iterator ieh = innerHits.end();
    for ( vector<RecHitsSortedInPhi::Hit>::const_iterator ih=innerHits.begin(); ih < ieh; ++ih) {  
      RecHitsSortedInPhi::Hit ihit = *ih;
      GlobalPoint innPos = (*ih)->globalPosition();
      
#ifdef mydebug_QSeed
      (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() <<  " cotTheta " << oPos.z()/oPos.perp() << std::endl;
      (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() <<  " cotTheta " << noPos.z()/noPos.perp() << std::endl;
      (*ss) << "\tinnPos " << innPos <<  " r " << innPos.perp() << " phi " << innPos.phi() << " cotTheta " << innPos.z()/innPos.perp() <<  std::endl;
#endif

      totCountP1++;
      
      /*Check the compatibility of the ihit with the two outer hits*/
      if(failCheckRZCompatibility(ihit,*theInnerLayer.detLayer(),checkRZb,region) 
         || 
         failCheckRZCompatibility(ihit,*theInnerLayer.detLayer(),checkRZc,region) ) continue;
      
      
      for ( vector<RecHitsSortedInPhi::Hit>::const_iterator nextih=ih+1; nextih != ieh; ++nextih) {  
        RecHitsSortedInPhi::Hit nihit = *nextih;
        GlobalPoint ninnPos = (*nextih)->globalPosition();


#ifdef mydebug_QSeed
        (*ss) << "\toPos " << oPos << " r " << oPos.perp() << " phi " << oPos.phi() <<  " cotTheta " << oPos.z()/oPos.perp() << std::endl;
        (*ss) << "\tnoPos " << noPos << " r " << noPos.perp() << " phi " << noPos.phi() <<  " cotTheta " << noPos.z()/noPos.perp() << std::endl;
        (*ss) << "\tinnPos " << innPos <<  " r " << innPos.perp() << " phi " << innPos.phi() << " cotTheta " << innPos.z()/innPos.perp() <<  std::endl;
        (*ss) << "\tninnPos " << ninnPos <<  " r " << ninnPos.perp() << " phi " << ninnPos.phi() << " cotTheta " << ninnPos.z()/ninnPos.perp() <<  std::endl;
#endif

        totCountM1++;

        /*Check the compatibility of the nihit with the two outer hits*/
        if(failCheckRZCompatibility(nihit,*theInnerLayer.detLayer(),checkRZb,region) 
           || 
           failCheckRZCompatibility(nihit,*theInnerLayer.detLayer(),checkRZc,region) ) continue;
        
        /*Sguazz modifica qui*/
        if(failCheckSlopeTest(ohit,nohit,ihit,nihit,region)) continue;

        if (theMaxElement!=0 && result.size() >= theMaxElement){
          result.clear();
          edm::LogError("TooManySeeds")<<"number of pairs exceed maximum, no pairs produced";
          delete checkRZ;
          delete checkRZb;
          delete checkRZc;        
#ifdef mydebug_QSeed
          (*ss) << "In " << theInnerLayer.name() << " Out " << theOuterLayer.name()
                << "\tP2 " << totCountP2 
                << "\tM2 " << totCountM2 
                << "\tP1 " << totCountP1 
                << "\tM1 " << totCountM1 
                << "\tsel " << selCount
                << std::endl;
          std::cout << (*ss).str();
#endif
          return;
        }
        selCount++;
        result.push_back( OrderedHitPair( ihit, ohit) );
        result.push_back( OrderedHitPair( nihit, nohit) );
        //#ifdef mydebug_QSeed
        //(*ss) << "sizeOfresul " << result.size() << std::endl;
        //#endif
      }
    }
    delete checkRZb;
    delete checkRZc;
    }
    delete checkRZ;
  }
#ifdef mydebug_QSeed
  (*ss) << "In " << theInnerLayer.name() << " Out " << theOuterLayer.name() 
        << "\tP2 " << totCountP2 
        << "\tM2 " << totCountM2 
        << "\tP1 " << totCountP1 
        << "\tM1 " << totCountM1 
        << "\tsel " << selCount
        << std::endl;
  std::cout << (*ss).str();
#endif
}
const Layer& HitQuadrupletGeneratorFromLayerPairForPhotonConversion::innerLayer ( ) const [inline]

Definition at line 36 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

References theInnerLayer.

{ return theInnerLayer; }
const Layer& HitQuadrupletGeneratorFromLayerPairForPhotonConversion::outerLayer ( ) const [inline]

Definition at line 37 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

References theOuterLayer.

{ return theOuterLayer; }
double HitQuadrupletGeneratorFromLayerPairForPhotonConversion::verySimpleFit ( int  size,
double *  ax,
double *  ay,
double *  e2y,
double &  p0,
double &  e2p0,
double &  p1 
)

Definition at line 343 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.cc.

                                                                                                                                                               {
  
  //#include "RecoTracker/ConversionSeedGenerators/interface/verySimpleFit.icc"
  return 0;
}

Member Data Documentation

Definition at line 54 of file HitQuadrupletGeneratorFromLayerPairForPhotonConversion.h.

Referenced by hitPairs().