CMS 3D CMS Logo

PixelHitMatcher Class Reference

Description: Class to match an ECAL cluster to the pixel hits. More...

#include <RecoEgamma/EgammaElectronAlgos/interface/PixelHitMatcher.h>

List of all members.

Public Types

typedef
TransientTrackingRecHit::ConstRecHitPointer 
ConstRecHitPointer
typedef
TransientTrackingRecHit::RecHitContainer 
RecHitContainer
typedef
TransientTrackingRecHit::RecHitPointer 
RecHitPointer

Public Member Functions

std::vector< std::pair
< RecHitWithDist,
ConstRecHitPointer > > 
compatibleHits (const GlobalPoint &xmeas, const GlobalPoint &vprim, float energy, float charge)
std::vector< TrajectorySeedcompatibleSeeds (TrajectorySeedCollection *seeds, const GlobalPoint &xmeas, const GlobalPoint &vprim, float energy, float charge)
float getVertex ()
 PixelHitMatcher (float phi1min, float phi1max, float phi2min, float phi2max, float z2minB, float z2maxB, float r2minF, float r2maxF, float rMinI, float rMaxI, bool searchInTIDTEC)
std::vector< Hep3Vector > predicted1Hits ()
std::vector< Hep3Vector > predicted2Hits ()
void set1stLayer (float dummyphi1min, float dummyphi1max)
void set1stLayerZRange (float zmin1, float zmax1)
void set2ndLayer (float dummyphi2min, float dummyphi2max)
void setES (const MagneticField *, const MeasurementTracker *theMeasurementTracker, const TrackerGeometry *trackerGeometry)
virtual ~PixelHitMatcher ()

Private Attributes

RecHitContainer hitsInTrack
std::vector< std::pair
< std::pair< const GeomDet *,
GlobalPoint >,
TrajectoryStateOnSurface > > 
mapTsos2_
std::vector< std::pair< const
GeomDet *,
TrajectoryStateOnSurface > > 
mapTsos_
BarrelMeasurementEstimator meas1stBLayer
ForwardMeasurementEstimator meas1stFLayer
BarrelMeasurementEstimator meas2ndBLayer
ForwardMeasurementEstimator meas2ndFLayer
FTSFromVertexToPointFactory myFTS
std::vector< Hep3Vector > pred1Meas
std::vector< Hep3Vector > pred2Meas
PropagatorWithMaterialprop1stLayer
PropagatorWithMaterialprop2ndLayer
bool searchInTIDTEC_
PixelMatchStartLayers startLayers
const GeometricSearchTrackertheGeometricSearchTracker
const LayerMeasurementstheLayerMeasurements
const MagneticFieldtheMagField
const TrackerGeometrytheTrackerGeometry
float vertex_


Detailed Description

Description: Class to match an ECAL cluster to the pixel hits.

Description: central class for finding compatible hits.

Two compatible hits in the pixel layers are required.

Implementation: future redesign

Implementation: <Notes on="" implementation>="">

Definition at line 71 of file PixelHitMatcher.h.


Member Typedef Documentation

typedef TransientTrackingRecHit::ConstRecHitPointer PixelHitMatcher::ConstRecHitPointer

Definition at line 74 of file PixelHitMatcher.h.

typedef TransientTrackingRecHit::RecHitContainer PixelHitMatcher::RecHitContainer

Definition at line 76 of file PixelHitMatcher.h.

typedef TransientTrackingRecHit::RecHitPointer PixelHitMatcher::RecHitPointer

Definition at line 75 of file PixelHitMatcher.h.


Constructor & Destructor Documentation

PixelHitMatcher::PixelHitMatcher ( float  phi1min,
float  phi1max,
float  phi2min,
float  phi2max,
float  z2minB,
float  z2maxB,
float  r2minF,
float  r2maxF,
float  rMinI,
float  rMaxI,
bool  searchInTIDTEC 
)

Definition at line 40 of file PixelHitMatcher.cc.

