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

Tracklet Processor Displaced #159

Merged
merged 6 commits into from
May 30, 2022
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
5,441 changes: 5,441 additions & 0 deletions L1Trigger/TrackFindingTracklet/data/memorymodules_hourglassExtended.dat

Large diffs are not rendered by default.

1,155 changes: 1,155 additions & 0 deletions L1Trigger/TrackFindingTracklet/data/processingmodules_hourglassExtended.dat

Large diffs are not rendered by default.

5,441 changes: 5,441 additions & 0 deletions L1Trigger/TrackFindingTracklet/data/wires_hourglassExtended.dat

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions L1Trigger/TrackFindingTracklet/interface/Sector.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ namespace trklet {
class TripletEngine;
class TrackletCalculator;
class TrackletProcessor;
class TrackletProcessorDisplaced;
class TrackletCalculatorDisplaced;
class ProjectionRouter;
class MatchEngine;
Expand Down Expand Up @@ -109,6 +110,7 @@ namespace trklet {
void executeTED();
void executeTRE();
void executeTP();
void executeTPD();
void executeTC();
void executeTCD();
void executePR();
Expand Down Expand Up @@ -174,6 +176,7 @@ namespace trklet {
std::vector<std::unique_ptr<TrackletEngineDisplaced>> TED_;
std::vector<std::unique_ptr<TripletEngine>> TRE_;
std::vector<std::unique_ptr<TrackletProcessor>> TP_;
std::vector<std::unique_ptr<TrackletProcessorDisplaced>> TPD_;
std::vector<std::unique_ptr<TrackletCalculator>> TC_;
std::vector<std::unique_ptr<TrackletCalculatorDisplaced>> TCD_;
std::vector<std::unique_ptr<ProjectionRouter>> PR_;
Expand Down
15 changes: 12 additions & 3 deletions L1Trigger/TrackFindingTracklet/interface/Settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -634,14 +634,23 @@ namespace trklet {
{{5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4}}, //outer
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4}}}}; //outermost (triplets only)

// These are the number of bits to represent lutval for VM memories in TE
std::array<std::array<unsigned int, N_SEED>, 3> lutwidthtab_{{{{10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 11, 0}},
{{6, 6, 6, 6, 10, 10, 10, 10, 0, 0, 6, 0}},
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6}}}};

// These are the number of bits to represent lutval for VM memories in TED
// TO DO: tune lutwidthtabextended_ values

/* std::array<std::array<unsigned int, N_SEED>, 3> lutwidthtabextended_{ */
tomalin marked this conversation as resolved.
Show resolved Hide resolved
/* {{{11, 11, 21, 21, 21, 21, 11, 11, 0, 0, 21, 0}}, */
/* {{6, 6, 6, 6, 10, 10, 10, 10, 0, 0, 6, 0}}, */
/* {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6}}}}; */

std::array<std::array<unsigned int, N_SEED>, 3> lutwidthtabextended_{
{{{11, 11, 21, 21, 21, 21, 11, 11, 0, 0, 21, 0}},
{{6, 6, 6, 6, 10, 10, 10, 10, 0, 0, 6, 0}},
{{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 6}}}};
{{{21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}},
{{21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}},
{{21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21}}}};

