CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/QCDAnalysis/ChargedHadronSpectra/interface/EcalShowerProperties.h

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