CMS 3D CMS Logo

MuonShower.h
Go to the documentation of this file.
1 #ifndef DataFormats_L1Trigger_MuonShower_h
2 #define DataFormats_L1Trigger_MuonShower_h
3 
4 /*
5  This class is derived from the L1Candidate primarily to interface easily
6  with the Global Muon Trigger. In the trigger system the MuonShower object
7  carries only up to 4 bits of information, 2 for in-time showers,
8  2 for out-of-time showers.
9 */
10 
15 
16 namespace l1t {
17 
18  class MuonShower;
22  typedef std::vector<MuonShowerRef> MuonShowerVectorRef;
23 
27 
28  class MuonShower : public L1Candidate {
29  public:
30  MuonShower(bool oneNominalInTime = false,
31  bool oneNominalOutOfTime = false,
32  bool twoLooseInTime = false,
33  bool twoLooseOutOfTime = false,
34  bool oneTightInTime = false,
35  bool oneTightOutOfTime = false,
36  bool twoLooseDiffSectorsIntime = false);
37 
38  ~MuonShower() override;
39 
40  /*
41  * We currently have three valid cases:
42  * - 1 nominal shower (baseline trigger for physics at Run-3)
43  * - 1 tight shower (backup trigger)
44  * - 2 loose showers in different sectors (to extend the physics reach)
45  *
46  * uGT receives shower information on five bits:
47  * - 2 bits for in-time showers (mus0, mus1 in UTM)
48  * - 2 bits for out-of-time showers (musOutOfTime0, musOutOfTime1 in UTM)
49  * - 1 bit for the newly added two loose showers in different sectors (mus2 in UTM)
50  * Disclaimer: The notion of "in time" and "out of time" showers is outdated, as there
51  * are no plans for out of time showers anymore, however the naming has been kept here
52  * to avoid confusion with the way things have been named from the start.
53  *
54  * The mapping as it is currently understood is:
55  * - 1 nominal shower -> mus0
56  * - 1 tight shower -> mus1
57  * - 2 loose showers in differnt sectors -> mus2
58  */
59 
60  void setOneNominalInTime(const bool bit) { oneNominalInTime_ = bit; }
61  void setOneTightInTime(const bool bit) { oneTightInTime_ = bit; }
63  void setMusOutOfTime0(const bool bit) { musOutOfTime0_ = bit; }
64  void setMusOutOfTime1(const bool bit) { musOutOfTime1_ = bit; }
65 
66  bool isOneNominalInTime() const { return oneNominalInTime_; }
67  bool isOneTightInTime() const { return oneTightInTime_; }
69  bool musOutOfTime0() const { return musOutOfTime0_; }
70  bool musOutOfTime1() const { return musOutOfTime1_; }
71 
72  // at least one bit must be valid
73  bool isValid() const;
74 
75  // to be developed during Run-3
76  bool isTwoLooseInTime() const { return false; }
77  // these options require more study
78  bool isOneNominalOutOfTime() const { return false; }
79  bool isTwoLooseOutOfTime() const { return false; }
80  bool isOneTightOutOfTime() const { return false; }
81 
82  bool operator==(const l1t::MuonShower& rhs) const;
83  inline bool operator!=(const l1t::MuonShower& rhs) const { return !(operator==(rhs)); };
84 
85  private:
86  using L1Candidate::operator==;
87  using L1Candidate::operator!=;
88  // Run-3 definitions as provided in DN-20-033
89  // in time and out-of-time qualities. only 2 bits each.
95  };
96 
97 } // namespace l1t
98 
99 #endif
bool isOneTightInTime() const
Definition: MuonShower.h:67
bool musOutOfTime1_
Definition: MuonShower.h:94
MuonShower(bool oneNominalInTime=false, bool oneNominalOutOfTime=false, bool twoLooseInTime=false, bool twoLooseOutOfTime=false, bool oneTightInTime=false, bool oneTightOutOfTime=false, bool twoLooseDiffSectorsIntime=false)
Definition: MuonShower.cc:3
bool operator!=(const l1t::MuonShower &rhs) const
Definition: MuonShower.h:83
ObjectRefBxCollection< MuonShower > MuonShowerRefBxCollection
Definition: MuonShower.h:24
bool isOneNominalOutOfTime() const
Definition: MuonShower.h:78
delete x;
Definition: CaloConfig.h:22
ObjectRefPairBxCollection< MuonShower > MuonShowerRefPairBxCollection
Definition: MuonShower.h:26
edm::RefVector< MuonShowerBxCollection > MuonShowerRefVector
Definition: MuonShower.h:21
void setOneTightInTime(const bool bit)
Definition: MuonShower.h:61
void setOneNominalInTime(const bool bit)
Definition: MuonShower.h:60
bool isOneTightOutOfTime() const
Definition: MuonShower.h:80
std::pair< edm::Ref< BXVector< T > >, edm::Ref< BXVector< T > >> ObjectRefPair
bool operator==(const l1t::MuonShower &rhs) const
Definition: MuonShower.cc:25
bool isOneNominalInTime() const
Definition: MuonShower.h:66
bool isTwoLooseOutOfTime() const
Definition: MuonShower.h:79
ObjectRefPair< MuonShower > MuonShowerRefPair
Definition: MuonShower.h:25
~MuonShower() override
Definition: MuonShower.cc:19
BXVector< MuonShower > MuonShowerBxCollection
Definition: MuonShower.h:18
bool isValid() const
Definition: MuonShower.cc:21
void setTwoLooseDiffSectorsInTime(const bool bit)
Definition: MuonShower.h:62
bool oneTightInTime_
Definition: MuonShower.h:91
edm::Ref< MuonShowerBxCollection > MuonShowerRef
Definition: MuonShower.h:20
void setMusOutOfTime1(const bool bit)
Definition: MuonShower.h:64
bool musOutOfTime0() const
Definition: MuonShower.h:69
bool musOutOfTime0_
Definition: MuonShower.h:93
bool musOutOfTime1() const
Definition: MuonShower.h:70
bool isTwoLooseDiffSectorsInTime() const
Definition: MuonShower.h:68
bool oneNominalInTime_
Definition: MuonShower.h:90
bool twoLooseDiffSectorsInTime_
Definition: MuonShower.h:92
std::vector< MuonShowerRef > MuonShowerVectorRef
Definition: MuonShower.h:22
void setMusOutOfTime0(const bool bit)
Definition: MuonShower.h:63
bool isTwoLooseInTime() const
Definition: MuonShower.h:76