File indexing completed on 2024-05-10 02:21:02
0001
0002
0003
0004
0005
0006
0007
0008 #include <memory>
0009
0010 #include "L1Trigger/L1TMuonOverlapPhase2/interface/OmtfEmulation.h"
0011 #include "L1Trigger/L1TMuonOverlapPhase2/interface/InputMakerPhase2.h"
0012 #include "L1Trigger/L1TMuonOverlapPhase2/interface/PtAssignmentNNRegression.h"
0013
0014 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0015
0016 #include <memory>
0017
0018 OmtfEmulation::OmtfEmulation(const edm::ParameterSet& edmParameterSet,
0019 MuStubsInputTokens& muStubsInputTokens,
0020 edm::EDGetTokenT<L1Phase2MuDTPhContainer> inputTokenDTPhPhase2)
0021 : OMTFReconstruction(edmParameterSet, muStubsInputTokens), inputTokenDTPhPhase2(inputTokenDTPhPhase2) {}
0022
0023 void OmtfEmulation::beginJob() {
0024 if (edmParameterSet.exists("usePhase2DTPrimitives") && edmParameterSet.getParameter<bool>("usePhase2DTPrimitives")) {
0025 inputMaker = std::make_unique<InputMakerPhase2>(edmParameterSet,
0026 muStubsInputTokens,
0027 inputTokenDTPhPhase2,
0028 omtfConfig.get(),
0029 std::make_unique<OmtfPhase2AngleConverter>());
0030 } else {
0031 inputMaker = std::make_unique<OMTFinputMaker>(
0032 edmParameterSet, muStubsInputTokens, omtfConfig.get(), std::make_unique<OmtfAngleConverter>());
0033 }
0034 }
0035
0036 void OmtfEmulation::addObservers(const MuonGeometryTokens& muonGeometryTokens,
0037 const edm::ESGetToken<MagneticField, IdealMagneticFieldRecord>& magneticFieldEsToken,
0038 const edm::ESGetToken<Propagator, TrackingComponentsRecord>& propagatorEsToken) {
0039 if (observers.empty()) {
0040 OMTFReconstruction::addObservers(muonGeometryTokens, magneticFieldEsToken, propagatorEsToken);
0041
0042
0043
0044
0045 }
0046
0047 if (edmParameterSet.exists("neuralNetworkFile") && !ptAssignment) {
0048 edm::LogImportant("OMTFReconstruction") << "constructing PtAssignmentNNRegression" << std::endl;
0049 std::string neuralNetworkFile = edmParameterSet.getParameter<edm::FileInPath>("neuralNetworkFile").fullPath();
0050 ptAssignment = std::make_unique<PtAssignmentNNRegression>(edmParameterSet, omtfConfig.get(), neuralNetworkFile);
0051 }
0052
0053 auto omtfProcGoldenPat = dynamic_cast<OMTFProcessor<GoldenPattern>*>(omtfProc.get());
0054 if (omtfProcGoldenPat) {
0055 omtfProcGoldenPat->setPtAssignment(ptAssignment.get());
0056
0057 }
0058 }