Go to the documentation of this file.00001 #ifndef _ChargedHadronSpectra_EcalShowerProperties_h
00002 #define _ChargedHadronSpectra_EcalShowerProperties_h
00003
00004 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
00005 #include "DataFormats/GeometrySurface/interface/Plane.h"
00006
00007 namespace edm { class EventSetup; class Event; }
00008 namespace reco { class Track; }
00009 class FreeTrajectoryState;
00010 class TrajectoryStateOnSurface;
00011 class MagneticField;
00012 class Propagator;
00013 class CaloGeometry;
00014 class CaloCellGeometry;
00015
00016 #include <vector>
00017
00018 class EcalShowerProperties
00019 {
00020 public:
00021 EcalShowerProperties(const edm::Event & ev, const edm::EventSetup & es);
00022 std::pair<double,double> processTrack(const reco::Track & track, int & ntime);
00023
00024 private:
00025 FreeTrajectoryState getTrajectoryAtOuterPoint(const reco::Track & track);
00026 Plane::PlanePointer getSurface(const CaloCellGeometry* cell, int i);
00027 std::vector<TrajectoryStateOnSurface> getEndpoints
00028 (const FreeTrajectoryState & ftsAtLastPoint,
00029 const TrajectoryStateOnSurface & tsosBeforeEcal, int subDet);
00030 double getDistance
00031 (const std::vector<TrajectoryStateOnSurface> & tsosEnds,
00032 const CaloCellGeometry* cell);
00033 std::pair<double,double> processEcalRecHits
00034 (const std::vector<TrajectoryStateOnSurface> & tsosEnds, int subDet, int & ntime);
00035
00036 const MagneticField* theMagneticField;
00037 const Propagator* thePropagator;
00038 const CaloGeometry* theCaloGeometry;
00039
00040 edm::Handle<EBRecHitCollection> recHitsBarrel;
00041 edm::Handle<EERecHitCollection> recHitsEndcap;
00042 };
00043
00044 #endif