References meas1stFLayer, meas2ndFLayer, and ForwardMeasurementEstimator::setRRangeI().

00042                                                                  :
00043     //zmin1 and zmax1 are dummy at this moment, set from beamspot later
00044     meas1stBLayer(phi1min,phi1max,0.,0.), meas2ndBLayer(phi2min,phi2max,z2minB,z2maxB), 
00045     meas1stFLayer(phi1min,phi1max,0.,0.), meas2ndFLayer(phi2min,phi2max,r2minF,r2maxF),
00046     startLayers(),
00047     prop1stLayer(0), prop2ndLayer(0),theGeometricSearchTracker(0),theLayerMeasurements(0),vertex_(0.),
00048     searchInTIDTEC_(searchInTIDTEC)
00049 {
00050    meas1stFLayer.setRRangeI(rMinI,rMaxI); 
00051    meas2ndFLayer.setRRangeI(rMinI,rMaxI);
00052 }

PixelHitMatcher::~PixelHitMatcher (  )  [virtual]

Definition at line 54 of file PixelHitMatcher.cc.

References prop1stLayer, prop2ndLayer, and theLayerMeasurements.

00055 { 
00056   delete prop1stLayer;
00057   delete prop2ndLayer;
00058   delete theLayerMeasurements;
00059 }


Member Function Documentation

vector< pair< RecHitWithDist, PixelHitMatcher::ConstRecHitPointer > > PixelHitMatcher::compatibleHits ( const GlobalPoint xmeas,
const GlobalPoint vprim,
float  energy,
float  charge 
)

Definition at line 95 of file PixelHitMatcher.cc.

