Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Running code-format for reconstruction #27029

Merged
merged 2 commits into from Jun 1, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
38 changes: 13 additions & 25 deletions MagneticField/GeomBuilder/plugins/AutoMagneticFieldESProducer.cc
Expand Up @@ -26,26 +26,19 @@ using namespace std;
using namespace edm;
using namespace magneticfield;


AutoMagneticFieldESProducer::AutoMagneticFieldESProducer(const edm::ParameterSet& iConfig) : pset(iConfig) {
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label",""));
nominalCurrents = pset.getUntrackedParameter<vector<int> >("nominalCurrents");
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label", ""));
nominalCurrents = pset.getUntrackedParameter<vector<int> >("nominalCurrents");
maps = pset.getUntrackedParameter<vector<string> >("mapLabels");

if (maps.empty() || (maps.size() != nominalCurrents.size())) {
throw cms::Exception("InvalidParameter") << "Invalid values for parameters \"nominalCurrents\" and \"maps\"";
}
}

AutoMagneticFieldESProducer::~AutoMagneticFieldESProducer() {}

AutoMagneticFieldESProducer::~AutoMagneticFieldESProducer()
{
}


std::unique_ptr<MagneticField>
AutoMagneticFieldESProducer::produce(const IdealMagneticFieldRecord& iRecord)
{
std::unique_ptr<MagneticField> AutoMagneticFieldESProducer::produce(const IdealMagneticFieldRecord& iRecord) {
float current = pset.getParameter<int>("valueOverride");

string message;
Expand All @@ -59,33 +52,28 @@ AutoMagneticFieldESProducer::produce(const IdealMagneticFieldRecord& iRecord)
message = " (from valueOverride card)";
}

string model = closerModel(current);

edm::LogInfo("MagneticField|AutoMagneticField") << "Current: " << current << message << "; using map with label: " << model;
string model = closerModel(current);

edm::LogInfo("MagneticField|AutoMagneticField")
<< "Current: " << current << message << "; using map with label: " << model;

edm::ESHandle<MagneticField> map;
iRecord.get(model,map);

iRecord.get(model, map);

MagneticField* result = map.product()->clone();

return std::unique_ptr<MagneticField>(result);
}


