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
5 changes: 5 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/DTprimitive.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ class DTPrimitive {
const int superLayerId() const { return superLayerId_; };
const cmsdt::LATERAL_CASES laterality() const { return laterality_; };

bool operator==(const DTPrimitive& dtp) {
return (tdcTimeStamp() == dtp.tdcTimeStamp() && channelId() == dtp.channelId() && layerId() == dtp.layerId() &&
cameraId() == dtp.cameraId() && cameraId() == dtp.cameraId() && superLayerId() == dtp.superLayerId());
}

private:
int cameraId_; // Chamber ID
int superLayerId_; // SL ID
Expand Down
46 changes: 46 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/LateralityBasicProvider.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#ifndef L1Trigger_DTTriggerPhase2_LateralityBasicProvider_h
#define L1Trigger_DTTriggerPhase2_LateralityBasicProvider_h

#include "L1Trigger/DTTriggerPhase2/interface/LateralityProvider.h"

// ===============================================================================
// Previous definitions and declarations
// ===============================================================================

struct lat_combination {
short missing_layer;
short cellLayout[cmsdt::NUM_LAYERS];
lat_vector latcombs;
};

// ===============================================================================
// Class declarations
// ===============================================================================

class LateralityBasicProvider : public LateralityProvider {
public:
// Constructors and destructor
LateralityBasicProvider(const edm::ParameterSet &pset, edm::ConsumesCollector &iC);
~LateralityBasicProvider() override;

// Main methods
void initialise(const edm::EventSetup &iEventSetup) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
MuonPathPtrs &inMpath,
std::vector<lat_vector> &lateralities) override;

void finish() override;

// Other public methods

private:
// Private methods
void analyze(MuonPathPtr &inMPath, std::vector<lat_vector> &lateralities);
void fill_lat_combinations();
// Private attributes
const bool debug_;
std::vector<lat_combination> lat_combinations;
};

#endif
50 changes: 50 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/LateralityCoarsedProvider.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#ifndef L1Trigger_DTTriggerPhase2_LateralityCoarsedProvider_h
#define L1Trigger_DTTriggerPhase2_LateralityCoarsedProvider_h

#include "L1Trigger/DTTriggerPhase2/interface/LateralityProvider.h"

// ===============================================================================
// Previous definitions and declarations
// ===============================================================================

struct lat_coarsed_combination {
short missing_layer;
short cellLayout[cmsdt::NUM_LAYERS];
short coarsed_times[cmsdt::NUM_LAYERS];
lat_vector latcombs;
};

// ===============================================================================
// Class declarations
// ===============================================================================

class LateralityCoarsedProvider : public LateralityProvider {
public:
// Constructors and destructor
LateralityCoarsedProvider(const edm::ParameterSet &pset, edm::ConsumesCollector &iC);
~LateralityCoarsedProvider() override;

// Main methods
void initialise(const edm::EventSetup &iEventSetup) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
MuonPathPtrs &inMpath,
std::vector<lat_vector> &lateralities) override;

void finish() override;

// Other public methods

private:
// Private methods
void analyze(MuonPathPtr &inMPath, std::vector<lat_vector> &lateralities);
std::vector<short> coarsify_times(MuonPathPtr &inMPath);
void fill_lat_combinations();
std::vector<std::vector<short>> convertString(std::string chain);
// Private attributes
const bool debug_;
std::vector<lat_coarsed_combination> lat_combinations;
edm::FileInPath laterality_filename_;
};

#endif
58 changes: 58 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/LateralityProvider.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#ifndef Phase2L1Trigger_DTTrigger_LateralityProvider_h
#define Phase2L1Trigger_DTTrigger_LateralityProvider_h

#include "FWCore/Utilities/interface/ESGetToken.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"
#include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/Run.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "L1Trigger/DTTriggerPhase2/interface/MuonPath.h"
#include "L1Trigger/DTTriggerPhase2/interface/constants.h"

#include <iostream>
#include <fstream>

// ===============================================================================
// Previous definitions and declarations
// ===============================================================================

// ===============================================================================
// Class declarations
// ===============================================================================

using latcomb = std::vector<short>;
using lat_vector = std::vector<latcomb>;

class LateralityProvider {
public:
// Constructors and destructor
LateralityProvider(const edm::ParameterSet& pset, edm::ConsumesCollector& iC);
virtual ~LateralityProvider();

// Main methods
virtual void initialise(const edm::EventSetup& iEventSetup);
virtual void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
MuonPathPtrs& inMpath,
std::vector<lat_vector>& lateralities) = 0;

virtual void finish();

// Other public methods

// Public attributes
lat_vector LAT_VECTOR_NULL = {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}};

private:
// Private methods

// Private attributes
const bool debug_;
};

#endif
6 changes: 5 additions & 1 deletion L1Trigger/DTTriggerPhase2/interface/MPCleanHitsFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ class MPCleanHitsFilter : public MPFilter {
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) override{};