References GeometricSearchTracker::detLayer(), lat::endl(), PixelMatchStartLayers::firstBLayer(), i, int, TrajectoryStateOnSurface::isValid(), it, LogDebug, m, meas1stBLayer, meas1stFLayer, meas2ndBLayer, meas2ndFLayer, LayerMeasurements::measurements(), PixelMatchNextLayers::measurementsInNextLayers(), FreeTrajectoryState::momentum(), myFTS, PixelMatchStartLayers::neg1stFLayer(), PV3DBase< T, PVType, FrameType >::phi(), pi, PixelMatchStartLayers::pos1stFLayer(), FreeTrajectoryState::position(), pred1Meas, pred2Meas, PixelMatchNextLayers::predictionInNextLayers(), prop1stLayer, prop2ndLayer, Cylinder::radius(), HLT_VtxMuL3::result, searchInTIDTEC_, BarrelDetLayer::specificSurface(), funct::sqrt(), startLayers, GeometricSearchDet::surface(), theGeometricSearchTracker, theLayerMeasurements, theMagField, Surface::toGlobal(), vertex_, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00096                                                          {
00097   
00098   float SCl_phi = xmeas.phi();
00099 
00100   int charge = int(fcharge);
00101   // return all compatible RecHit pairs (vector< TSiPixelRecHit>)
00102   vector<pair<RecHitWithDist, ConstRecHitPointer> > result;
00103   LogDebug("") << "[PixelHitMatcher::compatibleHits] entering .. ";
00104   
00105   vector<TrajectoryMeasurement> validMeasurements;
00106   vector<TrajectoryMeasurement> invalidMeasurements;
00107 
00108   typedef vector<TrajectoryMeasurement>::const_iterator aMeas;
00109 
00110   pred1Meas.clear();
00111   pred2Meas.clear();
00112 
00113   typedef vector<BarrelDetLayer*>::const_iterator BarrelLayerIterator;
00114   BarrelLayerIterator firstLayer = startLayers.firstBLayer();
00115 
00116   FreeTrajectoryState fts =myFTS(theMagField,xmeas, vprim, 
00117                                  energy, charge);
00118 
00119   PerpendicularBoundPlaneBuilder bpb;
00120   TrajectoryStateOnSurface tsos(fts, *bpb(fts.position(), fts.momentum()));
00121   
00122   if (tsos.isValid()) {
00123     vector<TrajectoryMeasurement> pixelMeasurements = 
00124       theLayerMeasurements->measurements(**firstLayer,tsos, 
00125                                          *prop1stLayer, meas1stBLayer);
00126  
00127     LogDebug("") <<"[PixelHitMatcher::compatibleHits] nbr of hits compatible with extrapolation to first layer: " << pixelMeasurements.size();
00128     for (aMeas m=pixelMeasurements.begin(); m!=pixelMeasurements.end(); m++){
00129      if (m->recHit()->isValid()) {
00130        float localDphi = SCl_phi-m->forwardPredictedState().globalPosition().phi();
00131        if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
00132        if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
00133        if(fabs(localDphi)>2.5)continue;
00134         Hep3Vector prediction(m->forwardPredictedState().globalPosition().x(),
00135                               m->forwardPredictedState().globalPosition().y(),
00136                               m->forwardPredictedState().globalPosition().z());
00137         LogDebug("") << "[PixelHitMatcher::compatibleHits] compatible hit position " << m->recHit()->globalPosition();
00138         LogDebug("") << "[PixelHitMatcher::compatibleHits] predicted position " << m->forwardPredictedState().globalPosition();
00139         pred1Meas.push_back( prediction);
00140         
00141         validMeasurements.push_back(*m);
00142 
00143         LogDebug("") <<"[PixelHitMatcher::compatibleHits] Found a rechit in layer ";
00144         const BarrelDetLayer *bdetl = dynamic_cast<const BarrelDetLayer *>(*firstLayer);
00145         if (bdetl) {
00146           LogDebug("") <<" with radius "<<bdetl->specificSurface().radius();
00147         }
00148         else  LogDebug("") <<"Could not downcast!!";
00149      } 
00150     }
00151     
00152        
00153     // check if there are compatible 1st hits in the second layer
00154     firstLayer++;
00155 
00156     vector<TrajectoryMeasurement> pixel2Measurements = 
00157       theLayerMeasurements->measurements(**firstLayer,tsos,
00158                                          *prop1stLayer, meas1stBLayer);
00159  
00160     for (aMeas m=pixel2Measurements.begin(); m!=pixel2Measurements.end(); m++){
00161       if (m->recHit()->isValid()) {
00162         float localDphi = SCl_phi-m->forwardPredictedState().globalPosition().phi();
00163         if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
00164         if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
00165         if(fabs(localDphi)>2.5)continue;
00166         Hep3Vector prediction(m->forwardPredictedState().globalPosition().x(),
00167                               m->forwardPredictedState().globalPosition().y(),
00168                               m->forwardPredictedState().globalPosition().z());
00169         pred1Meas.push_back( prediction);
00170         LogDebug("")  << "[PixelHitMatcher::compatibleHits] compatible hit position " << m->recHit()->globalPosition() << endl;
00171         LogDebug("") << "[PixelHitMatcher::compatibleHits] predicted position " << m->forwardPredictedState().globalPosition() << endl;
00172         
00173         validMeasurements.push_back(*m);
00174         LogDebug("") <<"[PixelHitMatcher::compatibleHits] Found a rechit in layer ";
00175         const BarrelDetLayer *bdetl = dynamic_cast<const BarrelDetLayer *>(*firstLayer);
00176         if (bdetl) {
00177           LogDebug("") <<" with radius "<<bdetl->specificSurface().radius();
00178         }
00179         else  LogDebug("") <<"Could not downcast!!";
00180       }
00181       
00182     }
00183   }
00184   
00185   
00186   // check if there are compatible 1st hits the forward disks
00187   typedef vector<ForwardDetLayer*>::const_iterator ForwardLayerIterator;
00188   ForwardLayerIterator flayer;
00189   
00190   TrajectoryStateOnSurface tsosfwd(fts, *bpb(fts.position(), fts.momentum()));  
00191   if (tsosfwd.isValid()) {
00192     
00193     for (int i=0; i<2; i++) {
00194       i == 0 ? flayer = startLayers.pos1stFLayer() : flayer = startLayers.neg1stFLayer();
00195 
00196       if (i==0 && xmeas.z() < -100. ) continue;
00197       if (i==1 && xmeas.z() > 100. ) continue;
00198 
00199       vector<TrajectoryMeasurement> pixelMeasurements = 
00200         theLayerMeasurements->measurements(**flayer, tsosfwd,
00201                                            *prop1stLayer, meas1stFLayer);
00202       
00203       for (aMeas m=pixelMeasurements.begin(); m!=pixelMeasurements.end(); m++){
00204         if (m->recHit()->isValid()) {
00205           float localDphi = SCl_phi-m->forwardPredictedState().globalPosition().phi();
00206           if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
00207           if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
00208           if(fabs(localDphi)>2.5)continue;
00209           Hep3Vector prediction(m->forwardPredictedState().globalPosition().x(),
00210                                 m->forwardPredictedState().globalPosition().y(),
00211                                 m->forwardPredictedState().globalPosition().z());
00212           pred1Meas.push_back( prediction);
00213 
00214           validMeasurements.push_back(*m);      
00215         }
00216       }
00217 
00218       //check if there are compatible 1st hits the outer forward disks
00219       if (searchInTIDTEC_) {
00220         flayer++;
00221       
00222         vector<TrajectoryMeasurement> pixel2Measurements = 
00223           theLayerMeasurements->measurements(**flayer, tsosfwd,
00224                                              *prop1stLayer, meas1stFLayer);
00225       
00226         for (aMeas m=pixel2Measurements.begin(); m!=pixel2Measurements.end(); m++){
00227           if (m->recHit()->isValid()) {
00228             float localDphi = SCl_phi-m->forwardPredictedState().globalPosition().phi();
00229             if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
00230             if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
00231             if(fabs(localDphi)>2.5)continue;
00232             Hep3Vector prediction(m->forwardPredictedState().globalPosition().x(),
00233                                   m->forwardPredictedState().globalPosition().y(),
00234                                   m->forwardPredictedState().globalPosition().z());
00235             pred1Meas.push_back( prediction);
00236 
00237             validMeasurements.push_back(*m);      
00238           }
00239           //    else{std::cout<<" hit non valid "<<std::endl; }
00240         }  //end 1st hit in outer f disk
00241       }
00242     }
00243   }
00244     
00245   // now we have the vector of all valid measurements of the first point
00246   for (unsigned i=0; i<validMeasurements.size(); i++){
00247 
00248     const DetLayer* newLayer = theGeometricSearchTracker->detLayer(validMeasurements[i].recHit()->det()->geographicalId());
00249     
00250     // compute the z vertex from the cluster point and the found pixel hit
00251     double zVertexPred;
00252     double pxHit1z = validMeasurements[i].recHit()->det()->surface().toGlobal(
00253       validMeasurements[i].recHit()->localPosition()).z();
00254     double pxHit1x = validMeasurements[i].recHit()->det()->surface().toGlobal(
00255       validMeasurements[i].recHit()->localPosition()).x();
00256     double pxHit1y = validMeasurements[i].recHit()->det()->surface().toGlobal(
00257       validMeasurements[i].recHit()->localPosition()).y();      
00258     double r1diff = (pxHit1x-vprim.x())*(pxHit1x-vprim.x()) + (pxHit1y-vprim.y())*(pxHit1y-vprim.y());
00259     r1diff=sqrt(r1diff);
00260     double r2diff = (xmeas.x()-pxHit1x)*(xmeas.x()-pxHit1x) + (xmeas.y()-pxHit1y)*(xmeas.y()-pxHit1y);
00261     r2diff=sqrt(r2diff);
00262     zVertexPred = pxHit1z - r1diff*(xmeas.z()-pxHit1z)/r2diff;
00263 
00264     if (i==0) vertex_ = zVertexPred;
00265     
00266     GlobalPoint vertexPred(vprim.x(),vprim.y(),zVertexPred);
00267     GlobalPoint hitPos( validMeasurements[i].recHit()->det()->surface().toGlobal(
00268                                                                                  validMeasurements[i].recHit()->localPosition())); 
00269     
00270     FreeTrajectoryState secondFTS=myFTS(theMagField,hitPos,vertexPred,energy, charge);
00271     
00272     PixelMatchNextLayers secondHit(theLayerMeasurements, newLayer, secondFTS,
00273                                    prop2ndLayer, &meas2ndBLayer,&meas2ndFLayer,searchInTIDTEC_);
00274     vector<Hep3Vector> predictions = secondHit.predictionInNextLayers();
00275 
00276     for (unsigned it = 0; it < predictions.size(); it++) pred2Meas.push_back(predictions[it]); 
00277 
00278     // we may get more than one valid second measurements here even for single electrons: 
00279     // two hits from the same layer/disk (detector overlap) or from the loop over the
00280     // next layers in EPMatchLoopNextLayers. Take only the 1st hit.    
00281 
00282     if(!secondHit.measurementsInNextLayers().empty()){
00283       for(unsigned int shit=0; shit<secondHit.measurementsInNextLayers().size(); shit++)
00284         {
00285           float dphi = pred1Meas[i].phi()-validMeasurements[i].recHit()->globalPosition().phi();
00286           if (dphi > pi) dphi -= twopi;
00287           if (dphi < -pi) dphi += twopi; 
00288           if (fabs(dphi)<2.5)
00289             {
00290               ConstRecHitPointer pxrh = validMeasurements[i].recHit();
00291               RecHitWithDist rh(pxrh,dphi);
00292               
00293               //  pxrh = secondHit.measurementsInNextLayers()[0].recHit();        
00294               pxrh = secondHit.measurementsInNextLayers()[shit].recHit();
00295               
00296               pair<RecHitWithDist, ConstRecHitPointer> compatiblePair = pair<RecHitWithDist, ConstRecHitPointer>(rh,pxrh);
00297               result.push_back(compatiblePair);
00298               break;
00299             }
00300         }
00301     }
00302   }
00303   return result;
00304 }

