File indexing completed on 2024-11-15 23:40:44
0001 #ifndef L1Trigger_TrackFindingTracklet_interface_VMStubsTEMemory_h
0002 #define L1Trigger_TrackFindingTracklet_interface_VMStubsTEMemory_h
0003
0004 #include "L1Trigger/TrackFindingTracklet/interface/MemoryBase.h"
0005 #include "L1Trigger/TrackFindingTracklet/interface/TrackletLUT.h"
0006 #include "L1Trigger/TrackFindingTracklet/interface/VMStubTE.h"
0007
0008 #include <string>
0009 #include <vector>
0010
0011 namespace trklet {
0012
0013 class Settings;
0014 class Stub;
0015 class L1TStub;
0016 class TrackletLUT;
0017
0018 class VMStubsTEMemory : public MemoryBase {
0019 public:
0020 VMStubsTEMemory(std::string name, Settings const& settings);
0021
0022 ~VMStubsTEMemory() override = default;
0023
0024 void resize(int nbins) { stubsbinnedvm_.resize(nbins); }
0025
0026 bool addVMStub(VMStubTE vmstub, int bin, int ivmte = 0, bool combined = true);
0027
0028 bool addVMStub(VMStubTE vmstub);
0029
0030 unsigned int nVMStubs() const { return stubsvm_.size(); }
0031
0032 unsigned int nVMStubsBinned(unsigned int bin) const { return stubsbinnedvm_[bin].size(); }
0033
0034 unsigned int nBin() const { return stubsbinnedvm_.size(); }
0035
0036 const VMStubTE& getVMStubTE(unsigned int i) const { return stubsvm_[i]; }
0037
0038 const VMStubTE& getVMStubTEBinned(unsigned int bin, unsigned int i) const { return stubsbinnedvm_[bin][i]; }
0039
0040 void clean() override;
0041
0042 void writeStubs(bool first, unsigned int iSector);
0043
0044 int phibin() const { return phibin_; }
0045
0046 void getPhiRange(double& phimin, double& phimax, unsigned int iSeed, unsigned int inner);
0047
0048 void setother(VMStubsTEMemory* other) { other_ = other; }
0049
0050 VMStubsTEMemory* other() { return other_; }
0051
0052 void setbendtable(const TrackletLUT& bendtable);
0053
0054 private:
0055 int layer_;
0056 int disk_;
0057 int layerdisk_;
0058 int phibin_;
0059 VMStubsTEMemory* other_;
0060 bool overlap_;
0061 bool extra_;
0062 bool extended_;
0063 bool isinner_;
0064
0065 TrackletLUT bendtable_;
0066
0067 std::vector<VMStubTE> stubsvm_;
0068 std::vector<std::vector<VMStubTE> > stubsbinnedvm_;
0069 };
0070
0071 };
0072 #endif