CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
DTCCablingMapProducer Class Reference

#include <CondTools/SiPhase2Tracker/plugins/DTCCablingMapProducer.cc>

Inheritance diagram for DTCCablingMapProducer:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 DTCCablingMapProducer (const edm::ParameterSet &)
 
 ~DTCCablingMapProducer () override
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDAnalyzerBase () override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void beginJob () override
 
void endJob () override
 
virtual void LoadModulesToDTCCablingMapFromCSV (std::vector< std::string > const &)
 

Private Attributes

unsigned csvFormat_idetid_
 
unsigned csvFormat_idtcid_
 
unsigned csvFormat_ielinkid_
 
unsigned csvFormat_igbtlinkid_
 
unsigned csvFormat_ncolumns_
 
bool generate_fake_valid_gbtlink_and_elinkid_
 
cond::Time_t iovBeginTime_
 
std::unique_ptr< TrackerDetToDTCELinkCablingMappCablingMap_
 
std::string record_
 
int verbosity_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 70 of file DTCCablingMapProducer.cc.

Constructor & Destructor Documentation

DTCCablingMapProducer::DTCCablingMapProducer ( const edm::ParameterSet iConfig)
explicit

Definition at line 113 of file DTCCablingMapProducer.cc.

References edm::ParameterSet::getParameter(), and LoadModulesToDTCCablingMapFromCSV().

114  : generate_fake_valid_gbtlink_and_elinkid_(iConfig.getParameter<bool>("generate_fake_valid_gbtlink_and_elinkid")),
115  verbosity_(iConfig.getParameter<int>("verbosity")),
116  csvFormat_ncolumns_(iConfig.getParameter<unsigned>("csvFormat_ncolumns")),
117  csvFormat_idetid_(iConfig.getParameter<unsigned>("csvFormat_idetid")),
118  csvFormat_idtcid_(iConfig.getParameter<unsigned>("csvFormat_idtcid")),
119  iovBeginTime_(iConfig.getParameter<long long unsigned int>("iovBeginTime")),
120  pCablingMap_(std::make_unique<TrackerDetToDTCELinkCablingMap>()),
121  record_(iConfig.getParameter<std::string>("record")) {
122  LoadModulesToDTCCablingMapFromCSV(iConfig.getParameter<std::vector<std::string>>("modulesToDTCCablingCSVFileNames"));
123 }
T getParameter(std::string const &) const
std::unique_ptr< TrackerDetToDTCELinkCablingMap > pCablingMap_
virtual void LoadModulesToDTCCablingMapFromCSV(std::vector< std::string > const &)
DTCCablingMapProducer::~DTCCablingMapProducer ( )
override

Definition at line 253 of file DTCCablingMapProducer.cc.

References DEFINE_FWK_MODULE.

253 {}

Member Function Documentation

void DTCCablingMapProducer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 238 of file DTCCablingMapProducer.cc.

238 {}
void DTCCablingMapProducer::beginJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 125 of file DTCCablingMapProducer.cc.

125 {}
void DTCCablingMapProducer::endJob ( void  )
overrideprivatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 240 of file DTCCablingMapProducer.cc.

References Exception, iovBeginTime_, edm::Service< T >::isAvailable(), pCablingMap_, record_, and cond::service::PoolDBOutputService::writeOne().

240  {
241  // using namespace edm;
242  using namespace std;
243 
245 
246  if (poolDbService.isAvailable()) {
247  poolDbService->writeOne(pCablingMap_.release(), iovBeginTime_, record_);
248  } else {
249  throw cms::Exception("PoolDBService required.");
250  }
251 }
bool isAvailable() const
Definition: Service.h:40
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
std::unique_ptr< TrackerDetToDTCELinkCablingMap > pCablingMap_
void DTCCablingMapProducer::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 97 of file DTCCablingMapProducer.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::setComment(), and AlCaHLTBitMon_QueryRunRegistry::string.

