Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-10-14 01:44:00

0001 #ifndef L1Trigger_TrackFindingTracklet_interface_PurgeDuplicate_h
0002 #define L1Trigger_TrackFindingTracklet_interface_PurgeDuplicate_h
0003 
0004 #include "L1Trigger/TrackFindingTracklet/interface/TrackFitMemory.h"
0005 #include "L1Trigger/TrackFindingTracklet/interface/CleanTrackMemory.h"
0006 #include "L1Trigger/TrackFindingTracklet/interface/ProcessBase.h"
0007 
0008 #include <vector>
0009 
0010 // Run algorithm to remove duplicate tracks.
0011 // Returns Track object that represent output at end of L1 track chain,
0012 // (and are later converted to TTTrack). Duplicate Track objects are flagged,
0013 // but only deleted if using the Hybrid algo.
0014 // Also writes to memory the same tracks in more detailed Tracklet format,
0015 // where duplicates are all deleted.
0016 
0017 namespace trklet {
0018 
0019   class Settings;
0020   class Globals;
0021   class MemoryBase;
0022   class Stub;
0023   class L1TStub;
0024   class Track;
0025   class Tracklet;
0026 
0027   class PurgeDuplicate : public ProcessBase {
0028   public:
0029     PurgeDuplicate(std::string name, Settings const& settings, Globals* global);
0030 
0031     ~PurgeDuplicate() override = default;
0032 
0033     void addOutput(MemoryBase* memory, std::string output) override;
0034     void addInput(MemoryBase* memory, std::string input) override;
0035 
0036     void execute(std::vector<Track>& outputtracks_, unsigned int iSector);
0037 
0038   private:
0039     double getPhiRes(Tracklet* curTracklet, const Stub* curStub);
0040 
0041     std::vector<Track*> inputtracks_;
0042     std::vector<std::vector<const Stub*>> inputstublists_;
0043     std::vector<std::vector<std::pair<int, int>>> inputstubidslists_;
0044     std::vector<std::vector<std::pair<int, int>>> mergedstubidslists_;
0045     std::vector<TrackFitMemory*> inputtrackfits_;
0046     std::vector<Tracklet*> inputtracklets_;
0047     std::vector<CleanTrackMemory*> outputtracklets_;
0048   };
0049 
0050 };  // namespace trklet
0051 #endif