File indexing completed on 2025-05-06 02:07:10
0001 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0002 #include "FWCore/Framework/interface/ESTransientHandle.h"
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0005 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0006 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0008 #include "FWCore/ServiceRegistry/interface/Service.h"
0009 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
0010 #include "CondFormats/GeometryObjects/interface/PHGCalParameters.h"
0011 #include "DetectorDescription/Core/interface/DDCompactView.h"
0012 #include "DetectorDescription/DDCMS/interface/DDCompactView.h"
0013 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0014 #include "Geometry/HGCalCommonData/interface/HGCalParameters.h"
0015 #include "Geometry/HGCalCommonData/interface/HGCalParametersFromDD.h"
0016
0017
0018
0019 class PHGCalParametersDBBuilder : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0020 public:
0021 PHGCalParametersDBBuilder(const edm::ParameterSet&);
0022
0023 static void fillDescriptions(edm::ConfigurationDescriptions&);
0024
0025 void beginRun(edm::Run const& iEvent, edm::EventSetup const&) override;
0026 void analyze(edm::Event const& iEvent, edm::EventSetup const&) override {}
0027 void endRun(edm::Run const& iEvent, edm::EventSetup const&) override {}
0028
0029 private:
0030 void swapParameters(HGCalParameters*, PHGCalParameters*);
0031
0032 std::string name_, name2_, namew_, namec_, namet_;
0033 bool fromDD4hep_;
0034 edm::ESGetToken<cms::DDCompactView, IdealGeometryRecord> dd4HepCompactViewToken_;
0035 edm::ESGetToken<DDCompactView, IdealGeometryRecord> compactViewToken_;
0036 };
0037
0038 PHGCalParametersDBBuilder::PHGCalParametersDBBuilder(const edm::ParameterSet& iC) {
0039 name_ = iC.getParameter<std::string>("name");
0040 name2_ = iC.getParameter<std::string>("name2");
0041 namew_ = iC.getParameter<std::string>("nameW");
0042 namec_ = iC.getParameter<std::string>("nameC");
0043 namet_ = iC.getParameter<std::string>("nameT");
0044 fromDD4hep_ = iC.getParameter<bool>("fromDD4hep");
0045 dd4HepCompactViewToken_ = esConsumes<edm::Transition::BeginRun>();
0046 compactViewToken_ = esConsumes<edm::Transition::BeginRun>();
0047
0048 #ifdef EDM_ML_DEBUG
0049 edm::LogVerbatim("HGCalGeom") << "HGCalParametersESModule for " << name_ << ":" << name2_ << ":" << namew_ << ":"
0050 << namec_ << ":" << namet_ << " and fromDD4hep flag " << fromDD4hep_;
0051 #endif
0052 }
0053
0054 void PHGCalParametersDBBuilder::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0055 edm::ParameterSetDescription desc;
0056 desc.add<std::string>("name", "HGCalEESensitive");
0057 desc.add<std::string>("name2", "HGCalEE");
0058 desc.add<std::string>("nameW", "HGCalEEWafer");
0059 desc.add<std::string>("nameC", "HGCalEECell");
0060 desc.add<std::string>("nameT", "HGCal");
0061 desc.add<bool>("fromDD4hep", false);
0062 descriptions.add("HGCalEEParametersWriter", desc);
0063 }
0064
0065 void PHGCalParametersDBBuilder::beginRun(const edm::Run&, edm::EventSetup const& es) {
0066 PHGCalParameters phgp;
0067 edm::Service<cond::service::PoolDBOutputService> mydbservice;
0068 if (!mydbservice.isAvailable()) {
0069 edm::LogError("PHGCalParametersDBBuilder") << "PoolDBOutputService unavailable";
0070 return;
0071 }
0072
0073 HGCalParameters* ptp = new HGCalParameters(name_);
0074 HGCalParametersFromDD builder;
0075 if (fromDD4hep_) {
0076 #ifdef EDM_ML_DEBUG
0077 edm::LogVerbatim("HGCalGeom") << "PHGCalParametersDBBuilder::Try to access cm::DDCompactView";
0078 #endif
0079 auto cpv = es.getTransientHandle(dd4HepCompactViewToken_);
0080 builder.build(cpv.product(), *ptp, name_, namew_, namec_, namet_, name2_);
0081 } else {
0082 #ifdef EDM_ML_DEBUG
0083 edm::LogVerbatim("HGCalGeom") << "PHGCalParametersDBBuilder::Try to access DDCompactView";
0084 #endif
0085 auto cpv = es.getTransientHandle(compactViewToken_);
0086 builder.build(cpv.product(), *ptp, name_, namew_, namec_, namet_);
0087 }
0088 swapParameters(ptp, &phgp);
0089 delete ptp;
0090
0091 if (mydbservice->isNewTagRequest("PHGCalParametersRcd")) {
0092 mydbservice->createOneIOV(phgp, mydbservice->beginOfTime(), "PHGCalParametersRcd");
0093 } else {
0094 edm::LogError("PHGCalParametersDBBuilder") << "PHGCalParameters and PHGCalParametersRcd Tag already present";
0095 }
0096 }
0097
0098 void PHGCalParametersDBBuilder::swapParameters(HGCalParameters* ptp, PHGCalParameters* phgp) {
0099 phgp->name_ = ptp->name_;
0100 phgp->cellSize_.swap(ptp->cellSize_);
0101 phgp->slopeMin_.swap(ptp->slopeMin_);
0102 phgp->zFrontMin_.swap(ptp->zFrontMin_);
0103 phgp->rMinFront_.swap(ptp->rMinFront_);
0104 phgp->slopeTop_.swap(ptp->slopeTop_);
0105 phgp->zFrontTop_.swap(ptp->zFrontTop_);
0106 phgp->rMaxFront_.swap(ptp->rMaxFront_);
0107 phgp->zRanges_.swap(ptp->zRanges_);
0108 phgp->moduleBlS_.swap(ptp->moduleBlS_);
0109 phgp->moduleTlS_.swap(ptp->moduleTlS_);
0110 phgp->moduleHS_.swap(ptp->moduleHS_);
0111 phgp->moduleDzS_.swap(ptp->moduleDzS_);
0112 phgp->moduleAlphaS_.swap(ptp->moduleAlphaS_);
0113 phgp->moduleCellS_.swap(ptp->moduleCellS_);
0114 phgp->moduleBlR_.swap(ptp->moduleBlR_);
0115 phgp->moduleTlR_.swap(ptp->moduleTlR_);
0116 phgp->moduleHR_.swap(ptp->moduleHR_);
0117 phgp->moduleDzR_.swap(ptp->moduleDzR_);
0118 phgp->moduleAlphaR_.swap(ptp->moduleAlphaR_);
0119 phgp->moduleCellR_.swap(ptp->moduleCellR_);
0120 phgp->trformTranX_.swap(ptp->trformTranX_);
0121 phgp->trformTranY_.swap(ptp->trformTranY_);
0122 phgp->trformTranZ_.swap(ptp->trformTranZ_);
0123 phgp->trformRotXX_.swap(ptp->trformRotXX_);
0124 phgp->trformRotYX_.swap(ptp->trformRotYX_);
0125 phgp->trformRotZX_.swap(ptp->trformRotZX_);
0126 phgp->trformRotXY_.swap(ptp->trformRotXY_);
0127 phgp->trformRotYY_.swap(ptp->trformRotYY_);
0128 phgp->trformRotZY_.swap(ptp->trformRotZY_);
0129 phgp->trformRotXZ_.swap(ptp->trformRotXZ_);
0130 phgp->trformRotYZ_.swap(ptp->trformRotYZ_);
0131 phgp->trformRotZZ_.swap(ptp->trformRotZZ_);
0132 phgp->xLayerHex_.swap(ptp->xLayerHex_);
0133 phgp->yLayerHex_.swap(ptp->yLayerHex_);
0134 phgp->zLayerHex_.swap(ptp->zLayerHex_);
0135 phgp->rMinLayHex_.swap(ptp->rMinLayHex_);
0136 phgp->rMaxLayHex_.swap(ptp->rMaxLayHex_);
0137 phgp->waferPosX_.swap(ptp->waferPosX_);
0138 phgp->waferPosY_.swap(ptp->waferPosY_);
0139 phgp->cellFineX_.swap(ptp->cellFineX_);
0140 phgp->cellFineY_.swap(ptp->cellFineY_);
0141 phgp->cellCoarseX_.swap(ptp->cellCoarseX_);
0142 phgp->cellCoarseY_.swap(ptp->cellCoarseY_);
0143 phgp->boundR_.swap(ptp->boundR_);
0144 phgp->rLimit_.swap(ptp->rLimit_);
0145 phgp->waferThickness_.swap(ptp->waferThickness_);
0146 phgp->cellThickness_.swap(ptp->cellThickness_);
0147 phgp->radius100to200_.swap(ptp->radius100to200_);
0148 phgp->radius200to300_.swap(ptp->radius200to300_);
0149 phgp->radiusMixBoundary_.swap(ptp->radiusMixBoundary_);
0150 phgp->rMinLayerBH_.swap(ptp->rMinLayerBH_);
0151 phgp->radiusLayer_[0].swap(ptp->radiusLayer_[0]);
0152 phgp->radiusLayer_[1].swap(ptp->radiusLayer_[1]);
0153 phgp->cassetteShift_.swap(ptp->cassetteShift_);
0154 phgp->cassetteShiftTile_.swap(ptp->cassetteShiftTile_);
0155 phgp->cassetteRetractTile_.swap(ptp->cassetteRetractTile_);
0156 phgp->moduleLayS_.swap(ptp->moduleLayS_);
0157 phgp->moduleLayR_.swap(ptp->moduleLayR_);
0158 phgp->layer_.swap(ptp->layer_);
0159 phgp->layerIndex_.swap(ptp->layerIndex_);
0160 phgp->layerGroup_.swap(ptp->layerGroup_);
0161 phgp->cellFactor_.swap(ptp->cellFactor_);
0162 phgp->depth_.swap(ptp->depth_);
0163 phgp->depthIndex_.swap(ptp->depthIndex_);
0164 phgp->depthLayerF_.swap(ptp->depthLayerF_);
0165 phgp->waferCopy_.swap(ptp->waferCopy_);
0166 phgp->waferTypeL_.swap(ptp->waferTypeL_);
0167 phgp->waferTypeT_.swap(ptp->waferTypeT_);
0168 phgp->layerGroupM_.swap(ptp->layerGroupM_);
0169 phgp->layerGroupO_.swap(ptp->layerGroupO_);
0170 phgp->cellFine_.swap(ptp->cellFine_);
0171 phgp->cellCoarse_.swap(ptp->cellCoarse_);
0172 phgp->levelT_.swap(ptp->levelT_);
0173 phgp->waferUVMaxLayer_.swap(ptp->waferUVMaxLayer_);
0174 phgp->nPhiBinBH_.swap(ptp->nPhiBinBH_);
0175 phgp->layerFrontBH_.swap(ptp->layerFrontBH_);
0176 phgp->iradMinBH_.swap(ptp->iradMinBH_);
0177 phgp->iradMaxBH_.swap(ptp->iradMaxBH_);
0178 phgp->iradMinBHFine_.swap(ptp->iradMinBHFine_);
0179 phgp->iradMaxBHFine_.swap(ptp->iradMaxBHFine_);
0180 phgp->firstModule_.swap(ptp->firstModule_);
0181 phgp->lastModule_.swap(ptp->lastModule_);
0182 phgp->layerType_.swap(ptp->layerType_);
0183 phgp->layerCenter_.swap(ptp->layerCenter_);
0184 phgp->nPhiLayer_.swap(ptp->nPhiLayer_);
0185 phgp->calibCellFullHD_.swap(ptp->calibCellFullHD_);
0186 phgp->calibCellPartHD_.swap(ptp->calibCellPartHD_);
0187 phgp->calibCellFullLD_.swap(ptp->calibCellFullLD_);
0188 phgp->calibCellPartLD_.swap(ptp->calibCellPartLD_);
0189 phgp->trformIndex_.swap(ptp->trformIndex_);
0190 phgp->cellFineHalf_.swap(ptp->cellFineHalf_);
0191 phgp->cellCoarseHalf_.swap(ptp->cellCoarseHalf_);
0192 phgp->waferR_ = ptp->waferR_;
0193 phgp->waferSize_ = ptp->waferSize_;
0194 phgp->waferThick_ = ptp->waferThick_;
0195 phgp->sensorSeparation_ = ptp->sensorSeparation_;
0196 phgp->sensorSizeOffset_ = ptp->sensorSizeOffset_;
0197 phgp->guardRingOffset_ = ptp->guardRingOffset_;
0198 phgp->mouseBite_ = ptp->mouseBite_;
0199 phgp->fracAreaMin_ = ptp->fracAreaMin_;
0200 phgp->zMinForRad_ = ptp->zMinForRad_;
0201 phgp->minTileSize_ = ptp->minTileSize_;
0202 phgp->layerRotation_ = ptp->layerRotation_;
0203 phgp->calibCellRHD_ = ptp->calibCellRHD_;
0204 phgp->calibCellRLD_ = ptp->calibCellRLD_;
0205 phgp->detectorType_ = ptp->detectorType_;
0206 phgp->useSimWt_ = ptp->useSimWt_;
0207 phgp->nCells_ = ptp->nCells_;
0208 phgp->nSectors_ = ptp->nSectors_;
0209 phgp->mode_ = ptp->mode_;
0210 phgp->firstLayer_ = ptp->firstLayer_;
0211 phgp->firstMixedLayer_ = ptp->firstMixedLayer_;
0212 phgp->levelZSide_ = ptp->levelZSide_;
0213 phgp->nCellsFine_ = ptp->nCellsFine_;
0214 phgp->nCellsCoarse_ = ptp->nCellsCoarse_;
0215 phgp->useOffset_ = ptp->useOffset_;
0216 phgp->waferUVMax_ = ptp->waferUVMax_;
0217 phgp->choiceType_ = ptp->choiceType_;
0218 phgp->nCornerCut_ = ptp->nCornerCut_;
0219 phgp->layerOffset_ = ptp->layerOffset_;
0220 phgp->waferMaskMode_ = ptp->waferMaskMode_;
0221 phgp->waferZSide_ = ptp->waferZSide_;
0222 phgp->cassettes_ = ptp->cassettes_;
0223 phgp->nphiCassette_ = ptp->nphiCassette_;
0224 phgp->nphiFineCassette_ = ptp->nphiFineCassette_;
0225 phgp->phiOffset_ = ptp->phiOffset_;
0226 phgp->tileUVMax_ = ptp->tileUVMax_;
0227 phgp->tileUVMaxFine_ = ptp->tileUVMaxFine_;
0228 phgp->defineFull_ = ptp->defineFull_;
0229 }
0230
0231 DEFINE_FWK_MODULE(PHGCalParametersDBBuilder);