Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:19:34

0001 #ifndef L1Trigger_CSCTriggerPrimitives_CSCALCTCrossCLCT
0002 #define L1Trigger_CSCTriggerPrimitives_CSCALCTCrossCLCT
0003 
0004 /** \class CSCALCTCrossCLCT
0005  *
0006  * Helper class to check if an ALCT crosses with a CLCT in ME1/1.
0007  * This check was originally introduced by Vadim Khotilovich in 2010
0008  * to improve the quality of the ME1/1 LCTs that are sent to the
0009  * endcap muon track finder. However, it is the policy of the EMTF
0010  * group that they would like to receive all LCT information, even
0011  * if an ME1/1 LCT has no physical crossing half-strips and
0012  * wiregroups. The EMTF disassembles LCTs into ALCT and CLCT anyway
0013  * and thus for normal trigger operations this class should not be
0014  * used. However, in the event that multiple high-quality LCTs are
0015  * present in ME1/1, this class could be used to trim the unphysical
0016  * ones. As of writing (April 2021) no plans are in place to implement
0017 this feature into the CSC trigger firmware
0018  *
0019  * \author Sven Dildick (Rice University)
0020  *
0021  */
0022 
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 
0026 #include <string>
0027 #include <array>
0028 
0029 class CSCALCTDigi;
0030 class CSCCLCTDigi;
0031 
0032 class CSCALCTCrossCLCT {
0033 public:
0034   CSCALCTCrossCLCT(
0035       unsigned endcap, unsigned station, unsigned ring, bool ignoreAlctCrossClct, const edm::ParameterSet& conf);
0036 
0037   /*
0038     Check if an ALCT can cross a CLCT. Most of the time it can. Only in ME1/1 there are
0039     special cases when they do not. This function is typically not used though, as the
0040     EMTF prefers to receive all stubs. However, there is an option to discard unphysical matches.
0041   */
0042   bool doesALCTCrossCLCT(const CSCALCTDigi& a, const CSCCLCTDigi& c) const;
0043 
0044 private:
0045   // check if a wiregroup cross a halfstrip
0046   bool doesWiregroupCrossHalfStrip(int wg, int keystrip) const;
0047 
0048   unsigned endcap_;
0049   unsigned station_;
0050   unsigned ring_;
0051   bool gangedME1a_;
0052   bool ignoreAlctCrossClct_;
0053 };
0054 #endif