255 float SCl_phi = xmeas.
phi();
257 int charge = int(fcharge);
259 vector<pair<RecHitWithDist, ConstRecHitPointer> >
result;
260 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] entering .. ";
262 vector<TrajectoryMeasurement> validMeasurements;
263 vector<TrajectoryMeasurement> invalidMeasurements;
265 typedef vector<TrajectoryMeasurement>::const_iterator aMeas;
270 typedef vector<BarrelDetLayer*>::const_iterator BarrelLayerIterator;
279 if (tsos.isValid()) {
280 vector<TrajectoryMeasurement> pixelMeasurements =
284 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] nbr of hits compatible with extrapolation to first layer: " << pixelMeasurements.size();
285 for (aMeas
m=pixelMeasurements.begin();
m!=pixelMeasurements.end();
m++){
286 if (
m->recHit()->isValid()) {
287 float localDphi =
normalized_phi(SCl_phi-
m->forwardPredictedState().globalPosition().phi()) ;
288 if(
std::abs(localDphi)>2.5)
continue;
289 CLHEP::Hep3Vector prediction(
m->forwardPredictedState().globalPosition().x(),
290 m->forwardPredictedState().globalPosition().y(),
291 m->forwardPredictedState().globalPosition().z());
292 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] compatible hit position " <<
m->recHit()->globalPosition();
293 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] predicted position " <<
m->forwardPredictedState().globalPosition();
296 validMeasurements.push_back(*
m);
298 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] Found a rechit in layer ";
303 else LogDebug(
"") <<
"Could not downcast!!";
311 vector<TrajectoryMeasurement> pixel2Measurements =
315 for (aMeas
m=pixel2Measurements.begin();
m!=pixel2Measurements.end();
m++){
316 if (
m->recHit()->isValid()) {
317 float localDphi =
normalized_phi(SCl_phi-
m->forwardPredictedState().globalPosition().phi()) ;
318 if(
std::abs(localDphi)>2.5)
continue;
319 CLHEP::Hep3Vector prediction(
m->forwardPredictedState().globalPosition().x(),
320 m->forwardPredictedState().globalPosition().y(),
321 m->forwardPredictedState().globalPosition().z());
323 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] compatible hit position " <<
m->recHit()->globalPosition() << endl;
324 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] predicted position " <<
m->forwardPredictedState().globalPosition() << endl;
326 validMeasurements.push_back(*
m);
327 LogDebug(
"") <<
"[PixelHitMatcher::compatibleHits] Found a rechit in layer ";
332 else LogDebug(
"") <<
"Could not downcast!!";
340 typedef vector<ForwardDetLayer*>::const_iterator ForwardLayerIterator;
341 ForwardLayerIterator flayer;
344 if (tsosfwd.isValid()) {
346 for (
int i=0;
i<2;
i++) {
349 if (
i==0 && xmeas.
z() < -100. )
continue;
350 if (
i==1 && xmeas.
z() > 100. )
continue;
352 vector<TrajectoryMeasurement> pixelMeasurements =
356 for (aMeas
m=pixelMeasurements.begin();
m!=pixelMeasurements.end();
m++){
357 if (
m->recHit()->isValid()) {
358 float localDphi =
normalized_phi(SCl_phi-
m->forwardPredictedState().globalPosition().phi());
359 if(
std::abs(localDphi)>2.5)
continue;
360 CLHEP::Hep3Vector prediction(
m->forwardPredictedState().globalPosition().x(),
361 m->forwardPredictedState().globalPosition().y(),
362 m->forwardPredictedState().globalPosition().z());
365 validMeasurements.push_back(*
m);
373 vector<TrajectoryMeasurement> pixel2Measurements =
377 for (aMeas
m=pixel2Measurements.begin();
m!=pixel2Measurements.end();
m++){
378 if (
m->recHit()->isValid()) {
379 float localDphi =
normalized_phi(SCl_phi-
m->forwardPredictedState().globalPosition().phi()) ;
380 if(
std::abs(localDphi)>2.5)
continue;
381 CLHEP::Hep3Vector prediction(
m->forwardPredictedState().globalPosition().x(),
382 m->forwardPredictedState().globalPosition().y(),
383 m->forwardPredictedState().globalPosition().z());
386 validMeasurements.push_back(*
m);
395 for (
unsigned i=0;
i<validMeasurements.size();
i++){
405 validMeasurements[
i].recHit()->localPosition()).
z();
406 double pxHit1x = validMeasurements[
i].recHit()->det()->surface().toGlobal(
407 validMeasurements[
i].recHit()->localPosition()).x();
408 double pxHit1y = validMeasurements[
i].recHit()->det()->surface().toGlobal(
409 validMeasurements[
i].recHit()->localPosition()).y();
410 double r1diff = (pxHit1x-vprim.
x())*(pxHit1x-vprim.
x()) + (pxHit1y-vprim.
y())*(pxHit1y-vprim.
y());
412 double r2diff = (xmeas.
x()-pxHit1x)*(xmeas.
x()-pxHit1x) + (xmeas.
y()-pxHit1y)*(xmeas.
y()-pxHit1y);
414 zVertex = pxHit1z - r1diff*(xmeas.
z()-pxHit1z)/r2diff;
426 GlobalPoint hitPos( validMeasurements[
i].recHit()->det()->surface().toGlobal( validMeasurements[
i].recHit()->localPosition() ) ) ;
432 vector<CLHEP::Hep3Vector> predictions = secondHit.predictionInNextLayers();
434 for (
unsigned it = 0; it < predictions.size(); it++)
pred2Meas.push_back(predictions[it]);
440 if(!secondHit.measurementsInNextLayers().empty()){
441 for(
unsigned int shit=0; shit<secondHit.measurementsInNextLayers().size(); shit++)
450 pxrh = secondHit.measurementsInNextLayers()[shit].recHit();
452 pair<RecHitWithDist,ConstRecHitPointer> compatiblePair = pair<RecHitWithDist,ConstRecHitPointer>(rh,pxrh) ;
453 result.push_back(compatiblePair);
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
std::vector< TrajectoryMeasurement > measurements(const DetLayer &layer, const TrajectoryStateOnSurface &startingState, const Propagator &prop, const MeasurementEstimator &est) const
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
BarrelMeasurementEstimator meas2ndBLayer
BarrelMeasurementEstimator meas1stBLayer
PropagatorWithMaterial * prop1stLayer
Geom::Phi< T > phi() const
std::vector< CLHEP::Hep3Vector > pred1Meas
ForwardLayerIterator neg1stFLayer()
FTSFromVertexToPointFactory myFTS
BarrelLayerIterator firstBLayer()
Scalar radius() const
Radius of the cylinder.
RealType normalized_phi(RealType phi)
const MagneticField * theMagField
const DetLayer * detLayer(const DetId &id) const
obsolete method. Use idToLayer() instead.
ForwardLayerIterator pos1stFLayer()
GlobalVector momentum() const
GlobalPoint position() const
PixelMatchStartLayers startLayers
virtual const BoundCylinder & specificSurface() const
Extension of the interface.
const GeometricSearchTracker * theGeometricSearchTracker
std::vector< CLHEP::Hep3Vector > pred2Meas
ForwardMeasurementEstimator meas2ndFLayer
PropagatorWithMaterial * prop2ndLayer
ForwardMeasurementEstimator meas1stFLayer
const LayerMeasurements * theLayerMeasurements