File indexing completed on 2024-04-06 12:28:36
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/Event.h"
0003 #include "FWCore/Framework/interface/EventSetup.h"
0004 #include "FWCore/Framework/interface/ConsumesCollector.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007
0008 #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGeneratorFactory.h"
0009 #include "RecoTracker/TkTrackingRegions/interface/OrderedHitsGenerator.h"
0010
0011
0012 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducerFactory.h"
0013 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegionProducer.h"
0014 #include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h"
0015 #include "RecoTracker/TkTrackingRegions/interface/GlobalTrackingRegion.h"
0016 #include "FWCore/Framework/interface/ConsumesCollector.h"
0017
0018
0019
0020 #include "TH1D.h"
0021 #include "TFile.h"
0022
0023 class HitTripletProducer : public edm::one::EDAnalyzer<> {
0024 public:
0025 explicit HitTripletProducer(const edm::ParameterSet& conf);
0026 ~HitTripletProducer();
0027 virtual void analyze(const edm::Event&, const edm::EventSetup&);
0028
0029 private:
0030 std::unique_ptr<OrderedHitsGenerator> theGenerator;
0031 std::unique_ptr<TrackingRegionProducer> theRegionProducer;
0032 TH1D *hCPU, *hNum;
0033 };
0034
0035 HitTripletProducer::HitTripletProducer(const edm::ParameterSet& conf) {
0036 edm::LogInfo("HitTripletProducer") << " CTOR";
0037 hCPU = new TH1D("hCPU", "hCPU", 140, 0., 0.070);
0038 hNum = new TH1D("hNum", "hNum", 250, 0., 500.);
0039
0040 edm::ParameterSet orderedPSet = conf.getParameter<edm::ParameterSet>("OrderedHitsFactoryPSet");
0041 std::string orderedName = orderedPSet.getParameter<std::string>("ComponentName");
0042 edm::ConsumesCollector iC = consumesCollector();
0043 theGenerator = OrderedHitsGeneratorFactory::get()->create(orderedName, orderedPSet, iC);
0044
0045 edm::ParameterSet regfactoryPSet = conf.getParameter<edm::ParameterSet>("RegionFactoryPSet");
0046 std::string regfactoryName = regfactoryPSet.getParameter<std::string>("ComponentName");
0047 theRegionProducer = TrackingRegionProducerFactory::get()->create(regfactoryName, regfactoryPSet, consumesCollector());
0048 }
0049
0050 HitTripletProducer::~HitTripletProducer() {
0051 edm::LogInfo("HitTripletProducer") << " DTOR";
0052
0053 TFile rootFile("analysis.root", "RECREATE", "my histograms");
0054 hCPU->Write();
0055 hNum->Write();
0056 rootFile.Close();
0057 }
0058
0059 void HitTripletProducer::analyze(const edm::Event& ev, const edm::EventSetup& es) {
0060 typedef std::vector<std::unique_ptr<TrackingRegion> > Regions;
0061 Regions regions = theRegionProducer->regions(ev, es);
0062 const TrackingRegion& region = *regions[0];
0063
0064
0065
0066 edm::LogInfo("HitTripletProducer") << "call triplets! ";
0067 const OrderedSeedingHits& triplets = theGenerator->run(region, ev, es);
0068
0069
0070 hNum->Fill(triplets.size());
0071 edm::LogInfo("HitTripletProducer") << "size of triplets: " << triplets.size();
0072
0073 theGenerator->clear();
0074 }
0075
0076 #include "FWCore/Framework/interface/MakerMacros.h"
0077 DEFINE_FWK_MODULE(HitTripletProducer);