Back to home page

Project CMSSW displayed by LXR

 
 

    


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 //#define EDM_ML_DEBUG
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);