Go to the documentation of this file.00001 #include "CLHEP/Units/GlobalPhysicalConstants.h"
00002 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00003 #include "RecoEgamma/EgammaPhotonAlgos/interface/ConversionForwardEstimator.h"
00004 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h"
00005 #include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h"
00006 #include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h"
00007 #include "DataFormats/GeometrySurface/interface/BoundPlane.h"
00008 #include "TrackingTools/DetLayers/interface/PhiLess.h"
00009 #include "TrackingTools/DetLayers/interface/rangesIntersect.h"
00010 #include "RecoTracker/TkTrackingRegions/interface/GlobalDetRangeZPhi.h"
00011
00012
00013
00014
00015
00016 std::pair<bool,double> ConversionForwardEstimator::estimate( const TrajectoryStateOnSurface& ts,
00017 const TransientTrackingRecHit& hit) const {
00018 LogDebug("ConversionForwardEstimator") << "ConversionForwardEstimator::estimate( const TrajectoryStateOnSurface& ts ...) " << "\n";
00019
00020
00021 std::pair<bool,double> result;
00022
00023 float tsPhi = ts.globalParameters().position().phi();
00024 GlobalPoint gp = hit.globalPosition();
00025 float rhPhi = gp.phi();
00026 float rhR = gp.perp();
00027
00028
00029
00030
00031
00032
00033
00034 float rLayer = ts.globalParameters().position().perp();
00035
00036 float newdr = sqrt(pow(dr_,2)+4.*hit.localPositionError().yy());
00037 float rMin = rLayer - newdr;
00038 float rMax = rLayer + newdr;
00039 float phiDiff = tsPhi - rhPhi;
00040 if (phiDiff > pi) phiDiff -= twopi;
00041 if (phiDiff < -pi) phiDiff += twopi;
00042
00043
00044
00045
00046
00047
00048 if ( phiDiff < thePhiRangeMax && phiDiff > thePhiRangeMin &&
00049 rhR < rMax && rhR > rMin) {
00050
00051
00052
00053
00054
00055
00056
00057 result.first= true;
00058 result.second=phiDiff;
00059 } else {
00060
00061
00062
00063
00064 result.first= false;
00065 result.second=0;
00066
00067 }
00068
00069 return result;
00070
00071 }
00072
00073 bool ConversionForwardEstimator::estimate( const TrajectoryStateOnSurface& ts,
00074 const BoundPlane& plane) const {
00075
00076
00077
00078
00079
00080
00081 return true ;
00082
00083 }
00084
00085
00086
00087 MeasurementEstimator::Local2DVector
00088 ConversionForwardEstimator::maximalLocalDisplacement( const TrajectoryStateOnSurface& ts,
00089 const BoundPlane& plane) const
00090 {
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102 return Local2DVector(99999,99999);
00103
00104 }
00105
00106