CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
InitialGrouping.h
Go to the documentation of this file.
1 #ifndef Phase2L1Trigger_DTTrigger_InitialGrouping_h
2 #define Phase2L1Trigger_DTTrigger_InitialGrouping_h
3 
6 
12 
15 
17 
18 #include <iostream>
19 #include <fstream>
20 
21 // ===============================================================================
22 // Previous definitions and declarations
23 // ===============================================================================
24 
25 /*
26  Channels are labeled following next schema:
27  ---------------------------------
28  | 6 | 7 | 8 | 9 |
29  ---------------------------------
30  | 3 | 4 | 5 |
31  -------------------------
32  | 1 | 2 |
33  -----------------
34  | 0 |
35  ---------
36 */
37 
38 namespace dtamgrouping {
39  /* Cell's combination, following previous labeling, to obtain every possible muon's path.
40  Others cells combinations imply non straight paths */
41  constexpr int CHANNELS_PATH_ARRANGEMENTS[8][4] = {
42  {0, 1, 3, 6}, {0, 1, 3, 7}, {0, 1, 4, 7}, {0, 1, 4, 8}, {0, 2, 4, 7}, {0, 2, 4, 8}, {0, 2, 5, 8}, {0, 2, 5, 9}};
43 
44  /* For each of the previous cell's combinations, this array stores the associated cell's
45  displacement, relative to lower layer cell, measured in semi-cell length units */
46 
47  constexpr int CELL_HORIZONTAL_LAYOUTS[8][4] = {{0, -1, -2, -3},
48  {0, -1, -2, -1},
49  {0, -1, 0, -1},
50  {0, -1, 0, 1},
51  {0, 1, 0, -1},
52  {0, 1, 0, 1},
53  {0, 1, 2, 1},
54  {0, 1, 2, 3}};
55 } // namespace dtamgrouping
56 
57 // ===============================================================================
58 // Class declarations
59 // ===============================================================================
60 
62 public:
63  // Constructors and destructor
65  ~InitialGrouping() override;
66 
67  // Main methods
68  void initialise(const edm::EventSetup& iEventSetup) override;
69  void run(edm::Event& iEvent,
70  const edm::EventSetup& iEventSetup,
71  const DTDigiCollection& digis,
72  MuonPathPtrs& outMpath) override;
73  void finish() override;
74 
75  // Other public methods
76 
77  // Public attributes
78 
79 private:
80  // Private methods
81  void setInChannels(const DTDigiCollection* digi, int sl);
82  void selectInChannels(int baseCh);
83  void resetPrvTDCTStamp(void);
84  void mixChannels(int sl, int pathId, MuonPathPtrs& outMpath);
85  bool notEnoughDataInChannels(void);
87 
88  // Private attributes
89  bool debug_;
90 
96 };
97 
98 #endif
void selectInChannels(int baseCh)
int prevTDCTimeStamps_[4]
constexpr int CELL_HORIZONTAL_LAYOUTS[8][4]
std::vector< MuonPathPtr > MuonPathPtrs
Definition: MuonPath.h:128
DTPrimitives channelIn_[cmsdt::NUM_LAYERS][cmsdt::NUM_CH_PER_LAYER]
bool isEqualComb2Previous(DTPrimitives &ptr)
DTPrimitives muxInChannels_[cmsdt::NUM_CELLS_PER_BLOCK]
InitialGrouping(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
constexpr int NUM_CELLS_PER_BLOCK
Definition: constants.h:242
int iEvent
Definition: GenABIO.cc:224
DTPrimitives chInDummy_
void resetPrvTDCTStamp(void)
constexpr int CHANNELS_PATH_ARRANGEMENTS[8][4]
void initialise(const edm::EventSetup &iEventSetup) override
constexpr int NUM_CH_PER_LAYER
Definition: constants.h:218
bool notEnoughDataInChannels(void)
void run(edm::Event &iEvent, const edm::EventSetup &iEventSetup, const DTDigiCollection &digis, MuonPathPtrs &outMpath) override
void finish() override
std::vector< DTPrimitive > DTPrimitives
Definition: DTprimitive.h:53
~InitialGrouping() override
constexpr int NUM_LAYERS
Definition: constants.h:219
void setInChannels(const DTDigiCollection *digi, int sl)
void mixChannels(int sl, int pathId, MuonPathPtrs &outMpath)