std::vector< TrajectorySeed > PixelHitMatcher::compatibleSeeds ( TrajectorySeedCollection seeds,
const GlobalPoint xmeas,
const GlobalPoint vprim,
float  energy,
float  charge 
)

Definition at line 322 of file PixelHitMatcher.cc.

References ForwardMeasurementEstimator::estimate(), BarrelMeasurementEstimator::estimate(), i, TrackerGeometry::idToDet(), int, TrajectoryStateOnSurface::isValid(), it, TrajectoryStateOnSurface::localPosition(), lp, mapTsos2_, mapTsos_, meas1stBLayer, meas1stFLayer, meas2ndBLayer, meas2ndFLayer, FreeTrajectoryState::momentum(), myFTS, PV3DBase< T, PVType, FrameType >::phi(), pi, FreeTrajectoryState::position(), prop1stLayer, prop2ndLayer, PropagatorWithMaterial::propagate(), r, HLT_VtxMuL3::result, edm::second(), funct::sqrt(), DetId::subdetId(), GeomDet::surface(), theMagField, theTrackerGeometry, Surface::toGlobal(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00325                                                                            {
00326 
00327   int charge = int(fcharge);
00328 
00329   FreeTrajectoryState fts = myFTS(theMagField,xmeas, vprim, 
00330                                  energy, charge);
00331 
00332   PerpendicularBoundPlaneBuilder bpb;
00333   TrajectoryStateOnSurface tsos(fts, *bpb(fts.position(), fts.momentum()));
00334   
00335   std::vector<TrajectorySeed> result;
00336   mapTsos_.clear();
00337   mapTsos2_.clear();
00338   mapTsos_.reserve(seeds->size());
00339   mapTsos2_.reserve(seeds->size());
00340  
00341   for (unsigned int i=0;i<seeds->size();++i)
00342     {
00343 
00344       TrajectorySeed::range r=(*seeds)[i].recHits();
00345  
00346       // first Hit
00347       TrajectorySeed::const_iterator it=r.first;
00348       if (!(*it).isValid()) continue;
00349       DetId id=(*it).geographicalId();
00350       const GeomDet *geomdet=theTrackerGeometry->idToDet((*it).geographicalId());
00351       LocalPoint lp=(*it).localPosition();
00352       GlobalPoint hitPos=geomdet->surface().toGlobal(lp);
00353 
00354       TrajectoryStateOnSurface tsos1;
00355       bool found = false;
00356       std::vector<std::pair<const GeomDet *, TrajectoryStateOnSurface> >::iterator itTsos;
00357       for (itTsos=mapTsos_.begin();itTsos!=mapTsos_.end();++itTsos) {
00358         if ((*itTsos).first==geomdet) {
00359           found=true;
00360           break;
00361         }
00362       }
00363       if (!found) {
00364         tsos1 = prop1stLayer->propagate(tsos,geomdet->surface()) ;
00365         mapTsos_.push_back(std::pair<const GeomDet *, TrajectoryStateOnSurface>(geomdet,tsos1));
00366       } else {
00367         tsos1=(*itTsos).second;
00368       }
00369 
00370       if (tsos1.isValid()) {
00371 
00372         std::pair<bool,double> est;
00373         if (id.subdetId()%2==1) est=meas1stBLayer.estimate(tsos1,hitPos);
00374         else est=meas1stFLayer.estimate(tsos1,hitPos); 
00375         if (!est.first)    continue;
00376 
00377         //UB add test on phidiff
00378         float SCl_phi = xmeas.phi();
00379         float localDphi = SCl_phi-hitPos.phi();
00380         if(localDphi>CLHEP::pi)localDphi-=(2*CLHEP::pi);
00381         if(localDphi<-CLHEP::pi)localDphi+=(2*CLHEP::pi);
00382         if(fabs(localDphi)>2.5)continue;
00383 
00384         // now second Hit
00385         it++;
00386         if (!(*it).isValid()) continue;
00387         DetId id2=(*it).geographicalId();
00388         const GeomDet *geomdet2=theTrackerGeometry->idToDet((*it).geographicalId());
00389         TrajectoryStateOnSurface tsos2;
00390 
00391         // compute the z vertex from the cluster point and the found pixel hit
00392         double pxHit1z = hitPos.z();
00393         double pxHit1x = hitPos.x();
00394         double pxHit1y = hitPos.y();      
00395         double r1diff = (pxHit1x-vprim.x())*(pxHit1x-vprim.x()) + (pxHit1y-vprim.y())*(pxHit1y-vprim.y());
00396         r1diff=sqrt(r1diff);
00397         double r2diff = (xmeas.x()-pxHit1x)*(xmeas.x()-pxHit1x) + (xmeas.y()-pxHit1y)*(xmeas.y()-pxHit1y);
00398         r2diff=sqrt(r2diff);
00399         double zVertexPred = pxHit1z - r1diff*(xmeas.z()-pxHit1z)/r2diff;
00400 
00401         GlobalPoint vertexPred(vprim.x(),vprim.y(),zVertexPred);
00402         FreeTrajectoryState fts2 = myFTS(theMagField,hitPos,vertexPred,energy, charge);
00403 
00404         found = false;
00405         std::vector<std::pair< std::pair<const GeomDet *,GlobalPoint>, TrajectoryStateOnSurface> >::iterator itTsos2;
00406         for (itTsos2=mapTsos2_.begin();itTsos2!=mapTsos2_.end();++itTsos2) {
00407           if (((*itTsos2).first).first==geomdet2 &&
00408               (((*itTsos2).first).second).x()==hitPos.x() &&
00409               (((*itTsos2).first).second).y()== hitPos.y() &&
00410               (((*itTsos2).first).second).z()==hitPos.z()  ) {
00411             found=true;
00412             break;
00413           }
00414         }
00415         if (!found) {
00416           tsos2 = prop2ndLayer->propagate(fts2,geomdet2->surface()) ;
00417           std::pair<const GeomDet *,GlobalPoint> pair(geomdet2,hitPos);
00418           mapTsos2_.push_back(std::pair<std::pair<const GeomDet *,GlobalPoint>, TrajectoryStateOnSurface> (pair,tsos2));
00419         } else {
00420           tsos2=(*itTsos2).second;
00421         }
00422 
00423         if (tsos2.isValid()) {
00424           LocalPoint lp2=(*it).localPosition();
00425           GlobalPoint hitPos2=geomdet2->surface().toGlobal(lp2); 
00426           std::pair<bool,double> est2;
00427           if (id2.subdetId()%2==1) est2=meas2ndBLayer.estimate(tsos2,hitPos2);
00428           else est2=meas2ndFLayer.estimate(tsos2,hitPos2); 
00429           if (est2.first) result.push_back((*seeds)[i]);
00430         }
00431 
00432       } 
00433 
00434     } 
00435 
00436   return result; 
00437 }

float PixelHitMatcher::getVertex (  ) 

Definition at line 317 of file PixelHitMatcher.cc.

References vertex_.

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00317                                 {
00318 
00319   return vertex_;
00320 }

vector< Hep3Vector > PixelHitMatcher::predicted1Hits (  ) 

Definition at line 307 of file PixelHitMatcher.cc.

References pred1Meas.

00307                                                    {
00308 
00309   return pred1Meas;
00310 }

vector< Hep3Vector > PixelHitMatcher::predicted2Hits (  ) 

Definition at line 312 of file PixelHitMatcher.cc.

References pred2Meas.

00312                                                    {
00313 
00314   return pred2Meas;
00315 }

void PixelHitMatcher::set1stLayer ( float  dummyphi1min,
float  dummyphi1max 
)

Definition at line 61 of file PixelHitMatcher.cc.

References meas1stBLayer, meas1stFLayer, BarrelMeasurementEstimator::setPhiRange(), and ForwardMeasurementEstimator::setPhiRange().

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00062 { 
00063   meas1stBLayer.setPhiRange(dummyphi1min,dummyphi1max);
00064   meas1stFLayer.setPhiRange(dummyphi1min,dummyphi1max);
00065 }

void PixelHitMatcher::set1stLayerZRange ( float  zmin1,
float  zmax1 
)

Definition at line 67 of file PixelHitMatcher.cc.

References meas1stBLayer, meas1stFLayer, ForwardMeasurementEstimator::setRRange(), and BarrelMeasurementEstimator::setZRange().

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00068 { 
00069   meas1stBLayer.setZRange(zmin1,zmax1);
00070   meas1stFLayer.setRRange(zmin1,zmax1);
00071 }

void PixelHitMatcher::set2ndLayer ( float  dummyphi2min,
float  dummyphi2max 
)

Definition at line 73 of file PixelHitMatcher.cc.

References meas2ndBLayer, meas2ndFLayer, BarrelMeasurementEstimator::setPhiRange(), and ForwardMeasurementEstimator::setPhiRange().

Referenced by ElectronPixelSeedGenerator::seedsFromThisCluster().

00074 { 
00075   meas2ndBLayer.setPhiRange(dummyphi2min,dummyphi2max);
00076   meas2ndFLayer.setPhiRange(dummyphi2min,dummyphi2max);
00077 }

void PixelHitMatcher::setES ( const MagneticField magField,
const MeasurementTracker theMeasurementTracker,
const TrackerGeometry trackerGeometry 
)

Definition at line 79 of file PixelHitMatcher.cc.

References alongMomentum, MeasurementTracker::geometricSearchTracker(), oppositeToMomentum, prop1stLayer, prop2ndLayer, PixelMatchStartLayers::setup(), startLayers, theGeometricSearchTracker, theLayerMeasurements, theMagField, and theTrackerGeometry.

Referenced by ElectronPixelSeedGenerator::setupES().

00079                                                                                                                                                  {
00080   theGeometricSearchTracker=theMeasurementTracker->geometricSearchTracker();
00081   startLayers.setup(theGeometricSearchTracker);
00082   if (theLayerMeasurements ) delete theLayerMeasurements;
00083   theLayerMeasurements = new LayerMeasurements(theMeasurementTracker);
00084   theMagField = magField;
00085   theTrackerGeometry = trackerGeometry;
00086   delete prop2ndLayer;
00087   float mass=.000511; // electron propagation
00088   if (prop1stLayer) delete prop1stLayer;
00089   prop1stLayer = new PropagatorWithMaterial(oppositeToMomentum,mass,theMagField);
00090   if (prop2ndLayer) delete prop2ndLayer;
00091   prop2ndLayer = new PropagatorWithMaterial(alongMomentum,mass,theMagField);
00092 }


Member Data Documentation

RecHitContainer PixelHitMatcher::hitsInTrack [private]

Definition at line 103 of file PixelHitMatcher.h.

std::vector<std::pair<std::pair<const GeomDet*,GlobalPoint>, TrajectoryStateOnSurface> > PixelHitMatcher::mapTsos2_ [private]

Definition at line 124 of file PixelHitMatcher.h.

Referenced by compatibleSeeds().

std::vector<std::pair<const GeomDet*, TrajectoryStateOnSurface> > PixelHitMatcher::mapTsos_ [private]

Definition at line 123 of file PixelHitMatcher.h.

Referenced by compatibleSeeds().

BarrelMeasurementEstimator PixelHitMatcher::meas1stBLayer [private]

Definition at line 108 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), set1stLayer(), and set1stLayerZRange().

