Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:21:49

0001 #ifndef L1Trigger_TrackFindingTMTT_Utility_h
0002 #define L1Trigger_TrackFindingTMTT_Utility_h
0003 
0004 #include <vector>
0005 #include <string>
0006 
0007 namespace tmtt {
0008 
0009   class TP;
0010   class Stub;
0011   class Settings;
0012 
0013   namespace Utility {
0014     // Count number of tracker layers a given list of stubs are in.
0015     //
0016     // By default uses the "reduced" layer ID if the configuration file requested it. However,
0017     // you can insist on "normal" layer ID being used instead, ignoring the configuration file, by
0018     // std::setting disableReducedLayerID = true.
0019     //
0020     // N.B. The "reduced" layer ID merges some layer IDs, so that no more than 8 ID are needed in any
0021     // eta region, so as to simplify the firmware.
0022     //
0023     // N.B. You should std::set disableReducedLayerID = false when counting the number of layers on a tracking
0024     // particle or how many layers it shares with an L1 track. Such counts by CMS convention use "normal" layer ID.
0025     //
0026     // By default, considers both PS+2S modules, but optionally considers only the PS ones if onlyPS = true.
0027 
0028     enum AlgoStep { HT, SEED, DUP, FIT };
0029 
0030     unsigned int countLayers(const Settings* settings,
0031                              const std::vector<const Stub*>& stubs,
0032                              bool disableReducedLayerID = false,
0033                              bool onlyPS = false);
0034 
0035     unsigned int countLayers(const Settings* settings,
0036                              const std::vector<Stub*>& stubs,
0037                              bool disableReducedLayerID = false,
0038                              bool onlyPS = false);
0039 
0040     // Given a std::set of stubs (presumably on a reconstructed track candidate)
0041     // return the best matching Tracking Particle (if any),
0042     // the number of tracker layers in which one of the stubs matched one from this tracking particle,
0043     // and the list of the subset of the stubs which match those on the tracking particle.
0044 
0045     const TP* matchingTP(const Settings* settings,
0046                          const std::vector<const Stub*>& vstubs,
0047                          unsigned int& nMatchedLayersBest,
0048                          std::vector<const Stub*>& matchedStubsBest);
0049 
0050     const TP* matchingTP(const Settings* settings,
0051                          const std::vector<Stub*>& vstubs,
0052                          unsigned int& nMatchedLayersBest,
0053                          std::vector<const Stub*>& matchedStubsBest);
0054 
0055     // Determine min number of layers a track candidate must have stubs in to be defined as a track.
0056     // 1st argument indicates from which step in chain this function is called: HT, SEED, DUP or FIT.
0057     unsigned int numLayerCut(Utility::AlgoStep algo,
0058                              const Settings* settings,
0059                              unsigned int iPhiSec,
0060                              unsigned int iEtaReg,
0061                              float invPt,
0062                              float eta = 0.);
0063   }  // namespace Utility
0064 
0065 }  // namespace tmtt
0066 
0067 #endif