16 #include "CLHEP/Units/GlobalPhysicalConstants.h"
45 std::vector<math::XYZPoint>
result;
49 std::vector<reco::CaloClusterPtr>
matchingBC(2);
57 for ( std::vector<reco::TransientTrack>::const_iterator iTk=tracks.begin(); iTk!=tracks.end(); ++iTk) {
61 if ( !( myTSOS.
isValid() ) )
continue;
69 if ( (*iTk).innermostMeasurementState().globalPosition().eta() > 0.) {
83 result.push_back(ecalImpactPosition );
88 float bcDistanceToTrack=9999;
93 for (
unsigned i = 0;
i < bcHandle->size(); ++
i ) {
94 float dEta= bcHandle->ptrAt(
i)->position().eta() - ecalImpactPosition.eta() ;
95 float dPhi= bcHandle->ptrAt(
i)->position().phi() - ecalImpactPosition.phi() ;
96 if (
sqrt(dEta*dEta + dPhi*dPhi) < bcDistanceToTrack ) {
98 bcDistanceToTrack=
sqrt(dEta*dEta + dPhi*dPhi);
104 matchingBC[iTrk]=bcHandle->ptrAt(goodBC);
static ReferenceCountingPointer< BoundCylinder > theBarrel_
TrajectoryStateOnSurface stateAtECAL_
static float endcapRadius()
static float barrelHalfLength()
GlobalPoint globalPosition() const
static const BoundDisk & positiveEtaEndcap()
ConversionTrackEcalImpactPoint(const MagneticField *field)
~ConversionTrackEcalImpactPoint()
std::vector< reco::CaloClusterPtr > matchingBC_
std::vector< math::XYZPoint > find(const std::vector< reco::TransientTrack > &tracks, const edm::Handle< edm::View< reco::CaloCluster > > &bcHandle)
double dPhi(double phi1, double phi2)
static const BoundDisk & negativeEtaEndcap()
static float barrelRadius()
static const BoundCylinder & barrel()
virtual TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface &tsos, const Plane &plane) const
XYZPointD XYZPoint
point in space with cartesian internal representation
static ReferenceCountingPointer< BoundDisk > thePositiveEtaEndcap_
static ReferenceCountingPointer< BoundDisk > theNegativeEtaEndcap_
std::vector< reco::CaloClusterPtr > matchingBC() const
PropagatorWithMaterial * forwardPropagator_
const MagneticField * theMF_
PropagationDirection dir_