CMS 3D CMS Logo

PHGCalParametersDBBuilder.cc
Go to the documentation of this file.
16 
17 //#define EDM_ML_DEBUG
18 
19 class PHGCalParametersDBBuilder : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
20 public:
22 
24 
25  void beginRun(edm::Run const& iEvent, edm::EventSetup const&) override;
26  void analyze(edm::Event const& iEvent, edm::EventSetup const&) override {}
27  void endRun(edm::Run const& iEvent, edm::EventSetup const&) override {}
28 
29 private:
31 
34 };
35 
37  name_ = iC.getParameter<std::string>("name");
38  name2_ = iC.getParameter<std::string>("name2");
39  namew_ = iC.getParameter<std::string>("nameW");
40  namec_ = iC.getParameter<std::string>("nameC");
41  namet_ = iC.getParameter<std::string>("nameT");
42  fromDD4Hep_ = iC.getParameter<bool>("fromDD4Hep");
43 #ifdef EDM_ML_DEBUG
44  edm::LogVerbatim("HGCalGeom") << "HGCalParametersESModule for " << name_ << ":" << name2_ << ":" << namew_ << ":"
45  << namec_ << ":" << namet_ << " and fromDD4Hep flag " << fromDD4Hep_;
46 #endif
47 }
48 
51  desc.add<std::string>("name", "HGCalEESensitive");
52  desc.add<std::string>("name2", "HGCalEE");
53  desc.add<std::string>("nameW", "HGCalEEWafer");
54  desc.add<std::string>("nameC", "HGCalEECell");
55  desc.add<std::string>("nameT", "HGCal");
56  desc.add<bool>("fromDD4Hep", false);
57  descriptions.add("HGCalEEParametersWriter", desc);
58 }
59 
63  if (!mydbservice.isAvailable()) {
64  edm::LogError("PHGCalParametersDBBuilder") << "PoolDBOutputService unavailable";
65  return;
66  }
67 
69  HGCalParametersFromDD builder;
70  if (fromDD4Hep_) {
71 #ifdef EDM_ML_DEBUG
72  edm::LogVerbatim("HGCalGeom") << "PHGCalParametersDBBuilder::Try to access cm::DDCompactView";
73 #endif
75  es.get<IdealGeometryRecord>().get(cpv);
76  builder.build(cpv.product(), *ptp, name_, namew_, namec_, namet_, name2_);
77  } else {
78 #ifdef EDM_ML_DEBUG
79  edm::LogVerbatim("HGCalGeom") << "PHGCalParametersDBBuilder::Try to access DDCompactView";
80 #endif
82  es.get<IdealGeometryRecord>().get(cpv);
83  builder.build(cpv.product(), *ptp, name_, namew_, namec_, namet_);
84  }
85  swapParameters(ptp, phgp);
86  delete ptp;
87 
88  if (mydbservice->isNewTagRequest("PHGCalParametersRcd")) {
89  mydbservice->createNewIOV<PHGCalParameters>(
90  phgp, mydbservice->beginOfTime(), mydbservice->endOfTime(), "PHGCalParametersRcd");
91  } else {
92  edm::LogError("PHGCalParametersDBBuilder") << "PHGCalParameters and PHGCalParametersRcd Tag already present";
93  }
94 }
95 
97  phgp->name_ = ptp->name_;
98  phgp->cellSize_.swap(ptp->cellSize_);
99  phgp->moduleBlS_.swap(ptp->moduleBlS_);
100  phgp->moduleTlS_.swap(ptp->moduleTlS_);
101  phgp->moduleHS_.swap(ptp->moduleHS_);
102  phgp->moduleDzS_.swap(ptp->moduleDzS_);
103  phgp->moduleAlphaS_.swap(ptp->moduleAlphaS_);
104  phgp->moduleCellS_.swap(ptp->moduleCellS_);
105  phgp->moduleBlR_.swap(ptp->moduleBlR_);
106  phgp->moduleTlR_.swap(ptp->moduleTlR_);
107  phgp->moduleHR_.swap(ptp->moduleHR_);
108  phgp->moduleDzR_.swap(ptp->moduleDzR_);
109  phgp->moduleAlphaR_.swap(ptp->moduleAlphaR_);
110  phgp->moduleCellR_.swap(ptp->moduleCellR_);
111  phgp->trformTranX_.swap(ptp->trformTranX_);
112  phgp->trformTranY_.swap(ptp->trformTranY_);
113  phgp->trformTranZ_.swap(ptp->trformTranZ_);
114  phgp->trformRotXX_.swap(ptp->trformRotXX_);
115  phgp->trformRotYX_.swap(ptp->trformRotYX_);
116  phgp->trformRotZX_.swap(ptp->trformRotZX_);
117  phgp->trformRotXY_.swap(ptp->trformRotXY_);
118  phgp->trformRotYY_.swap(ptp->trformRotYY_);
119  phgp->trformRotZY_.swap(ptp->trformRotZY_);
120  phgp->trformRotXZ_.swap(ptp->trformRotXZ_);
121  phgp->trformRotYZ_.swap(ptp->trformRotYZ_);
122  phgp->trformRotZZ_.swap(ptp->trformRotZZ_);
123  phgp->zLayerHex_.swap(ptp->zLayerHex_);
124  phgp->rMinLayHex_.swap(ptp->rMinLayHex_);
125  phgp->rMaxLayHex_.swap(ptp->rMaxLayHex_);
126  phgp->waferPosX_.swap(ptp->waferPosX_);
127  phgp->waferPosY_.swap(ptp->waferPosY_);
128  phgp->cellFineX_.swap(ptp->cellFineX_);
129  phgp->cellFineY_.swap(ptp->cellFineY_);
130  phgp->cellCoarseX_.swap(ptp->cellCoarseX_);
131  phgp->cellCoarseY_.swap(ptp->cellCoarseY_);
132  phgp->boundR_.swap(ptp->boundR_);
133  phgp->moduleLayS_.swap(ptp->moduleLayS_);
134  phgp->moduleLayR_.swap(ptp->moduleLayR_);
135  phgp->layer_.swap(ptp->layer_);
136  phgp->layerIndex_.swap(ptp->layerIndex_);
137  phgp->layerGroup_.swap(ptp->layerGroup_);
138  phgp->cellFactor_.swap(ptp->cellFactor_);
139  phgp->depth_.swap(ptp->depth_);
140  phgp->depthIndex_.swap(ptp->depthIndex_);
141  phgp->depthLayerF_.swap(ptp->depthLayerF_);
142  phgp->waferCopy_.swap(ptp->waferCopy_);
143  phgp->waferTypeL_.swap(ptp->waferTypeL_);
144  phgp->waferTypeT_.swap(ptp->waferTypeT_);
145  phgp->layerGroupM_.swap(ptp->layerGroupM_);
146  phgp->layerGroupO_.swap(ptp->layerGroupO_);
147  phgp->trformIndex_.swap(ptp->trformIndex_);
148  phgp->slopeMin_.swap(ptp->slopeMin_);
149  phgp->waferR_ = ptp->waferR_;
150  phgp->nCells_ = ptp->nCells_;
151  phgp->nSectors_ = ptp->nSectors_;
152  phgp->mode_ = ptp->mode_;
153 }
154 
ConfigurationDescriptions.h
PHGCalParameters::layer_
std::vector< int > layer_
Definition: PHGCalParameters.h:52
PHGCalParameters::trformRotYX_
std::vector< double > trformRotYX_
Definition: PHGCalParameters.h:32
PHGCalParametersDBBuilder::namew_
std::string namew_
Definition: PHGCalParametersDBBuilder.cc:32
HGCalParameters::trformRotXX_
std::vector< double > trformRotXX_
Definition: HGCalParameters.h:88
PHGCalParameters::cellFineY_
std::vector< double > cellFineY_
Definition: PHGCalParameters.h:46
EDAnalyzer.h
HGCalParameters::nSectors_
int nSectors_
Definition: HGCalParameters.h:68
edm::ParameterSetDescription::add
ParameterDescriptionBase * add(U const &iLabel, T const &value)
Definition: ParameterSetDescription.h:95
HGCalParameters::trformRotYY_
std::vector< double > trformRotYY_
Definition: HGCalParameters.h:92
HGCalParameters::moduleCellS_
std::vector< double > moduleCellS_
Definition: HGCalParameters.h:76
ESTransientHandle.h
MessageLogger.h
PHGCalParameters::moduleHR_
std::vector< double > moduleHR_
Definition: PHGCalParameters.h:24
edm::ESTransientHandle::product
T const * product() const
Definition: ESTransientHandle.h:51
PHGCalParameters::depthIndex_
std::vector< int > depthIndex_
Definition: PHGCalParameters.h:57
cond::service::PoolDBOutputService::beginOfTime
cond::Time_t beginOfTime() const
Definition: PoolDBOutputService.cc:177
HGCalParameters::name_
std::string name_
Definition: HGCalParameters.h:65
PHGCalParameters::trformRotZX_
std::vector< double > trformRotZX_
Definition: PHGCalParameters.h:33
HGCalParameters::moduleTlR_
std::vector< double > moduleTlR_
Definition: HGCalParameters.h:79
HGCalParameters::moduleBlS_
std::vector< double > moduleBlS_
Definition: HGCalParameters.h:71
HGCalParameters::zLayerHex_
std::vector< double > zLayerHex_
Definition: HGCalParameters.h:106
HGCalParameters::moduleHS_
std::vector< double > moduleHS_
Definition: HGCalParameters.h:73
PHGCalParameters::nSectors_
int nSectors_
Definition: PHGCalParameters.h:68
HGCalParameters::moduleCellR_
std::vector< double > moduleCellR_
Definition: HGCalParameters.h:83
edm::Run
Definition: Run.h:45
PHGCalParametersDBBuilder::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &)
Definition: PHGCalParametersDBBuilder.cc:49
PHGCalParameters::layerGroupM_
std::vector< int > layerGroupM_
Definition: PHGCalParameters.h:62
PHGCalParameters::moduleCellR_
std::vector< double > moduleCellR_
Definition: PHGCalParameters.h:27
HGCalParameters::rMaxLayHex_
std::vector< double > rMaxLayHex_
Definition: HGCalParameters.h:108
HGCalParameters::trformRotYX_
std::vector< double > trformRotYX_
Definition: HGCalParameters.h:89
HGCalParameters::cellFineY_
std::vector< double > cellFineY_
Definition: HGCalParameters.h:115
PHGCalParameters::cellFactor_
std::vector< int > cellFactor_
Definition: PHGCalParameters.h:55
PHGCalParameters::trformTranX_
std::vector< double > trformTranX_
Definition: PHGCalParameters.h:28
PHGCalParametersDBBuilder::name2_
std::string name2_
Definition: PHGCalParametersDBBuilder.cc:32
PHGCalParametersDBBuilder::namec_
std::string namec_
Definition: PHGCalParametersDBBuilder.cc:32
edm::ParameterSetDescription
Definition: ParameterSetDescription.h:52
HGCalParameters::layerIndex_
std::vector< int > layerIndex_
Definition: HGCalParameters.h:98
PHGCalParameters::moduleCellS_
std::vector< double > moduleCellS_
Definition: PHGCalParameters.h:21
PHGCalParametersDBBuilder
Definition: PHGCalParametersDBBuilder.cc:19
PHGCalParameters::boundR_
std::vector< double > boundR_
Definition: PHGCalParameters.h:49
PHGCalParameters::layerIndex_
std::vector< int > layerIndex_
Definition: PHGCalParameters.h:53
PHGCalParameters::name_
std::string name_
Definition: PHGCalParameters.h:14
PHGCalParameters::moduleHS_
std::vector< double > moduleHS_
Definition: PHGCalParameters.h:18
PHGCalParametersDBBuilder::endRun
void endRun(edm::Run const &iEvent, edm::EventSetup const &) override
Definition: PHGCalParametersDBBuilder.cc:27
edm::one::EDAnalyzer
Definition: EDAnalyzer.h:30
HGCalParameters::cellFactor_
std::vector< int > cellFactor_
Definition: HGCalParameters.h:100
HGCalParameters::moduleLayR_
std::vector< int > moduleLayR_
Definition: HGCalParameters.h:77
PHGCalParameters::moduleBlR_
std::vector< double > moduleBlR_
Definition: PHGCalParameters.h:22
PHGCalParameters::trformRotXZ_
std::vector< double > trformRotXZ_
Definition: PHGCalParameters.h:37
PHGCalParameters::cellCoarseX_
std::vector< double > cellCoarseX_
Definition: PHGCalParameters.h:47
edm::Service::isAvailable
bool isAvailable() const
Definition: Service.h:40
PHGCalParameters::trformTranZ_
std::vector< double > trformTranZ_
Definition: PHGCalParameters.h:30
DDCompactView.h
HGCalParameters::moduleBlR_
std::vector< double > moduleBlR_
Definition: HGCalParameters.h:78
HGCalParameters::boundR_
std::vector< double > boundR_
Definition: HGCalParameters.h:124
PHGCalParameters::mode_
int mode_
Definition: PHGCalParameters.h:69
PHGCalParameters::moduleTlS_
std::vector< double > moduleTlS_
Definition: PHGCalParameters.h:17
PHGCalParameters::moduleBlS_
std::vector< double > moduleBlS_
Definition: PHGCalParameters.h:16
HGCalParameters::waferPosY_
std::vector< double > waferPosY_
Definition: HGCalParameters.h:113
HGCalParameters::moduleTlS_
std::vector< double > moduleTlS_
Definition: HGCalParameters.h:72
HGCalParameters::trformRotZY_
std::vector< double > trformRotZY_
Definition: HGCalParameters.h:93
HGCalParameters::trformTranX_
std::vector< double > trformTranX_
Definition: HGCalParameters.h:85
HGCalParameters::moduleDzR_
std::vector< double > moduleDzR_
Definition: HGCalParameters.h:81
MakerMacros.h
HGCalParameters::trformIndex_
std::vector< uint32_t > trformIndex_
Definition: HGCalParameters.h:84
PoolDBOutputService.h
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ConfigurationDescriptions::add
void add(std::string const &label, ParameterSetDescription const &psetDescription)
Definition: ConfigurationDescriptions.cc:57
HGCalParameters::layerGroup_
std::vector< int > layerGroup_
Definition: HGCalParameters.h:99
cond::service::PoolDBOutputService::createNewIOV
void createNewIOV(const T *firstPayloadObj, cond::Time_t firstSinceTime, cond::Time_t, const std::string &recordName)
Definition: PoolDBOutputService.h:107
PHGCalParametersDBBuilder::fromDD4Hep_
bool fromDD4Hep_
Definition: PHGCalParametersDBBuilder.cc:33
PHGCalParameters
Definition: PHGCalParameters.h:9
PHGCalParameters::zLayerHex_
std::vector< double > zLayerHex_
Definition: PHGCalParameters.h:40
Service.h
PHGCalParameters::waferTypeT_
std::vector< int > waferTypeT_
Definition: PHGCalParameters.h:61
HGCalParameters::waferPosX_
std::vector< double > waferPosX_
Definition: HGCalParameters.h:112
PHGCalParameters::trformRotXX_
std::vector< double > trformRotXX_
Definition: PHGCalParameters.h:31
HGCalParametersFromDD.h
PHGCalParameters::trformRotYY_
std::vector< double > trformRotYY_
Definition: PHGCalParameters.h:35
PHGCalParameters::moduleDzR_
std::vector< double > moduleDzR_
Definition: PHGCalParameters.h:25
HGCalParameters::rMinLayHex_
std::vector< double > rMinLayHex_
Definition: HGCalParameters.h:107
PHGCalParameters::rMinLayHex_
std::vector< double > rMinLayHex_
Definition: PHGCalParameters.h:41
DDCompactView.h
HGCalParameters::waferCopy_
std::vector< int > waferCopy_
Definition: HGCalParameters.h:109
ParameterSetDescription.h
PHGCalParametersDBBuilder::name_
std::string name_
Definition: PHGCalParametersDBBuilder.cc:32
PHGCalParameters::moduleLayS_
std::vector< int > moduleLayS_
Definition: PHGCalParameters.h:50
HGCalParametersFromDD
Definition: HGCalParametersFromDD.h:12
HGCalParameters::trformRotZX_
std::vector< double > trformRotZX_
Definition: HGCalParameters.h:90
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HGCalParameters::cellSize_
std::vector< double > cellSize_
Definition: HGCalParameters.h:69
PHGCalParameters::trformIndex_
std::vector< uint32_t > trformIndex_
Definition: PHGCalParameters.h:64
HGCalParameters::trformRotXZ_
std::vector< double > trformRotXZ_
Definition: HGCalParameters.h:94
HGCalParameters::moduleAlphaS_
std::vector< double > moduleAlphaS_
Definition: HGCalParameters.h:75
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
HGCalParameters::depth_
std::vector< int > depth_
Definition: HGCalParameters.h:101
PHGCalParameters::cellCoarseY_
std::vector< double > cellCoarseY_
Definition: PHGCalParameters.h:48
PHGCalParameters::waferTypeL_
std::vector< int > waferTypeL_
Definition: PHGCalParameters.h:60
PHGCalParameters::cellSize_
std::vector< double > cellSize_
Definition: PHGCalParameters.h:15
HGCalParameters::mode_
HGCalGeometryMode::GeometryMode mode_
Definition: HGCalParameters.h:131
PHGCalParameters::depthLayerF_
std::vector< int > depthLayerF_
Definition: PHGCalParameters.h:58
HGCalParameters::cellCoarseY_
std::vector< double > cellCoarseY_
Definition: HGCalParameters.h:119
PHGCalParameters::cellFineX_
std::vector< double > cellFineX_
Definition: PHGCalParameters.h:45
HGCalParameters::trformTranZ_
std::vector< double > trformTranZ_
Definition: HGCalParameters.h:87
PHGCalParametersDBBuilder::PHGCalParametersDBBuilder
PHGCalParametersDBBuilder(const edm::ParameterSet &)
Definition: PHGCalParametersDBBuilder.cc:36
edm::Service< cond::service::PoolDBOutputService >
iEvent
int iEvent
Definition: GenABIO.cc:224
HGCalParameters::layerGroupO_
std::vector< int > layerGroupO_
Definition: HGCalParameters.h:123
PHGCalParameters::trformRotXY_
std::vector< double > trformRotXY_
Definition: PHGCalParameters.h:34
edm::LogVerbatim
Definition: MessageLogger.h:297
PHGCalParameters::nCells_
int nCells_
Definition: PHGCalParameters.h:67
HGCalParameters::trformRotXY_
std::vector< double > trformRotXY_
Definition: HGCalParameters.h:91
IdealGeometryRecord.h
PHGCalParameters::slopeMin_
std::vector< double > slopeMin_
Definition: PHGCalParameters.h:66
PHGCalParameters::waferPosY_
std::vector< double > waferPosY_
Definition: PHGCalParameters.h:44
HGCalParameters::layerGroupM_
std::vector< int > layerGroupM_
Definition: HGCalParameters.h:122
edm::EventSetup
Definition: EventSetup.h:57
HGCalParameters::waferR_
double waferR_
Definition: HGCalParameters.h:128
PHGCalParameters::trformRotZZ_
std::vector< double > trformRotZZ_
Definition: PHGCalParameters.h:39
get
#define get
PHGCalParameters::depth_
std::vector< int > depth_
Definition: PHGCalParameters.h:56
HGCalParameters::trformTranY_
std::vector< double > trformTranY_
Definition: HGCalParameters.h:86
edm::ESTransientHandle
Definition: ESTransientHandle.h:41
HGCalParameters::waferTypeT_
std::vector< int > waferTypeT_
Definition: HGCalParameters.h:111
PHGCalParameters.h
cond::service::PoolDBOutputService::endOfTime
cond::Time_t endOfTime() const
Definition: PoolDBOutputService.cc:175
HGCalParameters
Definition: HGCalParameters.h:13
PHGCalParameters::layerGroupO_
std::vector< int > layerGroupO_
Definition: PHGCalParameters.h:63
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
HGCalParameters::moduleLayS_
std::vector< int > moduleLayS_
Definition: HGCalParameters.h:70
HGCalParametersFromDD::build
bool build(const DDCompactView *cpv, HGCalParameters &php, const std::string &name, const std::string &namew, const std::string &namec, const std::string &namet)
Definition: HGCalParametersFromDD.cc:57
PHGCalParameters::rMaxLayHex_
std::vector< double > rMaxLayHex_
Definition: PHGCalParameters.h:42
PHGCalParametersDBBuilder::beginRun
void beginRun(edm::Run const &iEvent, edm::EventSetup const &) override
Definition: PHGCalParametersDBBuilder.cc:60
HGCalParameters::slopeMin_
std::vector< double > slopeMin_
Definition: HGCalParameters.h:132
HGCalParameters::depthIndex_
std::vector< int > depthIndex_
Definition: HGCalParameters.h:102
PHGCalParameters::trformRotYZ_
std::vector< double > trformRotYZ_
Definition: PHGCalParameters.h:38
HGCalParameters::moduleDzS_
std::vector< double > moduleDzS_
Definition: HGCalParameters.h:74
PHGCalParameters::moduleAlphaR_
std::vector< double > moduleAlphaR_
Definition: PHGCalParameters.h:26
PHGCalParametersDBBuilder::namet_
std::string namet_
Definition: PHGCalParametersDBBuilder.cc:32
PHGCalParameters::moduleTlR_
std::vector< double > moduleTlR_
Definition: PHGCalParameters.h:23
PHGCalParameters::waferPosX_
std::vector< double > waferPosX_
Definition: PHGCalParameters.h:43
HGCalParameters::cellFineX_
std::vector< double > cellFineX_
Definition: HGCalParameters.h:114
cond::service::PoolDBOutputService::isNewTagRequest
bool isNewTagRequest(const std::string &recordName)
Definition: PoolDBOutputService.cc:90
PHGCalParameters::moduleAlphaS_
std::vector< double > moduleAlphaS_
Definition: PHGCalParameters.h:20
PHGCalParameters::waferR_
double waferR_
Definition: PHGCalParameters.h:65
PHGCalParameters::trformTranY_
std::vector< double > trformTranY_
Definition: PHGCalParameters.h:29
HGCalParameters::waferTypeL_
std::vector< int > waferTypeL_
Definition: HGCalParameters.h:110
HGCalParameters::cellCoarseX_
std::vector< double > cellCoarseX_
Definition: HGCalParameters.h:118
PHGCalParameters::moduleDzS_
std::vector< double > moduleDzS_
Definition: PHGCalParameters.h:19
HGCalParameters::moduleHR_
std::vector< double > moduleHR_
Definition: HGCalParameters.h:80
HGCalParameters::layer_
std::vector< int > layer_
Definition: HGCalParameters.h:97
ParameterSet.h
HGCalParameters::trformRotYZ_
std::vector< double > trformRotYZ_
Definition: HGCalParameters.h:95
HGCalParameters::depthLayerF_
std::vector< int > depthLayerF_
Definition: HGCalParameters.h:103
edm::Event
Definition: Event.h:73
HGCalParameters::trformRotZZ_
std::vector< double > trformRotZZ_
Definition: HGCalParameters.h:96
HGCalParameters.h
PHGCalParameters::waferCopy_
std::vector< int > waferCopy_
Definition: PHGCalParameters.h:59
HGCalParameters::moduleAlphaR_
std::vector< double > moduleAlphaR_
Definition: HGCalParameters.h:82
PHGCalParametersDBBuilder::swapParameters
void swapParameters(HGCalParameters *, PHGCalParameters *)
Definition: PHGCalParametersDBBuilder.cc:96
PHGCalParameters::moduleLayR_
std::vector< int > moduleLayR_
Definition: PHGCalParameters.h:51
PHGCalParameters::trformRotZY_
std::vector< double > trformRotZY_
Definition: PHGCalParameters.h:36
IdealGeometryRecord
Definition: IdealGeometryRecord.h:27
PHGCalParametersDBBuilder::analyze
void analyze(edm::Event const &iEvent, edm::EventSetup const &) override
Definition: PHGCalParametersDBBuilder.cc:26
PHGCalParameters::layerGroup_
std::vector< int > layerGroup_
Definition: PHGCalParameters.h:54
HGCalParameters::nCells_
int nCells_
Definition: HGCalParameters.h:67