Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef DataFormats_L1Trigger_RegionalMuonShower_h
0002 #define DataFormats_L1Trigger_RegionalMuonShower_h
0003 
0004 #include "DataFormats/Common/interface/Ref.h"
0005 #include "DataFormats/L1Trigger/interface/BXVector.h"
0006 #include "DataFormats/L1Trigger/interface/L1TObjComparison.h"
0007 
0008 #include "RegionalMuonCandFwd.h"  // For tftype.
0009 
0010 namespace l1t {
0011 
0012   class RegionalMuonShower;
0013   typedef BXVector<RegionalMuonShower> RegionalMuonShowerBxCollection;
0014   typedef ObjectRefBxCollection<RegionalMuonShower> RegionalMuonShowerRefBxCollection;
0015   typedef ObjectRefPair<RegionalMuonShower> RegionalMuonShowerRefPair;
0016   typedef ObjectRefPairBxCollection<RegionalMuonShower> RegionalMuonShowerRefPairBxCollection;
0017 
0018   class RegionalMuonShower {
0019   public:
0020     RegionalMuonShower(bool oneNominalInTime = false,
0021                        bool oneNominalOutOfTime = false,
0022                        bool twoLooseInTime = false,
0023                        bool twoLooseOutOfTime = false,
0024                        bool oneLooseInTime = false,
0025                        bool oneTightInTime = false,
0026                        bool oneTightOutOfTime = false);
0027 
0028     ~RegionalMuonShower();
0029 
0030     void setOneNominalInTime(const bool bit) { isOneNominalInTime_ = bit; }
0031     void setOneNominalOutOfTime(const bool bit) { isOneNominalOutOfTime_ = bit; }
0032     void setOneTightInTime(const bool bit) { isOneTightInTime_ = bit; }
0033     void setOneTightOutOfTime(const bool bit) { isOneTightOutOfTime_ = bit; }
0034     void setTwoLooseOutOfTime(const bool bit) { isTwoLooseOutOfTime_ = bit; }
0035     void setTwoLooseInTime(const bool bit) { isTwoLooseInTime_ = bit; }
0036     void setOneLooseInTime(const bool bit) { isOneLooseInTime_ = bit; }
0037 
0038     /// Set the processor ID, track-finder type. From these two, the link is set
0039     void setTFIdentifiers(int processor, tftype trackFinder);
0040 
0041     bool isValid() const;
0042     bool isOneNominalInTime() const { return isOneNominalInTime_; }
0043     bool isOneNominalOutOfTime() const { return isOneNominalOutOfTime_; }
0044     bool isOneTightInTime() const { return isOneTightInTime_; }
0045     bool isOneTightOutOfTime() const { return isOneTightOutOfTime_; }
0046     bool isTwoLooseInTime() const { return isTwoLooseInTime_; }
0047     bool isTwoLooseOutOfTime() const { return isTwoLooseOutOfTime_; }
0048     bool isOneLooseInTime() const { return isOneLooseInTime_; }
0049 
0050     /// Get link on which the MicroGMT receives the candidate
0051     const int link() const { return link_; };
0052     /// Get processor ID on which the candidate was found (0..5 for OMTF/EMTF; 0..11 for BMTF)
0053     const int processor() const { return processor_; };
0054     /// Get track-finder which found the muon (bmtf, emtf_pos/emtf_neg or omtf_pos/omtf_neg)
0055     const tftype trackFinderType() const { return trackFinder_; };
0056 
0057     bool operator==(const l1t::RegionalMuonShower& rhs) const;
0058     inline bool operator!=(const l1t::RegionalMuonShower& rhs) const { return !(operator==(rhs)); };
0059 
0060   private:
0061     // Run-3 definitions as provided in DN-20-033
0062     // in time and out-of-time qualities. only 2 bits each.
0063     bool isOneNominalInTime_;
0064     bool isOneNominalOutOfTime_;
0065     bool isOneTightInTime_;
0066     bool isOneTightOutOfTime_;
0067     bool isTwoLooseInTime_;
0068     bool isTwoLooseOutOfTime_;
0069     bool isOneLooseInTime_;
0070     int link_;
0071     int processor_;
0072     tftype trackFinder_;
0073   };
0074 
0075 }  // namespace l1t
0076 
0077 #endif