void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inSLMPath,
std::vector<cmsdt::metaPrimitive>& inCorMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) override{};
void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
MuonPathPtrs& inMPath,
Expand Down
76 changes: 76 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/MPCorFilter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#ifndef Phase2L1Trigger_DTTrigger_MPCorFilter_h
#define Phase2L1Trigger_DTTrigger_MPCorFilter_h

#include "L1Trigger/DTTriggerPhase2/interface/MPFilter.h"
#include "L1Trigger/DTTriggerPhase2/interface/vhdl_functions.h"

#include <iostream>
#include <fstream>

// ===============================================================================
// Previous definitions and declarations
// ===============================================================================

// ===============================================================================
// Class declarations
// ===============================================================================

struct valid_cor_tp_t {
bool valid;
cmsdt::metaPrimitive mp;
int coarsed_t0;
int coarsed_pos;
int coarsed_slope;
valid_cor_tp_t() : valid(false), mp(cmsdt::metaPrimitive()), coarsed_t0(-1), coarsed_pos(-1), coarsed_slope(-1) {}
valid_cor_tp_t(bool valid, cmsdt::metaPrimitive mp, int coarsed_t0, int coarsed_pos, int coarsed_slope)
: valid(valid), mp(mp), coarsed_t0(coarsed_t0), coarsed_pos(coarsed_pos), coarsed_slope(coarsed_slope) {}
};

using valid_cor_tp_arr_t = std::vector<valid_cor_tp_t>;

class MPCorFilter : public MPFilter {
public:
// Constructors and destructor
MPCorFilter(const edm::ParameterSet &pset);
~MPCorFilter() override = default;

// Main methods
void initialise(const edm::EventSetup &iEventSetup) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override{};
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inSLMPath,
std::vector<cmsdt::metaPrimitive> &inCorMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
MuonPathPtrs &inMPath,
MuonPathPtrs &outMPath) override{};

void finish() override;

// Other public methods

// Public attributes
void printmP(cmsdt::metaPrimitive mP);

private:
// Private methods
std::vector<cmsdt::metaPrimitive> filter(std::vector<cmsdt::metaPrimitive> SL1mps,
std::vector<cmsdt::metaPrimitive> SL2mps,
std::vector<cmsdt::metaPrimitive> SL3mps,
std::vector<cmsdt::metaPrimitive> Cormps);
std::vector<int> coarsify(cmsdt::metaPrimitive mp, int sl);
bool isDead(cmsdt::metaPrimitive mp, std::vector<int> coarsed, std::map<int, valid_cor_tp_arr_t> tps_per_bx);
int killTps(cmsdt::metaPrimitive mp, std::vector<int> coarsed, int bx, std::map<int, valid_cor_tp_arr_t> &tps_per_bx);
int match(cmsdt::metaPrimitive mp, std::vector<int> coarsed, valid_cor_tp_t valid_cor_tp2);
int get_chi2(cmsdt::metaPrimitive mp);

// Private attributes
const bool debug_;
};

#endif
13 changes: 12 additions & 1 deletion L1Trigger/DTTriggerPhase2/interface/MPFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#include "Geometry/Records/interface/MuonGeometryRecord.h"

#include "Geometry/DTGeometry/interface/DTGeometry.h"
#include "Geometry/DTGeometry/interface/DTLayer.h"
#include "DataFormats/MuonDetId/interface/DTLayerId.h"

#include <iostream>
#include <fstream>
Expand All @@ -37,6 +37,11 @@ class MPFilter {
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) = 0;
virtual void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inSLMPath,
std::vector<cmsdt::metaPrimitive>& inCorMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) = 0;
virtual void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
MuonPathPtrs& inMPath,
Expand All @@ -46,6 +51,12 @@ class MPFilter {

// Other public methods

// Public attributes
// max drift velocity
edm::FileInPath maxdrift_filename_;
int maxdriftinfo_[5][4][14];
int max_drift_tdc = -1;

private:
// Private attributes
const bool debug_;
Expand Down
5 changes: 5 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/MPQualityEnhancerFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ class MPQualityEnhancerFilter : public MPFilter {
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inSLMPath,
std::vector<cmsdt::metaPrimitive> &inCorMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override{};
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
MuonPathPtrs &inMPath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ class MPQualityEnhancerFilterBayes : public MPFilter {
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override;
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
std::vector<cmsdt::metaPrimitive> &inSLMPath,
std::vector<cmsdt::metaPrimitive> &inCorMPath,
std::vector<cmsdt::metaPrimitive> &outMPath) override{};
void run(edm::Event &iEvent,
const edm::EventSetup &iEventSetup,
MuonPathPtrs &inMPath,
Expand Down
5 changes: 5 additions & 0 deletions L1Trigger/DTTriggerPhase2/interface/MPRedundantFilter.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ class MPRedundantFilter : public MPFilter {
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) override{};
void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
std::vector<cmsdt::metaPrimitive>& inSLMPath,
std::vector<cmsdt::metaPrimitive>& inCorMPath,
std::vector<cmsdt::metaPrimitive>& outMPath) override{};
void run(edm::Event& iEvent,
const edm::EventSetup& iEventSetup,
MuonPathPtrs& inMPath,
Expand Down
Loading