CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 
37  ~MuonShower() override;
38 
39  /*
40  In CMSSW we consider 3 valid cases:
41  - 1 nominal shower (baseline trigger for physics at Run-3)
42  - 1 tight shower (backup trigger)
43  - 2 loose showers (to extend the physics reach)
44 
45  In the uGT and UTM library, the hadronic shower trigger data is split
46  over 4 bits: 2 for in-time trigger data, 2 for out-of-time trigger data
47  - mus0, mus1 for in-time
48  - musOutOfTime0, musOutOfTime1 for out-of-time
49 
50  The mapping for Run-3 startup is as follows:
51  - 1 nominal shower -> 0b01 (mus0)
52  - 1 tight shower -> 0b10 (mus1)
53 
54  The 2 loose showers case would be mapped onto musOutOfTime0 and musOutOfTime1 later during Run-3
55  */
56 
57  void setOneNominalInTime(const bool bit) { oneNominalInTime_ = bit; }
58  void setOneTightInTime(const bool bit) { oneTightInTime_ = bit; }
59  void setMus0(const bool bit) { oneNominalInTime_ = bit; }
60  void setMus1(const bool bit) { oneTightInTime_ = bit; }
61  void setMusOutOfTime0(const bool bit) { musOutOfTime0_ = bit; }
62  void setMusOutOfTime1(const bool bit) { musOutOfTime1_ = bit; }
63 
64  bool mus0() const { return oneNominalInTime_; }
65  bool mus1() const { return oneTightInTime_; }
66  bool musOutOfTime0() const { return musOutOfTime0_; }
67  bool musOutOfTime1() const { return musOutOfTime1_; }
68 
69  // at least one bit must be valid
70  bool isValid() const;
71 
72  // useful members for trigger performance studies
73  // needed at startup Run-3
74  bool isOneNominalInTime() const { return oneNominalInTime_; }
75  bool isOneTightInTime() const { return oneTightInTime_; }
76  // to be developed during Run-3
77  bool isTwoLooseInTime() const { return false; }
78  // these options require more study
79  bool isOneNominalOutOfTime() const { return false; }
80  bool isTwoLooseOutOfTime() const { return false; }
81  bool isOneTightOutOfTime() const { return false; }
82 
83  virtual bool operator==(const l1t::MuonShower& rhs) const;
84  virtual inline bool operator!=(const l1t::MuonShower& rhs) const { return !(operator==(rhs)); };
85 
86  private:
87  // Run-3 definitions as provided in DN-20-033
88  // in time and out-of-time qualities. only 2 bits each.
89  bool oneNominalInTime_;
93  };
94 
95 } // namespace l1t
96 
97 #endif
bool mus1() const
Definition: MuonShower.h:65
bool musOutOfTime1_
Definition: MuonShower.h:92
bool isOneNominalOutOfTime() const
Definition: MuonShower.h:79
bool isOneNominalInTime() const
Definition: MuonShower.h:74
ObjectRefBxCollection< MuonShower > MuonShowerRefBxCollection
Definition: MuonShower.h:24
bool isTwoLooseOutOfTime() const
Definition: MuonShower.h:80
bool isOneTightInTime() const
Definition: MuonShower.h:75
bool musOutOfTime0() const
Definition: MuonShower.h:66
ObjectRefPairBxCollection< MuonShower > MuonShowerRefPairBxCollection
Definition: MuonShower.h:26
edm::RefVector< MuonShowerBxCollection > MuonShowerRefVector
Definition: MuonShower.h:21
void setOneTightInTime(const bool bit)
Definition: MuonShower.h:58
bool isOneTightOutOfTime() const
Definition: MuonShower.h:81
void setOneNominalInTime(const bool bit)
Definition: MuonShower.h:57
bool mus0() const
Definition: MuonShower.h:64
void setMus0(const bool bit)
Definition: MuonShower.h:59
bool isTwoLooseInTime() const
Definition: MuonShower.h:77
MuonShower(bool oneNominalInTime=false, bool oneNominalOutOfTime=false, bool twoLooseInTime=false, bool twoLooseOutOfTime=false, bool oneTightInTime=false, bool oneTightOutOfTime=false)
Definition: MuonShower.cc:3
ObjectRefPair< MuonShower > MuonShowerRefPair
Definition: MuonShower.h:25
~MuonShower() override
Definition: MuonShower.cc:17
virtual bool operator==(const l1t::MuonShower &rhs) const
Definition: MuonShower.cc:23
BXVector< MuonShower > MuonShowerBxCollection
Definition: MuonShower.h:18
bool musOutOfTime1() const
Definition: MuonShower.h:67
bool oneTightInTime_
Definition: MuonShower.h:90
edm::Ref< MuonShowerBxCollection > MuonShowerRef
Definition: MuonShower.h:20
void setMusOutOfTime1(const bool bit)
Definition: MuonShower.h:62
std::pair< edm::Ref< BXVector< T >>, edm::Ref< BXVector< T >>> ObjectRefPair
bool musOutOfTime0_
Definition: MuonShower.h:91
bool isValid() const
Definition: MuonShower.cc:19
void setMus1(const bool bit)
Definition: MuonShower.h:60
virtual bool operator!=(const l1t::MuonShower &rhs) const
Definition: MuonShower.h:84
bool oneNominalInTime_
Definition: MuonShower.h:84
std::vector< MuonShowerRef > MuonShowerVectorRef
Definition: MuonShower.h:22
void setMusOutOfTime0(const bool bit)
Definition: MuonShower.h:61