00001 #ifndef RecoLocalMuon_RPCRecHitBaseAlgo_H 00002 #define RecoLocalMuon_RPCRecHitBaseAlgo_H 00003 00013 #include "DataFormats/GeometryVector/interface/LocalPoint.h" 00014 #include "DataFormats/GeometrySurface/interface/LocalError.h" 00015 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00016 #include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" 00017 #include "DataFormats/RPCRecHit/interface/RPCRecHit.h" 00018 #include "DataFormats/Common/interface/OwnVector.h" 00019 00020 class RPCCluster; 00021 class RPCRoll; 00022 class RPCDetId; 00023 00024 namespace edm { 00025 class ParameterSet; 00026 class EventSetup; 00027 } 00028 00029 00030 class RPCRecHitBaseAlgo { 00031 00032 public: 00033 00035 RPCRecHitBaseAlgo(const edm::ParameterSet& config); 00036 00038 virtual ~RPCRecHitBaseAlgo(); 00039 00041 virtual void setES(const edm::EventSetup& setup) = 0; 00042 00044 virtual edm::OwnVector<RPCRecHit> reconstruct(const RPCRoll& roll, 00045 const RPCDetId& rpcId, 00046 const RPCDigiCollection::Range& digiRange); 00047 00049 virtual bool compute(const RPCRoll& roll, 00050 const RPCCluster& cl, 00051 LocalPoint& Point, 00052 LocalError& error) const = 0; 00053 00054 00057 virtual bool compute(const RPCRoll& roll, 00058 const RPCCluster& cl, 00059 const float& angle, 00060 const GlobalPoint& globPos, 00061 LocalPoint& Point, 00062 LocalError& error) const = 0; 00063 }; 00064 #endif