CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
MagFieldConfig.cc
Go to the documentation of this file.
1 
8 
9 #include <iostream>
10 #include <vector>
11 #include <memory>
12 
13 #include <boost/algorithm/string/split.hpp>
14 #include <boost/algorithm/string/classification.hpp>
15 #include <boost/lexical_cast.hpp>
16 
17 using namespace std;
18 using namespace magneticfield;
19 
21  version = pset.getParameter<std::string>("version");
22  geometryVersion = pset.getParameter<int>("geometryVersion");
23 
24  // Get specification for the grid tables to be used.
25  typedef vector<edm::ParameterSet> VPSet;
26 
27  VPSet fileSpec = pset.getParameter<VPSet>("gridFiles");
28  if (!fileSpec.empty()) {
29  for (VPSet::const_iterator rule = fileSpec.begin(); rule != fileSpec.end(); ++rule) {
30  string s_volumes = rule->getParameter<string>("volumes");
31  string s_sectors = rule->getParameter<string>("sectors"); // 0 means all volumes
32  int master = rule->getParameter<int>("master");
33  string path = rule->getParameter<string>("path");
34 
35  vector<unsigned> volumes = expandList(s_volumes);
36  vector<unsigned> sectors = expandList(s_sectors);
37 
38  if (debug) {
39  cout << "Volumes: " << s_volumes << " Sectors: " << s_sectors << " Master: " << master << " Path: " << path
40  << endl;
41  cout << " Expanded volumes: ";
42  copy(volumes.begin(), volumes.end(), ostream_iterator<unsigned>(cout, " "));
43  cout << endl;
44  cout << " Expanded sectors: ";
45  copy(sectors.begin(), sectors.end(), ostream_iterator<unsigned>(cout, " "));
46  cout << endl;
47  }
48 
49  for (vector<unsigned>::iterator i = volumes.begin(); i != volumes.end(); ++i) {
50  for (vector<unsigned>::iterator j = sectors.begin(); j != sectors.end(); ++j) {
51  unsigned vpacked = (*i) * 100 + (*j);
52  if (gridFiles.find(vpacked) == gridFiles.end()) {
53  gridFiles[vpacked] = make_pair(path, master);
54  } else {
55  throw cms::Exception("ConfigurationError")
56  << "VolumeBasedMagneticFieldESProducer: malformed gridFiles config parameter" << endl;
57  }
58  }
59  }
60  }
61  }
62 
63  // Get scaling factors
64  keys = pset.getParameter<vector<int> >("scalingVolumes");
65  values = pset.getParameter<vector<double> >("scalingFactors");
66 
67  // Slave field label. Either a label of an existing map (legacy support), or the
68  // type of parametrization to be constructed with the "paramData" parameters.
69  slaveFieldVersion = pset.getParameter<string>("paramLabel");
70  // Check for compatibility with older configurations
71  if (pset.existsAs<vector<double> >("paramData")) {
72  slaveFieldParameters = pset.getParameter<vector<double> >("paramData");
73  }
74 }
75 
76 vector<unsigned> MagFieldConfig::expandList(const string& list) {
77  typedef vector<string> vstring;
78  vector<unsigned> values;
79  vstring v1;
80  boost::split(v1, list, boost::is_any_of(","));
81  for (vstring::const_iterator i = v1.begin(); i != v1.end(); ++i) {
82  vstring v2;
83  boost::split(v2, *i, boost::is_any_of("-"));
84  unsigned start = boost::lexical_cast<unsigned>(v2.front());
85  unsigned end = boost::lexical_cast<unsigned>(v2.back());
86  if ((v2.size() > 2) || (start > end)) {
87  throw cms::Exception("ConfigurationError")
88  << "VolumeBasedMagneticFieldESProducerFromDB: malformed configuration" << list << endl;
89  }
90  for (unsigned k = start; k <= end; ++k) {
91  values.push_back(k);
92  }
93  }
94  return values;
95 }
volumeBasedMagneticField_160812_cfi.geometryVersion
geometryVersion
Definition: volumeBasedMagneticField_160812_cfi.py:39
mps_fire.i
i
Definition: mps_fire.py:428
start
Definition: start.py:1
MessageLogger.h
filterCSVwithJSON.copy
copy
Definition: filterCSVwithJSON.py:36
gather_cfg.cout
cout
Definition: gather_cfg.py:144
magneticfield
Definition: MagFieldConfig.h:22
relativeConstraints.keys
keys
Definition: relativeConstraints.py:89
debug
#define debug
Definition: HDRShower.cc:19
volumeBasedMagneticField_160812_cfi.volumes
volumes
Definition: volumeBasedMagneticField_160812_cfi.py:57
submitPVValidationJobs.split
def split(sequence, size)
Definition: submitPVValidationJobs.py:352
contentValuesCheck.values
values
Definition: contentValuesCheck.py:38
mps_fire.end
end
Definition: mps_fire.py:242
volumeBasedMagneticField_160812_cfi.gridFiles
gridFiles
Definition: volumeBasedMagneticField_160812_cfi.py:45
dqmdumpme.k
k
Definition: dqmdumpme.py:60
edm::ParameterSet
Definition: ParameterSet.h:47
MagFieldConfig::expandList
std::vector< unsigned > expandList(const std::string &list)
Definition: MagFieldConfig.cc:76
MagFieldConfig.h
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HistogramManager_cfi.VPSet
def VPSet(*args)
Definition: HistogramManager_cfi.py:404
std
Definition: JetResolutionObject.h:76
MagFieldConfig::MagFieldConfig
MagFieldConfig()
Definition: MagFieldConfig.h:28
Exception
Definition: hltDiff.cc:245
vstring
vector< string > vstring
Definition: ExoticaDQM.cc:8
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
volumeBasedMagneticField_160812_cfi.master
master
Definition: volumeBasedMagneticField_160812_cfi.py:60
volumeBasedMagneticField_160812_cfi.sectors
sectors
Definition: volumeBasedMagneticField_160812_cfi.py:59
BeamSplash_cfg.version
version
Definition: BeamSplash_cfg.py:45
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27