Skip to content

Commit

Permalink
Code from tschuh_TBoutAnalyzer
Browse files Browse the repository at this point in the history
  • Loading branch information
aryd committed Feb 2, 2022
1 parent 315339a commit 5bb5365
Show file tree
Hide file tree
Showing 39 changed files with 1,037 additions and 85 deletions.
2 changes: 2 additions & 0 deletions DataFormats/L1TrackTrigger/interface/TTTypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,10 @@ namespace tt {
typedef std::pair<TTTrackRef, Frame> FrameTrack;
typedef std::vector<FrameStub> StreamStub;
typedef std::vector<FrameTrack> StreamTrack;
typedef std::vector<Frame> Stream;
typedef std::vector<StreamStub> StreamsStub;
typedef std::vector<StreamTrack> StreamsTrack;
typedef std::vector<Stream> Streams;
typedef std::map<TTTrackRef, TTTrackRef> TTTrackRefMap;
typedef std::vector<TTTrack<Ref_Phase2TrackerDigi_>> TTTracks;
} // namespace tt
Expand Down
2 changes: 2 additions & 0 deletions DataFormats/L1TrackTrigger/src/classes_def.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@
<class name="edm::Ptr<TTTrack<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >" />
<class name="tt::StreamsStub"/>
<class name="tt::StreamsTrack"/>
<class name="tt::Streams"/>
<class name="edm::Wrapper<tt::StreamsStub>"/>
<class name="edm::Wrapper<tt::StreamsTrack>"/>
<class name="edm::Wrapper<tt::Streams>"/>
<class name="tt::TTTracks"/>
<class name="edm::Wrapper<tt::TTTracks>"/>
<class name="std::pair<const TTTrackRef, TTTrackRef>"/>
Expand Down
6 changes: 4 additions & 2 deletions L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ namespace trklet {
bool channelId(const TTTrackRef& ttTrackRef, int& channelId);
// number of used channels
int numChannels() const { return numChannels_; }
// sets layerId (0-7 in sequence the seed type projects to) of given TTStubRef and TTTrackRef, returns false if seeed stub
bool layerId(const TTTrackRef& ttTrackRef, const TTStubRef& ttStubRef, int& layerId);
// sets layerId (0-7 in sequence the seed type projects to) of given TTStubRef and seedType, returns false if seeed stub
bool layerId(int seedType, const TTStubRef& ttStubRef, int& layerId);
// return tracklet layerId (barrel: [0-5], endcap: [6-10]) for given TTStubRef
int trackletLayerId(const TTStubRef& ttStubRef) const;
// max number layers a sedd type may project to
int maxNumProjectionLayers() const { return maxNumProjectionLayers_; }
// map of used DTC tfp channels in InputRouter
Expand Down
7 changes: 6 additions & 1 deletion L1Trigger/TrackFindingTracklet/interface/FitTrack.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
#include "L1Trigger/TrackFindingTracklet/interface/TrackletParametersMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/FullMatchMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackFitMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h"

#include <vector>
#include <deque>

namespace trklet {

Expand Down Expand Up @@ -38,7 +40,10 @@ namespace trklet {

std::vector<Tracklet*> orderedMatches(std::vector<FullMatchMemory*>& fullmatch);

void execute(unsigned int iSector);
void execute(ChannelAssignment* channelAssignment,
std::deque<tt::Frame>& streamTrack,
std::vector<std::deque<tt::FrameStub>>& streamsStub,
unsigned int iSector);

private:
std::vector<TrackletParametersMemory*> seedtracklet_;
Expand Down
7 changes: 6 additions & 1 deletion L1Trigger/TrackFindingTracklet/interface/L1TStub.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define L1Trigger_TrackFindingTracklet_interface_L1TStub_h

#include "L1Trigger/TrackFindingTracklet/interface/Settings.h"
#include "DataFormats/L1TrackTrigger/interface/TTTypes.h"

#include <iostream>
#include <fstream>
Expand All @@ -26,7 +27,8 @@ namespace trklet {
double z,
double bend,
double strip,
std::vector<int> tps);
std::vector<int> tps,
const TTStubRef& ttStubRef);

~L1TStub() = default;

Expand Down Expand Up @@ -107,6 +109,8 @@ namespace trklet {

const std::string& stubword() const { return stubword_; }

TTStubRef ttStubRef() const { return ttStubRef_; }

private:
int layerdisk_;
std::string DTClink_;
Expand All @@ -131,6 +135,7 @@ namespace trklet {

unsigned int isPSmodule_;
unsigned int isFlipped_;
TTStubRef ttStubRef_;
};
}; // namespace trklet
#endif
3 changes: 2 additions & 1 deletion L1Trigger/TrackFindingTracklet/interface/SLHCEvent.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ namespace trklet {
double z,
double bend,
double strip,
std::vector<int> tps);
std::vector<int> tpstt,
const TTStubRef& ttStubRef);

const L1TStub& lastStub() const { return stubs_.back(); }

Expand Down
3 changes: 2 additions & 1 deletion L1Trigger/TrackFindingTracklet/interface/Sector.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "L1Trigger/TrackFindingTracklet/interface/L1TStub.h"
#include "L1Trigger/TrackFindingTracklet/interface/SLHCEvent.h"
#include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h"

#include <string>
#include <map>
Expand Down Expand Up @@ -114,7 +115,7 @@ namespace trklet {
void executeME();
void executeMC();
void executeMP();
void executeFT();
void executeFT(ChannelAssignment* channelAssignment, tt::Streams& streamsTrack, tt::StreamsStub& streamsStub);
void executePD(std::vector<Track>& tracks);

std::vector<Tracklet*> getAllTracklets() const;
Expand Down
6 changes: 6 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,11 @@ namespace trklet {
bool doKF() const { return doKF_; }
bool doMultipleMatches() const { return doMultipleMatches_; }
bool fakefit() const { return fakefit_; }
bool emulateTB() const { return emulateTB_; }
void setFakefit(bool fakefit) { fakefit_ = fakefit; }
void setEmulateTB(bool emulateTB) { emulateTB_ = emulateTB; }
void setRemovalType(std::string removalType) { removalType_ = removalType; }
void setDoMultipleMatches(bool doMultipleMatches) { doMultipleMatches_ = doMultipleMatches; }

// configurable
unsigned int nHelixPar() const { return nHelixPar_; }
Expand Down Expand Up @@ -905,6 +909,8 @@ namespace trklet {

// if true, run a dummy fit, producing TTracks directly from output of tracklet pattern reco stage
bool fakefit_{false};
// if true EDProducer prduces additionaly bit and clock accurate TrackBuilder output
bool emulateTB_{false};

unsigned int nHelixPar_{4}; // 4 or 5 param helix fit
bool extended_{false}; // turn on displaced tracking
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
#define L1Trigger_TrackFindingTracklet_interface_TrackletEventProcessor_h

#include "L1Trigger/TrackFindingTracklet/interface/Timer.h"
#include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h"

#include <map>
#include <memory>
#include <vector>
#include <deque>
#include <string>

namespace trklet {
Expand All @@ -24,18 +26,21 @@ namespace trklet {

~TrackletEventProcessor();

void init(Settings const& theSettings);
void init(Settings const& theSettings, ChannelAssignment* channelAssignment);

void event(SLHCEvent& ev);

void printSummary();

const std::vector<Track>& tracks() const { return tracks_; }

void produce(tt::Streams& streamsTrack, tt::StreamsStub& streamsStub);

private:
void configure(std::istream& inwire, std::istream& inmem, std::istream& inproc);

const Settings* settings_{nullptr};
ChannelAssignment* channelAssignment_{nullptr};

std::unique_ptr<Globals> globals_;

Expand Down Expand Up @@ -63,6 +68,8 @@ namespace trklet {
Timer PDTimer_;

std::vector<Track> tracks_;
tt::Streams streamsTrack_;
tt::StreamsStub streamsStub_;
};

}; // namespace trklet
Expand Down
51 changes: 49 additions & 2 deletions L1Trigger/TrackFindingTracklet/plugins/L1FPGATrackProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
#include "L1Trigger/TrackFindingTracklet/interface/Sector.h"
#include "L1Trigger/TrackFindingTracklet/interface/Track.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletEventProcessor.h"
#include "L1Trigger/TrackFindingTracklet/interface/ChannelAssignment.h"
#include "L1Trigger/TrackFindingTracklet/interface/Tracklet.h"
#include "L1Trigger/TrackFindingTracklet/interface/Residual.h"
#include "L1Trigger/TrackFindingTracklet/interface/Stub.h"

////////////////
// PHYSICS TOOLS
Expand All @@ -106,6 +110,8 @@
// NAMESPACES
using namespace edm;
using namespace std;
using namespace tt;
using namespace trklet;

//////////////////////////////
// //
Expand Down Expand Up @@ -184,6 +190,15 @@ class L1FPGATrackProducer : public edm::one::EDProducer<edm::one::WatchRuns> {
edm::EDGetTokenT<std::vector<TrackingParticle>> TrackingParticleToken_;
edm::EDGetTokenT<TTDTC> tokenDTC_;

// ED output token for clock and bit accurate tracks
EDPutTokenT<Streams> edPutTokenTracks_;
// ED output token for clock and bit accurate stubs
EDPutTokenT<StreamsStub> edPutTokenStubs_;
// ChannelAssignment token
ESGetToken<ChannelAssignment, ChannelAssignmentRcd> esGetTokenChannelAssignment_;
// helper class to assign tracks to channel
ChannelAssignment* channelAssignment_;

// helper class to store DTC configuration
tt::Setup setup_;

Expand Down Expand Up @@ -233,8 +248,15 @@ L1FPGATrackProducer::L1FPGATrackProducer(edm::ParameterSet const& iConfig)
tableTREFile = iConfig.getParameter<edm::FileInPath>("tableTREFile");
}

// book ED output token for clock and bit accurate tracks
edPutTokenTracks_ = produces<Streams>("Level1TTTracks");
// book ED output token for clock and bit accurate stubs
edPutTokenStubs_ = produces<StreamsStub>("Level1TTTracks");
// book ES product
esGetTokenChannelAssignment_ = esConsumes<ChannelAssignment, ChannelAssignmentRcd, Transition::BeginRun>();
esGetToken_ = esConsumes<tt::Setup, tt::SetupRcd, edm::Transition::BeginRun>();
// initial ES products
channelAssignment_ = nullptr;

// --------------------------------------------------------------------------------
// set options in Settings based on inputs from configuration files
Expand All @@ -250,6 +272,9 @@ L1FPGATrackProducer::L1FPGATrackProducer(edm::ParameterSet const& iConfig)
settings.setWiresFile(wiresFile.fullPath());

settings.setFakefit(iConfig.getParameter<bool>("Fakefit"));
settings.setEmulateTB(iConfig.getParameter<bool>("EmulateTB"));
settings.setRemovalType(iConfig.getParameter<string>("RemovalType"));
settings.setDoMultipleMatches(iConfig.getParameter<bool>("DoMultipleMatches"));

if (extended_) {
settings.setTableTEDFile(tableTEDFile.fullPath());
Expand Down Expand Up @@ -281,6 +306,15 @@ L1FPGATrackProducer::L1FPGATrackProducer(edm::ParameterSet const& iConfig)
if (trackQuality_) {
trackQualityModel_ = std::make_unique<TrackQuality>(iConfig.getParameter<edm::ParameterSet>("TrackQualityPSet"));
}
if (settings.emulateTB() && (settings.doMultipleMatches() || settings.removalType() != "")) {
cms::Exception exception("ConfigurationNotSupported.");
exception.addContext("L1FPGATrackProducer::produce");
if (settings.doMultipleMatches())
exception << "Emulation of TrackBuilder does not support doMultipleMatches.";
if (settings.removalType() != "")
exception << "Emulation of TrackBuilder does not support duplicate removal.";
throw exception;
}
}

/////////////
Expand All @@ -307,9 +341,10 @@ void L1FPGATrackProducer::beginRun(const edm::Run& run, const edm::EventSetup& i
settings.setBfield(mMagneticFieldStrength);

setup_ = iSetup.getData(esGetToken_);
channelAssignment_ = const_cast<ChannelAssignment*>(&iSetup.getData(esGetTokenChannelAssignment_));

// initialize the tracklet event processing (this sets all the processing & memory modules, wiring, etc)
eventProcessor.init(settings);
eventProcessor.init(settings, channelAssignment_);
}

//////////
Expand Down Expand Up @@ -548,7 +583,8 @@ void L1FPGATrackProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe
ttPos.z(),
stubbend,
stub.first->innerClusterPosition(),
assocTPs);
assocTPs,
stub.first);

const trklet::L1TStub& lastStub = ev.lastStub();
stubMap[lastStub] = stub.first;
Expand Down Expand Up @@ -643,6 +679,17 @@ void L1FPGATrackProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSe

iEvent.put(std::move(L1TkTracksForOutput), "Level1TTTracks");

// produce clock and bit output tracks and stubs
// number of track channel
const int numStreamsTrack = N_SECTOR * channelAssignment_->numChannels();
// number of stub channel
const int numStreamsStub = numStreamsTrack * channelAssignment_->maxNumProjectionLayers();
Streams streamsTrack(numStreamsTrack);
StreamsStub streamsStub(numStreamsStub);
eventProcessor.produce(streamsTrack, streamsStub);
iEvent.emplace(edPutTokenTracks_, move(streamsTrack));
iEvent.emplace(edPutTokenStubs_, move(streamsStub));

} /// End of produce()

// ///////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,4 @@ namespace trklet {

} // namespace trklet

DEFINE_FWK_EVENTSETUP_MODULE(trklet::ProducerChannelAssignment);
DEFINE_FWK_EVENTSETUP_MODULE(trklet::ProducerChannelAssignment);
1 change: 1 addition & 0 deletions L1Trigger/TrackFindingTracklet/python/Analyzer_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from L1Trigger.TrackFindingTracklet.Analyzer_cfi import TrackFindingTrackletAnalyzer_params
from L1Trigger.TrackFindingTracklet.ProducerKF_cfi import TrackFindingTrackletProducerKF_params

TrackFindingTrackletAnalyzerTBout = cms.EDAnalyzer( 'trklet::AnalyzerTBout', TrackFindingTrackletAnalyzer_params, TrackFindingTrackletProducerKF_params )
TrackFindingTrackletAnalyzerTracklet = cms.EDAnalyzer( 'trklet::AnalyzerTracklet', TrackFindingTrackletAnalyzer_params, TrackFindingTrackletProducerKF_params )
TrackFindingTrackletAnalyzerKFin = cms.EDAnalyzer( 'trklet::AnalyzerKFin', TrackFindingTrackletAnalyzer_params, TrackFindingTrackletProducerKF_params )
TrackFindingTrackletAnalyzerKF = cms.EDAnalyzer( 'trackerTFP::AnalyzerKF', TrackFindingTrackletAnalyzer_params, TrackFindingTrackletProducerKF_params )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

from L1Trigger.TrackFindingTracklet.ChannelAssignment_cfi import ChannelAssignment_params

ChannelAssignment = cms.ESProducer("trklet::ProducerChannelAssignment", ChannelAssignment_params)
ChannelAssignment = cms.ESProducer("trklet::ProducerChannelAssignment", ChannelAssignment_params)
26 changes: 26 additions & 0 deletions L1Trigger/TrackFindingTracklet/python/Customize_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
import FWCore.ParameterSet.Config as cms

def newKFConfig(process):
process.TTTracksFromTrackletEmulation.Fakefit = True

def fwConfig(process):
newKFConfig(process)
process.TrackTriggerSetup.Firmware.FreqBE = 240
process.TTTracksFromTrackletEmulation.RemovalType = ""
process.TTTracksFromTrackletEmulation.DoMultipleMatches = False
process.TTTracksFromTrackletEmulation.EmulateTB = True
process.ChannelAssignment.UseDuplicateRemoval = False
process.TrackTriggerSetup.KalmanFilter.NumWorker = 8

def reducedConfig(process):
fwConfig(process)
process.TrackTriggerSetup.KalmanFilter.NumWorker = 1
process.ChannelAssignment.SeedTypes = cms.vstring( "L1L2" )
process.ChannelAssignment.SeedTypesSeedLayers = cms.PSet( L1L2 = cms.vint32( 1, 2 ) )
process.ChannelAssignment.SeedTypesProjectionLayers = cms.PSet( L1L2 = cms.vint32( 3, 4, 5, 6 ) )
process.ChannelAssignment.MaxNumProjectionLayers = 4
process.ChannelAssignment.IRChannelsIn = cms.vint32( 0, 1, 25, 2, 26, 4, 28, 5, 29, 6, 30, 7, 31, 8, 32, 9, 33 )
process.TTTracksFromTrackletEmulation.Reduced = True
process.TTTracksFromTrackletEmulation.memoryModulesFile = 'L1Trigger/TrackFindingTracklet/data/reduced_memorymodules.dat'
process.TTTracksFromTrackletEmulation.processingModulesFile = 'L1Trigger/TrackFindingTracklet/data/reduced_processingmodules.dat'
process.TTTracksFromTrackletEmulation.wiresFile = 'L1Trigger/TrackFindingTracklet/data/reduced_wires.dat'
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
# prompt hybrid emulation
TTTrackAssociatorFromPixelDigis.TTTracks = cms.VInputTag(cms.InputTag("TTTracksFromTrackletEmulation", "Level1TTTracks") )

L1TrackletTracks = cms.Sequence(offlineBeamSpot*TrackletTracksFromTrackletEmulation)
L1HybridTracks = cms.Sequence(offlineBeamSpot*TTTracksFromTrackletEmulation)
L1HybridTracksWithAssociators = cms.Sequence(offlineBeamSpot*TTTracksFromTrackletEmulation*TrackTriggerAssociatorTracks)

Expand Down
2 changes: 2 additions & 0 deletions L1Trigger/TrackFindingTracklet/python/ProducerKF_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
from L1Trigger.TrackFindingTracklet.ChannelAssignment_cff import ChannelAssignment
from L1Trigger.TrackFindingTracklet.ProducerKF_cfi import TrackFindingTrackletProducerKF_params

TrackFindingTrackletProducerIRin = cms.EDProducer( 'trklet::ProducerIRin', TrackFindingTrackletProducerKF_params )
TrackFindingTrackletProducerTBout = cms.EDProducer( 'trklet::ProducerTBout', TrackFindingTrackletProducerKF_params )
TrackFindingTrackletProducerKFin = cms.EDProducer( 'trklet::ProducerKFin', TrackFindingTrackletProducerKF_params )
TrackFindingTrackletProducerKF = cms.EDProducer( 'trackerTFP::ProducerKF', TrackFindingTrackletProducerKF_params )
TrackFindingTrackletProducerTT = cms.EDProducer( 'trklet::ProducerTT', TrackFindingTrackletProducerKF_params )
Expand Down

0 comments on commit 5bb5365

Please sign in to comment.