File indexing completed on 2024-04-06 11:59:34
0001 #ifndef CALIBTRACKER_SIPIXELCALIBDIGIPRODUCER_H
0002 #define CALIBTRACKER_SIPIXELCALIBDIGIPRODUCER_H
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include <memory>
0023
0024
0025 #include "FWCore/Framework/interface/Frameworkfwd.h"
0026 #include "FWCore/Framework/interface/stream/EDProducer.h"
0027 #include "FWCore/Framework/interface/Event.h"
0028 #include "FWCore/Framework/interface/MakerMacros.h"
0029
0030 #include "FWCore/ServiceRegistry/interface/Service.h"
0031
0032 #include "FWCore/Utilities/interface/InputTag.h"
0033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0034
0035 #include "DataFormats/Common/interface/DetSetVector.h"
0036
0037 #include "DataFormats/SiPixelDigi/interface/SiPixelCalibDigifwd.h"
0038 #include "DataFormats/SiPixelDigi/interface/SiPixelCalibDigi.h"
0039 #include "DataFormats/SiPixelDigi/interface/PixelDigi.h"
0040 #include "DataFormats/SiPixelDigi/interface/SiPixelCalibDigiError.h"
0041
0042 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
0043 #include "CondFormats/SiPixelObjects/interface/SiPixelCalibConfiguration.h"
0044 #include "CondFormats/DataRecord/interface/SiPixelCalibConfigurationRcd.h"
0045 #include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h"
0046 #include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h"
0047
0048 #include <map>
0049 #include <vector>
0050 #include <iostream>
0051
0052
0053
0054
0055 class SiPixelCalibDigiProducer : public edm::stream::EDProducer<> {
0056 public:
0057 explicit SiPixelCalibDigiProducer(const edm::ParameterSet& iConfig);
0058 ~SiPixelCalibDigiProducer() override;
0059
0060 private:
0061 void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0062 virtual bool store();
0063 virtual void setPattern();
0064 virtual void fill(edm::Event& iEvent, const edm::EventSetup& iSetup);
0065 virtual void fillPixel(uint32_t detid, short row, short col, short ipoint, short adc);
0066 virtual bool checkPixel(uint32_t detid, short row, short col);
0067 virtual bool checkFED(uint32_t detid);
0068 virtual void clear();
0069 typedef std::pair<uint32_t, std::pair<short, short>> pixelstruct;
0070
0071 edm::InputTag src_;
0072 edm::EDGetTokenT<edm::DetSetVector<PixelDigi>> tPixelDigi;
0073 uint32_t iEventCounter_;
0074
0075 bool ignore_non_pattern_;
0076 bool control_pattern_size_;
0077 bool includeErrors_;
0078 int errorType;
0079 edm::ParameterSet conf_;
0080 std::string label_;
0081 std::string instance_;
0082 uint32_t number_of_pixels_per_pattern_;
0083 bool use_realeventnumber_;
0084
0085 edm::ESHandle<SiPixelCalibConfiguration> calib_;
0086 edm::ESHandle<TrackerGeometry> theGeometry_;
0087 edm::ESHandle<SiPixelFedCablingMap> theCablingMap_;
0088
0089 edm::ESGetToken<SiPixelCalibConfiguration, SiPixelCalibConfigurationRcd> calibToken_;
0090 edm::ESGetToken<TrackerGeometry, TrackerDigiGeometryRecord> trackerGeomToken_;
0091 edm::ESGetToken<SiPixelFedCablingMap, SiPixelFedCablingMapRcd> cablingMapToken_;
0092
0093
0094 std::map<pixelstruct, SiPixelCalibDigi>
0095 intermediate_data_;
0096 std::map<pixelstruct, SiPixelCalibDigiError> error_data_;
0097
0098 std::vector<pixelstruct> detPixelMap_;
0099 uint32_t pattern_repeat_;
0100 std::map<uint32_t, uint32_t> detid_to_fedid_;
0101
0102 std::vector<std::pair<short, short>> currentpattern_;
0103 std::pair<short, short> currentpair_;
0104 };
0105
0106 #endif