Go to the documentation of this file.00001 #ifndef TrackAssociator_MuonDetIdAssociator_h
00002 #define TrackAssociator_MuonDetIdAssociator_h 1
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "TrackingTools/TrackAssociator/interface/DetIdAssociator.h"
00023 #include "TrackingTools/TrackAssociator/interface/TAMuonChamberMatch.h"
00024 #include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixStateInfo.h"
00025 #include "Geometry/CommonDetUnit/interface/GlobalTrackingGeometry.h"
00026 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00027 #include "DataFormats/DetId/interface/DetId.h"
00028 #include "CondFormats/CSCObjects/interface/CSCBadChambers.h"
00029
00030 #include "FWCore/Framework/interface/ESHandle.h"
00031 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00032
00033 class MuonDetIdAssociator: public DetIdAssociator{
00034 public:
00035 MuonDetIdAssociator():DetIdAssociator(48, 48 , 0.125),geometry_(0),cscbadchambers_(0),includeBadChambers_(0){};
00036 MuonDetIdAssociator(const int nPhi, const int nEta, const double etaBinSize)
00037 :DetIdAssociator(nPhi, nEta, etaBinSize),geometry_(0),cscbadchambers_(0),includeBadChambers_(0){};
00038
00039 MuonDetIdAssociator(const edm::ParameterSet& pSet)
00040 :DetIdAssociator(pSet.getParameter<int>("nPhi"),pSet.getParameter<int>("nEta"),pSet.getParameter<double>("etaBinSize")),geometry_(0),cscbadchambers_(0),includeBadChambers_(pSet.getParameter<bool>("includeBadChambers")){};
00041
00042 virtual void setGeometry(const GlobalTrackingGeometry* ptr){ geometry_ = ptr; }
00043
00044 virtual void setGeometry(const DetIdAssociatorRecord& iRecord);
00045
00046 virtual void setCSCBadChambers(const CSCBadChambers* ptr){ cscbadchambers_ = ptr; }
00047
00048 virtual void setConditions(const DetIdAssociatorRecord& iRecord){
00049 edm::ESHandle<CSCBadChambers> cscbadchambersH;
00050 iRecord.getRecord<CSCBadChambersRcd>().get(cscbadchambersH);
00051 setCSCBadChambers(cscbadchambersH.product());
00052 };
00053
00054 virtual const GeomDet* getGeomDet( const DetId& id ) const;
00055
00056 virtual const char* name() const { return "AllMuonDetectors"; }
00057
00058 protected:
00059
00060 virtual void check_setup() const;
00061
00062 virtual GlobalPoint getPosition(const DetId& id) const;
00063
00064 virtual const std::vector<DetId>& getValidDetIds(unsigned int) const;
00065
00066 virtual std::pair<const_iterator,const_iterator> getDetIdPoints(const DetId& id) const;
00067
00068 virtual bool insideElement(const GlobalPoint& point, const DetId& id) const;
00069
00070 const GlobalTrackingGeometry* geometry_;
00071
00072 const CSCBadChambers* cscbadchambers_;
00073 bool includeBadChambers_;
00074 mutable std::vector<GlobalPoint> points_;
00075 mutable std::vector<DetId> validIds_;
00076
00077 };
00078 #endif