src
L1Trigger
DTTriggerPhase2
interface
InitialGrouping.h
Go to the documentation of this file.
1
#ifndef Phase2L1Trigger_DTTrigger_InitialGrouping_h
2
#define Phase2L1Trigger_DTTrigger_InitialGrouping_h
3
4
#include "
FWCore/ParameterSet/interface/ParameterSet.h
"
5
#include "
FWCore/MessageLogger/interface/MessageLogger.h
"
6
7
#include "
DataFormats/MuonDetId/interface/DTChamberId.h
"
8
#include "
DataFormats/MuonDetId/interface/DTSuperLayerId.h
"
9
#include "
DataFormats/MuonDetId/interface/DTLayerId.h
"
10
#include "
DataFormats/MuonDetId/interface/DTWireId.h
"
11
#include "
DataFormats/DTDigi/interface/DTDigiCollection.h
"
12
13
#include "
L1Trigger/DTTriggerPhase2/interface/MuonPath.h
"
14
#include "
L1Trigger/DTTriggerPhase2/interface/constants.h
"
15
16
#include "
L1Trigger/DTTriggerPhase2/interface/MotherGrouping.h
"
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
61
class
InitialGrouping
:
public
MotherGrouping
{
62
public
:
63
// Constructors and destructor
64
InitialGrouping
(
const
edm::ParameterSet
&
pset
,
edm::ConsumesCollector
& iC);
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
);
86
bool
isEqualComb2Previous
(
DTPrimitives
& ptr);
87
88
// Private attributes
89
const
bool
debug_
;
90
91
DTPrimitives
muxInChannels_
[
cmsdt::NUM_CELLS_PER_BLOCK
];
92
DTPrimitives
channelIn_
[
cmsdt::NUM_LAYERS
][
cmsdt::NUM_CH_PER_LAYER
];
93
DTPrimitives
chInDummy_
;
94
int
prevTDCTimeStamps_
[4];
95
int
currentBaseChannel_
;
96
};
97
98
#endif
DTDigiCollection
InitialGrouping::selectInChannels
void selectInChannels(int baseCh)
Definition:
InitialGrouping.cc:117
MotherGrouping.h
MessageLogger.h
DTSuperLayerId.h
InitialGrouping::debug_
const bool debug_
Definition:
InitialGrouping.h:89
InitialGrouping::prevTDCTimeStamps_
int prevTDCTimeStamps_[4]
Definition:
InitialGrouping.h:94
MuonPathPtrs
std::vector< MuonPathPtr > MuonPathPtrs
Definition:
MuonPath.h:132
InitialGrouping::channelIn_
DTPrimitives channelIn_[cmsdt::NUM_LAYERS][cmsdt::NUM_CH_PER_LAYER]
Definition:
InitialGrouping.h:92
muonDTDigis_cfi.pset
pset
Definition:
muonDTDigis_cfi.py:27
ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr
if constexpr(n > 3)
Definition:
BrokenLine.h:164
InitialGrouping::isEqualComb2Previous
bool isEqualComb2Previous(DTPrimitives &ptr)
Definition:
InitialGrouping.cc:200
InitialGrouping::muxInChannels_
DTPrimitives muxInChannels_[cmsdt::NUM_CELLS_PER_BLOCK]
Definition:
InitialGrouping.h:91
InitialGrouping::InitialGrouping
InitialGrouping(const edm::ParameterSet &pset, edm::ConsumesCollector &iC)
Definition:
InitialGrouping.cc:14
ParameterSet.h
InitialGrouping
Definition:
InitialGrouping.h:61
cmsdt::NUM_CELLS_PER_BLOCK
constexpr int NUM_CELLS_PER_BLOCK
Definition:
constants.h:381
iEvent
int iEvent
Definition:
GenABIO.cc:224
DTDigiCollection.h
InitialGrouping::chInDummy_
DTPrimitives chInDummy_
Definition:
InitialGrouping.h:93
constants.h
InitialGrouping::resetPrvTDCTStamp
void resetPrvTDCTStamp(void)
Definition:
InitialGrouping.cc:195
DTChamberId.h
edm::EventSetup
Definition:
EventSetup.h:56
MuonPath.h
DTLayerId.h
InitialGrouping::initialise
void initialise(const edm::EventSetup &iEventSetup) override
Definition:
InitialGrouping.cc:38
dtamgrouping
Definition:
InitialGrouping.h:38
dtamgrouping::CHANNELS_PATH_ARRANGEMENTS
constexpr int CHANNELS_PATH_ARRANGEMENTS[8][4]
Definition:
InitialGrouping.h:41
InitialGrouping::currentBaseChannel_
int currentBaseChannel_
Definition:
InitialGrouping.h:95
cmsdt::NUM_CH_PER_LAYER
constexpr int NUM_CH_PER_LAYER
Definition:
constants.h:357
InitialGrouping::notEnoughDataInChannels
bool notEnoughDataInChannels(void)
Definition:
InitialGrouping.cc:173
InitialGrouping::run
void run(edm::Event &iEvent, const edm::EventSetup &iEventSetup, const DTDigiCollection &digis, MuonPathPtrs &outMpath) override
Definition:
InitialGrouping.cc:43
InitialGrouping::finish
void finish() override
Definition:
InitialGrouping.cc:77
dtamgrouping::CELL_HORIZONTAL_LAYOUTS
constexpr int CELL_HORIZONTAL_LAYOUTS[8][4]
Definition:
InitialGrouping.h:47
DTWireId.h
MotherGrouping
Definition:
MotherGrouping.h:28
DTPrimitives
std::vector< DTPrimitive > DTPrimitives
Definition:
DTprimitive.h:58
InitialGrouping::~InitialGrouping
~InitialGrouping() override
Definition:
InitialGrouping.cc:30
edm::ParameterSet
Definition:
ParameterSet.h:48
cmsdt::NUM_LAYERS
constexpr int NUM_LAYERS
Definition:
constants.h:358
edm::Event
Definition:
Event.h:73
edm::ConsumesCollector
Definition:
ConsumesCollector.h:45
InitialGrouping::setInChannels
void setInChannels(const DTDigiCollection *digi, int sl)
Definition:
InitialGrouping.cc:82
InitialGrouping::mixChannels
void mixChannels(int sl, int pathId, MuonPathPtrs &outMpath)
Definition:
InitialGrouping.cc:215
Generated for CMSSW Reference Manual by
1.8.14