//layers/disks used by each seed
std::array<std::array<int, 3>, N_SEED> seedlayers_{{{{0, 1, -1}}, //L1L2
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ namespace trklet {
double phiderdisk[5],
double rderdisk[5]);

private:
protected:
int TCIndex_;
int layer_;
int disk_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ namespace trklet {
Timer TEDTimer_;
Timer TRETimer_;
Timer TPTimer_;
Timer TPDTimer_;
Timer TCTimer_;
Timer TCDTimer_;
Timer PRTimer_;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// TrackletProcessorDisplaced: This class performs the tasks of the TrackletEngineDisplaced+TripletEngine+TrackletCalculatorDisplaced.
#ifndef L1Trigger_TrackFindingTracklet_interface_TrackletProcessorDisplaced_h
#define L1Trigger_TrackFindingTracklet_interface_TrackletProcessorDisplaced_h

#include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculatorBase.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculatorDisplaced.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletLUT.h"
#include "L1Trigger/TrackFindingTracklet/interface/CircularBuffer.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletEngineUnit.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletParametersMemory.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletProjectionsMemory.h"

#include <vector>
#include <tuple>
#include <map>

namespace trklet {

class Settings;
class Globals;
class MemoryBase;
class AllStubsMemory;
class AllInnerStubsMemory;
class VMStubsTEMemory;
class StubPairsMemory;

tomalin marked this conversation as resolved.
Show resolved Hide resolved
class TrackletProcessorDisplaced : public TrackletCalculatorDisplaced {
public:
TrackletProcessorDisplaced(std::string name, Settings const& settings, Globals* globals);

~TrackletProcessorDisplaced() override = default;

void addOutputProjection(TrackletProjectionsMemory*& outputProj, MemoryBase* memory);

void addOutput(MemoryBase* memory, std::string output) override;

void addInput(MemoryBase* memory, std::string input) override;

void execute(unsigned int iSector, double phimin, double phimax);

private:
int iTC_;
int iAllStub_;
unsigned int maxStep_;
int count_;
unsigned int layerdisk_;

int layer1_;
int layer2_;
int layer3_;
int disk1_;
int disk2_;
int disk3_;

int firstphibits_;
int secondphibits_;
int thirdphibits_;

int nbitszfinebintable_;
int nbitsrfinebintable_;

TrackletLUT innerTable_; //projection to next layer/disk
TrackletLUT innerOverlapTable_; //projection to disk from layer
TrackletLUT innerThirdTable_; //projection to disk1 for extended - iseed=10

std::vector<StubPairsMemory*> stubpairs_;
/* std::vector<StubTripletsMemory*> stubtriplets_; */
std::vector<VMStubsTEMemory*> innervmstubs_;
std::vector<VMStubsTEMemory*> outervmstubs_;

StubTripletsMemory* stubtriplets_;

std::map<std::string, std::vector<std::vector<std::string> > > tmpSPTable_;
std::map<std::string, std::vector<std::map<std::string, unsigned> > > spTable_;
std::vector<bool> table_;
};

}; // namespace trklet
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ L1FPGATrackProducer::L1FPGATrackProducer(edm::ParameterSet const& iConfig)
//FIXME: The TED and TRE tables are currently disabled by default, so we
//need to allow for the additional tracklets that will eventually be
//removed by these tables, once they are finalized
settings_.setNbitstrackletindex(10);
settings_.setNbitstrackletindex(15);
}

eventnum = 0;
Expand Down
9 changes: 9 additions & 0 deletions L1Trigger/TrackFindingTracklet/src/Sector.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "L1Trigger/TrackFindingTracklet/interface/TripletEngine.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculator.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletProcessor.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletProcessorDisplaced.h"
#include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculatorDisplaced.h"
#include "L1Trigger/TrackFindingTracklet/interface/ProjectionRouter.h"
#include "L1Trigger/TrackFindingTracklet/interface/MatchEngine.h"
Expand Down Expand Up @@ -158,6 +159,8 @@ void Sector::addProc(string procType, string procName) {
addProcToVec(TC_, procName, settings_, globals_);
} else if (procType == "TrackletProcessor:") {
addProcToVec(TP_, procName, settings_, globals_);
} else if (procType == "TrackletProcessorDisplaced:") {
addProcToVec(TPD_, procName, settings_, globals_);
} else if (procType == "TrackletCalculatorDisplaced:") {
addProcToVec(TCD_, procName, settings_, globals_);
} else if (procType == "ProjectionRouter:") {
Expand Down Expand Up @@ -370,6 +373,12 @@ void Sector::executeTP() {
}
}

void Sector::executeTPD() {
for (auto& i : TPD_) {
i->execute(isector_, phimin_, phimax_);
}
}

void Sector::executeTC() {
for (auto& i : TC_) {
i->execute(isector_, phimin_, phimax_);
Expand Down
11 changes: 10 additions & 1 deletion L1Trigger/TrackFindingTracklet/src/TrackletEventProcessor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,11 @@ void TrackletEventProcessor::event(SLHCEvent& ev,
sector_->executeTCD();
TCDTimer_.stop();

// tracklet processor displaced
TPDTimer_.start();
sector_->executeTPD();
TPDTimer_.stop();

if (settings_->writeMem() && k == settings_->writememsect()) {
sector_->writeTPAR(first);
sector_->writeTPROJ(first);
Expand Down Expand Up @@ -422,7 +427,11 @@ void TrackletEventProcessor::printSummary() {
<< TRETimer_.tottime() << "\n"
<< "TrackletCalculatorDisplaced" << setw(10) << TCDTimer_.ntimes() << setw(20)
<< setprecision(3) << TCDTimer_.avgtime() * 1000.0 << setw(20) << setprecision(3)
<< TCDTimer_.tottime();
<< TCDTimer_.tottime() << "\n"
<< TCDTimer_.tottime() << "\n"
<< "TrackletProcessorDisplaced" << setw(10) << TPDTimer_.ntimes() << setw(20)
<< setprecision(3) << TPDTimer_.avgtime() * 1000.0 << setw(20) << setprecision(3)
<< TPDTimer_.tottime();
}
edm::LogVerbatim("Tracklet") << "TrackletCalculator " << setw(10) << TCTimer_.ntimes() << setw(20)
<< setprecision(3) << TCTimer_.avgtime() * 1000.0 << setw(20) << setprecision(3)
Expand Down
Loading