Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ MillePedeAlignmentAlgorithm::MillePedeAlignmentAlgorithm(const edm::ParameterSet
theDir(theConfig.getUntrackedParameter<std::string>("fileDir")),
theAlignmentParameterStore(nullptr),
theAlignables(),
theTrajectoryFactory(
TrajectoryFactoryPlugin::get()->create(theConfig.getParameter<edm::ParameterSet>("TrajectoryFactory")
.getParameter<std::string>("TrajectoryFactoryName"),
theConfig.getParameter<edm::ParameterSet>("TrajectoryFactory"),
iC)),
theMinNumHits(cfg.getParameter<unsigned int>("minNumHits")),
theMaximalCor2D(cfg.getParameter<double>("max2Dcorrelation")),
firstIOV_(cfg.getUntrackedParameter<AlignmentAlgorithmBase::RunNumber>("firstIOV")),
Expand Down Expand Up @@ -273,9 +278,6 @@ void MillePedeAlignmentAlgorithm::initialize(const edm::EventSetup &setup,
theMonitor = std::make_unique<MillePedeMonitor>(tTopo, (theDir + moniFile).c_str());

// Get trajectory factory. In case nothing found, FrameWork will throw...
const edm::ParameterSet fctCfg(theConfig.getParameter<edm::ParameterSet>("TrajectoryFactory"));
const std::string fctName(fctCfg.getParameter<std::string>("TrajectoryFactoryName"));
theTrajectoryFactory = TrajectoryFactoryPlugin::get()->create(fctName, fctCfg);
}

if (this->isMode(myPedeSteerBit)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include "FWCore/Framework/interface/ConsumesCollector.h"
/// Base class for factories producing reference trajectories, i.e. instances of classes deriving from
/// ReferenceTrajectoryBase, from a TrajTrackPairCollection.

Expand All @@ -27,8 +28,10 @@ class TrajectoryFactoryBase {
typedef std::pair<TrajectoryStateOnSurface, TransientTrackingRecHit::ConstRecHitContainer> TrajectoryInput;
typedef std::vector<TrajectoryStateOnSurface> ExternalPredictionCollection;

TrajectoryFactoryBase(const edm::ParameterSet& config);
TrajectoryFactoryBase(const edm::ParameterSet& config, unsigned int tracksPerTrajectory);
TrajectoryFactoryBase(const edm::ParameterSet& config, const edm::ConsumesCollector& iC);
TrajectoryFactoryBase(const edm::ParameterSet& config,
unsigned int tracksPerTrajectory,
const edm::ConsumesCollector& iC);
virtual ~TrajectoryFactoryBase(void);

virtual const ReferenceTrajectoryCollection trajectories(const edm::EventSetup& setup,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

/// A PluginFactory that produces factories that inherit from TrajectoryFactoryBase.

typedef edmplugin::PluginFactory<TrajectoryFactoryBase *(const edm::ParameterSet &)> TrajectoryFactoryPlugin;
typedef edmplugin::PluginFactory<TrajectoryFactoryBase *(const edm::ParameterSet &, edm::ConsumesCollector &)>
TrajectoryFactoryPlugin;

#endif
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,10 @@
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////

BzeroReferenceTrajectoryFactory::BzeroReferenceTrajectoryFactory(const edm::ParameterSet &config)
: TrajectoryFactoryBase(config),
BzeroReferenceTrajectoryFactory::BzeroReferenceTrajectoryFactory(const edm::ParameterSet &config,
edm::ConsumesCollector &iC)
: TrajectoryFactoryBase(config, iC),
m_MagFieldToken(iC.esConsumes()),
theMass(config.getParameter<double>("ParticleMass")),
theMomentumEstimate(config.getParameter<double>("MomentumEstimate")) {
edm::LogInfo("Alignment") << "@SUB=BzeroReferenceTrajectoryFactory"
Expand All @@ -35,8 +37,7 @@ const BzeroReferenceTrajectoryFactory::ReferenceTrajectoryCollection BzeroRefere
const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const {
ReferenceTrajectoryCollection trajectories;

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();

Expand All @@ -51,7 +52,7 @@ const BzeroReferenceTrajectoryFactory::ReferenceTrajectoryCollection BzeroRefere
// set the flag for reversing the RecHits to false, since they are already in the correct order.
config.hitsAreReverse = false;
trajectories.push_back(ReferenceTrajectoryPtr(
new BzeroReferenceTrajectory(input.first, input.second, magneticField.product(), beamSpot, config)));
new BzeroReferenceTrajectory(input.first, input.second, magneticField, beamSpot, config)));
}

++itTracks;
Expand All @@ -76,8 +77,7 @@ const BzeroReferenceTrajectoryFactory::ReferenceTrajectoryCollection BzeroRefere
return trajectories;
}

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
ExternalPredictionCollection::const_iterator itExternal = external.begin();
Expand All @@ -94,7 +94,7 @@ const BzeroReferenceTrajectoryFactory::ReferenceTrajectoryCollection BzeroRefere
// set the flag for reversing the RecHits to false, since they are already in the correct order.
config.hitsAreReverse = false;
ReferenceTrajectoryPtr refTraj(
new BzeroReferenceTrajectory(*itExternal, input.second, magneticField.product(), beamSpot, config));
new BzeroReferenceTrajectory(*itExternal, input.second, magneticField, beamSpot, config));

AlgebraicSymMatrix externalParamErrors(asHepMatrix<5>((*itExternal).localError().matrix()));
refTraj->setParameterErrors(externalParamErrors.sub(2, 5));
Expand All @@ -108,7 +108,7 @@ const BzeroReferenceTrajectoryFactory::ReferenceTrajectoryCollection BzeroRefere
// set the flag for reversing the RecHits to false, since they are already in the correct order.
config.hitsAreReverse = false;
trajectories.push_back(ReferenceTrajectoryPtr(
new BzeroReferenceTrajectory(input.first, input.second, magneticField.product(), beamSpot, config)));
new BzeroReferenceTrajectory(input.first, input.second, magneticField, beamSpot, config)));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "Alignment/ReferenceTrajectories/interface/TrajectoryFactoryBase.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"