97  {
99  desc.setComment("Stores a TrackerDetToDTCELinkCablingMap object into the database from a CSV file.");
100  desc.add<bool>("generate_fake_valid_gbtlink_and_elinkid", false);
101  desc.add<int>("verbosity", 0);
102  desc.add<unsigned>("csvFormat_idetid", 0);
103  desc.add<unsigned>("csvFormat_ncolumns", 15);
104  desc.add<unsigned>("csvFormat_idtcid", 10);
105  desc.add<unsigned>("csvFormat_igbtlinkid", 11);
106  desc.add<unsigned>("csvFormat_ielinkid", 12);
107  desc.add<long long unsigned int>("iovBeginTime", 1);
108  desc.add<std::string>("record", "TrackerDTCCablingMapRcd");
109  desc.add<std::vector<std::string>>("modulesToDTCCablingCSVFileNames", std::vector<std::string>());
110  descriptions.add("DTCCablingMapProducer", desc);
111 }
void setComment(std::string const &value)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void DTCCablingMapProducer::LoadModulesToDTCCablingMapFromCSV ( std::vector< std::string > const &  modulesToDTCCablingCSVFileNames)
privatevirtual

Definition at line 127 of file DTCCablingMapProducer.cc.

References compare(), csvFormat_idetid_, csvFormat_idtcid_, csvFormat_ielinkid_, csvFormat_igbtlinkid_, csvFormat_ncolumns_, MillePedeFileConverter_cfg::e, elink_id_maxvalue, elink_id_minvalue, cppFunctionSkipper::exception, Exception, edm::FileInPath::fullPath(), gbt_id_maxvalue, gbt_id_minvalue, generate_fake_valid_gbtlink_and_elinkid_, pCablingMap_, alignCSCRings::s, AlCaHLTBitMon_QueryRunRegistry::string, trim(), and verbosity_.

Referenced by DTCCablingMapProducer().

