Geometry and configuration of Magnetic Field from DB

Infrastructure to take the MF geometry and configuration from DB instead than from python cfg. 
Changes include:
-Specific record for MF geometry (MFGeometryFileRcd), do not use GeometryFileRcd anymore. 
-New DB payload for MF configuration (MagFieldConfig); incl. record, tools to create it, etc.
-Prototype of new ESProducer to use the above (no change in behaviour for existing producers)
-Some refactoring in MagneticField to allow construction of parametrized fields at runtime
-removal of one large reference file as reuested by Slava (cf #5269)

This PR introduces no change in standard configurations (regression tested). Plan to switch to the new mechanism in a future PR, once the DB is populated with the new payloads.

Relevant Discussion:
https://indico.cern.ch/event/328166/session/1/contribution/24

This is under a debug flag that is *only* used at testing time. It is 
NEVER intended to be used with messageLogger. For examples, this debug 
generates megabytes of output that can be used for diff, messageLogger 
would screw it up. Moreover, there are so many instances of this in the 
code that changing is more likely to introduce some bugs, for no gain at 
all. So I do not intend to change this.

Nicola

On 15-Oct-14 17:30, StoyanStoynev wrote:
> In CondFormats/MFObjects/src/MagFieldConfig.cc:
>
>> +  // Get specification for the grid tables to be used.
>> +  typedef vector<edm::ParameterSet> VPSet;
>> +
>> +  VPSet fileSpec = pset.getParameter<VPSet>("gridFiles");
>> +  if (fileSpec.size()!=0) {
>> +    for(VPSet::const_iterator rule = fileSpec.begin(); rule != fileSpec.end(); ++rule){
>> +      string s_volumes = rule->getParameter<string>("volumes");
>> +      string s_sectors = rule->getParameter<string>("sectors"); // 0 means all volumes
>> +      int master       = rule->getParameter<int>("master");
>> +      string path      = rule->getParameter<string>("path");
>> +
>> +      vector<unsigned> volumes = expandList(s_volumes);
>> +      vector<unsigned> sectors = expandList(s_sectors);
>> +
>> +      if (debug) {
>> +	cout << "Volumes: " << s_volumes <<" Sectors: " << s_sectors
>
> cout is not allowed in CMSSW (you hide it behind a flag but this is
> still against the rules). You should use LogDebug. Same applies on other
> places in the code (except in test/).
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/cms-sw/cmssw/pull/5785/files#r18900862>.
>