CMS 3D CMS Logo

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
dtamgrouping::CHANNELS_PATH_ARRANGEMENTS
constexpr int CHANNELS_PATH_ARRANGEMENTS[8][4]
Definition: InitialGrouping.h:41
MessageLogger.h
InitialGrouping::~InitialGrouping
~InitialGrouping() override
Definition: InitialGrouping.cc:31
cmsdt::NUM_CH_PER_LAYER
constexpr int NUM_CH_PER_LAYER
Definition: constants.h:199
DTLayerId.h
InitialGrouping::notEnoughDataInChannels
bool notEnoughDataInChannels(void)
Definition: InitialGrouping.cc:174
InitialGrouping::run
void run(edm::Event &iEvent, const edm::EventSetup &iEventSetup, const DTDigiCollection &digis, MuonPathPtrs &outMpath) override
Definition: InitialGrouping.cc:44
InitialGrouping::muxInChannels_
DTPrimitives muxInChannels_[cmsdt::NUM_CELLS_PER_BLOCK]
Definition: InitialGrouping.h:91
InitialGrouping::resetPrvTDCTStamp
void resetPrvTDCTStamp(void)
Definition: InitialGrouping.cc:196
MuonPathPtrs
std::vector< MuonPathPtr > MuonPathPtrs
Definition: MuonPath.h:122
InitialGrouping
Definition: InitialGrouping.h:61
constants.h
InitialGrouping::isEqualComb2Previous
bool isEqualComb2Previous(DTPrimitives &ptr)
Definition: InitialGrouping.cc:201
InitialGrouping::setInChannels
void setInChannels(const DTDigiCollection *digi, int sl)
Definition: InitialGrouping.cc:83
cmsdt::NUM_LAYERS
constexpr int NUM_LAYERS
Definition: constants.h:200
InitialGrouping::channelIn_
DTPrimitives channelIn_[cmsdt::NUM_LAYERS][cmsdt::NUM_CH_PER_LAYER]
Definition: InitialGrouping.h:92
MotherGrouping
Definition: MotherGrouping.h:29
dtamgrouping
Definition: InitialGrouping.h:38
DTChamberId.h
InitialGrouping::finish
void finish() override
Definition: InitialGrouping.cc:78
edm::ParameterSet
Definition: ParameterSet.h:47
InitialGrouping::InitialGrouping
InitialGrouping(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
Definition: InitialGrouping.cc:14
DTDigiCollection
dtamgrouping::CELL_HORIZONTAL_LAYOUTS
constexpr int CELL_HORIZONTAL_LAYOUTS[8][4]
Definition: InitialGrouping.h:47
iEvent
int iEvent
Definition: GenABIO.cc:224
InitialGrouping::debug_
bool debug_
Definition: InitialGrouping.h:89
edm::EventSetup
Definition: EventSetup.h:57
InitialGrouping::mixChannels
void mixChannels(int sl, int pathId, MuonPathPtrs &outMpath)
Definition: InitialGrouping.cc:216
InitialGrouping::prevTDCTimeStamps_
int prevTDCTimeStamps_[4]
Definition: InitialGrouping.h:94
DTPrimitives
std::vector< DTPrimitive > DTPrimitives
Definition: DTprimitive.h:53
DTWireId.h
InitialGrouping::initialise
void initialise(const edm::EventSetup &iEventSetup) override
Definition: InitialGrouping.cc:39
MuonPath.h
InitialGrouping::currentBaseChannel_
int currentBaseChannel_
Definition: InitialGrouping.h:95
DTDigiCollection.h
ParameterSet.h
DTSuperLayerId.h
InitialGrouping::chInDummy_
DTPrimitives chInDummy_
Definition: InitialGrouping.h:93
edm::Event
Definition: Event.h:73
InitialGrouping::selectInChannels
void selectInChannels(int baseCh)
Definition: InitialGrouping.cc:118
MotherGrouping.h
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
cmsdt::NUM_CELLS_PER_BLOCK
constexpr int NUM_CELLS_PER_BLOCK
Definition: constants.h:227