128  {
129  using namespace std;
130 
131  for (std::string const& csvFileName : modulesToDTCCablingCSVFileNames) {
132  edm::FileInPath csvFilePath(csvFileName);
133 
134  ifstream csvFile;
135  csvFile.open(csvFilePath.fullPath().c_str());
136 
137  if (csvFile.is_open()) {
138  string csvLine;
139 
140  unsigned lineNumber = 0;
141 
142  while (std::getline(csvFile, csvLine)) {
143  if (verbosity_ >= 1) {
144  edm::LogInfo("CSVParser") << "Reading CSV file line: " << ++lineNumber << ": \"" << csvLine << "\"" << endl;
145  }
146 
147  istringstream csvStream(csvLine);
148  vector<string> csvColumn;
149  string csvElement;
150 
151  while (std::getline(csvStream, csvElement, ',')) {
152  trim(csvElement);
153  csvColumn.push_back(csvElement);
154  }
155 
156  if (verbosity_ >= 2) {
157  ostringstream splitted_line_info;
158 
159  splitted_line_info << "-- split line is: [";
160 
161  for (string const& s : csvColumn)
162  splitted_line_info << "\"" << s << "\", ";
163 
164  splitted_line_info << "]" << endl;
165 
166  edm::LogInfo("CSVParser") << splitted_line_info.str();
167  }
168 
169  if (csvColumn.size() == csvFormat_ncolumns_) {
170  // Skip the legend lines
171  if (0 == csvColumn[0].compare(std::string("Module DetId/U"))) {
172  if (verbosity_ >= 1) {
173  edm::LogInfo("CSVParser") << "-- skipping legend line" << endl;
174  }
175  continue;
176  }
177 
178  uint32_t detIdRaw;
179 
180  try {
181  detIdRaw = std::stoi(csvColumn[csvFormat_idetid_]);
182  } catch (std::exception const& e) {
183  if (verbosity_ >= 0) {
184  edm::LogError("CSVParser") << "-- malformed DetId string in CSV file: \"" << csvLine << "\"" << endl;
185  }
186  throw e;
187  }
188 
189  unsigned const dtc_id = strtoul(csvColumn[csvFormat_idtcid_].c_str(), nullptr, 10);
190  unsigned gbt_id;
191  unsigned elink_id;
192 
194  for (gbt_id = gbt_id_minvalue; gbt_id < gbt_id_maxvalue + 1u; ++gbt_id) {
195  for (elink_id = elink_id_minvalue; elink_id < elink_id_maxvalue + 1u; ++elink_id) {
196  if (!(pCablingMap_->knowsDTCELinkId(DTCELinkId(dtc_id, gbt_id, elink_id))))
197  goto gbtlink_and_elinkid_generator_end; //break out of this double loop
198  }
199  }
200  gbtlink_and_elinkid_generator_end:
201  ((void)0); // This is a NOP, it's here just to have a valid (although dummy) instruction after the goto tag
202  } else {
203  gbt_id = strtoul(csvColumn[csvFormat_igbtlinkid_].c_str(), nullptr, 10);
204  elink_id = strtoul(csvColumn[csvFormat_ielinkid_].c_str(), nullptr, 10);
205  }
206 
207  DTCELinkId dtcELinkId(dtc_id, gbt_id, elink_id);
208 
209  if (verbosity_ >= 3) {
210  edm::LogInfo("CSVParser") << "-- DetId = " << detIdRaw << " (dtc_id, gbt_id, elink_id) = (" << dtc_id << ","
211  << gbt_id << "," << elink_id << ")" << endl;
212  }
213 
214  if (pCablingMap_->knowsDTCELinkId(dtcELinkId)) {
215  ostringstream message;
216  message
217  << "Reading CSV file: CRITICAL ERROR, duplicated dtcELinkId entry about (dtc_id, gbt_id, elink_id) = ("
218  << dtc_id << "," << gbt_id << "," << elink_id << ")";
219 
220  throw cms::Exception(message.str());
221  }
222 
223  pCablingMap_->insert(dtcELinkId, detIdRaw);
224  } else {
225  if (verbosity_ >= 3) {
226  edm::LogInfo("CSVParser") << "Reading CSV file: Skipped a short line: \"" << csvLine << "\"" << endl;
227  }
228  }
229  }
230  } else {
231  throw cms::Exception("DTCCablingMapProducer: Unable to open input CSV file") << csvFilePath << endl;
232  }
233 
234  csvFile.close();
235  }
236 }
bool compare(const P &i, const P &j)
static const unsigned int gbt_id_minvalue
static void trim(std::string &s)
static const unsigned int elink_id_minvalue
static const unsigned int gbt_id_maxvalue
static const unsigned int elink_id_maxvalue
std::unique_ptr< TrackerDetToDTCELinkCablingMap > pCablingMap_

Member Data Documentation

unsigned DTCCablingMapProducer::csvFormat_idetid_
private

Definition at line 88 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

unsigned DTCCablingMapProducer::csvFormat_idtcid_
private

Definition at line 89 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

unsigned DTCCablingMapProducer::csvFormat_ielinkid_
private

Definition at line 91 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

unsigned DTCCablingMapProducer::csvFormat_igbtlinkid_
private

Definition at line 90 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

unsigned DTCCablingMapProducer::csvFormat_ncolumns_
private

Definition at line 87 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

bool DTCCablingMapProducer::generate_fake_valid_gbtlink_and_elinkid_
private

Definition at line 85 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().

cond::Time_t DTCCablingMapProducer::iovBeginTime_
private

Definition at line 92 of file DTCCablingMapProducer.cc.

Referenced by endJob().

std::unique_ptr<TrackerDetToDTCELinkCablingMap> DTCCablingMapProducer::pCablingMap_
private

Definition at line 93 of file DTCCablingMapProducer.cc.

Referenced by endJob(), and LoadModulesToDTCCablingMapFromCSV().

std::string DTCCablingMapProducer::record_
private

Definition at line 94 of file DTCCablingMapProducer.cc.

Referenced by endJob().

int DTCCablingMapProducer::verbosity_
private

Definition at line 86 of file DTCCablingMapProducer.cc.

Referenced by LoadModulesToDTCCablingMapFromCSV().