#include <RecoEgamma/EgammaElectronAlgos/interface/PixelHitMatcher.h>
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.
Definition at line 74 of file PixelHitMatcher.h.
Definition at line 76 of file PixelHitMatcher.h.
Definition at line 75 of file PixelHitMatcher.h.
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 }
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 }
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] |
std::vector<std::pair<const GeomDet*, TrajectoryStateOnSurface> > PixelHitMatcher::mapTsos_ [private] |
Definition at line 108 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), set1stLayer(), and set1stLayerZRange().
Definition at line 110 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), PixelHitMatcher(), set1stLayer(), and set1stLayerZRange().
Definition at line 109 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), and set2ndLayer().
Definition at line 111 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), PixelHitMatcher(), and set2ndLayer().
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().
Definition at line 113 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), setES(), and ~PixelHitMatcher().
Definition at line 114 of file PixelHitMatcher.h.
Referenced by compatibleHits(), compatibleSeeds(), setES(), and ~PixelHitMatcher().
bool PixelHitMatcher::searchInTIDTEC_ [private] |
const GeometricSearchTracker* PixelHitMatcher::theGeometricSearchTracker [private] |
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] |
float PixelHitMatcher::vertex_ [private] |