Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:28:56

0001 #ifndef RecoTracker_TkTrackingRegions_GlobalTrackingRegionProducer_H
0002 #define RecoTracker_TkTrackingRegions_GlobalTrackingRegionProducer_H
0003 
0004 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h"
0005 #include "RecoTracker/TkTrackingRegions/interface/GlobalTrackingRegion.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0008 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0009 #include "FWCore/Framework/interface/ConsumesCollector.h"
0010 
0011 class GlobalTrackingRegionProducer : public TrackingRegionProducer {
0012 public:
0013   GlobalTrackingRegionProducer(const edm::ParameterSet& cfg, edm::ConsumesCollector&& iC) {
0014     edm::ParameterSet regionPSet = cfg.getParameter<edm::ParameterSet>("RegionPSet");
0015 
0016     thePtMin = regionPSet.getParameter<double>("ptMin");
0017     theOriginRadius = regionPSet.getParameter<double>("originRadius");
0018     theOriginHalfLength = regionPSet.getParameter<double>("originHalfLength");
0019     double xPos = regionPSet.getParameter<double>("originXPos");
0020     double yPos = regionPSet.getParameter<double>("originYPos");
0021     double zPos = regionPSet.getParameter<double>("originZPos");
0022     thePrecise = regionPSet.getParameter<bool>("precise");
0023     theOrigin = GlobalPoint(xPos, yPos, zPos);
0024   }
0025 
0026   ~GlobalTrackingRegionProducer() override {}
0027 
0028   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0029     edm::ParameterSetDescription desc;
0030 
0031     desc.add<bool>("precise", true);
0032     desc.add<bool>("useMultipleScattering", false);
0033     desc.add<double>("originHalfLength", 21.2);
0034     desc.add<double>("originRadius", 0.2);
0035     desc.add<double>("originXPos", 0.0);
0036     desc.add<double>("originYPos", 0.0);
0037     desc.add<double>("originZPos", 0.0);
0038     desc.add<double>("ptMin", 0.9);
0039 
0040     // Only for backwards-compatibility
0041     edm::ParameterSetDescription descRegion;
0042     descRegion.add<edm::ParameterSetDescription>("RegionPSet", desc);
0043 
0044     descriptions.add("globalTrackingRegion", descRegion);
0045   }
0046 
0047   std::vector<std::unique_ptr<TrackingRegion> > regions(const edm::Event&, const edm::EventSetup&) const override {
0048     std::vector<std::unique_ptr<TrackingRegion> > result;
0049     result.push_back(
0050         std::make_unique<GlobalTrackingRegion>(thePtMin, theOrigin, theOriginRadius, theOriginHalfLength, thePrecise));
0051     return result;
0052   }
0053 
0054 private:
0055   double thePtMin;
0056   GlobalPoint theOrigin;
0057   double theOriginRadius;
0058   double theOriginHalfLength;
0059   bool thePrecise;
0060 };
0061 
0062 #endif