Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-07-07 22:33:29

0001 // TrackletProcessor: this class is an evolved version, performing the tasks of the TrackletEngine+TrackletCalculator.
0002 // It will combine TEs that feed into a TC to a single module.
0003 #ifndef L1Trigger_TrackFindingTracklet_interface_TrackletProcessor_h
0004 #define L1Trigger_TrackFindingTracklet_interface_TrackletProcessor_h
0005 
0006 #include "L1Trigger/TrackFindingTracklet/interface/TrackletCalculatorBase.h"
0007 #include "L1Trigger/TrackFindingTracklet/interface/TrackletLUT.h"
0008 #include "L1Trigger/TrackFindingTracklet/interface/CircularBuffer.h"
0009 #include "L1Trigger/TrackFindingTracklet/interface/TrackletEngineUnit.h"
0010 
0011 #include <vector>
0012 #include <tuple>
0013 #include <map>
0014 
0015 namespace trklet {
0016 
0017   class Settings;
0018   class Globals;
0019   class MemoryBase;
0020   class AllStubsMemory;
0021   class AllInnerStubsMemory;
0022   class VMStubsTEMemory;
0023 
0024   class TrackletProcessor : public TrackletCalculatorBase {
0025   public:
0026     TrackletProcessor(std::string name, Settings const& settings, Globals* globals);
0027 
0028     ~TrackletProcessor() override = default;
0029 
0030     void addOutputProjection(TrackletProjectionsMemory*& outputProj, MemoryBase* memory);
0031 
0032     void addOutput(MemoryBase* memory, std::string output) override;
0033 
0034     void addInput(MemoryBase* memory, std::string input) override;
0035 
0036     void execute(unsigned int iSector, double phimin, double phimax);
0037 
0038   private:
0039     int iTC_;
0040     int iAllStub_;
0041 
0042     unsigned int maxStep_;
0043 
0044     VMStubsTEMemory* outervmstubs_;
0045 
0046     //                                 istub          imem          start imem    end imem
0047     std::tuple<CircularBuffer<TEData>, unsigned int, unsigned int, unsigned int, unsigned int> tebuffer_;
0048 
0049     std::vector<TrackletEngineUnit> teunits_;
0050 
0051     std::vector<AllInnerStubsMemory*> innerallstubs_;
0052     std::vector<AllStubsMemory*> outerallstubs_;
0053 
0054     TrackletLUT pttableinner_;
0055     TrackletLUT pttableouter_;
0056     TrackletLUT useregiontable_;
0057 
0058     int nbitsfinephi_;
0059     int nbitsfinephidiff_;
0060 
0061     int innerphibits_;
0062     int outerphibits_;
0063 
0064     unsigned int nbitszfinebintable_;
0065     unsigned int nbitsrfinebintable_;
0066 
0067     unsigned int nbitsrzbin_;
0068 
0069     TrackletLUT innerTable_;         //projection to next layer/disk
0070     TrackletLUT innerOverlapTable_;  //projection to disk from layer
0071   };
0072 
0073 };  // namespace trklet
0074 #endif