ForwardMeasurementEstimator PixelHitMatcher::meas1stFLayer [private]

Definition at line 110 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), PixelHitMatcher(), set1stLayer(), and set1stLayerZRange().

BarrelMeasurementEstimator PixelHitMatcher::meas2ndBLayer [private]

Definition at line 109 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), and set2ndLayer().

ForwardMeasurementEstimator PixelHitMatcher::meas2ndFLayer [private]

Definition at line 111 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), PixelHitMatcher(), and set2ndLayer().

FTSFromVertexToPointFactory PixelHitMatcher::myFTS [private]

Definition at line 107 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and compatibleSeeds().

std::vector<Hep3Vector> PixelHitMatcher::pred1Meas [private]

Definition at line 105 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and predicted1Hits().

std::vector<Hep3Vector> PixelHitMatcher::pred2Meas [private]

Definition at line 106 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and predicted2Hits().

PropagatorWithMaterial* PixelHitMatcher::prop1stLayer [private]

Definition at line 113 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), setES(), and ~PixelHitMatcher().

PropagatorWithMaterial* PixelHitMatcher::prop2ndLayer [private]

Definition at line 114 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), setES(), and ~PixelHitMatcher().

bool PixelHitMatcher::searchInTIDTEC_ [private]

Definition at line 122 of file PixelHitMatcher.h.

Referenced by compatibleHits().

PixelMatchStartLayers PixelHitMatcher::startLayers [private]

Definition at line 112 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and setES().

const GeometricSearchTracker* PixelHitMatcher::theGeometricSearchTracker [private]

Definition at line 115 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and setES().

const LayerMeasurements* PixelHitMatcher::theLayerMeasurements [private]

Definition at line 116 of file PixelHitMatcher.h.

Referenced by compatibleHits(), setES(), and ~PixelHitMatcher().

const MagneticField* PixelHitMatcher::theMagField [private]

Definition at line 117 of file PixelHitMatcher.h.

Referenced by compatibleHits(), compatibleSeeds(), and setES().

const TrackerGeometry* PixelHitMatcher::theTrackerGeometry [private]

Definition at line 118 of file PixelHitMatcher.h.

Referenced by compatibleSeeds(), and setES().

float PixelHitMatcher::vertex_ [private]

Definition at line 120 of file PixelHitMatcher.h.

Referenced by compatibleHits(), and getVertex().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:30:02 2009 for CMSSW by  doxygen 1.5.4