namespace edm {
class ParameterSet;
Expand All @@ -13,9 +14,8 @@ namespace reco {

class BzeroReferenceTrajectoryFactory : public TrajectoryFactoryBase {
public:
BzeroReferenceTrajectoryFactory(const edm::ParameterSet &config);
BzeroReferenceTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC);
~BzeroReferenceTrajectoryFactory() override;

/// Produce the reference trajectories.
const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup,
const ConstTrajTrackPairCollection &tracks,
Expand All @@ -28,6 +28,8 @@ class BzeroReferenceTrajectoryFactory : public TrajectoryFactoryBase {

BzeroReferenceTrajectoryFactory *clone() const override { return new BzeroReferenceTrajectoryFactory(*this); }

const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_MagFieldToken;

private:
double theMass;
double theMomentumEstimate;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

class CombinedTrajectoryFactory : public TrajectoryFactoryBase {
public:
CombinedTrajectoryFactory(const edm::ParameterSet &config);
CombinedTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC);
~CombinedTrajectoryFactory() override;

const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup,
Expand Down Expand Up @@ -56,8 +56,8 @@ class CombinedTrajectoryFactory : public TrajectoryFactoryBase {

using namespace std;

CombinedTrajectoryFactory::CombinedTrajectoryFactory(const edm::ParameterSet &config)
: TrajectoryFactoryBase(config), theUseAllFactories(config.getParameter<bool>("useAllFactories")) {
CombinedTrajectoryFactory::CombinedTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC)
: TrajectoryFactoryBase(config, iC), theUseAllFactories(config.getParameter<bool>("useAllFactories")) {
vector<string> factoryNames = config.getParameter<vector<string>>("TrajectoryFactoryNames");
for (auto const &factoryName : factoryNames) {
// auto_ptr to avoid missing a delete due to throw...
Expand All @@ -68,7 +68,7 @@ CombinedTrajectoryFactory::CombinedTrajectoryFactory(const edm::ParameterSet &co
<< "separated strings, but is '" << factoryName << "'";
}
const edm::ParameterSet factoryCfg = config.getParameter<edm::ParameterSet>(namePset->At(1)->GetName());
theFactories.emplace_back(TrajectoryFactoryPlugin::get()->create(namePset->At(0)->GetName(), factoryCfg));
theFactories.emplace_back(TrajectoryFactoryPlugin::get()->create(namePset->At(0)->GetName(), factoryCfg, iC));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@

class DualBzeroTrajectoryFactory : public TrajectoryFactoryBase {
public:
DualBzeroTrajectoryFactory(const edm::ParameterSet &config);
DualBzeroTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC);
~DualBzeroTrajectoryFactory() override;
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_MagFieldToken;

/// Produce the reference trajectories.
const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup,
Expand Down Expand Up @@ -52,8 +53,8 @@ class DualBzeroTrajectoryFactory : public TrajectoryFactoryBase {
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

DualBzeroTrajectoryFactory::DualBzeroTrajectoryFactory(const edm::ParameterSet &config)
: TrajectoryFactoryBase(config) {
DualBzeroTrajectoryFactory::DualBzeroTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC)
: TrajectoryFactoryBase(config, iC), m_MagFieldToken(iC.esConsumes()) {
theMass = config.getParameter<double>("ParticleMass");
theMomentumEstimate = config.getParameter<double>("MomentumEstimate");
}
Expand All @@ -64,8 +65,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const {
ReferenceTrajectoryCollection trajectories;

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();

Expand All @@ -78,7 +78,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualBzeroReferenceTrajectory(
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));
trajectories.push_back(ptr);
}

Expand All @@ -103,8 +103,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
return trajectories;
}

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

ConstTrajTrackPairCollection::const_iterator itTracks = tracks.begin();
ExternalPredictionCollection::const_iterator itExternal = external.begin();
Expand All @@ -114,8 +113,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
// Check input: If all hits were rejected, the TSOS is initialized as invalid.
if (input.refTsos.isValid()) {
if ((*itExternal).isValid()) {
TrajectoryStateOnSurface propExternal =
propagateExternal(*itExternal, input.refTsos.surface(), magneticField.product());
TrajectoryStateOnSurface propExternal = propagateExternal(*itExternal, input.refTsos.surface(), magneticField);

if (!propExternal.isValid())
continue;
Expand All @@ -125,7 +123,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualBzeroReferenceTrajectory(
propExternal, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
propExternal, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));

AlgebraicSymMatrix externalParamErrors(asHepMatrix<5>(propExternal.localError().matrix()));
ptr->setParameterErrors(externalParamErrors.sub(2, 5));
Expand All @@ -136,7 +134,7 @@ const DualBzeroTrajectoryFactory::ReferenceTrajectoryCollection DualBzeroTraject
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualBzeroReferenceTrajectory(
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));

trajectories.push_back(ptr);
}
Expand Down
25 changes: 13 additions & 12 deletions Alignment/ReferenceTrajectories/plugins/DualTrajectoryFactory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,9 @@

class DualTrajectoryFactory : public TrajectoryFactoryBase {
public:
DualTrajectoryFactory(const edm::ParameterSet &config);
DualTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC);
~DualTrajectoryFactory() override;
const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> m_MagFieldToken;

/// Produce the reference trajectories.
const ReferenceTrajectoryCollection trajectories(const edm::EventSetup &setup,
Expand Down Expand Up @@ -51,8 +52,10 @@ class DualTrajectoryFactory : public TrajectoryFactoryBase {
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

DualTrajectoryFactory::DualTrajectoryFactory(const edm::ParameterSet &config)
: TrajectoryFactoryBase(config), theMass(config.getParameter<double>("ParticleMass")) {
DualTrajectoryFactory::DualTrajectoryFactory(const edm::ParameterSet &config, edm::ConsumesCollector &iC)
: TrajectoryFactoryBase(config, iC),
m_MagFieldToken(iC.esConsumes()),
theMass(config.getParameter<double>("ParticleMass")) {
edm::LogInfo("Alignment") << "@SUB=DualTrajectoryFactory"
<< "mass: " << theMass;
}
Expand All @@ -63,8 +66,8 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
const edm::EventSetup &setup, const ConstTrajTrackPairCollection &tracks, const reco::BeamSpot &beamSpot) const {
ReferenceTrajectoryCollection trajectories;

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

if (magneticField->inTesla(GlobalPoint(0., 0., 0.)).mag2() < 1.e-6) {
edm::LogWarning("Alignment") << "@SUB=DualTrajectoryFactory::trajectories"
<< "B-field in z is " << magneticField->inTesla(GlobalPoint(0., 0., 0.)).z()
Expand All @@ -83,7 +86,7 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualReferenceTrajectory(
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));
trajectories.push_back(ptr);
}

Expand All @@ -107,9 +110,8 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
<< "\tnumber of tracks = " << tracks.size() << "\tnumber of external predictions = " << external.size();
return trajectories;
}
const MagneticField *magneticField = &setup.getData(m_MagFieldToken);

edm::ESHandle<MagneticField> magneticField;
setup.get<IdealMagneticFieldRecord>().get(magneticField);
if (magneticField->inTesla(GlobalPoint(0., 0., 0.)).mag2() < 1.e-6) {
edm::LogWarning("Alignment") << "@SUB=DualTrajectoryFactory::trajectories"
<< "B-field in z is " << magneticField->inTesla(GlobalPoint(0., 0., 0.)).z()
Expand All @@ -125,8 +127,7 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
// Check input: If all hits were rejected, the TSOS is initialized as invalid.
if (input.refTsos.isValid()) {
if ((*itExternal).isValid()) {
TrajectoryStateOnSurface propExternal =
propagateExternal(*itExternal, input.refTsos.surface(), magneticField.product());
TrajectoryStateOnSurface propExternal = propagateExternal(*itExternal, input.refTsos.surface(), magneticField);

if (!propExternal.isValid())
continue;
Expand All @@ -136,7 +137,7 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualReferenceTrajectory(
propExternal, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
propExternal, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));

AlgebraicSymMatrix externalParamErrors(asHepMatrix<5>(propExternal.localError().matrix()));
ptr->setParameterErrors(externalParamErrors);
Expand All @@ -147,7 +148,7 @@ const DualTrajectoryFactory::ReferenceTrajectoryCollection DualTrajectoryFactory
config.includeAPEs = includeAPEs_;
config.allowZeroMaterial = allowZeroMaterial_;
ReferenceTrajectoryPtr ptr(new DualReferenceTrajectory(
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField.product(), beamSpot, config));
input.refTsos, input.fwdRecHits, input.bwdRecHits, magneticField, beamSpot, config));
trajectories.push_back(ptr);
}
}
Expand Down
Loading