std::string AutoMagneticFieldESProducer::closerModel(float current) {
int i=0;
for(;i<(int)maps.size()-1;i++) {
if(2*current < nominalCurrents[i]+nominalCurrents[i+1] )
int i = 0;
for (; i < (int)maps.size() - 1; i++) {
if (2 * current < nominalCurrents[i] + nominalCurrents[i + 1])
return maps[i];
}
return maps[i];
return maps[i];
}



#include "FWCore/Framework/interface/ModuleFactory.h"
DEFINE_FWK_EVENTSETUP_MODULE(AutoMagneticFieldESProducer);


Expand Up @@ -19,19 +19,19 @@
class IdealMagneticFieldRecord;

namespace magneticfield {
class AutoMagneticFieldESProducer : public edm::ESProducer
{
class AutoMagneticFieldESProducer : public edm::ESProducer {
public:
AutoMagneticFieldESProducer(const edm::ParameterSet&);
~AutoMagneticFieldESProducer() override;

std::unique_ptr<MagneticField> produce(const IdealMagneticFieldRecord&);
edm::ParameterSet pset;

private:
std::string closerModel(float current);
std::vector<int> nominalCurrents;
std::vector<std::string> maps;
};
}
} // namespace magneticfield

#endif
Expand Up @@ -27,14 +27,13 @@
using namespace std;
using namespace magneticfield;

VolumeBasedMagneticFieldESProducer::VolumeBasedMagneticFieldESProducer(const edm::ParameterSet& iConfig) : pset(iConfig)
{
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label",""));
VolumeBasedMagneticFieldESProducer::VolumeBasedMagneticFieldESProducer(const edm::ParameterSet& iConfig)
: pset(iConfig) {
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label", ""));
}

// ------------ method called to produce the data ------------
std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducer::produce(const IdealMagneticFieldRecord & iRecord)
{
std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducer::produce(const IdealMagneticFieldRecord& iRecord) {
bool debug = pset.getUntrackedParameter<bool>("debugBuilder", false);
if (debug) {
cout << "VolumeBasedMagneticFieldESProducer::produce() " << pset.getParameter<std::string>("version") << endl;
Expand All @@ -43,33 +42,36 @@ std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducer::produce(const
MagFieldConfig conf(pset, debug);

edm::ESTransientHandle<DDCompactView> cpv;
iRecord.get("magfield",cpv );
MagGeoBuilderFromDDD builder(conf.version,
conf.geometryVersion,
debug);
iRecord.get("magfield", cpv);
MagGeoBuilderFromDDD builder(conf.version, conf.geometryVersion, debug);

// Set scaling factors
if (!conf.keys.empty()) {
builder.setScaling(conf.keys, conf.values);
}

// Set specification for the grid tables to be used.
if (!conf.gridFiles.empty()) {
builder.setGridFiles(conf.gridFiles);
}

builder.build(*cpv);

// Get slave field (from ES)
edm::ESHandle<MagneticField> paramField;
if (pset.getParameter<bool>("useParametrizedTrackerField")) {;
iRecord.get(pset.getParameter<string>("paramLabel"),paramField);
if (pset.getParameter<bool>("useParametrizedTrackerField")) {
;
iRecord.get(pset.getParameter<string>("paramLabel"), paramField);
}
return std::make_unique<VolumeBasedMagneticField>(conf.geometryVersion,builder.barrelLayers(), builder.endcapSectors(), builder.barrelVolumes(), builder.endcapVolumes(), builder.maxR(), builder.maxZ(), paramField.product(), false);
return std::make_unique<VolumeBasedMagneticField>(conf.geometryVersion,
builder.barrelLayers(),
builder.endcapSectors(),
builder.barrelVolumes(),
builder.endcapVolumes(),
builder.maxR(),
builder.maxZ(),
paramField.product(),
false);
}





DEFINE_FWK_EVENTSETUP_MODULE(VolumeBasedMagneticFieldESProducer);
Expand Up @@ -21,8 +21,8 @@ namespace magneticfield {
class VolumeBasedMagneticFieldESProducer : public edm::ESProducer {
public:
VolumeBasedMagneticFieldESProducer(const edm::ParameterSet& iConfig);
std::unique_ptr<MagneticField> produce(const IdealMagneticFieldRecord & iRecord);

std::unique_ptr<MagneticField> produce(const IdealMagneticFieldRecord& iRecord);

private:
// forbid copy ctor and assignment op.
Expand All @@ -31,7 +31,6 @@ namespace magneticfield {

edm::ParameterSet pset;
};
}

} // namespace magneticfield

#endif
Expand Up @@ -51,8 +51,8 @@ namespace magneticfield {
class VolumeBasedMagneticFieldESProducerFromDB : public edm::ESProducer {
public:
VolumeBasedMagneticFieldESProducerFromDB(const edm::ParameterSet& iConfig);
std::unique_ptr<MagneticField> produce(const IdealMagneticFieldRecord & iRecord);

std::unique_ptr<MagneticField> produce(const IdealMagneticFieldRecord& iRecord);

private:
// forbid copy ctor and assignment op.
Expand All @@ -63,24 +63,19 @@ namespace magneticfield {
edm::ParameterSet pset;
std::vector<int> nominalCurrents;
std::vector<std::string> nominalLabels;

};
}
} // namespace magneticfield


VolumeBasedMagneticFieldESProducerFromDB::VolumeBasedMagneticFieldESProducerFromDB(const edm::ParameterSet& iConfig) : pset(iConfig)
{
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label",""));
nominalCurrents={-1, 0,9558,14416,16819,18268,19262};
nominalLabels ={"3.8T","0T","2T", "3T", "3.5T", "3.8T", "4T"};
VolumeBasedMagneticFieldESProducerFromDB::VolumeBasedMagneticFieldESProducerFromDB(const edm::ParameterSet& iConfig)
: pset(iConfig) {
setWhatProduced(this, pset.getUntrackedParameter<std::string>("label", ""));
nominalCurrents = {-1, 0, 9558, 14416, 16819, 18268, 19262};
nominalLabels = {"3.8T", "0T", "2T", "3T", "3.5T", "3.8T", "4T"};
}



// ------------ method called to produce the data ------------
std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducerFromDB::produce(const IdealMagneticFieldRecord & iRecord)
{

std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducerFromDB::produce(
const IdealMagneticFieldRecord& iRecord) {
bool debug = pset.getUntrackedParameter<bool>("debugBuilder", false);

// Get value of the current from condition DB
Expand All @@ -94,45 +89,43 @@ std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducerFromDB::produce
} else {
message = " (from valueOverride card)";
}
string configLabel = closerNominalLabel(current);
string configLabel = closerNominalLabel(current);

// Get configuration
ESHandle<MagFieldConfig> confESH;
iRecord.getRecord<MagFieldConfigRcd>().get(configLabel, confESH);
const MagFieldConfig* conf = &*confESH;

edm::LogInfo("MagneticField|AutoMagneticField") << "Current: " << current << message << "; using map configuration with label: " << configLabel << endl
<< "Version: " << conf->version
<< " geometryVersion: " << conf->geometryVersion
<< " slaveFieldVersion: " << conf->slaveFieldVersion;
edm::LogInfo("MagneticField|AutoMagneticField")
<< "Current: " << current << message << "; using map configuration with label: " << configLabel << endl
<< "Version: " << conf->version << " geometryVersion: " << conf->geometryVersion
<< " slaveFieldVersion: " << conf->slaveFieldVersion;

// Get the parametrized field
std::unique_ptr<MagneticField> paramField = ParametrizedMagneticFieldFactory::get(conf->slaveFieldVersion, conf->slaveFieldParameters);

std::unique_ptr<MagneticField> paramField =
ParametrizedMagneticFieldFactory::get(conf->slaveFieldVersion, conf->slaveFieldParameters);

if (conf->version == "parametrizedMagneticField") {
// The map consist of only the parametrization in this case
return paramField;
} else {
// Full VolumeBased map + parametrization
MagGeoBuilderFromDDD builder(conf->version,
conf->geometryVersion,
debug);
MagGeoBuilderFromDDD builder(conf->version, conf->geometryVersion, debug);

// Set scaling factors
if (!conf->keys.empty()) {
builder.setScaling(conf->keys, conf->values);
}

// Set specification for the grid tables to be used.
if (!conf->gridFiles.empty()) {
builder.setGridFiles(conf->gridFiles);
}

// Build the geomeytry (DDDCompactView) from the DB blob
// (code taken from GeometryReaders/XMLIdealGeometryESSource/src/XMLIdealMagneticFieldGeometryESProducer.cc)
// (code taken from GeometryReaders/XMLIdealGeometryESSource/src/XMLIdealMagneticFieldGeometryESProducer.cc)
edm::ESTransientHandle<FileBlob> gdd;
iRecord.getRecord<MFGeometryFileRcd>().get( std::to_string(conf->geometryVersion), gdd );
iRecord.getRecord<MFGeometryFileRcd>().get(std::to_string(conf->geometryVersion), gdd);

auto cpv = std::make_unique<DDCompactView>(DDName("cmsMagneticField:MAGF"));
DDLParser parser(*cpv);
Expand All @@ -141,24 +134,29 @@ std::unique_ptr<MagneticField> VolumeBasedMagneticFieldESProducerFromDB::produce
std::unique_ptr<std::vector<unsigned char> > tb = (*gdd).getUncompressedBlob();
parser.parse(*tb, tb->size());
cpv->lockdown();

builder.build(*cpv);

// Build the VB map. Ownership of the parametrization is transferred to it
return std::make_unique<VolumeBasedMagneticField>(conf->geometryVersion,builder.barrelLayers(), builder.endcapSectors(), builder.barrelVolumes(), builder.endcapVolumes(), builder.maxR(), builder.maxZ(), paramField.release(), true);
return std::make_unique<VolumeBasedMagneticField>(conf->geometryVersion,
builder.barrelLayers(),
builder.endcapSectors(),
builder.barrelVolumes(),
builder.endcapVolumes(),
builder.maxR(),
builder.maxZ(),
paramField.release(),
true);
}
}


std::string VolumeBasedMagneticFieldESProducerFromDB::closerNominalLabel(float current) {

int i=0;
for(;i<(int)nominalLabels.size()-1;i++) {
if(2*current < nominalCurrents[i]+nominalCurrents[i+1] )
int i = 0;
for (; i < (int)nominalLabels.size() - 1; i++) {
if (2 * current < nominalCurrents[i] + nominalCurrents[i + 1])
return nominalLabels[i];
}
return nominalLabels[i];
}


DEFINE_FWK_EVENTSETUP_MODULE(VolumeBasedMagneticFieldESProducerFromDB);
22 changes: 10 additions & 12 deletions MagneticField/GeomBuilder/src/FakeInterpolator.h
Expand Up @@ -8,18 +8,16 @@
* \author N. Amapane - CERN
*/

#include "MagneticField/Interpolation/interface/MagProviderInterpol.h"
#include "MagneticField/Interpolation/interface/MagProviderInterpol.h"

namespace magneticfield {
class FakeInterpolator : public MagProviderInterpol {
public:
/// Constructor
FakeInterpolator() {};

// Operations
LocalVectorType valueInTesla( const LocalPointType& p) const override {
return LocalVectorType(0.,0.,0.);
}
};
}
class FakeInterpolator : public MagProviderInterpol {
public:
/// Constructor
FakeInterpolator(){};

// Operations
LocalVectorType valueInTesla(const LocalPointType& p) const override { return LocalVectorType(0., 0., 0.); }
};
} // namespace magneticfield
#endif