Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-03-17 10:50:25

0001 //-------------------------------------------------
0002 //
0003 /**  \class L1MuKBMCombinedStub
0004  *
0005  *  Class that combines TwinMux Phi and eta segments to a common segment to be used
0006  *  by the Kalman MuonTrack Finder
0007  *
0008  *
0009  *   M.Bachtis (UCLA)
0010  */
0011 //
0012 //--------------------------------------------------
0013 #ifndef L1MUKBM_COMBINED_STUB_H
0014 #define L1MUKBM_COMBINED_STUB_H
0015 
0016 //---------------
0017 // C++ Headers --
0018 //---------------
0019 
0020 #include <iosfwd>
0021 #include <vector>
0022 
0023 //----------------------
0024 // Base Class Headers --
0025 //----------------------
0026 
0027 //------------------------------------
0028 // Collaborating Class Declarations --
0029 //------------------------------------
0030 
0031 #include "DataFormats/L1TMuon/interface/BMTF/L1MuBMTrackSegLoc.h"
0032 #include "DataFormats/L1Trigger/interface/BXVector.h"
0033 #include "DataFormats/Common/interface/Ref.h"
0034 
0035 //              ---------------------
0036 //              -- Class Interface --
0037 //              ---------------------
0038 
0039 class L1MuKBMTCombinedStub;
0040 
0041 typedef std::vector<L1MuKBMTCombinedStub> L1MuKBMTCombinedStubCollection;
0042 typedef edm::Ref<L1MuKBMTCombinedStubCollection> L1MuKBMTCombinedStubRef;
0043 typedef std::vector<edm::Ref<L1MuKBMTCombinedStubCollection> > L1MuKBMTCombinedStubRefVector;
0044 
0045 class L1MuKBMTCombinedStub {
0046 public:
0047   /// default constructor
0048   L1MuKBMTCombinedStub();
0049 
0050   /// constructor
0051   L1MuKBMTCombinedStub(int wheel,
0052                        int sector,
0053                        int station,
0054                        int phi,
0055                        int phiB,
0056                        bool tag,
0057                        int bx,
0058                        int quality,
0059                        int eta1 = 0,
0060                        int eta2 = 0,
0061                        int qeta1 = -1,
0062                        int qeta2 = -1);
0063   ~L1MuKBMTCombinedStub();
0064   /// return wheel
0065   inline int whNum() const { return whNum_; }
0066   /// return sector
0067   inline int scNum() const { return scNum_; }
0068   /// return station
0069   inline int stNum() const { return stNum_; }
0070   /// return phi
0071   inline int phi() const { return phi_; }
0072   /// return phib
0073   inline int phiB() const { return phiB_; }
0074   /// return quality code
0075   inline int quality() const { return quality_; }
0076   /// return tag (second TS tag)
0077   inline int tag() const { return tag_; }
0078   /// return bunch crossing
0079   inline int bxNum() const { return bxNum_; }
0080 
0081   /// return first eta
0082   inline int eta1() const { return eta1_; }
0083   /// return second eta
0084   inline int eta2() const { return eta2_; }
0085   /// return first eta quality
0086   inline int qeta1() const { return qeta1_; }
0087   /// return second eta quality
0088   inline int qeta2() const { return qeta2_; }
0089 
0090   /// assignment operator
0091   L1MuKBMTCombinedStub& operator=(const L1MuKBMTCombinedStub&);
0092   /// equal operator
0093   bool operator==(const L1MuKBMTCombinedStub&) const;
0094   /// unequal operator
0095   bool operator!=(const L1MuKBMTCombinedStub&) const;
0096 
0097   /// overload output stream operator for phi track segments
0098   friend std::ostream& operator<<(std::ostream&, const L1MuKBMTCombinedStub&);
0099 
0100 private:
0101   int whNum_;
0102   int scNum_;
0103   int stNum_;
0104   int phi_;      // 12 bits
0105   int phiB_;     // 10 bits
0106   bool tag_;     // tag for second TS (of chamber)
0107   int quality_;  // 3 bits
0108   int bxNum_;    // bunch crossing identifier
0109   int eta1_;     //fine eta 1
0110   int eta2_;     //fine eta 2
0111   int qeta1_;    //fine eta quality 1
0112   int qeta2_;    //fine eta quality 2
0113 };
0114 
0115 #endif