File indexing completed on 2024-04-06 11:58:39
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __CINT__
0009 #ifndef InvRingCalib_H
0010 #define InvRingCalib_H
0011 #include "Calibration/EcalCalibAlgos/interface/VEcalCalibBlock.h"
0012 #include "FWCore/Framework/interface/EDLooper.h"
0013 #include "FWCore/Framework/interface/Event.h"
0014 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0015 #include "DataFormats/DetId/interface/DetId.h"
0016 #include "DataFormats/CaloRecHit/interface/CaloRecHit.h"
0017 #include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h"
0018 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
0019 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
0020 #include "FWCore/Framework/interface/EventSetup.h"
0021 #include "CondFormats/EcalObjects/interface/EcalIntercalibConstants.h"
0022 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
0023 #include "Geometry/Records/interface/CaloGeometryRecord.h"
0024
0025 #include <string>
0026 #include <vector>
0027
0028 #include "Calibration/EcalCalibAlgos/interface/VFillMap.h"
0029
0030 class InvRingCalib : public edm::EDLooper {
0031 public:
0032
0033 explicit InvRingCalib(const edm::ParameterSet &);
0034
0035 ~InvRingCalib() override;
0036 void beginOfJob() override;
0037 void endOfJob() override;
0038 void startingNewLoop(unsigned int) override;
0039 Status duringLoop(const edm::Event &, const edm::EventSetup &) override;
0040 Status endOfLoop(const edm::EventSetup &, unsigned int iCounter) override;
0041
0042
0043
0044 private:
0045
0046 inline int EERegionNum() const;
0047
0048 int EBRegionNum() const;
0049
0050 void EBRegionDef();
0051
0052 void EERingDef(const edm::EventSetup &);
0053
0054 void EERegionDef();
0055
0056 void RegPrepare();
0057
0058 int EBRegId(const int);
0059
0060 int EERegId(int);
0061
0062
0063 VFillMap *m_MapFiller;
0064
0065 private:
0066
0067 const edm::InputTag m_barrelAlCa;
0068
0069 const edm::InputTag m_endcapAlCa;
0070
0071 const edm::InputTag m_ElectronLabel;
0072
0073 const int m_recoWindowSidex;
0074 const int m_recoWindowSidey;
0075
0076 const double m_minEnergyPerCrystal;
0077
0078 const double m_maxEnergyPerCrystal;
0079
0080 const int m_etaStart;
0081
0082 const int m_etaEnd;
0083
0084 const int m_etaWidth;
0085
0086
0087 const int m_maxSelectedNumPerRing;
0088
0089 std::map<int, int> m_RingNumOfHits;
0090
0091 std::vector<VEcalCalibBlock *> m_IMACalibBlocks;
0092
0093 const double m_minCoeff;
0094
0095 const double m_maxCoeff;
0096
0097 const int m_usingBlockSolver;
0098
0099 std::map<int, GlobalPoint> m_cellPos;
0100 std::map<int, int> m_cellPhi;
0101
0102
0103 EcalIntercalibConstantMap m_barrelMap;
0104 EcalIntercalibConstantMap m_endcapMap;
0105
0106 unsigned int m_loops;
0107
0108 const int m_startRing;
0109 const int m_endRing;
0110
0111 std::map<int, int> m_xtalRing;
0112
0113 std::map<int, int> m_xtalRegionId;
0114
0115 std::map<int, int> m_RinginRegion;
0116
0117
0118 std::vector<DetId> m_barrelCells;
0119 std::vector<DetId> m_endcapCells;
0120
0121 const std::string m_EBcoeffFile;
0122 const std::string m_EEcoeffFile;
0123
0124 const int m_EEZone;
0125
0126 std::map<int, int> m_Reg;
0127 std::string m_mapFillerType;
0128 bool isfirstcall_;
0129
0130
0131 const edm::EDGetTokenT<EBRecHitCollection> m_ebRecHitToken;
0132 const edm::EDGetTokenT<EERecHitCollection> m_eeRecHitToken;
0133 const edm::EDGetTokenT<reco::GsfElectronCollection> m_gsfElectronToken;
0134
0135 const edm::ESGetToken<CaloGeometry, CaloGeometryRecord> m_geometryToken;
0136 };
0137 #endif
0138 #endif